Reverse Engineering the Force Feedback Pro

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

Moderators: Krom, Grendel

User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

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

Post by Scanjo » Fri Nov 08, 2013 1:14 am

Ok...it works but it's not pretty. I made some changes.
1.jpg
2.jpg
3.jpg
4.jpg
I put the 16 pin header on that I originally used with a game port on a ribbon cable. I also added a db-15f right on the board so I can have that protrude from the project box. It's tested and working including force feedback.

I'll be building a couple more as I had to order 3 prototype boards. See how they go on Ebay. If interested, keep an eye out.

Scott
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
BlueMoon
DBB Cadet
DBB Cadet
Posts: 14
Joined: Tue Nov 05, 2013 6:18 pm

Re: Reverse Engineering the Force Feedback Pro

Post by BlueMoon » Sat Nov 09, 2013 4:53 pm

In the attachments I added the board and the scheme I made.
I also added some pictures of the board itself.

This is a prototype I made, not a final product.

If you find some mistake, let me know!

Thanks already!
Attachments
Bottom1.jpg
Bottom of the board
BoardTop2.jpg
Top of board other side
BoardTop1.jpg
Top of board
Scheme.jpg
Image of the scheme
Board.jpg
Image of the board layout
osterac
DBB Cadet
DBB Cadet
Posts: 16
Joined: Sat Aug 17, 2013 4:43 pm
Location: California

Re: Reverse Engineering the Force Feedback Pro

Post by osterac » Sat Nov 09, 2013 6:49 pm

Image
Seems like you have the legs of this capacitor connected (shorted) to each other, and nothing connected to the other side. From the diagram on the google code page, it looks like you're supposed to connect the ground to both of the caps on one side, then connect the other side of one to the teensy side of R1 and the other to the teensy side of R2. At least that's what I did, and it worked, so that's something.
Attachments
Sidewinder Circuit.jpg
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re: Reverse Engineering the Force Feedback Pro

Post by Grendel » Sun Nov 10, 2013 4:45 pm

Looks like the caps are soldered in wrong -- should be across, not down. Good catch osterac :)
osterac
DBB Cadet
DBB Cadet
Posts: 16
Joined: Sat Aug 17, 2013 4:43 pm
Location: California

Re: Reverse Engineering the Force Feedback Pro

Post by osterac » Sun Nov 10, 2013 6:26 pm

Thanks, Grendel :)
Duglum
DBB Cadet
DBB Cadet
Posts: 2
Joined: Sun Nov 24, 2013 4:31 pm

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

Post by Duglum » Thu Nov 21, 2013 11:10 am

Hello Scanjo, hello everyone. :)

I also still own a Sidewinder FF Pro, a Precision Pro (3D Pro Plus that is..) and a Sidewinder Gamepad. I used to play and love Descent and Descent 2 (and Descent 3? Not sure) and Forsaken with my Sidewinder 3D Pro, but i need them for other stuff nowadays. :)

