Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Xin mo dual arcade joystick
I have opi pc plus with retrorangepi 2.5 image to sd. I want to to play games with my arcade dual player joystick but I have a problem. It detects one gamepad instead of two and not working up and left moves. 
I found this solution but I can't figure out how to solve this in retrorangepi.…/RetroPie-Setup/…/Xin-Mo-Controller I can't find cmdline.txt
I am newbie and I don't know how to do it. I also found the .patch for the driver (it describes my problem) here:
but how I will install it? Thanks in advance and sorry for my english.
this is Jarno Lehtinen's facebook post, hope it helps

"Sometimes there is brief moments, when I hate Linux. As some of you may know, I'm doing different USB-joystick/gamepad-adapters from Arduino (…/Arduino-USB-HID-...ickAdapter). Most of my adapters supports 2 gamepad/joystick and works in Windows 10, and even in Windows XP, without external drivers or hiccups. Yesterday I first time tested how one adapter works as multiple joysticks/gamepads in RetrOrangePi. There was a problem - adapter showed up as one joystick. First I thought that there is something wrong with my code. I searched bugs and tested different USB-HID-descriptors without any progress. Then I tested commercial 2-joystick Atari-adapter - only one joystick device. Then I thought it must be oldish kernel or something and tested with modern Lubuntu. Same problem. It turned out, that Linux kernel module usbhid doesn't support multiple joysticks/gamepads from one USB-device. How this is possible? In 2016? Then I was giving up but Googled one more time. There is some strange parameter "quirks" in usbhid-module and with parameter 0x40 (I have no idea what that means) it may create separate joystick-devices. In RetrOrangePi kernel usbhid are compiled to kernel and parameters cannot be given after boot. After some searching I did following:
0. Make backup of /boot/boot-retro.cmd and /boot/boot.scr
1. Edit /boot/boot-retro.cmd setenv bootargs -line and add usbhid.quirks=0x2341:0x8036:0x40 to kernel parameters.
2. sudo mkimage -C none -A arm -T script -d /boot/boot-retro.cmd /boot/boot.scr
After boot there was multiple /dev/js0, js1 ... devices from one USB-adapter. Sony Playstation Multitap works now."
This solution works for me on this version of Retrorange Pi
I Made backup of `/boot/boot-retro.cmd` and `/boot/boot.scr`
-Edit `/boot/boot-retro.cmd` at the end of "setenv bootargs" line I added "... usbhid.quirks=0x16c0:0x05e1:0x040" just before the closing bracket( " ) with a space.
The first two numbers are the vendor ID 16c0 and product ID 05e1. x040 is for multi input. So here what I did

setenv bootargs "console=ttyS0,115200 console=tty3  quiet root=/dev/mmcblk0p3 rootwait rootfstype=ext4 cgroup_enable=memory swapaccount=1 loglevel=3 logo.nologo vt.global_cursor_default=0 panic=10 consoleblank=0 enforcing=0 usbhid.quirks=0x16c0:0x05e1:0x040"
- I ran 'sudo mkimage -C none -A arm -T script -d /boot/boot-retro.cmd /boot/boot.scr'
- 'sudo reboot'
Now detect 2 gamepads!! Unfortunately, again not working 2 of 4 direction moves of any joystick..but this is a progress.

here is the instructions for raspberry Patching the Linux Kernel and solve the joystick problem (do nothing in the up and left position). How can I do the same for my opi pc+ with retrorangepi 2.5 image ? Sorry but I am newbie and I don't know anything yet. Thanks for your replies.
Hello, and happy new year !

I got the same joystick problem with the new retrorangepi 3.0 :/

Any advice ?

Edit : I found the kernel on github (this one ? . Will try to patch and recompile
Back !

I compiled the kernel but when install it the orangepi does not boot :/
ok managed to compile the kernel found on github at

the xinmo driver works (tested with evtest) but emulationstation crash with :

ERROR in Mali driver:
* Mali device driver failed the API version check
* The solution is probably to rebuild the libraries and the Mali device driver.
lvl0:   Error creating SDL window!
       Could not initialize EGL
lvl0:   Renderer failed to initialize!
lvl0:   Window failed to initialize!
ok ! copying the old mali drivers (3.4.113-RetrOrangePi--sun8i/kernel/drivers/gpu) to the new kernel module directory did the job !
alexkidd will it be possible to add this patch ( into next kernel release? (and also the enforcing=0 usbhid.quirks=0x16c0:0x05e1:0x040 at boot )
Stevie is the one who manages our buildroot. Are you able to do this from github? We should be able to get this straight soon, so more people can collaborate.

Possibly Related Threads...
Thread Author Replies Views Last Post
  Cheap DIY arcade kit from eBay? chupo_cro 1 553 04-26-2017, 04:50 PM
Last Post: alexkidd
  xin moe arcade help orangepi guy 2 568 04-14-2017, 12:02 AM
Last Post: orangepi guy
  Scheme GPIO for Arcade stick and buttons? brnirons 3 1,508 01-17-2017, 08:56 AM
Last Post: Armen

Forum Jump:

Users browsing this thread: 1 Guest(s)