Page 1 of 7

USB Converter for MS Sidewinder 3DPro, PP, and FFP

Posted: Sun Jun 28, 2009 9:12 pm
by Grendel
Time to clean up the 3DP-Vert threads in this section a bit:

The original thread can be found here: M$ Sidewinder 3D Pro on USB, the follow-up thread here: M$ Sidewinder 3D Pro on USB - 2?, a thread about replacing the POV switch w/ a tiny analog joystick here: SideWinder 3D Pro Borgified. And here is how to do that w/ the r3 version.

Latest developments:

Note: Please read my post from Oct 23, 2009 for the latest version of the r3 proto ! (post #26 in this thread)

Note: The code does work with the Teensy++ modules as well.

I set up a Google code project for the 3DP-Vert, everything you need is hosted there.

Note on force feedback support:
Grendel wrote:Just to clear this -- the converter in the current state does not support force feedback effects for the FFP and probably never will. Here's why:

Most gameports back in the day were located on a sound card sharing some pins with the cards MIDI interface. M$ added pin 12 to the FFP (MIDI TxD) and uses MIDI channel 6 to issue FF commands. It's too much work trying to reverse engineer the commands, add a MIDI interface to the 3DP-Vert and modify its USB code to have a fully featured FF device.
Note: For native FF support, see this thread. Great job ! :D


A week ago I stumbled over the Teensy development board (silly name, I agree..), got one, and poked at it a bit. Now I have a 3DP-Vert rev3 design that I'm planning to use in a possible 2nd run of the converter :)

A side effect is that this prototype version is probably the most easy to copy, unfortunately also the most expensive..

What you need:

1 Teensy board, $22 (+s&h)
1 Breadboard w/ wires, $13.44 (got mine at RadioShack tho)
1 DB15F for wire wrap, $5.56
2 2.2kOhm resistors, $0.18
2 2.2nF capacitors, $0.78

The program for the microcontroller -- I'm still working on that, as soon it's finished I'll publish it. Meanwhile, PM me for a copy if you need one.

I don't have a schematic for this one yet, so you'll have to use the following pictures as a guide to build that thing:


Then connect it to your PC (using a USB A-miniB cable, everyone has them right ?), hit the reset button on the board and use the Teensy loader to program the 3DP-Vert image. That's it. :)

I'll update this thread as more info becomes available.

Posted: Sun Jun 28, 2009 10:28 pm
by Lothar
Perfect timing. My USB stick just quit on me, and I have eight (!) 3d pros in storage.

Any chance I can buy one from you preassembled?

Posted: Sun Jun 28, 2009 11:36 pm
by Aus-RED-5
hehe - I think this is what the thread is about.

Making your own as it seems Grendel is trying to avoid building them for us. :P

Posted: Mon Jun 29, 2009 12:31 am
by Grendel
Heh, there's some truth in it -- for a non-EE getting a PCB made is a non-trivial task. It's not really cheap either, eg. the parts for 100 boards alone are about $600. Plus whatever the boards will be (loaded). The least I can do is to make it easier to build your own while I'm struggling to get something going ;)

Posted: Mon Jun 29, 2009 8:50 am
by Foil
This is a few $ more than the other assembly you provided specs for... but it looks considerably simpler, so I'll probably go for this one when I get the chance.

Thank you, Gren!! :D

Posted: Mon Jun 29, 2009 11:27 pm
by Lothar
All right, I've got it figured out. Thanks everyone!

Posted: Tue Jun 30, 2009 7:39 pm
by fliptw
super nifty.

Posted: Thu Jul 02, 2009 1:35 pm
by Grendel
Software is pretty much ready to go, I'm currently testing it.

The USB module Atmel uses in their chips (the Teensy board has an at90usb162 stuck to it) is USB 2.0 only, it will not work on an old USB 1.1 port (they should be pretty much extinct anyway..)

USB 2.0 also means faster data throughput, so I decreased the polling rate to 6ms (167Hz) from the previous 10ms (100Hz. Actually Windows violates the specs and polls w/ 8ms, 125Hz). Not sure if the stick will handle 5ms (200Hz) or 4ms (250Hz), something to look into I guess :)

