RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    SupaCEC - A utility to switch TV inputs when a controller is connected

    Scheduled Pinned Locked Moved Ideas and Development
    cecpackagespackagehdmi cechdmi
    29 Posts 8 Posters 7.0k 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.
    • SanoS
      Sano
      last edited by Sano

      Ok finally found a simple solution working here, if anybody could test :

      First install cec-utils :
      sudo apt-get install cec-utils

      Create a /etc/udev/rules.d/10-cec.rules with this line:

      ACTION=="add", KERNEL=="js0", SUBSYSTEM=="input", RUN+="/bin/bash -c '/bin/echo as | /usr/bin/cec-client -s -d 1'"
      

      Note the rule will match only for the first controller (js0) and execute only once, and also note the full path to binaries.

      Reload udev rules :
      sudo udevadm control --reload-rules

      When you plug the first controller, the tv should switch to retropie.
      I tested it with (wireless) PS3 controller and USB arcade stick.

      @psyke83
      I was so concentrated testing things that I missed your post. Congrats, you found it first :)
      The good thing is we both came to the same conclusions.

      1 Reply Last reply Reply Quote 2
      • S
        superterran
        last edited by

        Awesome @Sano and @psyke83! I haven't had a chance to test this yet, but I like where this was headed and wanted to formalize something. I'll hopefully test it tonight, in the meantime if anyone wants to look it over https://github.com/superterran/SupaCEC/tree/refactoring-to-udev-rule

        P 1 Reply Last reply Reply Quote 1
        • P
          psyke83 Global Moderator @superterran
          last edited by psyke83

          @superterran

          The script seems to work fine* - except for unnecessary sudo invocations - on my DS3 controller. The previous test only switched to the Pi when the tv was off, but yours will also switch HDMI inputs when the tv is on.

          • until you merge changes to the master branch, users need to specify the "refactoring-to-udev-rule" branch both in the curl instruction and manually appended to the gitPullOrClone line.

          Edit: hmm, the first test worked, but second test after waiting for controller to timeout didn't switch inputs.

          1 Reply Last reply Reply Quote 0
          • P
            psyke83 Global Moderator
            last edited by psyke83

            I've done further testing and come to the conclusion that cec-client only works reliably when a single command is invoked.

            Your script appears to send the two commands simultaneously per line - the "pause" & switch source command, but both of your rules match my DualShock 3, which means it's 4 commands being sent at once.

            The behaviour is unpredictable with your version; sometimes the tv will switch source and sometimes not. With my simpler version, it works more reliably, but it doesn't always work, especially after first boot. I have Kodi configured to start on boot, so it may be interfering somehow.

            ACTION=="add", SUBSYSTEM=="input", KERNEL=="js[0-9]*", RUN+="/bin/bash -c 'echo as | /usr/bin/cec-client -s -d 1'"

            1 Reply Last reply Reply Quote 0
            • SanoS
              Sano
              last edited by

              @meleu :
              (Screaming like a movie character with fists toward the sky)
              Nooooooo ! Whyyyyyyy ?

              meleuM 1 Reply Last reply Reply Quote 0
              • meleuM
                meleu @Sano
                last edited by

                @Sano yo! Whats up doc?! :-)

                • Useful topics
                • joystick-selection tool
                • rpie-art tool
                • achievements I made
                SanoS 1 Reply Last reply Reply Quote 0
                • SanoS
                  Sano @meleu
                  last edited by Sano

                  @meleu It's my new (totally natural and not overacting) reaction to a downvote :)
                  I wish we had PM here...
                  Sorry !

                  meleuM 1 Reply Last reply Reply Quote 2
                  • meleuM
                    meleu @Sano
                    last edited by

                    @Sano OMG dude! Sorry! It was an accident (I was on the Android phone). You deserve an upvote!

                    I'm looking for a free time to join this conversation/development here. I'm interested!

                    • Useful topics
                    • joystick-selection tool
                    • rpie-art tool
                    • achievements I made
                    1 Reply Last reply Reply Quote 2
                    • meleuM
                      meleu
                      last edited by

                      Hello fellows.

                      I would like to say thanks! The cec-utils package is pretty handy. The udev rules are perfect!

                      The only addition I've made on my arcade build was adding a turn off monitor.sh script in RetroPie Menu.

                      #!/bin/bash
                      # turn off monitor.sh
                      #################
                      # Actually puts the monitor on stand by mode.
                      echo standby 0 | cec-utils -s -d 1
                      
                      • Useful topics
                      • joystick-selection tool
                      • rpie-art tool
                      • achievements I 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.