Support for Sanwa 400-JYP62UMBKX gamepad

Recently, I bought the Sanwa 400-JYP62UMBKX gamepad (https://direct.sanwa.co.jp/ItemPage/400-JYP62UMBKX), an updated version of 400-JYP62UBKX which was supposed to work with Linux. I get the red LED and mode LED illuminating briefly when I connect; however, it doesn’t show activity under KDE game controller settings. It wasn’t detected there at all until I installed xboxdrv, but no feedback in system settings still.

/etc/xboxdrv.conf

[xboxdrv]
busid = 1
devid = 19
product-id = 0x5205
silent = false
vendor-id = 0x11c0
verbose = true
[xboxdrv-daemon]
dbus = disabled

lsusb -v

Bus 001 Device 019: ID 11c0:5205 Betop Controller
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 8
idVendor 0x11c0 Betop
idProduct 0x5205
bcdDevice 1.07
iManufacturer 0
iProduct 2 Controller
iSerial 3 12340000
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0030
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 255 Vendor Specific Class
bInterfaceSubClass 93
bInterfaceProtocol 1
iInterface 0
** UNRECOGNIZED: 10 21 10 01 01 24 81 14 03 00 03 13 02 00 03 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 8
Device Status: 0x0000
(Bus Powered)

dmesg

[18327.696929] usb 1-2.2.4: new full-speed USB device number 19 using xhci_hcd
[18327.869081] usb 1-2.2.4: New USB device found, idVendor=11c0, idProduct=5205, bcdDevice= 1.07
[18327.869093] usb 1-2.2.4: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[18327.869097] usb 1-2.2.4: Product: Controller
[18327.869100] usb 1-2.2.4: SerialNumber: 12340000

Any way we could get this vendor and product ID added so it works like every other USB gamepad? It’s quite a nice controller and I’d like to be able to use it. Please, let me know if any further information is required.

Hi
I added Betop controller support, can you test this build? I’ve enabled the TW repo for now so you can grab an rpm.

https://build.opensuse.org/package/show/home:malcolmlewis:branches:hardware/xboxdrv

https://download.opensuse.org/repositories/home:/malcolmlewis:/branches:/hardware/openSUSE_Tumbleweed/x86_64/

Wow, thanks for the quick turnaround on this! It’s a big first step and I was able to test a game with it under bsnes. Now, the mode LED is lit permanently and there’s no way to disable it. The red LED near button 16 blinks constantly.

Also, I noticed some of the buttons were reporting the same data in KDE input settings, so I wanted to check what each button did. Below is how this controller maps in bsnes. Under mapping #3, that is the result of Up, Down, Left, Right on the D-pad, left analogue stick, and right analogue stick followed by the mode button (this shouldn’t report a value in theory like the Turbo and Clear buttons don’t). Under mapping #4, this is the result of each button press for buttons 1-16 (11 and 12 are under the left and right analogue sticks, respectively):

https://bayimg.com/cbfc6578d70ea44a5a09114e18ee28116ebe940c.jpg

It is true that button pairs (3,9), (6,7), (11,14), and (12,16) report their same respective values. I tested this in-game with one of those buttons mapped and pressing its pair will execute the mapping. I didn’t see any output under xev, so I’m not sure what else you’d like me to test regarding data for this controller.
https://mega.nz/file/YB0j1ajZ#rBInbxdfAV9dBHjApNGye4uYBQ6I6LaEMAuGVMT5zdk

Hi
So it’s working (sort off) when it wasn’t before?

Correct. None of the behaviour described in my previous post was possible initially. What’s the next step?

Hi
From my perspective I’ll push the update so it gets into Tumbleweed :wink:

So have you removed the changed to the xboxdrv config file?

Yes, /etc/xboxdrv.conf is stock now. Do you have any advice on how to get the buttons to map properly?

Hi
I don’t unfortunately, maybe there are other Forum users that can comment.

Thanks. Do you see its being possible for this gamepad to work from kernel space, like the other controllers, rather than user space?

Hi
I don’t think so, or is there an oss driver?

Your running Wayland or Xorg?

Wouldn’t it work with the existing gamepad drivers if the vendor and device IDs were added to be recognised? I started running Wayland, but it was too unstable with the proprietary NVIDIA drivers. I switched to Xorg and everything is working fine.

Between my last post and kernel version 5.19.0-1, this device was working natively without requiring xboxdrv. This controller was being detected properly as shown in dmesg, but I don’t have that output unfortunately. The red mode light wasn’t blinking constantly and I could switch between modes using the mode button. All 16 buttons worked independently without any duplication as described in a previous post and here’s how it looked in Dolphin emulator:
https://bayimg.com/c1c2eabccc55a9f059f52d82a2a5cd3cb77924df.jpg
Then, with that kernel version, it reverted to normal. This seems like a regression to me. Any chance whatever happened during that kernel version to make this stop working properly could be reverted?

Hi
If that’s the case, then a bug report would be needed… openSUSE:Submitting bug reports - openSUSE

I filed it here. Turns out, unplugging and reconnecting the gamepad at the disk encryption prompt made it work properly. Not sure why that is, but it’s the solution.