Scanjo, i'd love to buy one of your Boards, completely preassembled if possible. I stumbled upon this thread a few years ago when searching for USB Adapters but i didn't deem it important enough to fiddle with some wires on a breadboard. :D
What would you charge for one of the Boards, including shipping to Germany. (Or if you are in the US, i'll be in Las Vegas and maybe Los Angeles for a few days in a week, maybe that would be easier..)
User avatar
Overkill211
DBB Cadet
DBB Cadet
Posts: 11
Joined: Wed Nov 07, 2012 11:09 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Overkill211 » Fri Nov 22, 2013 11:55 am

osterac wrote:Just got the whole thing working last night. Very cool! It works beautifully. I still have the Sidewinder Force Feedback Wheel if anyone wants me to do tests on it, I don't know if there is still a future plan to add support for it.

I'm wondering if you'd post a photo of the pins on the DA-15 plug for the FFB Wheel. I've never been able to find a pinout description of that controller, and I'm wondering if my modded board design would already support it (electrically, anyway). Thanks.
osterac
DBB Cadet
DBB Cadet
Posts: 16
Joined: Sat Aug 17, 2013 4:43 pm
Location: California

Re: Reverse Engineering the Force Feedback Pro

Post by osterac » Sat Nov 23, 2013 2:09 pm

Overkill211 wrote:I'm wondering if you'd post a photo of the pins on the DA-15 plug for the FFB Wheel. I've never been able to find a pinout description of that controller, and I'm wondering if my modded board design would already support it (electrically, anyway). Thanks.
I've attached a photo of the connector. Let me know if you need anything else!
Attachments
Sidewinder FFB wheel DA15 Plug.jpg
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

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

Post by Scanjo » Sun Nov 24, 2013 3:58 am

@Duglum - In the interest of full disclosure, this is a different project than Grendel created. It is based on Grendel's work but it does NOT work with his code. I chose to go this route because it supports the force feedback. There is more info, and files to download at the Adapt-FFB-Joy project.(http://code.google.com/p/adapt-ffb-joy) Grendel has assisted with this project , but his code doesn't work with this board since some of the TEENSY inputs and outputs were reassigned to add the FFB support. The schematic IS different.

Ok, with that out of the way...I am still waiting for all the parts to show up since to get a decent price some of them are coming from China. I'm ordering TEENSYs as needed since they are the main cost of the project and they don't seem to offer a volume discount. Once I have everything I need then I'll figure the cost of parts. I'm thinking around $30.00 my cost. It would be nice to get a few bucks for soldering everything. I have no idea what shipping will cost me to send it to you. I also need to find some anti-static bags... This will be a bare PCB pre-programmed with no enclosure. While it could be used that way, I'd recommend putting it in a box of some sort.

Give me a week or so to figure the rest out and I'll post here again.

Scott

[Edited for accuracy after being moved from another forum]
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
User avatar
Overkill211
DBB Cadet
DBB Cadet
Posts: 11
Joined: Wed Nov 07, 2012 11:09 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Overkill211 » Sun Nov 24, 2013 10:50 am

Thanks, Osterac.

It appears the Wheel has the exact same pinout as the FFBPro, so my mod to add pin 13 is unnecessary - except for the non-FFB sticks.
So, it looks like somebody just needs to whip up the configuration info, and map the protocols to get the wheel working.
As my programming skills for the Teensy haven't reached the "Hello, World" stage, yet... doubt it will be me.

Incidentally... second board sold - so only 3 remaining.
Duglum
DBB Cadet
DBB Cadet
Posts: 2
Joined: Sun Nov 24, 2013 4:31 pm

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

Post by Duglum » Sun Nov 24, 2013 4:41 pm

Scott, Sounds great. Thanks for your reply. :)

Since my Username/Account here was deleted after my first posting for whatever reasons, just had to recreate it, i guess i'll just write you an email to the address i found on the Project Website, if that's ok with you, so i won't have to clutter this Thread with any more Postings.
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

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

Post by Scanjo » Sun Nov 24, 2013 8:26 pm

All parts are in. Just waiting on packing supplies.

Here's a pic of the final board.
joy_final.jpg
Overall dimensions of the board are 2.1" wide X 3.5" long including the DB-15 connector. This should help you in planning for an enclosure to use.

Postage to Germany should be from 6 to 10 dollars depending on final weight. That's first class postage (cheapest) but I can't determine a time frame for delivery. The web site just says it varies by destination.
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
BlueMoon
DBB Cadet
DBB Cadet
Posts: 14
Joined: Tue Nov 05, 2013 6:18 pm

Re: Reverse Engineering the Force Feedback Pro

Post by BlueMoon » Mon Dec 02, 2013 2:51 pm

osterac wrote: Seems like you have the legs of this capacitor connected (shorted) to each other, and nothing connected to the other side. From the diagram on the google code page, it looks like you're supposed to connect the ground to both of the caps on one side, then connect the other side of one to the teensy side of R1 and the other to the teensy side of R2. At least that's what I did, and it worked, so that's something.
That was indeed the problem. My board was fine, just soldered the capicitors the wrong way... I feel so stupid now!

I really want to thank for the support and fast reaction!

I also have this Force Feedback steering wheel here... As I am not an electronical specialist: could we make it work by changing the configuration on the chip (like tweak few settings) or do we have to re-write it because it is not a LUFA joystick wFFB?
Merl
DBB Ace
DBB Ace
Posts: 27
Joined: Thu Nov 05, 1998 12:01 pm
Location: Renton, Wa

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

Post by Merl » Mon Dec 02, 2013 4:37 pm

Where can I buy one or two of these? I want some now!
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

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

Post by Scanjo » Mon Dec 02, 2013 10:51 pm

I've been working on buying parts and getting the PCB manufactured. Packing materials was an after thought...

