libretro / retroarch-joypad-autoconfig

RetroArch joypad autoconfig files
MIT License
291 stars 370 forks source link

Missing VIDs and PIDs #814

Open Jaffacakelover opened 2 years ago

Jaffacakelover commented 2 years ago

I've been through all of the controller autoconfig files for a related task, and thought this list might prove useful to some who want to track down missing values.

The following autoconfigs have no vendor_id and no product_id:

android:

  • ADC_Joystick
  • Amazon Fire TV Remote
  • Android TV Remote Control
  • Archos_Gamepad
  • BBC_GAME
  • Buffalo_BGC_FC801
  • ChromeOS_Gamepad
  • Defender_Game_Racer_Classic
  • DragonRise
  • Drone
  • DualShock2_Generic
  • DualShock2_JCPS102
  • DualShock2_WiseGroup
  • DualShock3
  • DualShock3_Gamepad0
  • DualShock3_Gamepad1
  • DualShock3_Gamepad2
  • DualShock3_Gamepad3
  • DualShock3_Gamepad4
  • DualShock3_Gamepad5
  • Elecom_JC-U912F
  • GameMID
  • GameMID_Alt
  • Gasia_PlayStation3
  • Genius_Maxfire_G08XU
  • GPD_G5A
  • GPD_G58_skeltonrom
  • GPD_Q9
  • GS_controller
  • GS_gamepad
  • HuiJia
  • iControlPad_HID_Joystick_Profile
  • iControlPad_SPP_Profile_Bluez
  • idroid_con
  • iDroid_x360
  • Infra-Red
  • JOYROOM-ZS149
  • JXD_S5110B
  • JXD_S5110B_Skelrom
  • JXD_S7300B
  • JXD_S7800B
  • JXD_S7800B_1
  • Logicool_RumblePad_2
  • Logitech_Precision
  • Logitech_RumblePad_2
  • MadCatz_PC_USB_Wired_Stick
  • Mayflash_Wii_Classic
  • Microsoft_Sidewinder_Classic
  • Microsoft_Sidewinder_Dual_Strike
  • Moga_2_HID
  • Moga_IME
  • MUCH_iReadyGo_i5
  • nvec_keyboard
  • NVIDIA_SHIELD_Remote
  • NVIDIA_SHIELD_Virtual
  • Nyko_Playpad_Pro
  • Onlive_Wireless_Controller
  • OUYA
  • PLAYSTATION(R)3 Controller
  • RetroKeyboard
  • retronicdesign.com Sega Joypad Adapter v3.0
  • RetroUSB_RetroPad
  • RetroUSB_SNES_RetroPort
  • Saitek_RumblePad_480
  • Samsung_Gamepad_EI-GP20
  • Sega_Virtua_Stick
  • Sony_Bravia_TV_Remote
  • sunxi-ir
  • Super_Smartjoy_2
  • SZMy_Power_Dual_Box_Wii
  • Thrustmaster_T_Mini
  • Tomee_NES_USB
  • TOMMO_Neo-Geo_X
  • Toodles_2008_Chimp
  • Trust_Predator
  • TTT_THT_Arcade_Player1
  • TTT_THT_Arcade_Player2
  • ultimarc_uhid
  • WikiPad
  • Xiaomi Bluetooth Gamepad
  • Xperia_Play_keypad
  • Xperia_Play_zeus
  • Xperia_Play_zeus2
  • Zeemote SteelSeries Free
  • Zeemote_Steelseries_free dinput:
  • Logitech_RumblePad_2
  • Mayflash_USB_Adapter
  • Microsoft_Sidewinder_Game_Pad_USB hid:
  • MFi_Gamepad
  • MP-8866_Dual_USB_Joypad linuxraw:
  • Sony Interactive Entertainment Wireless Controller mfi:
  • MFi_Controller parport:
  • Generic_Parallel_Port_device qnx:
  • Blackberry_BT_Keyboard
  • Blackberry_Q10_Keypad
  • iPega_PG-9017 sdl2:
  • Retrolink_N64_USB x:
  • Microsoft X-Box 360 pad xinput:
  • Logitech_RumblePad_2 udev:
  • 2Axes11KeysGamePad
  • ASUS Gamepad
  • ControlBlockArcadeGamepad
  • ControlBlockSNESGamepad
  • Defender_Game_Master_Gamepad
  • Gamegirl
  • GEN GAME S3
  • Generic_X-Box_pad
  • go_advance_gamepad
  • go_advance_gamepad_v11
  • go_super_gamepad
  • GreenAsia_USB_Joystick_1
  • MP-8800_Quad_USB_Joypad
  • MP-8866_Dual_USB_Joypad
  • NintendoClovercon-_controller1
  • NintendoClovercon-_controller2
  • Nintendo_Wii_Remote
  • Nintendo_Wii_Remote_Classic_Controller
  • odroidgo2_joypad
  • odroidgo2_joypad_v11
  • odroidgo3_joypad
  • OUYA Game Controller
  • PLAYSTATION(R)3Conteroller-PANHAI
  • Razer Serval
  • SNES-to-GamepadDevice
  • SZMy-power LTD CO. Dual Box WII
  • Thrustmaster_FireStorm_Dual_Analog_2
  • Thrustmaster_T_Mini_Wireless
  • USB_2-axis_8-button_gamepad
  • Wii U GameCube Adapter Port 1
  • Wii U GameCube Adapter Port 2
  • Wii U GameCube Adapter Port 3
  • Wii U GameCube Adapter Port 4
  • XboxGamepad(userspacedriver)

