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

    Nvidia Controller on Retropie 4.6.7

    Scheduled Pinned Locked Moved Help and Support
    controller cfgnvidia
    9 Posts 2 Posters 1.6k 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.
    • R
      robca
      last edited by robca

      I created a clean Retropie install on my RPi 3B+ (from the downloaded SD card image). Version 4.6.7 on Raspbian Buster. I updated everything as of yesterday (core packages, OS, etc)

      My main controller is a DragonRise USB arcade controller, plus a wireless keyboard. With only those 2 controllers, everything works as expected: EmulationStation UI, arcade games, RGUI using Select+X on the joystick, Tab menu from the keyboard. I mostly use lr-mame2003, with a few games using lr-fbneo or advmame.

      Then I add a Nvidia Controller V1.03 (2015) connected via USB cable. I can use the ES input configuration to configure it. Everything looks ok, all buttons seems to be configured properly.

      But when I start a game, I get an overlay message that says that the Nvidia controller is not configured, the DragonRise controller configured on port #1. At that point the game still recognizes the arcade joystick for the gate itself, but not Select+X (or even Select+Start to exit a game). Nothing on the Nvidia controller is recognized.

      I tried pretty much every suggestion from googling "retropie nvidia controller", but nothing seems to work for me. Any suggestion?

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

        @robca Did you disable the EmulationStation joystick auto-configuration from the RetroPie Setup ? If you did, configuring the input in EmulationStation will not generate the RetroArch gamepad auto-configuration file.

        1 Reply Last reply Reply Quote 0
        • R
          robca
          last edited by

          Good suggestion, thanks... but, no, the autoconfiguration is enabled and works as expected for the DragonRise joystick. For example, if I remap the DragonRise buttons, every game then uses the remapped ones, so I'm assuming everything works.

          If I launch a game with verbose logging, I get the following portion:

          [...]
          [INFO] [Video]: Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
          [INFO] [udev]: Keyboard #0 (/dev/input/event3).
          [INFO] [udev]: Mouse #0 (/dev/input/event4).
          [INFO] [udev]: Mouse #1 (/dev/input/mouse1).
          [INFO] [udev]: Mouse #2 (/dev/input/event1).
          [INFO] [udev]: Mouse #3 (/dev/input/mouse0).
          [INFO] [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (121:6) on port #0.
          [INFO] [udev]: Pad #0 (/dev/input/event7) supports 0 force feedback effects.
          [INFO] [udev]: Plugged pad: NVIDIA Corporation NVIDIA Controller v01.03 (2389:29200) on port #1.
          [INFO] [udev]: Pad #1 (/dev/input/event0) supports 0 force feedback effects.
          [INFO] [Joypad]: Found joypad driver: "udev".
          [WARN] [udev]: Full-screen pointer won't be available.
          [INFO] [Video]: Found display server: null
          [...]
          

          But then the overlay on the screen says that it's not enabled

          1 Reply Last reply Reply Quote 0
          • R
            robca
            last edited by

            One more piece of info: from EmulationStation, Retropie settings, if I select Retroarch and open the Retroarch grey.green blocky menu, I get the same overlay stating that the Nvidia controller is not configured. And I cannot control the Retroarch menu with the Nvidia controller, only DragonRise. Which clearly points to Retroarch not recognizing the Nvidia controller.

            Looks like I cannot include files here, but there doesn't seem to be anything in retroarch.cfg that would either help or cause problems. Is there a way to force a device in retroarch.cfg?

            I also did a usb-devices command to see if the drivers used for the DragonRise and Nvidia are different, but doesn't seem to be the case

            T:  Bus=01 Lev=03 Prnt=03 Port=02 Cnt=03 Dev#=  5 Spd=1.5 MxCh= 0
            D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
            P:  Vendor=0079 ProdID=0006 Rev=01.07
            S:  Manufacturer=DragonRise Inc.
            S:  Product=Generic   USB  Joystick
            C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
            I:  If#=0x0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
            
            T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#=  4 Spd=12  MxCh= 0
            D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
            P:  Vendor=0955 ProdID=7210 Rev=01.00
            S:  Manufacturer=NVIDIA Corporation
            S:  Product=NVIDIA Controller v01.03
            C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
            I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
            

            using lsusb, I can see that the only difference is that the DragonRise and the keyboard are 1.5M devices, the Nvidia controller is 12M. Can that be enough to cause problems to Retroarch? I'm assuming most controllers with analog axis are faster than a simple digital joystick and buttons

            mituM 1 Reply Last reply Reply Quote 0
            • R
              robca
              last edited by

              Adding also the output of lsusb -v for both controllers, just in case

              Bus 001 Device 004: ID 0955:7210 NVIDIA Corp. SHIELD Controller
              Device Descriptor:
                bLength                18
                bDescriptorType         1
                bcdUSB               2.00
                bDeviceClass            0 
                bDeviceSubClass         0 
                bDeviceProtocol         0 
                bMaxPacketSize0         8
                idVendor           0x0955 NVIDIA Corp.
                idProduct          0x7210 SHIELD Controller
                bcdDevice            1.00
                iManufacturer          11 NVIDIA Corporation
                iProduct               12 NVIDIA Controller v01.03
                iSerial                 0 
                bNumConfigurations      1
                Configuration Descriptor:
                  bLength                 9
                  bDescriptorType         2
                  wTotalLength       0x0022
                  bNumInterfaces          1
                  bConfigurationValue     1
                  iConfiguration          0 
                  bmAttributes         0x80
                    (Bus Powered)
                  MaxPower              500mA
                  Interface Descriptor:
                    bLength                 9
                    bDescriptorType         4
                    bInterfaceNumber        0
                    bAlternateSetting       0
                    bNumEndpoints           1
                    bInterfaceClass         3 Human Interface Device
                    bInterfaceSubClass      0 
                    bInterfaceProtocol      0 
                    iInterface             14 Gamepad1 Device
                      HID Device Descriptor:
                        bLength                 9
                        bDescriptorType        33
                        bcdHID               1.11
                        bCountryCode            0 Not supported
                        bNumDescriptors         1
                        bDescriptorType        34 Report
                        wDescriptorLength     241
                       Report Descriptors: 
                         ** UNAVAILABLE **
                    Endpoint Descriptor:
                      bLength                 7
                      bDescriptorType         5
                      bEndpointAddress     0x81  EP 1 IN
                      bmAttributes            3
                        Transfer Type            Interrupt
                        Synch Type               None
                        Usage Type               Data
                      wMaxPacketSize     0x0040  1x 64 bytes
                      bInterval               2
              Device Status:     0x0000
                (Bus Powered)
              
              Bus 001 Device 005: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
              Device Descriptor:
                bLength                18
                bDescriptorType         1
                bcdUSB               1.00
                bDeviceClass            0 
                bDeviceSubClass         0 
                bDeviceProtocol         0 
                bMaxPacketSize0         8
                idVendor           0x0079 DragonRise Inc.
                idProduct          0x0006 PC TWIN SHOCK Gamepad
                bcdDevice            1.07
                iManufacturer           1 DragonRise Inc.  
                iProduct                2 Generic   USB  Joystick  
                iSerial                 0 
                bNumConfigurations      1
                Configuration Descriptor:
                  bLength                 9
                  bDescriptorType         2
                  wTotalLength       0x0029
                  bNumInterfaces          1
                  bConfigurationValue     1
                  iConfiguration          0 
                  bmAttributes         0x80
                    (Bus Powered)
                  MaxPower              500mA
                  Interface Descriptor:
                    bLength                 9
                    bDescriptorType         4
                    bInterfaceNumber        0
                    bAlternateSetting       0
                    bNumEndpoints           2
                    bInterfaceClass         3 Human Interface Device
                    bInterfaceSubClass      0 
                    bInterfaceProtocol      0 
                    iInterface              0 
                      HID Device Descriptor:
                        bLength                 9
                        bDescriptorType        33
                        bcdHID               1.10
                        bCountryCode           33 US
                        bNumDescriptors         1
                        bDescriptorType        34 Report
                        wDescriptorLength     101
                       Report Descriptors: 
                         ** UNAVAILABLE **
                    Endpoint Descriptor:
                      bLength                 7
                      bDescriptorType         5
                      bEndpointAddress     0x81  EP 1 IN
                      bmAttributes            3
                        Transfer Type            Interrupt
                        Synch Type               None
                        Usage Type               Data
                      wMaxPacketSize     0x0008  1x 8 bytes
                      bInterval              10
                    Endpoint Descriptor:
                      bLength                 7
                      bDescriptorType         5
                      bEndpointAddress     0x01  EP 1 OUT
                      bmAttributes            3
                        Transfer Type            Interrupt
                        Synch Type               None
                        Usage Type               Data
                      wMaxPacketSize     0x0008  1x 8 bytes
                      bInterval              10
              Device Status:     0x0000
                (Bus Powered)
              
              1 Reply Last reply Reply Quote 0
              • mituM
                mitu Global Moderator @robca
                last edited by

                @robca said in Nvidia Controller on Retropie 4.6.7:

                Which clearly points to Retroarch not recognizing the Nvidia controller.

                Actually, your log shows the Nvidia controller being recognized as P2, which cannot control the menu. Can you check \\retropie\configs\all\retroarch-joypads and see if there's a .cfg file for the Nvidia controller ?

                1 Reply Last reply Reply Quote 0
                • R
                  robca
                  last edited by

                  I just finally figured out what is happening, and I'm 99% sure it's an EmulationStation bug.

                  When I configured the Nvidia controller with EmulationStation "Configure Input", it created a file called "NVIDIA Controller v01.03.cfg". When I configure the controller using the Retroarch gray/green blocky menu, it creates a file called "NVIDIA Corporation NVIDIA Controller v01.03.cfg".

                  Once that file is created, things work much better, and at least some keys are recognized. So it looks as if EmulationStation uses a shorter name for the controller, and Retroarch needs the full long name instead.

                  Now I need to understand why the only keys the games recognize are the Start and Select keys. I think that is because it's recognized as Player 2 (per your suggestion).

                  Is there a way to use 2 controllers interchangeably as player 1 and 2? Does this utility https://github.com/meleu/RetroPie-joystick-selection work in recent builds, or is there a better way??

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

                    @robca said in Nvidia Controller on Retropie 4.6.7:

                    I just finally figured out what is happening, and I'm 99% sure it's an EmulationStation bug.

                    It's not EmulationStation that creates the config, but regardless, the name of the generated .cfg is based on the name reported by the controller - that works for the other controller you have and is generally not something that was changed recently. Even the Retroarch's joypad autoconfig profiles use the same file name, without the vendor.

                    Now I need to understand why the only keys the games recognize are the Start and Select keys. I think that is because it's recognized as Player 2 (per your suggestion).

                    Is there a way to use 2 controllers interchangeably as player 1 and 2? Does this utility https://github.com/meleu/RetroPie-joystick-selection work in recent builds, or is there a better way??

                    That should still work.

                    R 1 Reply Last reply Reply Quote 0
                    • R
                      robca @mitu
                      last edited by robca

                      @mitu Thanks, appreciate the help.

                      I tried many times to autoconfigure the Nvidia controller (Manage packages -> Manage core packages -> emulationstation -> Configuration -> and run Clear/Reset Emulation Station input configuration) and recreating it, every time it created the same shorter name. Only using the Retroarch menu, the new longer file name was created. As soon as that file was created, I stopped seeing the "not configured overlay", and seeing "Nvidia controller on port 2" (or something along those lines). And the controller started working

                      I really think that there is something weird with the auto-creation of the Nvidia controller. It's possible that somehow Retroarch and the auto configuration use different APIs to get the device name? Or that the V1.03 controller is somehow behaving differently?

                      Anyway, hopefully anyone else with this problem will bump into this thread and get a possible workaround

                      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.