The Logitech Driving Force shifter is an awesome piece of kit. It’s small, stylish, robust, and inexpensive. But unfortunately it has one major drawback: it’s dumb! It has no “smart” electronics whatsoever, just a simple DB-9 connector that absolutely must be plugged into a Logitech wheel base unit in order to function. If you (like me) don’t happen to have a fancy Logitech racing wheel, you have to come up with some other way of connecting the shifter to your PC.
I’m going to show you you can how to build your own DIY adapter in under 15 minutes using only a handful of parts. This is an easy project and requires absolutely no soldering.
Supplies
Here’s what you’re going to need to build this adapter:
- A DB9 male to screw terminal adapter
- A few pieces of solid-core wire, about 22 AWG
- An Arduino Leonardo (or a less expensive clone)
- A pair of needle-nose pliers
(These are affiliate links. As an Amazon Affiliate I earn from qualifying purchases.)
Please note that you cannot use an Arduino Uno, Nano, or Mega. They are not capable of running the included USB joystick firmware. You can use an Arduino Micro or SparkFun Pro Micro, although those will require you to solder to the headers.
It is important that you use solid-core wire and not stranded wire. This will ensure that you can get a good connection between the wire and the terminals on both the connector and the Arduino.
If you have access to a wire stripper and/or a pair of flush cut pliers I would recommend using those in place of the needle-nose pliers, although they’re not necessary.
Step #1: Prep the Wires
The first thing you’re going to do is cut the wires to length. We’re going to need 5 wires, each cut to about 7″ long. If you can, make each of these wires a different color. The colors I’m using are yellow, green, black, red, and white. Your wires don’t have to be color-coded, but it does make it much easier to assemble.
Using your pliers, strip off about 1/4″ from one end of each of the wires. Then grasp and bend the stripped portion until it’s at a right angle to the rest of the wire. Do not strip the other end of the wires just yet.
You’ll also need 1 short wire, about 2.5″ long. If you’re following my color scheme, it should be red. Strip and bend both ends of this wire.
Step #2: Wiring
Remove the connector from its plastic casing. Using the included screwdriver, you’re going to loosen each terminal by turning counter-clockwise, insert a wire, then tighten the terminal by turning clockwise. The wires should be oriented away from the DB9 connector.
Here is the list of connections. Be sure to connect the wires one at a time in the same order as the table (top to bottom). This way, no wires will overlap the pins you’re trying to connect to.
Five of the wires connect to a single pin and go towards the Arduino. The sixth wire (the short one!) connects between two pins on the DB9 connector. Wire this connection around the back of the connector.
DB9 Pin | Arduino Pin | Color | Function |
---|---|---|---|
4 | A0 | Yellow | X Axis |
2 | 2 | Green | Reverse |
6 | GND | Black | Ground |
7 | 5V | Red | Power |
8 | A2 | White | Y Axis |
3/9 | - | Red | Power |
Double-check your connections, then slide the case’s rubber grommet onto the connected wires (with the flange facing towards the connector). Insert the connector back into its case, and then install the included screws and strain relief bracket. These will hold the wires securely so there will be less risk of the screw terminal connections coming loose. Close the connector’s case.
Now for the connections to the Arduino. Strip the other ends of the wires, again about a 1/4″. One at a time, insert the wires into Arduino following the table above. Unlike with the DB9 connector, the order in which you add the wires does not matter.
Once you have the adapter fully wired, double-check your connections before proceeding to the next step.
Step #3: Programming
Download and install the latest version of the Arduino IDE. You’ll also need two libraries:
Download both of these by clicking on the “Source Code .zip” links. In the IDE, we can install them by going to:
Sketch > Include Library > Add .ZIP Library
Add both libraries to the IDE. If you get stuck, take a look at the official libraries installation tutorial.
Once the libraries are installed, we’re going to load the Sim Racing Library example called ShifterJoystick
. In the menu, go to:
File > Examples > Sim Racing Library > Shifter > ShiftJoystick
A new window should open with the example program. Back up in the menu, we need to set the board to the Leonardo:
Tools > Boards > Arduino Leonardo
While you’re there, look at the list of serial ports (Tools > Ports
). Mentally note if there are any ports present, then close out of the menu. Plug in your Arduino and then open the ports menu once again, you should see a new port listed for your Leonardo. Select that port.
Now click the “Upload” button with the arrow icon in the upper left of the window. If all is well, the Arduino IDE will compile and upload the program to your Leonardo. Look for the “Done uploading” status in the window once it’s done.
Step 4: Play!
The adapter is complete! Plug in your shifter and take a look at your system’s joystick control panel. You should see the Leonardo as a controller, with joystick buttons 1-7 corresponding to gears 1-6 and reverse (in that order). Load up your favorite racing game, assign the buttons to gears, and enjoy!
Looking for something more permanent? I designed a “shield” for the SparkFun Pro Micro that makes all of these connections out of the box. You can find that project here.
Have you built one of these adapters? Do you have advice for new builders, or suggestions for this article? Leave a comment below!
11 Comments
İlker · August 27, 2023 at 9:51 am
Hello Mr. Dave, I followed your directions and it’s work perfectly. I will add 2 buttons your project how can I do ? I did try but didin’t work because system need x and y position. How can I do without x and y position. Thank you for video and information.
Dave · August 28, 2023 at 12:42 pm
Hello! Please take a look at this GitHub issue for some information on how to add more buttons.
Marf · October 11, 2023 at 4:48 pm
Hi dave, This is so awesome. I already build one for my self and now one for my boyfriend. it works wonderfully!
we did not wanted to buy the expensive Trustmaster shifter as we both have trustmaster wheels and not a logitech one.
Thank you for your guide! 😀
Benamar Anas · November 21, 2023 at 6:47 am
Hello Dave, i wanted to know if this adapter work with Logitech G25 Shifter as you know the G25 have 2 mods in shifter switch the sequentiel and manual H6+reverse also theres 12 more buttons
Dave · November 21, 2023 at 11:26 am
Hi Benamar. I don’t have a G25 shifter myself, so the library was only programmed for the G29 shifter. The shifter itself should work with the library but none of the buttons will.
Benamar Anas · November 21, 2023 at 7:43 pm
How can i make the buttons works
Fahad Samer · May 9, 2024 at 5:02 pm
Really dumb question, but does AWG matter? Or can I just use any wire, also can I use a Arduino pro micro? It seems to have the same internals as a Leonardo, just cheaper, sorry if I look ignorant, I’m not a expert at soldering or wiring
Dave · May 9, 2024 at 8:50 pm
The female headers on the Leonardo will only work with certain wire gauges. If you aren’t using the headers then it doesn’t make much of a difference.
You can use the Pro Micro, but you will have to solder to the pins. The Leonardo doesn’t require any soldering.
Fahad Samer · May 10, 2024 at 11:39 am
Ah, I have no problem with soldering, but wire gauges also do not matter in the pro micro however they matter on the Leonardo, does the gauge stand for voltage or just size?
God I look so dumb here, excuse me
Fahad Samer · May 10, 2024 at 12:10 pm
Absolutely disregard this reply, I’ve done further digging and found out AWG is a size meter, not a electricity meter, I’ll be using stranded wires tinned for both connections on a pro micro.
Cheers-
Fahad
Building a simple USB adapter for the Logitech Driving Force Shifter with Arduino | Arduino Blog · June 29, 2022 at 7:52 pm
[…] to work. So as a way to circumvent this annoying problem, Parts Not Included’s Dave Madison created his own custom adapter, which translates the signals from the shifter into commands over a USB port on the host […]