Close

Project History

A project log for Steel Battalion Controller Teensy Adapter

A hardware adapter allowing a Steel Battalion Controller to appear as an Xinput device.

SantiagoSaldanaSantiagoSaldana 11/29/2021 at 07:380 Comments

I'm going to provide some background on this as I've worked on this on and off in some state for a decade.  I will later make a post dedicated to instructions.

The journey for this piece of hardware / software started almost a decade ago.  I got the Steel Battalion Controller from my brother.  I'm not sure where he found it as he didn't have an Xbox nor the original game, but I borrowed it from him and set out to make it work on Windows.

People had gotten the controller to work before in Windows XP, however the drivers would not work for any 64-bit version of Windows.  So I set out to write something.  I got a good start on this process using the SteeBattalion.net project.  

https://github.com/jcoutch/steel-battalion-net

The original release of his code was in 2010, so quite a bit of time has transpired.  It was originally hosted on codeplex if anyone remembers that.  In the original video

It was only used for podcasting but he created a library and listed out most of the code necessary to access the rest of the device.

He made use of libusb.net to take care of the usb side of things and wrote the software in C#.  I stuck with the same format due to my love of the language and difficulties trying to properly compile a driver for Windows.

I wrote my first version of the software in 2012 and played Mechwarrior 3 with it.

I would go on to revise the software once or twice a year for several years and several people used it to play.  The problem with this approach was Windows Driver Signing.  Basically unless you paid a lot of money to Microsoft you had to put Windows into Test Mode to allow PPJoy to work.  PPJoy was an intermediary software I used to emulate an HID device or xbox controller in windows.  Eventually PPJoy raised enough money for driver certification but there were still at least 3 pieces of software involved.

Since then other people have gotten the controller to work in Windows using a proper driver.

This was recently hosted on Hackaday as well.

https://hackaday.com/2019/09/13/steel-battalion-controller-grows-up-and-gets-a-job/

And it was an impressive feat, however taking that approach makes it difficult to make use of the lights appropriately.  You could probably send light commands within the driver, but it would lack flexibility.  It also runs into the issues I ran into before of Windows signing.

What I realized was that I could emulate an Xbox controller and intercept the rumble commands and make the lights of the controller work in response.

I did this using my Steel Battalion 64 software in 2018

However my approach suffered from lag and my lighting approach was not sophisticated  I just blinked all the lights.  I had also done as much as I wanted to with the original software and I took a break.  A new VR game, Iron Rebellion initially announced they would have HID support and it renewed my interest in providing hardware level support for the Steel Battalion Controller.  This also allows it to be used on a standalone headset such as the Quest 2, as they support standard Xinput devices.  I had used a Teensy Microcontroller in the past supporting another old joystick, the Microsoft Sidewinder ForceFeedBack Pro and knew it was capable.  A work project had me look back at the Teensy line and I saw that the new Teensy 4.0/4.1 supported both usb host and device at the same time.  I knew it was now possible to build a hardware level adapter.

That led me to my newest revision using a Teensy 3.6.  Theoretically works with 4.0/4.1 but the Xinput library was written for 3.6 and I made minimal progress after a week of trying to port the code.  Here is the latest revision.

Discussions