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

For system help, all hardware / software topics NOTE: use Coders Corner for all coders topics.

Moderators: Krom, Grendel

Post Reply
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

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

Post 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:

ImageImageImage

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.
User avatar
Lothar
DBB Ghost Admin
DBB Ghost Admin
Posts: 12133
Joined: Thu Nov 05, 1998 12:01 pm
Location: I'm so glad to be home
Contact:

Post 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?
User avatar
Aus-RED-5
DBB Friend
DBB Friend
Posts: 1604
Joined: Fri Apr 23, 2004 7:27 am
Location: Adelaide, South Australia
Contact:

Post 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
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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 ;)
User avatar
Foil
DBB Material Defender
DBB Material Defender
Posts: 4900
Joined: Tue Nov 23, 2004 3:31 pm
Location: Denver, Colorado, USA
Contact:

Post 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
User avatar
Lothar
DBB Ghost Admin
DBB Ghost Admin
Posts: 12133
Joined: Thu Nov 05, 1998 12:01 pm
Location: I'm so glad to be home
Contact:

Post by Lothar »

All right, I've got it figured out. Thanks everyone!
User avatar
fliptw
DBB DemiGod
DBB DemiGod
Posts: 6458
Joined: Sat Oct 24, 1998 2:01 am
Location: Calgary Alberta Canada

Post by fliptw »

super nifty.
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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 :)
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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.
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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 :)
joker23
DBB Cadet
DBB Cadet
Posts: 8
Joined: Wed Jan 17, 2007 7:15 pm

Post 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...
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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.
joker23
DBB Cadet
DBB Cadet
Posts: 8
Joined: Wed Jan 17, 2007 7:15 pm

Post by joker23 »

Cool!

It should work then, because I do get the annoying message...
joker23
DBB Cadet
DBB Cadet
Posts: 8
Joined: Wed Jan 17, 2007 7:15 pm

Post by joker23 »

Grendel,

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?

Thanks!
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re:

Post 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.. :)
joker23
DBB Cadet
DBB Cadet
Posts: 8
Joined: Wed Jan 17, 2007 7:15 pm

Post by joker23 »

Thanks!

Things got really busy at work all of a sudden and I wasn't able to see your response until today...
Mick
DBB Cadet
DBB Cadet
Posts: 1
Joined: Wed Aug 12, 2009 12:38 am

Post 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 :) ?
mors
DBB Cadet
DBB Cadet
Posts: 2
Joined: Thu Aug 27, 2009 8:17 am
Location: Germany

Post by mors »

Hi!

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?
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re:

Post 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.
RubberD
DBB Cadet
DBB Cadet
Posts: 1
Joined: Sun Sep 13, 2009 1:21 pm

Post by RubberD »

@Grendel:

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.

RubberD
An old-timer from Germany appreciating your work.

---
D1 - D2 - D3
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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.
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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. :)
Carsinigin
DBB Cadet
DBB Cadet
Posts: 1
Joined: Tue Oct 06, 2009 8:08 pm

Post 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.

Image

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.
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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.
wolfmanjm
DBB Cadet
DBB Cadet
Posts: 7
Joined: Sat Oct 17, 2009 10:19 pm

Any source code?

Post 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

Thanks
moonfly
DBB Cadet
DBB Cadet
Posts: 1
Joined: Fri Oct 23, 2009 5:18 pm

Post by moonfly »

I just got one of these running myself. Works great! Woohoo, no more \"not connected\" in the game controller window :D

Image
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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. :)
wolfmanjm
DBB Cadet
DBB Cadet
Posts: 7
Joined: Sat Oct 17, 2009 10:19 pm

My version

Post by wolfmanjm »

I used a Schmartboard... http://www.schmartboard.com/index.asp?p ... s_th&id=24. although the dsub needed to be coerced into it, they do have a special board for dsubs..
http://www.schmartboard.com/index.asp?p ... 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.

Image

Image
Drakoz
DBB Captain
DBB Captain
Posts: 556
Joined: Thu Nov 05, 1998 12:01 pm
Location: San Jose, CA
Contact:

Post 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!

Cya,
Mike
wolfmanjm
DBB Cadet
DBB Cadet
Posts: 7
Joined: Sat Oct 17, 2009 10:19 pm

PCB and Schematic

Post 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 http://www.expresspcb.com/ExpressPCBHtm/Download.htm and the two files I used are here...

schematic -
http://blog.wolfman.com/files/3dpvert.sch

PCB -
http://blog.wolfman.com/files/3dvert.pcb

If you want to use an off-the-shelf Teensy, feel free to use them.
User avatar
zapp
DBB Ace
DBB Ace
Posts: 174
Joined: Thu Nov 05, 1998 12:01 pm
Contact:

Post by zapp »

Wolfman- Can you post pics of the back side? I like the smaller footprint of that over the Radioshack breadboard...
wolfmanjm
DBB Cadet
DBB Cadet
Posts: 7
Joined: Sat Oct 17, 2009 10:19 pm

Post 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...

http://www.schmartboard.com/schmartboar ... 001-01.pdf

The back side has no traces, the wiring is done on the front much like a breadboard.
forlornpants
DBB Cadet
DBB Cadet
Posts: 3
Joined: Fri Nov 13, 2009 4:04 pm

Post 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
rcll
DBB Cadet
DBB Cadet
Posts: 9
Joined: Wed Sep 14, 2005 10:51 pm
Location: usa

Post 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
rhulasi
DBB Cadet
DBB Cadet
Posts: 1
Joined: Sat Dec 26, 2009 9:17 am

Re: PCB and Schematic

Post by rhulasi »

wolfmanjm wrote:FWIW I did a schematic and PCB using ExpressPCB <snip>
Wolfman,
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.
wolfmanjm
DBB Cadet
DBB Cadet
Posts: 7
Joined: Sat Oct 17, 2009 10:19 pm

Post 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
User avatar
zapp
DBB Ace
DBB Ace
Posts: 174
Joined: Thu Nov 05, 1998 12:01 pm
Contact:

Post by zapp »

I was looking @ this breadboard and thinking I could cut it in half to make 2??? Will that work?
http://search.digikey.com/scripts/DkSea ... 38-1046-ND
User avatar
Spidey
DBB Grand Master
DBB Grand Master
Posts: 10724
Joined: Thu Jun 28, 2001 2:01 am
Location: Earth

Post by Spidey »

If you need to cut that one in half, I would suggest this instead.

http://www.allelectronics.com/make-a-st ... S/-/1.html
User avatar
zapp
DBB Ace
DBB Ace
Posts: 174
Joined: Thu Nov 05, 1998 12:01 pm
Contact:

Post 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!
londab8
DBB Cadet
DBB Cadet
Posts: 2
Joined: Tue Jan 19, 2010 10:36 pm

Post 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.
Post Reply