Posted: Thu Jul 02, 2009 9:34 pm
by Grendel
@#$%, forgot about Windows inabilities. Windoze polls HID devices at a fixed frequency (125Hz, 8ms) rather than using the number provided by the device.. *&%$#@! POS OS.

Posted: Sat Jul 04, 2009 4:19 am
by Grendel
Figured that one out -- had to implement the HID idle management, Windoze then queries in 1ms intervals. The stick seems to keep up fine w/ a 4ms interval, so now it's polled at 250Hz. Probably the only joystick on the market read out at twice the \"regular\" speed :)

Posted: Wed Jul 15, 2009 9:14 am
by joker23
Well shoot. The \"USB 2.0 only\" might keep me from using this newer version. I have two computers in the basement, one for me and one for my son. One of them is an older one with the old USB. I also think my laptop has the old USB...

Posted: Wed Jul 15, 2009 4:36 pm
by Grendel
It should work as long it's USB 2.0 Full Speed, USB Low Speed is what's not supported. Unless it's a _really_ old computer (like a 386) it should work. A simple test is to plug in a USB 2.0 thumb drive, if it works (and you get that annoying \"this device could work faster\" message in XP..) you are set.

Posted: Thu Jul 16, 2009 8:49 pm
by joker23

It should work then, because I do get the annoying message...

Posted: Wed Jul 22, 2009 3:34 pm
by joker23

Do you have a good way to mount a solderless breadboard like that into a project box, or would the final version be soldered?

It appears that Radio Shack no longer carries the box and PC board used in the old 3DP-Vert.

I was looking at this board and this box to use instead.

I'm probably gonna have tons of questions (if you don't mind). Would they be better listed here or by PM or email?



Posted: Thu Jul 23, 2009 1:50 am
by Grendel
joker23 wrote:Do you have a good way to mount a solderless breadboard like that into a project box, or would the final version be soldered?
The final version would be a custom made PCB, already soldered. The solderless breadboard version is a prototype I used for porting to software to the AT90USB module, it just happens to be easy to copy.
joker23 wrote:It appears that Radio Shack no longer carries the box and PC board used in the old 3DP-Vert.
Yes, apparently the dropped it. Unfortunately I may add, that was a very handy set.
joker23 wrote:I was looking at this board and this box to use instead.
I looked at that board before, it will be too small.
joker23 wrote:I'm probably gonna have tons of questions (if you don't mind). Would they be better listed here or by PM or email?
Probably email would be best if it's really a lot of questions.. :)

Posted: Fri Jul 24, 2009 3:15 pm
by joker23

Things got really busy at work all of a sudden and I wasn't able to see your response until today...

Posted: Wed Aug 12, 2009 1:09 am
by Mick
Greetings from Denmark from a new DescentBB member.

I still have at least 2 old 3D PRO's laying around, would buy 1-2 finished converter boards immediately if they were available (and if I could get them sent to Denmark.... :roll:)!

Anyone up to the task :) ?

Posted: Thu Aug 27, 2009 8:31 am
by mors

Last week I started playing around with my old 3D PRO and a PIC micro, not knowing that there actually was quite some activity around the topic on the web. I found this forum and this thread while searching for more info concerning the Sidewinder 3D Pro interface.

@Grendel: Seems that in the first converter you have proposed you are using the conventional 555-Timer method with pulse widths representing the axis position. On that newer (2009) prototype I cannot see any 555/556/558 IC, and I assume you are reading the digital output on the button pins. Did you reverse engineer a little to find out how the interface works or do you have a good source of information that you could share?
Also, when I read out the emulated analog output from the stick, it seems to be very jittery. I assumed a software bug, but I checked the code a million times, and it all seems ok. How stable was the output for you?