I'm to a point where I am ready to start making and selling them.

I've priced it at $40 plus actual shipping cost to you. I will test everything before I ship it.

I'm willing to sell kits with all the parts included, but you solder it and you load the program on it. These would be $35. Obviously I can't test these.

I'm selling just the board. There is no enclosure included. You will also need a USB 2.0 A (plugs into the computer) to mini B cable. Most people have these laying around from an old cell phone so I don't add the cost to the project. Here is a pic to help you out.
usbAminiB.jpg
usbAminiB.jpg (2.35 KiB) Viewed 14560 times
If you want one of my boards, use the form at https://docs.google.com/forms/d/1D4Kc8d ... g/viewform. If you have questions, please send me an email directly Scott@IowaJohnsons.Com or post here.

The main cost of these adapters is the Teensy so I order them as needed. It takes about a week to get them if I'm out. Don't expect to get the adapter over night. ;)

Scott
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
User avatar
Overkill211
DBB Cadet
DBB Cadet
Posts: 11
Joined: Wed Nov 07, 2012 11:09 pm

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

Post by Overkill211 » Tue Dec 03, 2013 6:21 pm

I have also constructed adapter boards for the FFBPro. Have the info posted in the other thread, relating directly to the FFBPro.

viewtopic.php?f=8&t=19061&start=60

Primary differences:
- I added traces and a capacitor and resistor to connect pin 13 of the DA-15 to PB6 on the Teensy. The point here being, code changes may allow support of the 3DPro and Precision Pro. I recently confirmed that the Force Feedback Wheel has the same pin configuration as the FFBPro, so it might even be able to get support, in the future. I'm not a coder, though, so don't ask me when.
- No trim pots. I believe the circuit designer's intent was to allow you to fab up a set of rudder pedals, for flight sims. Hence, I left this as a 6-pin header.
- 1/2 the size. Allowed me to get 6 boards instead of 3.
- Fully assembled and tested with a functional FFBPro.
- I do not include the Teensy board. Why pay for shipping to me, then shipping to you. Save some fuel.

I've been selling these at $20, plus actual shipping. Currently have 3 remaining. I can do international shipping, just keep in mind that it's expensive.
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

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

Post by Scanjo » Thu Dec 05, 2013 5:10 pm

Can't find DELETE...
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
tormix
DBB Cadet
DBB Cadet
Posts: 1
Joined: Fri Dec 06, 2013 4:02 pm

Re: Reverse Engineering the Force Feedback Pro

Post by tormix » Fri Dec 06, 2013 4:08 pm

Overkill211 wrote: Incidentally... second board sold - so only 3 remaining.
Hello,
is your adapter also working with Windows 8 64bit and working all FFB effects?
Thx
Peter :D
BlueMoon
DBB Cadet
DBB Cadet
Posts: 14
Joined: Tue Nov 05, 2013 6:18 pm

Re: Reverse Engineering the Force Feedback Pro

Post by BlueMoon » Sun Dec 08, 2013 4:14 pm

So, to get the ball rolling, I started to do some research about how to get this thing working for the Steering Wheel as it doesn't seem to be that hard to adapt it (we got the basics right?)

First of all, the current HID is for a joystick, not a steering wheel. So to get started, a HID for a steering wheel with FFB should be found. This HID should be modified with code from the current project (MS SideWinder FFB Pro) if the commands send over the midi channel are the same (which is not certain). If this is the case, nothing more should be modified.
When this is not the case, this midi channel has to be reverse engineered which is quite difficult for somebody without decent tools to do so.

Is there somebody from the original project around that is willing to help?
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re: Reverse Engineering the Force Feedback Pro

Post by Grendel » Sun Dec 08, 2013 5:43 pm

I will keep an eye out for a used USB wheel, sometimes they show up at the local Goodwill. If I can snatch one I can capture the USB descriptors.
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

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

Post by Scanjo » Sun Dec 08, 2013 7:03 pm

There have been quite a few questions about this project so here is a sort of mini FAQ.
=================

1 - Which controllers does this board support?

The 3DPro The 3DPro Plus, Precision Pro, and Force Feedback Pro. The 3D Pro is supported in digital mode, which is explained further in the next question.

2 - Can't I just buy one of the USB to Game Port cables I keep seeing?

The converter cables won't work for any of the digital only controllers. The 3DP Plus, PP, FFP, and probably the Force Feedback Wheel are digital only. The game port is analog only. You need to have hardware AND software to convert the signal.