From the sheer amount of Android autoconfigs that don't have VIDs or PIDs, I'm assuming that Android doesn't use them?


The following autoconfigs have the vendor_id and product_id, but both are commented out:

dinput:

  • NVIDIA_GeForce_Experience_Virtual_Controller xinput:
  • 8Bitdo_N30_Modkit_BT
  • Mayflash_USB_Adapter
  • Microsoft_Sidewinder_Game_Pad_USB
  • XInput_Controller_User_1
  • XInput_Controller_User_2
  • XInput_Controller_User_3
  • XInput_Controller_User_4 udev:
  • DIALOG_GP-A11
  • DragonRise Inc. Gamepad
  • DragonRise_Inc.GenericUSBJoystick
  • DragonRise_X-Box_Gamepad_with_Force_Feedback
  • Gametel_Bluetooth_controller
  • HuiJia USB GamePad
  • ION_iCade
  • Nintendo - Switch Pro Controller (bare)
  • SWITCH CO.,LTD. USB Gamepad
  • USBGamepad
  • usb_gamepad___(NES)
  • usb_gamepad___(SEGA)
  • usb_gamepad___(SNES)

Several of the above files include the following message:


The following autoconfigs have the vendor_id and product_id, but the product_id is commented out:

xinput:

  • Retro-Bit Tribute64 - USB (D-Input)
  • 8Bitdo_GBros_BT
RobLoach commented 2 years ago

Awesome review! Thanks so much :rocket:

bordenc commented 1 year ago

I'm trying to generate an autoconfig for a Bluetooth gamepad, but I cannot figure out how to get its PID or VID to save my life. 90 minutes of research yielded that PIDs and VIDs are a USB thing, and Linux just arbitrarily assigns Modalias: usb:v0000p0000d0001, which is pretty useless.

So what am I supposed to put for PID and VID?

If it makes any difference, I've connected my gamepad in udev mode.

RobLoach commented 1 year ago

You can get the values from usdev with lsusb. It'll give you hex values which you can port to decimal.

bordenc commented 1 year ago

You can get the values from usdev with lsusb. It'll give you hex values which you can port to decimal.

Unfortunately I cannot. This is a Bluetooth gamepad, so the only Bluetooth that shows up in lsusb is my Bluetooth receiver, not the gamepad.

offalynne commented 1 year ago

Use bluetoothctl

bordenc commented 1 year ago

Use bluetoothctl

I tried that, too:

Device 30:31:7D:A0:67:91 (public)
        Name: Lic2 Pro Controller
        Alias: Lic2 Pro Controller
        Class: 0x00000508 (1288)
        Icon: input-gaming
        Paired: yes
        Bonded: yes
        Trusted: yes
        Blocked: no
        Connected: yes
        WakeAllowed: yes
        LegacyPairing: no
        UUID: Service Discovery Serve.. (00001000-0000-1000-8000-00805f9b34fb)
        UUID: Human Interface Device... (00001124-0000-1000-8000-00805f9b34fb)
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
        Modalias: usb:v0000p0000d0001

Edit: There's a comment in the Bluetooth controllers reading

# Hex vid:pid and Decimal vid:pid is shown in the "log_verbosity" window, enable "log_verbosity" in retroarch.cfg and run RetroArch.

