VOGONS


First post, by Hamby

User metadata
Rank Member
Rank
Member

I've a couple old Gravis Stinger serial port joysticks.
A long long time ago I was going to try developing a driver for them for Irix. Even got in touch with Gravis, who pointed me at some Linux drivers, but that was... 20 years ago.

Well, I found some source code for a Linux driver, again, only this time I'd like to see if I could get the joysticks working with DOS.
I have the driver disks for them, but... windows.

Could anybody give me some guidance on probing the Stinger's serial connector with a multimeter and hopefully thus discovering some info on how it communicates?
The Linux driver source code uses the Linux input library, so it's not a lot of use, but from what I can glean, it looks like the stinger puts out a four-bite packet for each event. I'm probably wrong, that's why I want to probe it while using it to see what comes up.

Btw, the Stinger's still available on Amazon...
Not a bad price either, if you want it for Windows or Linux gaming on a laptop...
https://www.amazon.com/Gravis-G43011-Stinger- … tinger+joystick

Reply 1 of 4, by dicky96

User metadata
Rank Member
Rank
Member

I doubt probing with a multimeter is gonna help you much. If it's a 9 pin serial connector would expect the joystick gets 5V power from one one the pins (pin 9?) and has a ground connection pin 5. That much a multimeter will tell you

It's then gonna send asynchonous serial data byte(s) to communicate the status of the various buttons with the driver software using pin 2 or 3. Possibly handshaking on 6,7, or 8.

An oscilloscope would tell you which pins the serial data is on and if handshaking is in use (but I am sure data will be on pin 2 or 3) and something like a Bus Pirate https://www.sparkfun.com/products/12942 would allow you to snoop the data from the joypad to the PC. You would be best to make an extension male- female 9 pin cable with break-out wires connecting to the bus pirate. By pressing the various buttons you could figure out whether each button sets/resets 1 bit of data, or some other comms scheme is used.

I've had success using this method to work exactly out how motorised disco lighting is communicating in master-slave mode to run inbuilt lighting programs, then synchronising other brands of lighting using an Arduino to send appropriate DMX commands.

Good Luck
Richard

Reply 2 of 4, by Hamby

User metadata
Rank Member
Rank
Member
dicky96 wrote:
I doubt probing with a multimeter is gonna help you much. If it's a 9 pin serial connector would expect the joystick gets 5V po […]
Show full quote

I doubt probing with a multimeter is gonna help you much. If it's a 9 pin serial connector would expect the joystick gets 5V power from one one the pins (pin 9?) and has a ground connection pin 5. That much a multimeter will tell you

It's then gonna send asynchonous serial data byte(s) to communicate the status of the various buttons with the driver software using pin 2 or 3. Possibly handshaking on 6,7, or 8.

An oscilloscope would tell you which pins the serial data is on and if handshaking is in use (but I am sure data will be on pin 2 or 3) and something like a Bus Pirate https://www.sparkfun.com/products/12942 would allow you to snoop the data from the joypad to the PC. You would be best to make an extension male- female 9 pin cable with break-out wires connecting to the bus pirate. By pressing the various buttons you could figure out whether each button sets/resets 1 bit of data, or some other comms scheme is used.

I've had success using this method to work exactly out how motorised disco lighting is communicating in master-slave mode to run inbuilt lighting programs, then synchronising other brands of lighting using an Arduino to send appropriate DMX commands.

Good Luck
Richard

That's about what I figured, but I figured I should ask anyway.

I've also considered running a terminal program and see what data comes through from the joypad via the serial port as I move the stick/pads.

Thanks for advising me 😀

Reply 3 of 4, by dicky96

User metadata
Rank Member
Rank
Member

Yeah actually a terminal program should do about the same thing. You mentioned you have source code for the Linux drivers for the joypad. That doesn't have all the data you need?

Reply 4 of 4, by Hamby

User metadata
Rank Member
Rank
Member
dicky96 wrote:

Yeah actually a terminal program should do about the same thing. You mentioned you have source code for the Linux drivers for the joypad. That doesn't have all the data you need?

Not really, because it uses functions in the Linux io libraries. I've tried following the source code, but it's full of references to functions that are "hidden" to me (unless I want to go into the library source).

I did sort-of figure out that it sends data in certain-sized packets (can't recall offhand).