Edit: taking a deeper look i realised you have been using the digital out from the begining. have you ever tried the emulated analog?


Posted: Thu Aug 27, 2009 1:03 pm
by Grendel
I never bothered w/ the analog emulation since both modes reduce the functionality of the stick considerably (CH: no simultanous button actuations, TM: no slider nor base buttons available) and require calibration. The analog part of the interface is needed to switch the 3DP into digital mode and to trigger it to send the data -- the stick detects the beginning of the RC charge when the 555 is triggered. This can be done by connecting the RC element to an I/O pin, so I got rid of the timer :)

I used two references for development: Vojtech Pavlik's 3DP Linux driver (Sidewinder.c) and Microsofts Overdrive patent, Patent #5628686 - Apperatus and Method for Bidirectional Data Communication in a Gameport. You definately want to check the patent out, as for code reference I would suggest to take a look at the 3DP-Vert source code (the current r3 code is here).

The digital resolution of the X and Y axis is quite high (10bit each), creating jitter at rest that translates to the mid point of he R chain MS used for the analog emulation.

Posted: Sun Sep 13, 2009 1:46 pm
by RubberD

In case you are collecting volunteers to buy pre-assembled converters from you I am interested for up to 3 pcs. :P

I guess the only way to save my 3d pros into the next generations of Windows.

An old-timer from Germany appreciating your work.

D1 - D2 - D3

Posted: Mon Sep 28, 2009 3:35 pm
by Grendel
Small update: the Teensy board went through a hardware revision and now hosts the chip I wanted to use in the 1st place (Mega32U4) :) I just ordered one so I can update my prototype and port the software. I'll post updated pictures/code once I'm done.

Posted: Fri Oct 02, 2009 3:56 pm
by Grendel
Here is the updated 3DP-Vert r3 prototype design based on the new Teensy board.

What you need:

1 Teensy board, $21 (+s&h)
1 Breadboard w/ wires, $13.44 (got mine at RadioShack tho)
1 DB15F for wire wrap, $5.56
2 2.2kOhm resistors, $0.18
2 2.2nF capacitors, $0.78

The program image and the Teensy loader.

I still don't have a schematic for r3 yet, so you'll have to use the following pictures as a guide to build that thing:

Image Image

The resistors can be 1kohm if you can't source the 2.2kohm. The two capacitors can almost be any value less or equal to 2.2nF, I've successfully used as low as 470pF. Since I didn't have a fancy DB15F wire-wrap connector I used a regular one w/ solder cups and soldered the pins that are being used to it:

Image Image

Once you built the thing connect it to your PC with an USB A-miniB cable, hit the button on the board, and use the Teensy loader to program the 3DPro.hex image. That's it. :)

Posted: Fri Oct 16, 2009 12:45 pm
by Carsinigin
Grendel - Thanks for bringing my two favorite joysticks back to life, a 3DP and FFP.

I finally got my teensy (UPS ground is slow) and was able to follow your instructions and I had this built and running in less then an hour.


I ended up using a DB15 breadboard adapter instead of the wirewrap DB15F. It takes up a lot of space on the breadboard but it was easier to wire up.

One issue that I ran into is that on my FFP the z-axis (twist) has a lot of jitter when the joystick is at rest. I think it may be the joystick since my 3DP seems fine.

Posted: Fri Oct 16, 2009 8:52 pm
by Grendel
Very nice ! I like the DB15F breadboard adapter, makes it a lot more secure plugging the stick. Great find.

As for the jitter in the FFP, it's most likely rooted in the stick. The one I use for testing works fine w/ the firmware. You could try to open it and check for dust.

Any source code?

Posted: Sat Oct 17, 2009 10:28 pm
by wolfmanjm
Very nice project, I have a teensy on order, however my plan is to use this to communicate with a robot control program (a rovio) running on Linux. So it would be plugged into a linux system, and I would probably want to use a different USB protocol (probably straight serial). So is the source code for this project available? Or at least the part of the code that talks to the joystick?

