What's new
It's a little complicated I guess, the main problem is that different controllers report different stuff, and in such a way that it is no way predictable. So even if linux has names that are supposed to be deterministic, documented here:
https://www.kernel.org/doc/Documentation/input/gamepad.txt

it doesn't work at all in practice, thus the need to have pr-device definitions.

Some variations I've come across:

Code:
.button1 = BTN_TOP,
.button2 = BTN_THUMB2,
.button3 = BTN_TOP2,
.button4 = BTN_THUMB,
.button5 = BTN_TRIGGER,
.button6 = BTN_PINKIE,

.button1 = BTN_DEAD,
.button2 = 300,
.button3 = BTN_BASE5,
.button4 = 302,
.button5 = 301,
.button6 = BTN_BASE6,

.button1 = BTN_SOUTH,
.button2 = BTN_NORTH,
.button3 = BTN_WEST,
.button4 = BTN_EAST,
.button5 = BTN_C,
.button6 = BTN_Z,
etc.. same goes for analog axis.

I'll see if I can throw together a small utility to read the mappings needed interactively.
 
I will do it, have a red and a black logitec momo and guns for pc ps3 xbox...
Great. If you have the Logitech MoMo Red (leather wheel) covered - that would be awesome. It is the one that I would like to see supported and is a great USB steering wheel.
 
Hello, so, i made a few things, unfortunatly, the one thing i wanted the most, i can't get it to work, it's the EMS Production - Lcd Topgun. It's not detected by Ubuntu, there is a driver for it, who needs to be compiled, but i'm not really into Linux things, and can't make it work.
when i type:


