Compared to a modern Logitech wheel, the Logitech G25 probably looks quite dated. Instead of covering the face of the wheel with inputs, the designers at Logitech opted to simplify the wheel itself and move most of controls to the attached shifter. In addition to its six gear H-pattern, the shifter has eight programmable action buttons, a directional pad, and the ability to transform into a sequential shifter. The modern Driving Force shifter, compatible with Logitech’s modern range of wheel bases, has the same shifting hardware but lacks these incredibly useful spare inputs. Unfortunately the shifter itself doesn’t have a USB output, which makes it difficult to use standalone without the matching wheel.
If you still have your Logitech G25 shifter, there is a way to get it working without a wheel. I’m going to show you how to build your own DIY USB 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 7 wires, each cut to about 7″ long. If you can, make each of these wires a different color. The colors I’m using are green, yellow, black, blue, red, and white. Since I only have 6 colors and we need 7 wires, I used a second yellow wire and added a stripe to it with a black marker. 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.
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.
DB9 Pin | Arduino Pin | Color | Function |
---|---|---|---|
4 | A0 | Yellow | X Axis |
3 | 5 | White | Latch |
2 | 7 | Green | Data Out |
6 | GND | Black | Ground |
7 | 6 | Blue | Clock |
8 | A2 | Yellow Striped | Y Axis |
9 | 5V | 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 LogitechShifterG25_Joystick
. In the menu, go to:
File > Examples > Sim Racing Library > Shifter > LogitechShifterG25 > LogitechShifterG25_Joystick
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). The black action buttons are mapped to buttons 8-11 and the red action buttons are mapped to buttons 12-15. When in sequential shifting mode, shift up is mapped to button 15 and shift down is mapped to button 16.
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.
Any questions about this DIY USB adapter? Take a look at the frequently asked questions (FAQ) page, you might find the answer there.
Have you built one of these adapters? Do you have advice for new builders, or suggestions for this article? Leave a comment below!