Teensy USB Wii Classic Controller




Introduction: Teensy USB Wii Classic Controller

I'm a fan of the Wii Classic Controller, but I've never cared for having to keep wireless controllers charged up for an occasional bout of nostalgia. Wouldn't it be great if I could use my Wii Classic Controller over USB? This is how I made it.

Step 1: Preparing the Parts for Assembly

I opened up my controller with a tri-wing screwdriver and saw that the accessory port mechanism takes up a lot of interior space. Once removed, the space looked about right to fit a Teensy LC.

I used an old Samsung phone USB cable like this one that is appropriately white to match the controller. I split open the micro-B side with an x-acto blade. After removing the outer plastic casing, the metal shield, and the connector parts, I carefully stripped away a tiny amount of insulation from each of the four wires. The remaining end of the cable fits nicely through the hole left by the accessory port button. The rectangular block at the end conveniently keeps the cable from pulling on the soldered wire connections.

Next I removed the controller cable. The five wires shown above (red, yellow, green, white and black) are connected in a plastic jumper casing. I unscrewed the circuit board from the controller case and flipped it over to desolder all five wires, removing the whole jumper and leaving just the bare circuit board to connect new wires to.

Step 2: Assembly

I connected the Teensy to the Wii controller according to the schematic. (The white wires are shown as grey.) The USB cable has four wires: black, green, white, and red. Only four of the five wires from the Wii controller are necessary: white, red, yellow, and green. (The black wire is left open.) As recommended I used 4.7K pull-up resistors for the I2C pins.

I threaded the USB cable thru the top of the controller case (thru the accessory port button hole). I soldered the four USB wires to the side of the Teensy not seen in the picture. I soldered the resistors flush to the Teensy board and connected carefully measured wires to reach from the Wii controller port to the designated Teensy pins.

Note that I used a black wire instead of a white wire for the ground connection, but it connects to the Wii controller circuit board where I detached the white wire from. If I were to do it again I would use thinner wires and/or remove some of the plastic between the analog joysticks to run the wires so that they could be more easily placed out of the way of the right trigger mechanism. It's a tight squeeze, but I got it to work as shown.

When fully reassembled the edge of the Teensy board sits on the outside of the analog joystick board, and you can see the Teensy thru the accessory port slots.

Step 3: The Code and Citing Sources

The code can be downloaded here. It simply reads in the controller status over I2C using a Wire library and maps the status to send out over USB using the Teensy Joystick support.

I found the following sources particularly helpful for this project.

Happy classic gaming!

Arduino All The Things! Contest

Participated in the
Arduino All The Things! Contest

Be the First to Share


    • Puzzles Speed Challenge

      Puzzles Speed Challenge
    • "Can't Touch This" Family Contest

      "Can't Touch This" Family Contest
    • CNC Contest 2020

      CNC Contest 2020

    2 Discussions


    4 years ago

    Would it be possible to use this controller on a PC?


    Reply 4 years ago

    Yes, that is what I do with it. I've only used it with a PC, but presumably it would work with anything that supports a USB game controller.