Code:
make Makefile
inside the files folder, it says "nothing to make", don't know what i am doing wrong or if simply it's too old to work... ? ?(



Devices:

Sidewinder Game Pad Pro
Logitech Wingman Force - J-UA9 - 863144-0000
Logitech Momo Racing - E-UH9 - 863203-1000
Logitech Momo Force - E-UG8 - 863194-0000
EMS Production - Lcd Topgun - 80508 (not recognised)
8bitdo SFC30 Gamepad
8bitdo NES30 PRO Gamepad
 
Last edited:
for most code you should just use "make"
sometimes followed by "make install"

the makefile is automatically detected.

if you need to rebuild, you can clean the compiled files with "make clean"

check the makefile:
Code:
default:
	$(MAKE) -C $(TOPDIR) SUBDIRS=$(PWD) modules

clean:
	rm -f lcdtopgun.o lcdtopgun.ko
	rm -f lcdtopgun.mod.c lcdtopgun.mod.o
	rm -f Module.symvers
	rm -f .lcdtopgun*
	rm -fr .tmp_versions

install:
	$(MAKE) -C $(TOPDIR) SUBDIRS=$(PWD) modules_install
	depmod -ae
 
for most code you should just use "make"
sometimes followed by "make install"

the makefile is automatically detected.

if you need to rebuild, you can clean the compiled files with "make clean"

check the makefile:
Here is the tested things, also tried with your code, no success:

Code:
deep@Linux:~/Bureau/topgun-0.2$ make
make -C /usr/src/linux SUBDIRS=/home/deep/Bureau/topgun-0.2 modules
make[1]: *** /usr/src/linux : Aucun fichier ou dossier de ce type. Arrêt.
Makefile:8 : la recette pour la cible « default » a échouée
make: *** [default] Erreur 2

deep@Linux:~/Bureau/topgun-0.2$ make install
make -C /usr/src/linux SUBDIRS=/home/deep/Bureau/topgun-0.2 modules_install
make[1]: *** /usr/src/linux : Aucun fichier ou dossier de ce type. Arrêt.
Makefile:18 : la recette pour la cible « install » a échouée
make: *** [install] Erreur 2

deep@Linux:~/Bureau/topgun-0.2$ sudo make
[sudo] Mot de passe de deep : 
make -C /usr/src/linux SUBDIRS=/home/deep/Bureau/topgun-0.2 modules
make[1]: *** /usr/src/linux : Aucun fichier ou dossier de ce type. Arrêt.
Makefile:8 : la recette pour la cible « default » a échouée
make: *** [default] Erreur 2

deep@Linux:~/Bureau/topgun-0.2$ sudo make install
make -C /usr/src/linux SUBDIRS=/home/deep/Bureau/topgun-0.2 modules_install
make[1]: *** /usr/src/linux : Aucun fichier ou dossier de ce type. Arrêt.
Makefile:18 : la recette pour la cible « install » a échouée
make: *** [install] Erreur 2

deep@Linux:~/Bureau/topgun-0.2$ make Makefile
make: rien à faire pour « Makefile ».

deep@Linux:~/Bureau/topgun-0.2$ sudo make Makefile
make: rien à faire pour « Makefile ».
deep@Linux:~/Bureau/topgun-0.2$
 
Last edited:
What exactly are you trying to do? just use the controller in linux? I'm pretty sure that Invizm's project here cannot actually deal with any drivers in the middle, that it communicates with USB devices directly.

Anyway, you appear to be trying to compile a kernel driver, and do not have the linux sources installed, so you will need that first before you can compile. (that's what the error is saying)
 
Yes, trying to install the controller, to know what comes out, so Invizm can add a few more devices in his project, but if as you say, no drivers can be used in his OS, i am indeed trying to make something a little bit useless.
Thanks for helping anyway...
 
Thanks for trying the EMS LCD Top Gun; I have one as well and was hoping it would work with Invizm's project. Does anyone have a AimTrak that can be tested to see if it works? It also works with PS2/PS3 so perhaps it can be used without any drivers. Or basically, ANY USB gun that can work with Invizm's project would be great.

I am assuming the Red Logitech MoMo did work in getting the information out of Linux Invizm was looking for - anxious to hear if he can get this to work with this project. Hoping for an update at some point regarding the Logitech MoMo compatibility. Thanks for doing this and helping the project - can't wait for a prototype to be developed and see how it works. USB steering wheel, controller, and gun compatibility with JVS systems is a really big deal!
 
Interesting stuff! I need a little more details on each device to add them, but nice to know who has what, that you can run linux and the capabilities reported from evtest.

Logitech WingMan Force throws a wrench in my code as it reports values from -1920 to +1920, so far all other devices have been on the bit-boundry, and the scheme to scale it to JVS 16 bit was bit operators.

Microsoft SideWinder Game Pad Pro is also a bit of a special case as it seems to only have analog on the d-pad - will be a little hard to know if the inputs are to be regardes as analog or dpad.
 
Interesting stuff! I need a little more details on each device to add them, but nice to know who has what, that you can run linux and the capabilities reported from evtest.

Logitech WingMan Force throws a wrench in my code as it reports values from -1920 to +1920, so far all other devices have been on the bit-boundry, and the scheme to scale it to JVS 16 bit was bit operators.

Microsoft SideWinder Game Pad Pro is also a bit of a special case as it seems to only have analog on the d-pad - will be a little hard to know if the inputs are to be regardes as analog or dpad.
Don't be shy, if you need me to do any further tests, i will, just ask, be glad to help, i can also put things in parts if you need to have a look inside... :D
Wingman force is a bit tricky, the stick is very sensitive without the force feedback, very hard to trigger the buttons without moving the rest, but can allways open it to unplug some pots...
 
Bit of non-analog trivia today, hooked up my Tekken 3 PCB and it tells the IO board who it is ""namco ltd.;TET;VerC ;JPN,LED-TET-C ,TTL-TET"
Further, if I tell the tekken 3 board that the ID of the io is "namco ltd.;I/O CYBER LEAD;Ver1.03;JPNLED-0100" - it starts sending vendor specific commands, most likely to program the cyberlead LED marquee.

I tried acking a few of these requests, but it just keeps resending. It would be most interesting to see a packet dump between a tekken3 board and a cyberlead IO.. @xodaraP ?
 
Maybe this could be of help to you;
JVS I/O error

Long story short;
I'm having my Cyberlead 1.03 I/O dumped soon because I have some incompatabilities with certain games which make use of the display, see the list below with System 12 games I own and tested with the I/O:

Namco System 12:
- Ehrgeiz rev. A - works
- Tekken 3 rev. A - works
- Tekken 3 rev. E - error
- Tekken Tag Tournament rev. C - error
- Soul Calibur rev. B - error

If I you would need some of the boards to test or dump I'd be happy to send them to you.
 
Bit of non-analog trivia today, hooked up my Tekken 3 PCB and it tells the IO board who it is ""namco ltd.;TET;VerC ;JPN,LED-TET-C ,TTL-TET"
Further, if I tell the tekken 3 board that the ID of the io is "namco ltd.;I/O CYBER LEAD;Ver1.03;JPNLED-0100" - it starts sending vendor specific commands, most likely to program the cyberlead LED marquee.

I tried acking a few of these requests, but it just keeps resending. It would be most interesting to see a packet dump between a tekken3 board and a cyberlead IO.. @xodaraP ?
wow nice finding. What happens if you tell the tekken 3 board that you are something else like a SEGA I/O. Do these vendor specific commands still come?
 
Bit of non-analog trivia today, hooked up my Tekken 3 PCB and it tells the IO board who it is ""namco ltd.;TET;VerC ;JPN,LED-TET-C ,TTL-TET"
Further, if I tell the tekken 3 board that the ID of the io is "namco ltd.;I/O CYBER LEAD;Ver1.03;JPNLED-0100" - it starts sending vendor specific commands, most likely to program the cyberlead LED marquee.

I tried acking a few of these requests, but it just keeps resending. It would be most interesting to see a packet dump between a tekken3 board and a cyberlead IO.. @xodaraP ?
Let me know what you need me to do and I can get it done or we can find a way, I can use the Soul Calibur board I have or if you prefer it's easy enough to get a Tekken 3 board and it's a game I like :)

I've ordered the RS485-RS232 adapter as well, waiting for that to arrive, the I/O board isn't connected to the marquee via RS-485, it almost looks like an AT keyboard connector so I don't know if you could pull data from there to find out how it's processed (if at all) via the I/O, but I can at least pull the board to I/O side hopefully
 
Last edited:
Bit of non-analog trivia today, hooked up my Tekken 3 PCB and it tells the IO board who it is ""namco ltd.;TET;VerC ;JPN,LED-TET-C ,TTL-TET"
So there are actually motherboards that send out the 0x15 command with this info? Wouldn't it be nice if they all did, so you could manage control mapping automatically based on this info?

From what you're seeing, the PCB sends this info out unsolicited? Like you're not sending a request to the motherboard from your i/O to get this info, right?
 
0x15 (I call it JVS_MASTER_ID) is sent as part of the initialization.
Something like this:
Reset requested
Setting sense to 1
Reset requested
Setting sense to 1
Set Address requested for node1
Setting sense to 0
IO rev requested
JVS io ver requested
JVS IO COM VER requested
JVS IO capability requested
ID requested
JVS MASTER ID requested
"namco ltd.;TET;VerC ;JPN,LED-TET-C ,TTL-TET"

It only sends the vendor specific requests if IO ID is set to either "namco ltd.;I/O CYBER LEAD;Ver1.03;JPNLED-0100" or "namco ltd.;I/O CYBER LEAD;Ver2.02;JPNLED-0100" - nothing if I simply append "JPNLED-0100" to another string, and nothing if using "namco ltd.,;I/O CYBER LEAD;Ver3.0", so seems the hardware specifically looks for that IO.

I'm not going to dig further into this at the moment - too much other fun stuff that needs to be done :) , but could be of interest to the MAME guys.
 
0x15 (I call it JVS_MASTER_ID) is sent as part of the initialization.
Something like this:
Reset requested
Setting sense to 1
Reset requested
Setting sense to 1
Set Address requested for node1
Setting sense to 0
IO rev requested
JVS io ver requested
JVS IO COM VER requested
JVS IO capability requested
ID requested
JVS MASTER ID requested
"namco ltd.;TET;VerC ;JPN,LED-TET-C ,TTL-TET"

It only sends the vendor specific requests if IO ID is set to either "namco ltd.;I/O CYBER LEAD;Ver1.03;JPNLED-0100" or "namco ltd.;I/O CYBER LEAD;Ver2.02;JPNLED-0100" - nothing if I simply append "JPNLED-0100" to another string, and nothing if using "namco ltd.,;I/O CYBER LEAD;Ver3.0", so seems the hardware specifically looks for that IO.

I'm not going to dig further into this at the moment - too much other fun stuff that needs to be done :) , but could be of interest to the MAME guys.
Indeed, very good stuff.
 
Any updates on this and what steering wheel and light gun USB peripherals are confirmed working st this point? Anxious for this as it greatly helps with getting steering wheels and guns that work for all the various games. Any ideas on when a finished product may be available?
Keep up the great work!
 
Back
Top