UPDATE: I built it as specified, and it seems to work with Linux as is, so no need to mod the code, great work


Posted: Fri Oct 23, 2009 5:22 pm
by moonfly
I just got one of these running myself. Works great! Woohoo, no more \"not connected\" in the game controller window :D


Posted: Fri Oct 23, 2009 9:13 pm
by Grendel
Very cool ! I got myself one of those DB15F adapters, so here is the most-easy-to-copy-yet version, it's even almost kid & pet save ;)

What you will need:

1 Teensy 2.0 board, $19 (PJRC)
1 PBC15F, $8 (Winford)
1 Breadboard, $8.99 (RadioShack)
1 Wire Kit, $5.99 (RadioShack)
2 1kOhm resistors, $.99 (5) (RadioShack)
2 .001uF capacitors, $1.49 (RadioShack)

The program image and the Teensy loader.

Use the following picture as a guide to build that thing, note the wires in the upper left corner (circled in the pic). Make sure it looks the same to prevent the pins from the PBC15F adapter digging into the wires. Also note the corner of the PBC15F adapter close to the Teensy board, I ground it down a bit using some sandpaper. The current version of the PBC15F adapter has an aditional pin, labled 'SH' (shield.) You need to cut it off using wire-clippers so it won't interfer w/ the circuit.

Image Image Image

Once you built the 3DP-Vert, connect it to your PC with an USB A-miniB cable, push the button on the board and use the Teensy loader to program the 3DPro.hex image. That's it. :)

My version

Posted: Sat Oct 24, 2009 5:38 pm
by wolfmanjm
I used a Schmartboard... ... s_th&id=24. although the dsub needed to be coerced into it, they do have a special board for dsubs.. ... s_io&id=16

The board was about $5.

I'm making a little acrylic case for it using a $1 scrap of clear acrylic from Tap Plastics.



Posted: Thu Oct 29, 2009 12:51 am
by Drakoz
I bought parts to build a 3DP-Vert rev 2 months ago and finally built one a couple weekends ago. Ugh, it took all day - mostly due to the mechanical work of cutting the perf board and the plastic case because Radio Shack doesn't have that nice board designed for the case anymore. But it works great. Grendel, your software is fantastic.

Image Image

To program it, I just soldered some resistors and wires directly to a DB25 parallel port connector following the \"Programmer Hardware\" example here. I used test clips to connect it to my board, and programmed it using Ponyprog. As you can see below, it's messy, but it worked fine.

Image Image Image

