I recently got into the game IL2. I’d been a fan of the original years ago, and WW2 era combat flight sims in general but always found looking around the cockpit with the mouse difficult to do while flying. That lead me to get an IR tracker, or more accurately, build my own. IR trackers are a simple array of 3 Infer-red LEDS you wear on your head either on a hat or attached to your headphones and then using a webcam, converted to filter out all light other than Inferred, and some free software online the device tracks your head movement, not 1:1 but after some getting used to you can basically use your head movements as a controller to look about the plane.

Soon after building this however I picked up an Oculus Rift S Virtual reality headset and have never looked back. Flying in VR is amazing. Being able to look around the cockpit at all the instruments, look out the windows, move forwards towards the gunsight and turn your head around in all directions keeping an eye out for the enemy is the best use of VR I’ve seen.

The only downside of flying in VR is you can not see the keyboard anymore, and not having enough buttons on my joystick to do everything you need to take off, land, and drop bombs on the enemy made flying difficult. 

I decided to build my own game controller that would allow me to have move buttons and more analogue controllers for things like adjusting radiator positions and fuel mixtures. The buttons would be spread out and have a distinctly different tactile feel so I could find them while wearing the VR.

I used a Teensy 2.0 Android board to interface with the computer, once all set up Windows detects it as a game controller, and plugs in via a USB Cable.

If you’d like to build your own, hopefully, this guide will help. Once you’re done, be sure to tag me on Instagram @chrisburns_3d

Tools you will need:

  • Soldiering Iron
  • Power Drill
  • Small Files
  • Dremel
  • Hot glue gun

Parts list:

  • 1 x Teensy2.0 $12.30
  • 1 x Jumper Sockets $1.10
  • 1 x Jumper pins $1.71
  • 1 x Electoral wire
  • 4 x Potentiometers (make sure these are linear and not audio) $4.00
  • 4 x Potentiometer caps
  • 1 x Sliding Potentiometer &6.58
  • 1 x Engine start LED momentary switch $5.94
  • 1 x Push button switch $7.10
  • 1 x Missile Switch $2.63
  • 9 x Momentary push buttons $9.02
  • 1 x Jiffy box $6.95
  • 1 x Long USB Type-C Cable
  • 1 x Contact adhesive $1
  • 1 x Adhesive printer paper
  • 1 x Rubber Gromit
  • 1 x Heat Shrink $0.50
  • 1 x Electrical tape

Above are the parts that I used in my build and the rough costings, but you should spend some time thinking about what controls you want to be able to do and the best type of button suited for it. In a game like IL2, there are still a lot of commands that I don’t have buttons for, but I now have enough to do the most common things such as engine management. It is so much better being able to set the water and oil radiator positions by turning a dial, rather than holding down Ctrl+Plus & minus and waiting for it to count up.

The Teensy2.0 board supports 6 analogue inputs, I knew I wanted two sliding dials for separate engine throttles, so the other four-axis could be dialled for water & oil radiators, fuel mixture, and flap position. I would recommend setting up your controls before buying or building anything to make sure that each control supports being assigned to an axis. I was not able to get the flaps to work being assigned to an axis and instead used this dial for engine cowling output shutters.

When it comes to the buttons, I knew I wanted a big easy to find Eject button, keep in mind if you’re flying in VR you’ll be feeling for these controls, so having a variety of different buttons and a non-uniform layout helps. I also wanted to have at least one illuminated button or LED on the controller to know when it is connected to the PC. I found the backlit Engine start button perfect for this. Another must-have was the Missile style switch with its big read safety cap, its just too cool not have on a flight sim controller. I have this hooked up drop bombs. You could use any type of buttons you like, just make sure that they a ‘momentary’ switches and NOT latching or toggle type ones. If you use anything that latches, when you press it, it will be like holding down that key on the keyboard. I chose this style button as they are relatively cheap and come in a variety of colours. All the buttons I’ve chosen are momentary with the exception of the Missile switch.

Once you’ve decided on your buttons and dials etc, next comes the layout. While I was trying to figure out how I was going to house all the electronics, I laid out all the buttons not the desk and Imagined which ones I’d use most often and in what order and put the most used ones in the most ergonomic positions. If you don’t intend on labelling all the buttons as I did, then you could not worry too much about this step as you can resign them later in-game. 

Experimenting with the button layout.

