I modified the .rc files under .advanced for the joystick to auto or raw, but nothing worked. under windows everything worked fine but i do not get this joystick to work. hopefully somebody of you also has this controller and knows a solution. thanks in advance.
I'm having the same issue with the Xin-Mo Dual as well. It's the default joystick driver causing the issue, but I don't know how to patch or rebuild Linux. I'll be spending the day researching this, but if anyone else comes up with anything new that would be great. I'll save this site and post my findings as well.
you have to dowload the kernel source of raspbian copy the file patch in the same directory and patch it follow those instructions to rebuild the kernel and use it : http://elinux.org/RPi_Kernel_Compilation good luck it's not so hard, i made it ;-)
Thanks that's what it looked like I was going to need. I ended up re-wiring LEFT and UP as joystick buttons 8 and 9 for now. I have Frogger working with no lag on AdvanceMAME. At least we know what the issue is. While frustrating, I'm having a lot of fun at the same time! I'm already thinking about a 2nd machine!
Hi - I am having the issue with the Xin-Mo controller joystick signalling that is described in this thread. I am running PiMAME 0.7.10. Did you ever implement this patch?
Hmm. According to your web site, 0.7.10 includes the Xin-Mo patch. Yet I am still having an issue where only two of the four joystick directions are being recognized by the controller. Is there an easy way to confirm the patch is indeed present in the kernel?
Ok, that's crazy... my linux kernel on raspicade is 3.10.34 or 3.10.36+ and the patch is working. It's a previous version see http://elinux.org/RPi_Kernel_Compilation : since Jan '14 the current is rpi-3.10.y
I tried everything on the tutorial, there were a few messages at the ens about the modules. I will try it again on the weekend and hopefully I can get it sorted. Thanks for the help.
For example from my laptop to the pi : [yann@archery linux]$ scp kernel-3.10.36-xinmo.tar.gz pi@192.168.1.63: pi@192.168.1.63's password: kernel-3.10.36-xinmo.tar.gz 100% 15MB 3.7MB/s 00:04 [yann@archery linux]$
connect to the pi with ssh (it's the simplest)
ssh pi@192.168.1.67
You'll need to have the right date/time on the pi, otehrwise you'll get timestamp errors
pi@raspberrypi ~ $ sudo ntpdate "somentpserver or your gateway" 9 Apr 07:13:50 ntpdate[2171]: step time server 193.50.119.254 offset 315265.763132 sec
Extract the archive pi@raspberrypi ~ $ tar xzf kernel-3.10.36-xinmo.tar.gz pi@raspberrypi ~ $
we are going to make backup of current module directory (to get back if something goes wrong) pi@raspberrypi ~ $ cd /lib pi@raspberrypi /lib $ sudo mv firmware firmware_ximmo pi@raspberrypi /lib $ sudo mv modules modules_xinmo pi@raspberrypi ~ $ cd now we copy the new module directory to the right place
Welcome in your RaspberryPI (Moebius Release) pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.10.36+ #1 PREEMPT Tue Apr 8 17:13:47 CEST 2014 armv6l GNU/Linux pi@raspberrypi ~ $
Yes it is. Connect the xinmo module and verify it is recognized :
[ 285.145320] usb 1-1.3.2: Product: THT Arcade console 2P USB Player [ 285.145336] usb 1-1.3.2: Manufacturer: THT [ 285.214536] input: THT THT Arcade console 2P USB Player as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.2/1-1.3.2:1.0/input/input3 [ 285.216642] xinmo 0003:16C0:05E1.0004: input,hidraw3: USB HID v1.01 Joystick [THT THT Arcade console 2P USB Player]
next let's see if xinmo module is loaded :
pi@raspberrypi ~ $ lsmod Module Size Used by hid_xinmo 1108 0 [...] evdev 9439 0 joydev 9072 0
Now, we are going to test if all is fonctionning using evtest :
pi@raspberrypi ~ $ evtest No device specified, trying to scan all of /dev/input/event* Not running as root, no devices may be available. Available devices: [...] /dev/input/event3: THT THT Arcade console 2P USB Player Select the device event number [0-3]: 3 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x16c0 product 0x5e1 version 0x101 Input device name: "THT THT Arcade console 2P USB Player" Supported events: [...] Properties: Testing ... (interrupt to exit)
and now try your joysticks and buttons you should see for player 1 Properties: Testing ... (interrupt to exit) Event: time 1396163394.891907, type 3 (EV_ABS), code 0 (ABS_X), value 1 Event: time 1396163394.891907, -------------- SYN_REPORT ------------ Event: time 1396163395.035925, type 3 (EV_ABS), code 0 (ABS_X), value 0 Event: time 1396163395.035925, -------------- SYN_REPORT ------------ Event: time 1396163401.148755, type 3 (EV_ABS), code 0 (ABS_X), value -1 Event: time 1396163401.148755, -------------- SYN_REPORT ------------ Event: time 1396163401.340781, type 3 (EV_ABS), code 0 (ABS_X), value 0 Event: time 1396163401.340781, -------------- SYN_REPORT ------------
So, PiPlay 0.8 beta 3 does have the Xin Mo patch built in. If one buttons works, they all should. I would double check all the connections, especially if its just up and left.
The latest Raspbian updated the kernel from 3.8 to 3.10, so the tutorial to recompile still works, just change your all the commands relating to the kernel number to the current one.
Thanks so much for all the help. I will try and configure it over the weekend. Gonna Try and rewire and see if it helps but there are a few people who have had the same problem. I pray this works as I am dying to use my self built arcade machine.
I know this is a massive ask but could you or anybody else please create a tutorial, maybe with the odd screenshot or two, of how to patch the kernel. I know it sounds odd but for a noob like myself, I attempt everything but I do sometimes find it difficult as I am not sure if i am working in the correct folder/directory and often this makes the process redundant. I ask only because I cant seem to patch the kernel successfully. Your help would be greatly appreciated by all.
You are going to compile a new kerlent on your pi : We are not going to use crosscompilation here, so it will take between 15 and 17 hours to compile the kernel on the pi.
Step 1 : update and Install tools for compilation
sudo apt-get update sudo apt-get -y dist-upgrade sudo apt-get -y install gcc make ncurses-dev bc screen
After, answer by default to all remaining question.
If you missed the Xin-Mo line or are not sure, you can use the menu config1 to make sure it is enabled. Type
make menuconfig and navigate to Device Drivers → HID support → Special HID drivers → Xin-Mo non-fully compliant devices and type m to enable it as a module. An should be displayed next to the line:
Xin-Mo
Step 5 : compilation
pi@raspberrypi ~/linux-rpi-3.10.y $ make ; make modules scripts/kconfig/conf --silentoldconfig Kconfig WRAP arch/arm/include/generated/asm/auxvec.h WRAP arch/arm/include/generated/asm/bitsperlong.h WRAP arch/arm/include/generated/asm/cputime.h WRAP arch/arm/include/generated/asm/current.h WRAP arch/arm/include/generated/asm/emergency-restart.h
You have time, go to bed and have a long long night ;-) (with crosscompilation, it takes only 2 hours on an 5 year laptop!!! pi computing power is really low)
I will post the next steps when you kernel will be compiled ;)
You are a legend. I am going to try and rewite my xin mo first as someone sent me an image on how to wire the usb controller for piplay 0.8.3 so will try that first and then attempt to rebuild the kernel is neccessary. Many thanks for your effort to help us noobs. It is greatly appreciated.
@ian57 I am stuck on step 2: pi@raspberrypi ~ $ tar xzf rpi-3.10.y.tar.gz Nothing happens Also the next step is (|s) does this mean the Symbol (|) and a (s) or is it Ls or 1s. I'm a bit confused.
Hi i've testes the last firmware (debian) with kernel 3.12.y. The source code contains the xinmo patch, but the delivered kernel does not contain the xinmo module -> need to recompile
We copy the new kernel (non compressed image) in the /boot directory from you linux directory. You can name it as you want. But be carreful not to overwrite the curretn kernel ! :
Now we have to copy the modules to the /lib/ tree. We make that with 2 steps : - first we install the compiled modules in a directory in our home - second we copy the module tree to /lib/modules
Here we go :
mkdir ~/modules export MODULES_TEMP=~/modules make INSTALL_MOD_PATH=${MODULES_TEMP} modules_install
Next we copy the modules at the right place. But we make a backup before. It's safer :
Testing ... (interrupt to exit) Event: time 1401287234.331789, type 3 (EV_ABS), code 0 (ABS_X), value -1 Event: time 1401287234.331789, -------------- SYN_REPORT ------------ Event: time 1401287234.507790, type 3 (EV_ABS), code 0 (ABS_X), value 0 Event: time 1401287234.507790, -------------- SYN_REPORT ------------ Event: time 1401287235.419808, type 3 (EV_ABS), code 0 (ABS_X), value 1 Event: time 1401287235.419808, -------------- SYN_REPORT ------------ Event: time 1401287235.563775, type 3 (EV_ABS), code 0 (ABS_X), value 0 Event: time 1401287235.563775, -------------- SYN_REPORT ------------ Event: time 1401287237.179816, type 3 (EV_ABS), code 1 (ABS_Y), value -1 Event: time 1401287237.179816, -------------- SYN_REPORT ------------ Event: time 1401287237.307797, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1401287237.307797, -------------- SYN_REPORT ------------ Event: time 1401287238.235814, type 3 (EV_ABS), code 1 (ABS_Y), value 1 Event: time 1401287238.235814, -------------- SYN_REPORT ------------ Event: time 1401287238.395785, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1401287238.395785, -------------- SYN_REPORT ------------ Event: time 1401287240.451808, type 3 (EV_ABS), code 2 (ABS_Z), value -1 Event: time 1401287240.451808, -------------- SYN_REPORT ------------ Event: time 1401287240.595801, type 3 (EV_ABS), code 2 (ABS_Z), value 0 Event: time 1401287240.595801, -------------- SYN_REPORT ------------ Event: time 1401287241.251809, type 3 (EV_ABS), code 2 (ABS_Z), value 1 Event: time 1401287241.251809, -------------- SYN_REPORT ------------ Event: time 1401287241.411794, type 3 (EV_ABS), code 2 (ABS_Z), value 0 Event: time 1401287241.411794, -------------- SYN_REPORT ------------ Event: time 1401287241.987807, type 3 (EV_ABS), code 3 (ABS_RX), value -1 Event: time 1401287241.987807, -------------- SYN_REPORT ------------ Event: time 1401287242.163819, type 3 (EV_ABS), code 3 (ABS_RX), value 0 Event: time 1401287242.163819, -------------- SYN_REPORT ------------ Event: time 1401287242.643798, type 3 (EV_ABS), code 3 (ABS_RX), value 1 Event: time 1401287242.643798, -------------- SYN_REPORT ------------ Event: time 1401287242.787808, type 3 (EV_ABS), code 3 (ABS_RX), value 0 Event: time 1401287242.787808, -------------- SYN_REPORT ------------
Thanks @ian57. I will try first to complete your tutorial on rebuilding the kernel for 3.10.y and if it works im not touching it for a loooong time. Kernel still building so i will let you know how it goes
Quick question, do you have to do all the steps in succession or can you switch the pi off between steps? So can you simply pick up where you left off the last time?
So for kernel 3.12.y do you just change the input from 3.1o.y to 3.12.y in all the steps and then skip the patch part? How do you configure the xinmo module? Confused.com
Of course you can switch of the pi... after compilation... or even during compilation. you can stop compilation 'CTRL-C' and restart it (it will compile what remains).
For kernel 3.12.y just skip the step 3. and continue with step 4. make mrproper make oldconfig etc... If you try to apply the patch, it complains that it is already patched.