Cool, so I enable logging, follow the instructions, and get this:

[INFO] [Config]: Looking for config in: "/home/user/.config/retroarch/retroarch.cfg".
[INFO] RetroArch 1.15.0 (Git b2ceb50)
[INFO] === Build =======================================
[INFO] CPU Model Name: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
[INFO] Capabilities: MMX MMXEXT SSE SSE2 SSE3 SSE4 SSE4.2 AES AVX
[INFO] Built: Sep 29 2023
[INFO] Version: 1.15.0
[INFO] Git: b2ceb50
[INFO] =================================================
[INFO] [Input]: Found input driver: "x".
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] [Core]: Version of libretro API: 1, Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Set video size to: 960x720.
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [GLX]: GLX_EXT_swap_control_tear supported.
[INFO] [GL]: Found GL context: "x".
[INFO] [GL]: Detecting screen resolution: 1920x1080.
[INFO] [GLX]: X = 0, Y = 0, W = 960, H = 720.
[INFO] [GLX]: Found swap function: glXSwapIntervalEXT.
[INFO] [GL]: Vendor: Intel, Renderer: Mesa Intel(R) HD Graphics 4000 (IVB GT2).
[INFO] [GL]: Version: 4.2 (Compatibility Profile) Mesa 23.2.1-1.
[INFO] [GL]: Using resolution 960x720.
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Setting up menu pipeline shaders for XMB ...
[INFO] [GLSL]: Compiling ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling simple ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling modern snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling bokeh shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snowflake shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [udev]: Pad #0 (/dev/input/event20) supports 0 force feedback effects.
[INFO] [Autoconf]: Lic2 Pro Controller (0/0) not configured.
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [DBus]: Suspended screensaver via DBus.
[INFO] [Video]: Found display server: "x11".
[INFO] [PulseAudio]: Requested 24576 bytes buffer, got 18432.
[INFO] [Display]: Found display driver: "gl".
[INFO] [Playlist]: Loading history file: "/home/user/.config/retroarch/content_history.lpl".
[INFO] [Playlist]: Loading history file: "/home/user/.config/retroarch/content_music_history.lpl".
[INFO] [Playlist]: Loading history file: "/home/user/.config/retroarch/content_video_history.lpl".
[INFO] [Playlist]: Loading history file: "/home/user/.config/retroarch/content_image_history.lpl".
[INFO] [Playlist]: Loading favorites file: "/home/user/.config/retroarch/content_favorites.lpl".
[INFO] [PulseAudio]: Pausing.
[INFO] [Config]: Saved new config to "/home/user/.config/retroarch/retroarch.cfg".
[INFO] [PulseAudio]: Unpausing.
[INFO] [Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] [PulseAudio]: Pausing.
[INFO] [Core]: Unloading core..
[INFO] [Core]: Unloading core symbols..
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [XINERAMA]: Saved monitor #0.
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

Which is ironic because I enabled "debug" in the configuration file. It appears that I'm not using the same software the developers are.

RobLoach commented 1 year ago

[Autoconf]: Lic2 Pro Controller (0/0) not configured

Interesting that it can't find the vid and pids. What do you get when it's plugged in with a wire? The logging across all the input drivers could improve.

It appears that I'm not using the same software the developers are.

Looks the same to me. The only difference I see from my logs are that I'm currently on RA 1.16.

bordenc commented 1 year ago

Interesting that it can't find the vid and pids. What do you get when it's plugged in with a wire? The logging across all the input drivers could improve.

Unfortunately, this is pure Bluetooth. The only place to plug anything in is a space for two AA batteries. I'll try it in Windows and see if I have more luck.

Update: Tried it in Windows and got:

Device BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&00020000_PID&0000\8&2e976ffb&0&30317DA06791_C00000000 was started.

Which, ironically, gives me a little more information than Linux does. It appears, like Linux, Windows is using the default Bluetooth HID drivers because PowerA specifically, and vehemently, doesn't support anything else. It also appears to be assigning a dummy VID and PID as the controller provides neither. I see why I got the barely used controller for less than half its price new. I would have said that it has no USB ID assigned, except that OEM Nintendo controllers seem to.

Agreed that logging and general documentation leaves a lot to be desired. Having to pick through the source to figure this out will turn away a lot of potential contributors. Fortunately, I have a high frustration tolerance.