I knew that I wanted the Engine start button to be up the top left as it is the first thing you press each flight. Then the Eject up out of the way in the opposite corner. The engine dials all below that and colour coded to the colours used in-game. Then the missile switch and other bomb-related buttons such as Bomb Sight, Open Bombay Doors etc, all clustered together and the Throttle controls in the bottom corner where I can easily get to them.

Soldiering these Jumpers on makes testing a lot faster

I soldiered some jumper sockets onto the Teensy board and used some Alligator-clip jumper pins to test out each button functioned correctly. You will need to install the Teensy drivers and the Arduino IDE from here. Once you have your Teensy board plugged into USB, set it to be detected as a Joystick/Keyboard and it should be detected by Windows when you plug it in. Initially, the amber light on it should be lit up or flashing. Open the ‘blink test’ sketch and edit this script to increase the flashing rate, you can find the tutorial on how to do this on the PJRC site, it will give you an idea of how easy it is to update the sketch on the board. You just need to set the Teensy board to be used a Joystick, and you can download the sketch I used here, it is based off an example file, with the Hat switch test commented out.

Testing out that everything works using a breadboard and alligator clips before building

To house everything I used a Jiffy box from Jaycar, these are cheap, come in a range of sizes and are made of ABS plastic so are quite durable. I went with the biggest size (197 x 113 x 63mm) as I need a bit of depth for the Eject button, I wouldn’t recommend making it’s much smaller though,  as once you connect up everything with wires it can get a bit cramped for space. Another alternative is to build a wooden box, I’ve seen some people build nice looking ones with laser cut wood, or repurpose an existing container. I did think about using an old ammunition box but thought it might be had to access the revised side to wire it all up.

Labelling buttons. You could skip this step entirely, the other builds I’ve seen people make look good with just being left blank or use carbon fibre contact. I wanted to make mine look like an aircraft instrument, so I labelled each button and dial with an aircraft looking font and surround them with white boarders to group them. I also when with the greenish-blue background. I thought about using Letraset to do the lettering but a much easier method is to print out the design on adhesive paper and use that as my guide to drill the holes too.

If you’d like to build my exact controller, you can download my Photoshop file here (75Mb) and edit it as you see fit. If you don’t have photoshop here are the finished images (10.3Mb). The Photoshop file was printed out at a 10% scale and fits exactly to the Jiffy box.

Once I was happy with the design I printed it out on regular paper and attached it to cardboard and did a test fit of all the buttons just to make sure everything would fit in place, and I would have room behind it all to wire it up. This was worthwhile, as I found my original design had the labels covered up buttons surround, and my original design had the engine dials too close to the Eject button making it too difficult to use.

Testing out that the buttons would all fit mounted, and that the text was still visible I realised that my original idea of having the knobs so close to the eject button wouldn’t work, so changed the design to have them below the row of coloured buttons.

I used adhesive paper which worked really well, and once attached to the faceplate of the jiffy box I wrapped the whole thing in contact adhesive to protect the paper from getting damaged.

The design has the centre holes marked out making it easier to drill the holes, I used a centre punch to first mark these points, then used a hobby knife to cut the paper prior to drilling just to beside the paper didn’t rip. I didn’t quite have a large enough drill bit for the buttons, so I used a Dremel to expand the holes out and to also cut the slots for the Throttle sliders. The Throttle sliders were the most difficult to cut, so I’m glad there were only two of them to do, just take your time and use a small file to clean these slots up.

Now the fun part of attaching all the buttons. Use a towel or soft surface to protect the faceplate during this step. 

Wiring up, connect all the ground wires first, you can daisy chain them together.  Then daisy changes the VCC for the pots, and Engine start LED. I’d recommend testing each button works as you go, either with a multimeter, or connect to the Teensy, and plug it into the PC. I overheard a couple of the buttons when I was soldiering them up and melted them, so It is worth having a few spares. Once you’re sure everything is connected correctly and tested it, connect each button to the board. I found a small free space to mount the teensy to using a hot glue gun. 

Drill a small hole in the side of the box for the USB Cable, You can use a Rubber Gromit to make this look neat, then cut the USB Cable near the Type-C end but not too close, thread it through the hole and then reconnect the two ends. There should be 5 wires inside the USB lead, take your time to make sure these are connected correctly and used heat shrink or electrical tape to make sure there are no shorts. Then tie a loose knot in the cable to prevent it being pulled back through the hole.

Lastly, press on some rubber feet to the base to stop it sliding around, I got these ones from some IKEA furniture

Plug it in and map your controls in-game and enjoy! 

Be sure to share your project and tag me so I can see and happy flying!

Skip to toolbar