The 3DP has 2 analog modes that the simple cable converters will function with:
  • Thrustmaster -looses the slider
  • CH -can't have the hat and any other button actuated at the same time.
Also in both modes the hat switch becomes 4-way (vs.8-way in digital) and you loose the base buttons.

3 - What operating systems does this board work on?

My best understanding is that it works with Windows XP, Vista, Windows 7, Windows 8, and 8.1 in both 32 bit and 64 bit. I have heard conflicting reports on Windows 98 so I don't know for sure. There are bugs in the W8 control panel that make it look like it doesn't work, but games will see and use the devices reporting problems.

4 - My device is plugged into the game port on my computer. Why doesn't it work?

The last MS operating system to have support for the game port was WinXP. Even if you have a sound card with game port or a motherboard with onboard game port, if you are running Vista or above, your computer's game port will not work, so obviously anything plugged into it will also fail to work.

5 - Will my Force Feedback Wheel work using this board?

No. At this point, the only way to run a FF Wheel is on Win98 or WinXP with a game port and the Microsoft drivers supplied for it. This board may support the force feedback wheel in the future. The hardware should be compatible, but it appears that it requires different software to make it function correctly. The wheel needs to be reverse engineered for this to happen. There is no documentation available from Microsoft or elsewhere currently. Only the OverDrive protocol of the Force Feedback Pro has been rev-engineered so far.

6 - Will force feedback effects work on my Force Feedback Pro using this board?

Definitely! The FFB will work!
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
BlueMoon
DBB Cadet
DBB Cadet
Posts: 14
Joined: Tue Nov 05, 2013 6:18 pm

Re: Reverse Engineering the Force Feedback Pro

Post by BlueMoon » Mon Dec 09, 2013 3:43 pm

Thanks Grendel, would be great! I found another topic about it but I guess it isn't very useful. Still posting it though:
http://www.microchip.com/forums/m320225-print.aspx
osterac
DBB Cadet
DBB Cadet
Posts: 16
Joined: Sat Aug 17, 2013 4:43 pm
Location: California

Re: Reverse Engineering the Force Feedback Pro

Post by osterac » Mon Dec 09, 2013 4:26 pm

Interesting thread, the author says he has captured the USB descriptor of a Sidwinder FFB wheel himself, wonder if he still has the data. Later on in the thread someone posted this:

Code: Select all

janus@Gigabob:22:48:13$ sudo lsusb -vv -s 3:3
 [sudo] password for janus:
 
 Bus 003 Device 003: ID 045e:0034 Microsoft Corp. SideWinder Force Feedback Wheel
 Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               1.00
   bDeviceClass            0 (Defined at Interface level)
   bDeviceSubClass         0 
   bDeviceProtocol         0 
   bMaxPacketSize0         8
   idVendor           0x045e Microsoft Corp.
   idProduct          0x0034 SideWinder Force Feedback Wheel
   bcdDevice            1.01
   iManufacturer           1 Microsoft
   iProduct                2 SideWinder Force Feedback Wheel (USB)
   iSerial                 0 
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength           41
     bNumInterfaces          1
     bConfigurationValue     1
     iConfiguration          0 
     bmAttributes         0xa0
       (Bus Powered)
       Remote Wakeup
     MaxPower              100mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           2
       bInterfaceClass         3 Human Interface Devices
       bInterfaceSubClass      0 No Subclass
       bInterfaceProtocol      0 None
       iInterface              0 
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.00
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength    1296
          Report Descriptors: 
            ** UNAVAILABLE **
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x81  EP 1 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               1
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x02  EP 2 OUT
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0010  1x 16 bytes
         bInterval               4
 Device Status:     0x0000
   (Bus Powered)
 janus@Gigabob:22:48:23$ 
Not sure if it is enough info but maybe it will help?
BlueMoon
DBB Cadet
DBB Cadet
Posts: 14
Joined: Tue Nov 05, 2013 6:18 pm

Re: Reverse Engineering the Force Feedback Pro

Post by BlueMoon » Mon Dec 09, 2013 5:05 pm

That's exactly why I made the post. I guess that is a start.

I attached my steering wheel to the board I made for the joystick, didn't work that way :D Windows doesn't recognize it, not even the LUFA one. So I guess that means the teensy doesn't get the right reply from the device, in this case the wheel, and likewise doesn't respond to windows. Which means, the steering wheel is configured in another way than the joystick... -> Bad news?

