You are not logged in.

#1 2016-07-27 18:12:59

vgt
Member
Registered: 2015-02-26
Posts: 8

HDMI hotplug toggle report errors.

Hello,

I'm using PulseAudio to make my arch able to auto-switch audio output between HDMI/speaker, basicly according to the wiki https://wiki.archlinux.org/index.php/Pu … io_to_HDMI

However, I can get multiple [fail] during boot. I don't know what is going on and how to fix it.

Here is some basic info:

aplay -l

card 0: PCH [HDA Intel PCH], device 0: ALC3227 Analog [ALC3227 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

/usr/local/bin/hdmi_sound_toggle.sh

#!/bin/bash
#The wiki get the USER_NAME this way, but the script cannot run on my computer.
#USER_NAME=$(w -hs | awk -v vt=tty$(fgconsole) '$0 ~ vt {print $1}')
USER_NAME=$(id -u -n)
USER_ID=$(id -u "$USER_NAME")
HDMI_STATUS=$(</sys/class/drm/card0/*HDMI*/status)

export PULSE_SERVER="unix:/run/user/"$USER_ID"/pulse/native"

if [[ $HDMI_STATUS == connected ]]
then
   sudo -u "$USER_NAME" pactl --server "$PULSE_SERVER" set-card-profile 0 output:hdmi-stereo+input:analog-stereo
else
   sudo -u "$USER_NAME" pactl --server "$PULSE_SERVER" set-card-profile 0 output:analog-stereo+input:analog-stereo
fi

/etc/udev/rules.d/99-hdmi_sound.rules

KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/bin/systemctl start hdmi_sound_toggle.service"

/etc/systemd/system/hdmi_sound_toggle.service

[Unit]
Description=HDMI Hotplug Toggle

[Service]
Type=oneshot
ExecStart=/usr/local/bin/hdmi_sound_toggle.sh

[Install]
WantedBy=multi-user.target

And the error message goes like this:
journalctl -u hdmi_sound_toggle

-- Reboot --
Jul 28 01:52:22 markSeven systemd[1]: Starting HDMI Hotplug Toggle...
Jul 28 01:52:23 markSeven sudo[346]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pactl --server unix:/run/user/0/p
Jul 28 01:52:23 markSeven sudo[346]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pactl --server unix:/run/user/0/p
Jul 28 01:52:23 markSeven sudo[346]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[342]: Connection failure: Connection refused
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[342]: pa_context_connect() failed: Connection refused
Jul 28 01:52:23 markSeven sudo[346]: pam_unix(sudo:session): session closed for user root
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Main process exited, code=exited, status=1/FAILURE
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Unit entered failed state.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'exit-code'.
Jul 28 01:52:23 markSeven systemd[1]: Starting HDMI Hotplug Toggle...
Jul 28 01:52:23 markSeven sudo[366]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pactl --server unix:/run/user/0/p
Jul 28 01:52:23 markSeven sudo[366]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[362]: Connection failure: Connection refused
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[362]: pa_context_connect() failed: Connection refused
Jul 28 01:52:23 markSeven sudo[366]: pam_unix(sudo:session): session closed for user root
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Main process exited, code=exited, status=1/FAILURE
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Unit entered failed state.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'exit-code'.
Jul 28 01:52:23 markSeven systemd[1]: Starting HDMI Hotplug Toggle...
Jul 28 01:52:23 markSeven sudo[381]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pactl --server unix:/run/user/0/p
Jul 28 01:52:23 markSeven sudo[381]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[375]: Connection failure: Connection refused
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[375]: pa_context_connect() failed: Connection refused
Jul 28 01:52:23 markSeven sudo[381]: pam_unix(sudo:session): session closed for user root
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Main process exited, code=exited, status=1/FAILURE
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Unit entered failed state.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'exit-code'.
Jul 28 01:52:23 markSeven systemd[1]: Starting HDMI Hotplug Toggle...
Jul 28 01:52:23 markSeven sudo[390]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pactl --server unix:/run/user/0/p
Jul 28 01:52:23 markSeven sudo[390]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[385]: Connection failure: Connection refused
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[385]: pa_context_connect() failed: Connection refused
Jul 28 01:52:23 markSeven sudo[390]: pam_unix(sudo:session): session closed for user root
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Main process exited, code=exited, status=1/FAILURE
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Unit entered failed state.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'exit-code'.
Jul 28 01:52:23 markSeven systemd[1]: Starting HDMI Hotplug Toggle...
Jul 28 01:52:23 markSeven sudo[399]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pactl --server unix:/run/user/0/p
Jul 28 01:52:23 markSeven sudo[399]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[395]: Connection failure: Connection refused
Jul 28 01:52:23 markSeven hdmi_sound_toggle.sh[395]: pa_context_connect() failed: Connection refused
Jul 28 01:52:23 markSeven sudo[399]: pam_unix(sudo:session): session closed for user root
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Main process exited, code=exited, status=1/FAILURE
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Unit entered failed state.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'exit-code'.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Start request repeated too quickly.
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'start-limit-hit'.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Start request repeated too quickly.
Jul 28 01:52:23 markSeven systemd[1]: Failed to start HDMI Hotplug Toggle.
Jul 28 01:52:23 markSeven systemd[1]: hdmi_sound_toggle.service: Failed with result 'start-limit-hit'.

I wonder why the hdmi_sound_service is triggered during boot and where it goes wrong.
How could I fix it?


Thanks!


a novice at the college of coders

Offline

#2 2016-07-27 20:47:24

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,627

Re: HDMI hotplug toggle report errors.

Get rid of the excessive sudoing, and make a Systemd User Service instead, this will already have the correct environment and be invoked correctly. The wiki contains a lot of cruft, I might try to make some time to clean it up a bit, and bring it up to speed with modern conventions

Offline

Board footer

Powered by FluxBB