TriggerHappy Daemon (THD) doesn't work on my Pi running Retropie ! Help
-
@mitu
Can you help me out ?I will be very grateful
Thanks -
@djon I would, but it's a guessing game without having the hardware to test it. It seems the problem is not in the configuration, but something with the service. Is the
triggerhappy
service running ? What doessudo systemctl status triggerhappy
show ? -
@mitu Thanks for your help, i could be very reactive if you want me to test it quick :)
First, triggerhappy don't run as root, anyway i need to do "sudo nano /etc/triggerhappy/triggers.d/testb.conf" (sudo) or the file will be unwritable.
Second, here's what the status said :sudo systemctl status triggerhappy
● triggerhappy.service - triggerhappy global hotkey daemon
Loaded: loaded (/lib/systemd/system/triggerhappy.service; enabled; vendor pre
Active: active (running) since Tue 2018-06-05 23:19:15 UTC; 6 days ago
Main PID: 384 (thd)
CGroup: /system.slice/triggerhappy.service
└─384 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket
Jun 12 22:37:00 retropie sudo[1353]: pam_unix(sudo:auth): auth could not identif
Jun 12 22:37:02 retropie thd[384]: Executing trigger action: sudo chmod 777 /sys
Jun 12 22:37:02 retropie thd[384]: We trust you have received the usual lecture
Jun 12 22:37:02 retropie thd[384]: Administrator. It usually boils down to these
Jun 12 22:37:02 retropie thd[384]: #1) Respect the privacy of others.
Jun 12 22:37:02 retropie thd[384]: #2) Think before you type.
Jun 12 22:37:02 retropie thd[384]: #3) With great power comes great responsi
Jun 12 22:37:02 retropie thd[384]: sudo: no tty present and no askpass program s
Jun 12 22:37:02 retropie sudo[1359]: pam_unix(sudo:auth): conversation failed
Jun 12 22:37:02 retropie sudo[1359]: pam_unix(sudo:auth): auth could not identif
lines 1-17/17 (END)...skipping...
● triggerhappy.service - triggerhappy global hotkey daemon
Loaded: loaded (/lib/systemd/system/triggerhappy.service; enabled; vendor pre
Active: active (running) since Tue 2018-06-05 23:19:15 UTC; 6 days ago
Main PID: 384 (thd)
CGroup: /system.slice/triggerhappy.service
└─384 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket
Jun 12 22:37:00 retropie sudo[1353]: pam_unix(sudo:auth): auth could not identif
Jun 12 22:37:02 retropie thd[384]: Executing trigger action: sudo chmod 777 /sys
Jun 12 22:37:02 retropie thd[384]: We trust you have received the usual lecture
Jun 12 22:37:02 retropie thd[384]: Administrator. It usually boils down to these
Jun 12 22:37:02 retropie thd[384]: #1) Respect the privacy of others.
Jun 12 22:37:02 retropie thd[384]: #2) Think before you type.
Jun 12 22:37:02 retropie thd[384]: #3) With great power comes great responsi
Jun 12 22:37:02 retropie thd[384]: sudo: no tty present and no askpass program s
Jun 12 22:37:02 retropie sudo[1359]: pam_unix(sudo:auth): conversation failed
Jun 12 22:37:02 retropie sudo[1359]: pam_unix(sudo:auth): auth could not identif
~
~
~
~
~
~
~
lines 1-17/17 (END)...skipping...
● triggerhappy.service - triggerhappy global hotkey daemon
Loaded: loaded (/lib/systemd/system/triggerhappy.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-06-05 23:19:15 UTC; 6 days ago
Main PID: 384 (thd)
CGroup: /system.slice/triggerhappy.service
└─384 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*
Jun 12 22:37:00 retropie sudo[1353]: pam_unix(sudo:auth): auth could not identify password for [nobody]
Jun 12 22:37:02 retropie thd[384]: Executing trigger action: sudo chmod 777 /sys/class/backlight/rpi_backlight/brightness && echo 25 > /sys/class/backlight/rpi_backlight/brightness
Jun 12 22:37:02 retropie thd[384]: We trust you have received the usual lecture from the local System
Jun 12 22:37:02 retropie thd[384]: Administrator. It usually boils down to these three things:
Jun 12 22:37:02 retropie thd[384]: #1) Respect the privacy of others.
Jun 12 22:37:02 retropie thd[384]: #2) Think before you type.
Jun 12 22:37:02 retropie thd[384]: #3) With great power comes great responsibility.
Jun 12 22:37:02 retropie thd[384]: sudo: no tty present and no askpass program specified
Jun 12 22:37:02 retropie sudo[1359]: pam_unix(sudo:auth): conversation failed
Jun 12 22:37:02 retropie sudo[1359]: pam_unix(sudo:auth): auth could not identify password for [nobody]
Hope it can help !
-
It seems to be running but some of the line are in red, here they are :
pam_unix(sudo:auth): auth could not identif
pam_unix(sudo:auth): conversation failed
pam_unix(sudo:auth): auth could not identifpam_unix(sudo:auth): auth could not identif
pam_unix(sudo:auth): conversation failed
pam_unix(sudo:auth): auth could not identifpam_unix(sudo:auth): auth could not identify password for [nobody]
pam_unix(sudo:auth): conversation failed
pam_unix(sudo:auth): auth could not identify password for [nobody] -
@djon Well, it's clear why this fails: the service doesn't run as
root
AND the user used to run the service does not havesudo
passwordless access. You can see the normalsudo
disclaimer in the logs (We trust you have received the usual lecture from the local System..), which is shown whenever a user runssudo
and it must provide the password to run privileged commands. Since your service cannot provide the password, thesudo
commands fail.Configure the service to run as
root
or as the userpi
, and you won't have any problems. -
Well it looks promising thanks !
How can i do it ?? ahah i'm kind of new in the Raspberry family :)Thanks again @mitu
-
@djon said in TriggerHappy Daemon (THD) doesn't work on my Pi running Retropie ! Help:
Well it looks promising thanks !
Luckily, this is configurable. Edit the
/etc/default/triggerhappy
file and uncomment (remove the#
) from the last line. Restart the service viasudo systemctl restart triggerhappy
and it should run asroot
, so you don't needsudo
for executing commands.You can also modify the last line and make it run as the
pi
user (which should be able to runsudo
commands without a password prompt), I'd recommend doing that instead of leaving it running asroot
. -
@mitu
Some people say that i need to do
"open the configuration file with
sudo nano /etc/init.d/triggerhappy
modify the configuration file line to look like the following
DAEMON_ARGS="--daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile $PIDFILE --user pi /dev/input/event*" "previously it was : "
DAEMON_ARGS="--daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile $PIDFILE --user nobody /dev/input/event*"But i did it previsouly before asking for help on this forum so i guess i'm missing something !
-
I already tried it in the past, but i'll try it again now
let's see -
The new status, seems to be working on paper @mitu :
sudo systemctl status triggerhappy● triggerhappy.service - triggerhappy global hotkey daemon
Loaded: loaded (/lib/systemd/system/triggerhappy.service; enabled; vendor pre
Active: active (running) since Wed 2018-06-13 02:55:23 UTC; 1min 33s ago
Main PID: 752 (thd)
CGroup: /system.slice/triggerhappy.service
└─752 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket
Jun 13 02:55:23 retropie systemd[1]: Starting triggerhappy global hotkey daemon.
Jun 13 02:55:23 retropie thd[752]: Unable to parse trigger line:
Jun 13 02:55:23 retropie thd[752]: Found socket passed from systemd
Jun 13 02:55:23 retropie systemd[1]: Started triggerhappy global hotkey daemon.
lines 1-11/11 (END)...skipping...
● triggerhappy.service - triggerhappy global hotkey daemon
Loaded: loaded (/lib/systemd/system/triggerhappy.service; enabled; vendor pre
Active: active (running) since Wed 2018-06-13 02:55:23 UTC; 1min 33s ago
Main PID: 752 (thd)
CGroup: /system.slice/triggerhappy.service
└─752 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket
Jun 13 02:55:23 retropie systemd[1]: Starting triggerhappy global hotkey daemon.
Jun 13 02:55:23 retropie thd[752]: Unable to parse trigger line:
Jun 13 02:55:23 retropie thd[752]: Found socket passed from systemd
Jun 13 02:55:23 retropie systemd[1]: Started triggerhappy global hotkey daemon.
~
~
~
~
~
~
~
~
~
~
~
~
~
lines 1-11/11 (END)...skipping...
● triggerhappy.service - triggerhappy global hotkey daemon
Loaded: loaded (/lib/systemd/system/triggerhappy.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-06-13 02:55:23 UTC; 1min 33s ago
Main PID: 752 (thd)
CGroup: /system.slice/triggerhappy.service
└─752 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*
Jun 13 02:55:23 retropie systemd[1]: Starting triggerhappy global hotkey daemon...
Jun 13 02:55:23 retropie thd[752]: Unable to parse trigger line:
Jun 13 02:55:23 retropie thd[752]: Found socket passed from systemd
Jun 13 02:55:23 retropie systemd[1]: Started triggerhappy global hotkey daemon.
-
Now that TriggerHappy seems to be "running well", i think we're close to make it work !
Poorly, when i press the button, nothing seems to be happening...
@mitu -
FYI: i edited the line as follow: " DAEMON_OPTS"--user pi"
-
No, it's still not working:
- User running the service seems to be still
nobody
- probably the configuration file I mentioned works only for the old style service file - You get an error in the configuration file, which means it's running but ignoring your config.
I think your best bet is to disable the service and run it as the pi user from the
autostart.sh
file (where Emulationstation is started).
Run it from the terminal, as thepi
user with/usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --deviceglob /dev/input/event*
Make sure it works like this - i.e. it gets your button inputs correctly. Then, add the line in either
/etc/rc.local
or in theautostart.sh
script. Make sure you add an&
at the end of the command when adding it to either file. - User running the service seems to be still
-
Waaa we're so close now !!
So when i type
"/usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --deviceglob /dev/input/event*" from the terminal and press my button, it actually works !Now i'm not sure when to add the line, should i do "sudo nano /etc/rc.local" and go at the end and copy and paste ?
FYI, when i type "sudo nano autostart.sh" the file is empty
@mitu -
@djon The
autostart.sh
file is in/opt/retropie/configs/all/autostart.sh
, but try with/etc/rc.local
first. You'll need to reboot to test it. -
@mitu
if the line need to start at boot, i also have a python code running at boot, i added the pyton path at the end of /etc/profile
Don't know if it can help here :) -
@mitu
So i did : sudo nano /etc/rc.local
And added at the end of the file
"/usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --deviceglob /dev/input/event* &"
Then sudo rebootBut it still not working
-
Maybe should i past it before "exit 0" line ?
-
@djon Does the process shows up when your run
ps -ef
from the terminal ?
EDIT: Yes, of course you need to add it before theexit
, otherwise it's not executed. -
Ok so i add it before "exit 0" this time and run ps -ef @mitu
And i think the line you're interested in is
"nobody 364 1 0 03:26 ? 00:00:00 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*"
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.