Let's keep our heads up!
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re: Reverse Engineering the Force Feedback Pro

Post by Grendel » Tue Dec 10, 2013 1:45 am

That's the regular descriptor tree sans the 1296 bytes long HID Report Descriptor. Unfortunately that is the most important one. I never bothered to figure out to get to them via the OS since I have access to a USB analyzer. :/
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Scanjo » Fri Dec 13, 2013 11:19 pm

I've been thinking about enclosures for this board. Thus far, the buyer has been responsible for making an enclosure. I've come up with a simple and cost effective way to protect this board without spending a a bunch more on a box.
sleeve.jpg
This is a fairly heavy duty shrink tube. It will reduce the chance of static shock, and if you lay it upside down it will also give good protection against spills. I have cut holes for the trim pots and also for the Teensy button which allows you to program it. Without the Teensy hole, the shrink wrap would press the button and make the board unusable.

If interested in this method, mention it in the comment box on the order form and I'll include a 4" piece of shrink tube for another 50 cents. You will need to trim to fit, cut the holes, and of course shrink it. I was able to shrink it with a hair dryer. Hold it very close and have patience... :)
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
cal
DBB Ace
DBB Ace
Posts: 29
Joined: Sat Jan 07, 2012 6:23 am

Re: Reverse Engineering the Force Feedback Pro

Post by cal » Sat Dec 14, 2013 1:17 pm

You guys have been having a ball with this one and I'm really happy to see the work again being taken further. All the people reporting that they have made it working or even made a nice board for this makes me feel all fuzzy and warm inside. Thanks all users and contributors. Just awesome!

Then just to comment the various discussion points from the past few months.

About the trimpots. Yes, they were intended (and used) for additional analog axis and primarily I myself put them since I wanted to have my rudder pedals, elevator trims and rudder trims in the same controller when playing my favorite combat flight sim IL-2. Anyone is free to use these additional axis for anything or just leave them unused. I have them connected to pedals and a couple of quality pots I have mechanically attached to a side of my Sidewinder so I can easily reach them with my fingers while playing. I was actually still missing a couple more of these analog axis for the wheel breaks of an airplane (like some commercial pedals have), but as the pedals I made for myself didn't have enough mechanical parts, the wheel break axis were still left out from the adapter project too. It is quite easy (for a programmer with basic AVR-skills) to have these additional axis. And I think there is still room for some additional buttons too if desired.

The Wheel. I don't want to discourage you, but I would expect that it is not a simple task to make this adapter to support the Wheel too. I fear that the Wheel uses different protocol on the X/Y-wires for initializing the Wheel as well as different MIDI-protocol for the effects data. The MIDI-part is relatively easy to reverse engineer since it is simple 8-bit serial data that can be snooped e.g. with any serial tool (e.g. another AVR's serial port - which was the method I used to reverse engineer the joysticks MIDI-protocol as I had no access to any real serial analyzers). But, if the X/Y-line initialization protocol is different (which it likely is), that requires more elaborate tools and a lot more time and experimentation to reverse engineer. You need a proper digital oscilloscope for it since the signalling is too fast for AVR to read it reliably.

As for the Wheel USB descriptor, you might actually be fine by using the existing joystick descriptor because at least all the games I know (e.g. FlatOut, Dirt and Trackmania) that supports wheels will also support an analog force feedback joystick. So, the game would see the wheel as a regular force feedback joystick, but you actually have the Wheel in - and that is just fine. You still get the same functionality. Also, it is quite difficult to have one AVR device to dynamically support multiple USB-descriptors. So, I would really encourage to start the Wheel-work by leaving the adapter to look like a joystick to PC and concentrate on determining the Wheel's game port protocols.

The only USB-side issue _might_ come from the types of force feedback effects the game is assuming the controller supports. Currently adapt-ffb-joy has some limitations on what effect types it works with - e.g. it does not support custom effects as the joystick does not seem to support them. However, the games seem to only use the basic effect types (sine, square etc.) that are already now supported by the current USB descriptor of the adapter.

So, someone with the Wheel should plug it into a working game port setup (i.e. an Win XP or older machine) and see how it talks with PC and then start making educated guesses on what it all means. Once that is done, then modifying the adapt-ffb-joy's code on the AVR side is relatively simple.
User avatar
flip
DBB Material Defender
DBB Material Defender
Posts: 4871
Joined: Thu Oct 26, 2006 9:13 am

