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

    Player 2 controller not working

    Scheduled Pinned Locked Moved Help and Support
    controllersplayer 2
    27 Posts 4 Posters 4.3k 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.
    • mituM
      mitu Global Moderator
      last edited by mitu

      Ok, so it seems that the GPIO based joystick is recognized by Emulationstation, but not by RetroArch (where only the PS3 clone gamepad works). Probably this will be listed in the log output (/dev/shm/runcommand.log) of RetroArch.

      An update couldn't have erased any file in /etc/modprobe.d/, those are not part of any upgraded package. It's also normal that there is no mk_arcade_joystick package, since the module is compiled from source (it's an optional package in the drivers section of the RetroPie-Setup), but it should be registered with dkms. Being registered with dkms would re-compile the package on kernel updates, but not configure/re-configure it.

      I think your course of action involves creating a .conf file for the module and checking if the module is correctly loaded, then checking if the /dev/input/js[0,1] input device is created. After any modifications, you should check the RetroArch log file I mentioned in my previous post and see if the gamepad is detected.

      EDIT: looking back over your posts, you mentioned something about a 'C program' to map the cabinet gamepad. I think that program is Adafruit's retrogame. This is why you have a 'retrogame' as an input device, which emulates a keyboard and not a proper gamepad (buttons + joystick). I think that the setup you have doesn't use the mk_arcade_joystick module at all (hence the empty configuration file). RetroArch doesn't see a gamepad, but a keyboard.
      I think you should disable the retrogame service/program and try - as I suggested before - to make the cabinet gamepad work with the kernel module. However, I think that requires you have the proper wiring to the GPIO as it's described in the project's page. You might have to open the cabinet after all to check for this.

      1 Reply Last reply Reply Quote 1
      • J
        jp
        last edited by

        I have the output of /boot/retrogame.conf

        # Here's a pin configuration for the PiGRRL 2 project:
        
        LEFT       4  # Joypad left
        RIGHT     15  # Joypad right
        UP        17  # Joypad up
        DOWN      18  # Joypad down
        LEFTCTRL  27  # 'A' button
        LEFTALT   22  # 'B' button
        Z         24  # 'X' button
        X         10  # 'Y' button
        SPACE      9  # 'Select' button
        ENTER     25  # 'Start' button
        

        So I know the wiring now. Could you give me a few pointers how to disable retrogame and if I understand it correctly, move to mk_arcade_joystick for the hardware joystick arcade buttons?

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

          @jp I don't know anything about installing or uninstalling it, since is not part of RetroPie. I suppose it's either a system service that starts it or there's a line in /etc/rc.local that starts it. Looking at their installation howto, I see they're using the /etc/rc.local approach, so you can start there.

          1 Reply Last reply Reply Quote 1
          • J
            jp
            last edited by

            I have commented out the line in /etc/rc.local which loads the retrogame binary and I am currently installing the mk_arcade_joystick but got an error with kernelheaders...

            https://github.com/recalbox/mk_arcade_joystick_rpi/issues/68

            I am so close, if this works I only have to modprobe it with a config:

            https://github.com/recalbox/mk_arcade_joystick_rpi#loading-the-driver

            sudo modprobe mk_arcade_joystick_rpi map=1 or perhaps custom mapping with the values from the retrogame.conf but will try map=1 first if the kernel-header issue is solved.

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

              @jp The driver is available from the RetroPie-Setup menu, in the drivers section, try installing it from there (from source) and not directly from the Github repo. After installation, check the module configuration file.

              1 Reply Last reply Reply Quote 0
              • J
                jp
                last edited by jp

                I have had some trouble locating the RetroPie-Setup but I have found that I could access it from ssh:
                sudo ~/RetroPie-Setup/retropie_setup.sh
                I found the packaging -> driver menu and installed the package, but I saw an error... it was a fast one, but the menu says it did install:
                a50a5b4e-d3ae-4ceb-a63f-c4974da69d26-image.png

                Hope I can configure buttons now for seperate players :-) will see if the reboot fixed everything. I will update this reply with the results.

                It did not work. Configuring inputs did only notice the USB controller. Not the hardware buttons. Running sudo modprobe mk_arcade_joystick_rpi map=1 from ssh says: modprobe: FATAL: Module mk_arcade_joystick_rpi not found.

                I do see a conf file here: /etc/modprobe.d/mk_arcade_joystick.conf with the modprobe in it. So that part of the install script did run. I also tried to run sudo i2cdetect -y 1 as suggested here https://github.com/recalbox/mk_arcade_joystick_rpi#configuration But i2cdetect is not installed.

                Can I see a log of the output of the driver installation from the retropie-menu?

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

                  @jp said in Player 2 controller not working:

                  Can I see a log of the output of the driver installation from the retropie-menu?

                  You should find the log files under ~/RetroPie-Setup/logs, they're timestamped with the date when the action was run. If in doubt, clear the folder and re-try your setup action (installing the driver) again.

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    jp @mitu
                    last edited by jp

                    @mitu thank you once again! I have found the log:

                    Log started at: Tue 18 Dec 08:39:46 UTC 2018
                    
                    RetroPie-Setup version: 4.4.4 (87773ed)
                    System: Linux retropie 4.14.87-v7+ #1178 SMP Tue Dec 11 14:47:38 GMT 2018 armv7l GNU/Linux
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Installing dependencies for 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    /home/pi/RetroPie-Setup/tmp/build/mkarcadejoystick /home/pi
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Getting sources for 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    git clone --recursive --depth 1 "https://github.com/recalbox/mk_arcade_joystick_rpi" "/opt/retropie/supplementary/mkarcadejoystick"
                    Cloning into '/opt/retropie/supplementary/mkarcadejoystick'...
                    /home/pi
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Building 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    Error! There are no instances of module: mk_arcade_joystick_rpi
                    0.1.5 located in the DKMS tree.
                    
                    Creating symlink /var/lib/dkms/mk_arcade_joystick_rpi/0.1.5/source ->
                                     /usr/src/mk_arcade_joystick_rpi-0.1.5
                    
                    DKMS: add completed.
                    Error! echo
                    Your kernel headers for kernel 4.14.87-v7+ cannot be found at
                    /lib/modules/4.14.87-v7+/build or /lib/modules/4.14.87-v7+/source.
                    /opt/retropie/supplementary/mkarcadejoystick /home/pi
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Configuring 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    modprobe: FATAL: Module mk_arcade_joystick_rpi not found.
                    /home/pi
                    
                    Log ended at: Tue 18 Dec 08:39:51 UTC 2018
                    Total running time: 0 hours, 0 mins, 5 secs
                    

                    So there are two errors:

                    • Error! There are no instances of module: mk_arcade_joystick_rpi 0.1.5 located in the DKMS tree
                    • Error! echo
                      Your kernel headers for kernel 4.14.87-v7+ cannot be found at
                      /lib/modules/4.14.87-v7+/build or /lib/modules/4.14.87-v7+/source.
                      /opt/retropie/supplementary/mkarcadejoystick /home/pi

                    and therefor the final error:

                    FATAL: Module mk_arcade_joystick_rpi not found.
                    /home/pi

                    I tried to update it from retropie-setup and got this log. It does not give the instance module error anymore. But does not solve the kernel header issue and also not the module problem:

                    Log started at: Wed 19 Dec 11:55:48 UTC 2018
                    
                    RetroPie-Setup version: 4.4.4 (87773ed)
                    System: Linux retropie 4.14.87-v7+ #1178 SMP Tue Dec 11 14:47:38 GMT 2018 armv7l GNU/Linux
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Installing dependencies for 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    /home/pi/RetroPie-Setup/tmp/build/mkarcadejoystick /home/pi/RetroPie-Setup/logs
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Getting sources for 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    Already on 'master'
                    M       dkms.conf
                    Your branch is up-to-date with 'origin/master'.
                    Already up-to-date.
                    /home/pi/RetroPie-Setup/logs
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Building 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    
                    ------------------------------
                    Deleting module version: 0.1.5
                    completely from the DKMS tree.
                    ------------------------------
                    Done.
                    
                    Creating symlink /var/lib/dkms/mk_arcade_joystick_rpi/0.1.5/source ->
                                     /usr/src/mk_arcade_joystick_rpi-0.1.5
                    
                    DKMS: add completed.
                    Error! echo
                    Your kernel headers for kernel 4.14.87-v7+ cannot be found at
                    /lib/modules/4.14.87-v7+/build or /lib/modules/4.14.87-v7+/source.
                    /opt/retropie/supplementary/mkarcadejoystick /home/pi/RetroPie-Setup/logs
                    
                    = = = = = = = = = = = = = = = = = = = = =
                    Configuring 'mkarcadejoystick' : Raspberry Pi GPIO Joystick Driver
                    = = = = = = = = = = = = = = = = = = = = =
                    
                    modprobe: FATAL: Module mk_arcade_joystick_rpi not found.
                    /home/pi/RetroPie-Setup/logs
                    
                    Log ended at: Wed 19 Dec 11:55:52 UTC 2018
                    Total running time: 0 hours, 0 mins, 4 secs
                    
                    1 Reply Last reply Reply Quote 0
                    • mituM
                      mitu Global Moderator
                      last edited by mitu

                      The problem is that in order to compile the module, you need the Linux kernel headers for the kernel version you're running. You don't have that installed because you probably run rpi-update which updates your kernel + firmware to the testing version distributed by Raspbian, but it doesn't install any kernel headers.
                      rpi-update is not recommended for regular updates, you should restore the kernel version which is distributed via apt - from the Raspbian repositories - and retry.

                      1 Reply Last reply Reply Quote 1
                      • J
                        jp
                        last edited by

                        @mitu said in Player 2 controller not working:

                        restore the kernel version

                        Can't remember running rpi-update but I did apt-get update upgrade etc. some stuff to begin with.
                        Can I run sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel safely? And will it find the headers then? Sorry to bother you again, but I am a kernel(header)-noob.

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

                          I think it should be fine - see also this post on the Raspberry Pi forums.

                          1 Reply Last reply Reply Quote 1
                          • J
                            jp
                            last edited by

                            IT'S ALIVE! Thank you @mitu! After running the mentioned command and rebooting I ran the retropie-setup again and updated the driver, which worked. Had to do some keymapping in the menu then and it's fixed now!

                            Next step: make a good retropie backup image of this working setup, because there is no soft shutdown...

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

                              @jp So now both controllers work ?

                              J 1 Reply Last reply Reply Quote 1
                              • J
                                jp @mitu
                                last edited by

                                @mitu yes. since I configured the usb first, the hardware joystick is seen as player 2. But that's okay!

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

                                  @jp You can re-order them using the Configuration Editor or the Retropie Joystick selection tool.
                                  Glad you got them working in the end.

                                  1 Reply Last reply Reply Quote 1
                                  • J
                                    jp
                                    last edited by

                                    alt text
                                    Thanks, I will upvote your posts! Don't know if it helps or not. Happy retro gaming!

                                    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.