RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    TriggerHappy Daemon (THD) doesn't work on my Pi running Retropie ! Help

    Scheduled Pinned Locked Moved Help and Support
    retropietriggerhappydaemonhelpbug
    32 Posts 4 Posters 8.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Djon
      last edited by

      Well it looks promising thanks !
      How can i do it ?? ahah i'm kind of new in the Raspberry family :)

      Thanks again @mitu

      mituM 1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator @Djon
        last edited by 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 via sudo systemctl restart triggerhappy and it should run as root, so you don't need sudo for executing commands.

        You can also modify the last line and make it run as the pi user (which should be able to run sudo commands without a password prompt), I'd recommend doing that instead of leaving it running as root.

        1 Reply Last reply Reply Quote 0
        • D
          Djon
          last edited by

          @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 !

          1 Reply Last reply Reply Quote 0
          • D
            Djon
            last edited by

            I already tried it in the past, but i'll try it again now
            let's see

            1 Reply Last reply Reply Quote 0
            • D
              Djon
              last edited by

              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.

              1 Reply Last reply Reply Quote 0
              • D
                Djon
                last edited by

                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

                1 Reply Last reply Reply Quote 0
                • D
                  Djon
                  last edited by

                  FYI: i edited the line as follow: " DAEMON_OPTS"--user pi"

                  1 Reply Last reply Reply Quote 0
                  • mituM
                    mitu Global Moderator
                    last edited by

                    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 the pi 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 the autostart.sh script. Make sure you add an & at the end of the command when adding it to either file.

                    1 Reply Last reply Reply Quote 0
                    • D
                      Djon
                      last edited by

                      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

                      mituM 1 Reply Last reply Reply Quote 0
                      • mituM
                        mitu Global Moderator @Djon
                        last edited by

                        @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.

                        1 Reply Last reply Reply Quote 0
                        • D
                          Djon
                          last edited by

                          @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 :)

                          1 Reply Last reply Reply Quote 0
                          • D
                            Djon
                            last edited by

                            @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 reboot

                            But it still not working

                            mituM 1 Reply Last reply Reply Quote 0
                            • D
                              Djon
                              last edited by

                              Maybe should i past it before "exit 0" line ?

                              1 Reply Last reply Reply Quote 0
                              • mituM
                                mitu Global Moderator @Djon
                                last edited by mitu

                                @djon Does the process shows up when your run ps -ef from the terminal ?
                                EDIT: Yes, of course you need to add it before the exit, otherwise it's not executed.

                                1 Reply Last reply Reply Quote 0
                                • D
                                  Djon
                                  last edited by Djon

                                  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*"

                                  mituM 1 Reply Last reply Reply Quote 0
                                  • mituM
                                    mitu Global Moderator @Djon
                                    last edited by mitu

                                    @djon Doesn't seem to be correct. Have you disabled the service ? The process shown there seems the one started from the built-in service script. Post your rc.local file contents, surrounded by code tags (```).

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      Djon
                                      last edited by

                                      No prob ! @mitu

                                      
                                      #
                                      
                                      # rc.local
                                      
                                      #
                                      
                                      # This script is executed at the end of each multiuser runlevel.
                                      
                                      # Make sure that the script will "exit 0" on success or any other
                                      
                                      # value on error.
                                      
                                      #
                                      
                                      # In order to enable or disable this script just change the execution
                                      
                                      # bits.
                                      
                                      #
                                      
                                      # By default this script does nothing.
                                      
                                      
                                      
                                      # Print the IP address
                                      
                                      _IP=$(hostname -I) || true
                                      
                                      if [ "$_IP" ]; then
                                      
                                        printf "My IP address is %s\n" "$_IP"
                                      
                                      fi
                                      
                                      
                                      
                                      /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --devicelob /dev/input/event* &
                                      
                                      
                                      
                                      exit 0
                                      mituM 1 Reply Last reply Reply Quote 0
                                      • mituM
                                        mitu Global Moderator @Djon
                                        last edited by

                                        @djon Just change it to

                                        # Start THD as user pi
                                        nohup /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --user pi --deviceglob /dev/input/event* &
                                        
                                        exit 0
                                        

                                        and reboot. Disable the service with sudo systemctl disable triggerhappy first.

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          Djon
                                          last edited by Djon

                                          I'll do it in a sec, so i'll change all the file just with these lines ? @mitu

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            Djon
                                            last edited by Djon

                                            Okay so i made the mistake to erase all the file, to put just your line...
                                            So i did it again, with just your line at the end, and i can say... that... it is workinggggggggggg !!!!!!! @mitu

                                            I think that i will start again from stratch with a brand new retropie image, next time i'll just need to put :

                                            # Start THD as user pi
                                            nohup /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --user pi --deviceglob /dev/input/event* &
                                            
                                            exit 0
                                            

                                            Or i'll need to take all the steps we made ?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.