Re: Reverse Engineering the Force Feedback Pro

Post by flip » Sat Dec 14, 2013 8:35 pm

I found a great tutorial online about 8 bit programming.

http://hackaday.com/2010/10/23/avr-prog ... roduction/
Reaper36
DBB Cadet
DBB Cadet
Posts: 6
Joined: Sat Dec 21, 2013 1:31 am

Re: Reverse Engineering the Force Feedback Pro

Post by Reaper36 » Sat Dec 21, 2013 3:01 am

cal wrote: The Wheel. I don't want to discourage you, but I would expect that it is not a simple task to make this adapter to support the Wheel too. I fear that the Wheel uses different protocol on the X/Y-wires for initializing the Wheel as well as different MIDI-protocol for the effects data. The MIDI-part is relatively easy to reverse engineer since it is simple 8-bit serial data that can be snooped e.g. with any serial tool (e.g. another AVR's serial port - which was the method I used to reverse engineer the joysticks MIDI-protocol as I had no access to any real serial analyzers). But, if the X/Y-line initialization protocol is different (which it likely is), that requires more elaborate tools and a lot more time and experimentation to reverse engineer. You need a proper digital oscilloscope for it since the signalling is too fast for AVR to read it reliably.

So, someone with the Wheel should plug it into a working game port setup (i.e. an Win XP or older machine) and see how it talks with PC and then start making educated guesses on what it all means. Once that is done, then modifying the adapt-ffb-joy's code on the AVR side is relatively simple.
Hello,
I have followed this project with interest for some time now and I might be able to help with the data gathering for the wheel.

I have the wheel at home and I am going to try to get the needed data. Assuming I can get the wheel to work in Win98/XP at all.
For the problem with the X/Y-Line, I am not sure what pins you mean. I thought gameport pins 3 and 11 are both input ports and 12( Midi ) is the only output to the device.
I do not have a oscilloscope, but I guess a good approach to analyze the communication would be this tool: http://jwasys.home.xs4all.nl/old/diy2.html
It seems to provide multiple channels at very high speeds and might help a lot.