Anyway, by the time I was done, I thought it would have been just as easy to design a real PCB and have it fabricated (that's what I do for a living). But, now we have 3DP-Vert rev 3. So, I've done a schematic of the rev 3, and instead of mocking this one up, I'm just going to design a PCB. The only question is, to use a Teensy board, or do a design completely from scratch. I've talked to Grendel about this off line, and we'll see where it goes. Using a Teensy board, anyone can assemble it, and we just have to make PCB's. But a custom design allows Grendel to do some other custom stuff. Unfortunately, though, we have to pay someone else to assemble them because it'll be surface mount parts. Turns out cost is about the same either way for a run of 20-30 boards. I'm not saying this to promise anything. Talk is cheap. But, I need at least 2 more 3DP-Vert's (see below), and I'm not going to build them manually this time. I'm going to get real PCB's fabricated instead.

Why do I need 2 more 3DP-Verts? I was playing Descent and both my kids see it. \"Hey, that's the game you used to play all the time.\" Next thing I know, I've lost my joystick/3DP-Vert because they want to play Descent now. It's about time! They never seemed to care before, but they took to the Pyro like old pros. So, I need to build two more 3DP-Vert's. Ha!


PCB and Schematic

Posted: Thu Oct 29, 2009 1:11 am
by wolfmanjm
FWIW I did a schematic and PCB using ExpressPCB, the PCB has two per board, ExpressPCB charges ~$50 for 3 boards, so you get 6 for $50.

The schematic and pcb editor is free from and the two files I used are here...

schematic -


If you want to use an off-the-shelf Teensy, feel free to use them.

Posted: Thu Nov 05, 2009 11:28 pm
by zapp
Wolfman- Can you post pics of the back side? I like the smaller footprint of that over the Radioshack breadboard...

Posted: Fri Nov 06, 2009 12:31 am
by wolfmanjm
@Zapp - There is nothing on the back side, all the action is on the front, including the traces, the back is just thru holes, and is where you solder the pins.

See this for the traces a schmartboard uses... ... 001-01.pdf

The back side has no traces, the wiring is done on the front much like a breadboard.

Posted: Fri Nov 13, 2009 4:22 pm
by forlornpants
Hi Everybody
I found this site by google searching for solutions to get my FFP working with 64 bit windows.
Thank you so much for developing this! I have never found another stick I like and I just can't bear to get rid of it.

I've ordered the 'tiny' board, will head to radio shack this weekend for the other stuff. I'm not skilled in electronic stuff, but this doesn't look too hard.

If I get this working, i may just have to dig out my old copies of Descent! Who all can I pester when I start putting this together? :)

Thanks again

Posted: Tue Dec 01, 2009 3:56 am
by rcll
I need to learn how to solder =Got 4 3D Pros in box

I'm gonna install an old soundcard with a gameport for PC but I really wanted one of these for D3 on laptop

Nice work putting this together Grendel and good job to everyone else whos made one

Re: PCB and Schematic

Posted: Sat Dec 26, 2009 9:25 am
by rhulasi
wolfmanjm wrote:FWIW I did a schematic and PCB using ExpressPCB <snip>
Thanks for creating the schematic. Did you create it using the original V3 design or Grendels one dated October 23? The difference appears to be:

original V3
Teensy B4 -> Sidewinder Pin 3
Teensy B5 -> Sidewinder Pin 13

Oct 23 design
Teensy B4 -> Sidewinder Pin 13
Teensy B5 -> Sidewinder Pin 3

I'd be happy to update the schematic once someone confirms I haven't misread things :-)

Grendel - Any reason why the pins were swapped round?

Thanks everyone! It's so great to see that this fine piece of hardware is still being used and updated.

Posted: Sat Dec 26, 2009 2:30 pm
by wolfmanjm
I used the V3 schematics, and built it from the schematic I did, so I know that works. The pins are not directly connected to the plug though they go through the resistors.

I didn't notice there was a difference other than the arrangement of the pins

Posted: Sat Jan 02, 2010 7:46 pm
by zapp
I was looking @ this breadboard and thinking I could cut it in half to make 2??? Will that work? ... 38-1046-ND

Posted: Sat Jan 02, 2010 11:59 pm
by Spidey
If you need to cut that one in half, I would suggest this instead. ... S/-/1.html

Posted: Tue Jan 19, 2010 12:33 am
by zapp
So what I did- I got the Breadboard + wires kit I linked in my post above. $13.48, which is only a bit cheaper than if I got 2 of the ones linked in the post directly above + a wire kit. If I were to do it again, I would go that route. I cut my long board in half w/ a hack saw and used both pieces to make 2 converters. I made some improvements in the building- I cut off the overhanging PCB from the gameport plug, and on the other side, I used a hot wire to melt a small hole and screwed down the plug so it doesn't wiggle around. I then covered the whole thing in duct tape for a nice ghetto finish!

Posted: Wed Jan 20, 2010 12:34 am
by londab8
Ordered the Teesy board. Going to get my joystick to work :D With the projects for Descent 1 and 2, Freespace, I can't wait to get this up and running.

When I get the board and put everything together, I will post my success or failure.