Update:
The signal analyzer tool I suggested did not work very well for me, I found a better one that is working. ( http://www.codeproject.com/Articles/752 ... c-Analyzer )
If you try it make sure you read the manual before you connect anything!
The wheel works without any problems in windows xp with a normal gameport. I will build a kind of "listening"-cable to connect between the wheel and the gameport.
When that is done I will start to record the communication of the wheel for certain situations.

Update 2:
After bringing everything together I tried today to capture the communication of the wheel.
The first problem with my "listening"-cable is that it seems to respond to interference, sometimes force feedback commands do not make it through any more but it still works.
The bigger issue when I connect the cable to my parallel port is that the inputs of the port seem to mess with the communication of the wheel and it does not work any more.
Next thing I try will be to use a optical coupler between the parallel-port and the pins of the gameport to make sure that the communication will not be messed up again by the parallel-port inputs.

With kind regards
Markus
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Scanjo » Tue Dec 24, 2013 12:27 am

@Reaper36...
The first problem with my "listening"-cable is that it seems to respond to interference, sometimes force feedback commands do not make it through any more but it still works.
The bigger issue when I connect the cable to my parallel port is that the inputs of the port seem to mess with the communication of the wheel and it does not work any more.
I remember reading somewhere (darned if I can find it again) that using resistors on the wires you're using to snoop will keep you from interfering with the function of the device you're snooping on. I can't remember the value of the resistors that were used... <sigh> If you have some resistors laying about you could try putting them in series. I'll take a WAG (wild assed guess) that maybe a 220 ohm might be a place to start. Cal or Grendel could probably help in this regard. I'm just a solder monkey.

Scott
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
Reaper36
DBB Cadet
DBB Cadet
Posts: 6
Joined: Sat Dec 21, 2013 1:31 am

Re: Reverse Engineering the Force Feedback Pro

Post by Reaper36 » Tue Dec 24, 2013 2:50 am

Scanjo wrote:@Reaper36...

I remember reading somewhere (darned if I can find it again) that using resistors on the wires you're using to snoop will keep you from interfering with the function of the device you're snooping on. I can't remember the value of the resistors that were used... <sigh> If you have some resistors laying about you could try putting them in series. I'll take a WAG (wild assed guess) that maybe a 220 ohm might be a place to start. Cal or Grendel could probably help in this regard. I'm just a solder monkey.

Scott
Thanks for the suggestion, but I ordered already the optical couplers and proper gameport plugs.
I hope any interference (and possibility for damage to the equipment) will be gone after including the new parts.
If I can not get the optical couplers to work, I will come back to your idea trying resistors until it starts working.

With best regards
Markus
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Scanjo » Thu Dec 26, 2013 2:44 am

There is debate about whether this adapter I'm building does indeed support the 3D Pro and 3D Pro Plus. If you have one of these, please wait to order till we sort out what's happening. I got an email from one person that theirs does not. I don't know if it's an incompatibility or a joystick hardware failure at this point...
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
Muddy
DBB Cadet
DBB Cadet
Posts: 4
Joined: Thu Dec 26, 2013 4:57 am

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

Post by Muddy » Thu Dec 26, 2013 5:14 am

Hello, all, Newby here. January of 2014, I will be building this project for a MS ffp2.
I am used to BASIC and the Parallax Basic Stamp 2, but I'll try to throw this together!
I can offer my services to help enable all 46 of the ffp2's hardware effects (sans 'raw force', which never worked for me in DX8)
I have 2 machines with USB 2.0: A P4 with Win 98SE and the actual driver and game port, and a shiny new i7-3820 with XP pro sp4, and only USB ports. No driver.
I am writing in Visual Basic 6 (Still, I know)
One catch: due to my UPS, I can only run one at a time. Heh.

I can offer raw data sampling with a joystick passthrough of some sort, if Grendel is interested in some TLC for me.
It has been said that Sawtooth doesn't work.
I can assure you that this is not the case.
I have MS force builder application also. But I can trigger all of these effects in VB.
Thank you for your attention!
User avatar
Overkill211
DBB Cadet
DBB Cadet
Posts: 11
Joined: Wed Nov 07, 2012 11:09 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Overkill211 » Thu Dec 26, 2013 11:13 am

Yeah, the 3DPro and Precision Pro use pin 13 on the DA-15 for one of their axes, which is not used on the FFBPro adapter (as presented on the website). This was the sole reason my adapter had the extra components... I was building it for the possibility somebody could change the program code to support ALL the Sidewinder overdrive controllers.
Stating an adapter can support devices not listed by the adapter's original designer, without checking the circuit diagrams against each other, will result in "debate".
I am NOT stating that my adapter is compatible with the 3DPro and PP... merely that I have the additional circuit traces necessary to support them, in the future. I am not a programmer, so it's unlikely that I will be the one to add that support.
As the two adapter projects stand, currently, neither can support the other's intended joysticks.
Muddy
DBB Cadet
DBB Cadet
Posts: 4
Joined: Thu Dec 26, 2013 4:57 am

Re: Reverse Engineering the Force Feedback Pro

Post by Muddy » Thu Dec 26, 2013 2:05 pm

So can we still make the connection/project?
Can you use me? Or is the software by Grendel?
Can I get the source (I'm not real great at C, but good with microcontrollers)?
Who is doing the reverse engineering for the ff pro?
As I said, I'm ready to, and am aware of the need for numerous iterations, etc...
I'm a patient guy, and I would like to use it in a serial com port mode, maybe, rather than mimic a real driver, I've been writing a FPS type proggy in BlitzBasic3D, and it's ff module is really hiccupy, so com port would be nice, but I can diagnose in VB (solid Ap)
-note- I didn't enjoy raw hid mode in VB (slow)
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re: Reverse Engineering the Force Feedback Pro

Post by Grendel » Thu Dec 26, 2013 2:14 pm

I guess that's a question for cal (I'm assuming you saw this page ?), I'm not very deeply involved w/ the FFP project.
Muddy
DBB Cadet
DBB Cadet
Posts: 4
Joined: Thu Dec 26, 2013 4:57 am

Re: Reverse Engineering the Force Feedback Pro

Post by Muddy » Thu Dec 26, 2013 3:17 pm

Thank you, Grendel, I had not reviewed the data thoroughly, and appreciated the examination of it. It IS reminiscent of raw HID activity, isn't it?
I have found that the act of reproducing the desired EVENT is an integral part of decrypting the activity. It seems very possible to use the joystick in this manner---
Did we succeed in reading the REAL frame of joystick data regarding pos, buttons, etc-
These are best eliminated first.
I can't wait to sink my teeth into this!
It looks like a real quality tester was already used which gives us a useful framework to start with.
I will happily post my real world progress when I have either failed or finished.
Thanks Cal!
skoo
DBB Cadet
DBB Cadet
Posts: 6
Joined: Fri Dec 27, 2013 4:21 pm

Re: Reverse Engineering the Force Feedback Pro

Post by skoo » Fri Dec 27, 2013 5:10 pm

I used logic analyzer/scope to capture Button1-4 and X1 signals from Sidewinder Force Feedback Wheel while Control Panel -> Game Controllers -> Properties -> Test tab was open in Windows XP.

The wheel uses 3-bit data and ~100kHz clock, same as Force Feedback Pro.

Button1=100kHz clock signal.
Button2=Bit0
Button3=Bit1
Button4=Bit2

Data packet is 11 clock cycles (32-bit data + 1-bit parity)

Clock signal toggles for 110us (11 clock cycles cycles), then it's 150us up, 330us down and 46.2ms up (data packets repeat every ~46,9ms as tested with with audigy gameport)

Code: Select all


w=10-bit wheel position, counterclockwise position=0
a=6-bit gas pedal position. Inverse, up=63
b=6-bit brake pedal position. Inverse, up=63
A=Button A (Shown as Button 1 in Game Controller test window)
B,C,X,Y,Z=Buttons B,C,X,Y,Z (Buttons 2-6 in Game Controller test window)
L=Left gear button (Button 7)
R=Right gear button (Button 8)
F=Force button (Status not shown in Game Controller test window)
p=Parity. "1" for even number of bits (bits 0-31).
1=always "1"

0            1            2             3
012 345 678 901 234 567 890 123 456 789 012
www www www waa aaa abb bbb bAB CRX YZL F1p
Attachments
wheel-parity-1.png
FF wheel data packet capture
User avatar
Scanjo
DBB Ace
DBB Ace
Posts: 58
Joined: Wed Oct 23, 2013 9:01 pm

Re: Reverse Engineering the Force Feedback Pro

Post by Scanjo » Sat Dec 28, 2013 2:46 pm

The adapter I'm building is indeed not compatible with the 3D Pro and 3D Pro Plus. We are working on the problem and think we have a solution. A modified board is on the way to a tester. My apologies for the misinformation and confusion. More news soon.
=================
Run #3 is happening! Please CLICK HERE and sign up if you're interested. A custom 3D printed case is available for V2.0 boards. Run #1 boards will NOT fit (sorry folks). More info is on MY SITE.
cal
DBB Ace
DBB Ace
Posts: 29
Joined: Sat Jan 07, 2012 6:23 am

Re: Reverse Engineering the Force Feedback Pro

Post by cal » Sun Dec 29, 2013 8:40 am

skoo wrote:The wheel uses 3-bit data and ~100kHz clock, same as Force Feedback Pro.
That's nice. I would expect it to be quite trivial then to adapt reading the Wheel's position and buttons. Then comes the FFB effects data. I would expect that to be at least slightly different than FFP since there's only one axis where the force effects are applied while FFP has two. Could someone run the basic effect types e.g. using FEdit and record the MIDI data being transferred. MIDI uses a standard 31250 baud, 8-N-1 serial protocol so you can just plug it into an UART input.

Effect types to test at least would be constant force, spring, sine, square, ramp up, ramp down and saw. You could try others too, but mostly these seem to be used in the games. Don't know, but maybe some driving games might use friction and inertia too. Then, the commands to start, stop, pause and resume an effect. Also, once an effect is playing, modify at least amplitude and frequency (for periodical effects like sine) of the effects on-fly.

The commands in FFP really looked like real MIDI-commands for musical instruments. They had the same framing etc. All commands on FFP had format (in hex).

0xF0 ...n-bytes data... Checksum 0xF7

You could compare them against FFP's MIDI commands I've listed on the project page https://code.google.com/p/adapt-ffb-joy ... derFFBMIDI.

After that, the only question remaining would be the initialization sequence. FFP required a special "enable FFB" pulse sequence in order for it to start reading the MIDI data in the first place. I wonder, if that would be the same on the wheel too or did MS omit that. That "enable FFB" sequence is documented on https://code.google.com/p/adapt-ffb-joy ... FBModeInit.
Post Reply