Any Open Source Controllers out there?

User avatar

15 Mar 2020, 15:29

I have seen open source/custom builds of pretty much any common input device (keyboards (obviously), mice, trackballs, fight sticks, even whole arcade cabinets, flight simmulation joysticks) but I can't seem to find a single project for controllers (I mean controllers in the sense of game controllers like the PlayStation and Xbox controllers). It doesn't even have to be for use with consoles, just for PC.

Has anyone seen/know of any such projects? Even non opensource, just custom built ones?


15 Mar 2020, 16:29

I have seen some clunky ones for sure, but neglected to save the links.
People don't have hardware to make rubber-dome buttons at home, so most projects have been digital joysticks or based on analogue thumb-sticks.

XBox 360/One and maybe PlayStation 3/4 allow only licensed controllers with a cryptographic license key in the controller (even though PC does not have that restriction), so many DIY projects I've seen have been using the innards of a store-bought controller and wired new buttons to them instead of using completely new electronics and firmware.

Otherwise, both protocols and the one Nintendo Switch uses have been reverse-engineered. Specs and firmware should be out there.
Most firmware projects have been using the standard USB HID protocol instead. However. it gives only each button a number — it does not specify what each button does. With Windows PCs, this protocol is what is often called "DirectInput", whereas XBox's protocol is called "XInput", named after the API's used to access them.

User avatar

16 Mar 2020, 02:07

I would like to eventually make myself one for use with a PC.

I've always had it in the back of my head that I'll just use some sort of mechanical switches (maybe mouse switches?) if I make myself one as I am not limited by what the manufacturer chose, but I can see why people might decide to use the rubber-domes of existing ones.

What you said about the USB HID protocol and the buttons is interesting. I didn't know that. Thanks! I need to look into how I can make it so software can recognize the buttons as specific controller ones (although maybe that is not needed?). I mean there must be an open protocol for that. I need to check what Linux uses. I thought it was XInput but I guess not and I am getting confused with Xorg's tool.

I'd love the fancy features that the PS4 and the Steam Controller brought to the table but I am fine with making myself one that's not even wireless and has the features of the PS3 with a slightly different shape and either more trigger buttons at the back of the controller or just moved there.


16 Mar 2020, 16:44

The retro-gaming scene seems to be quite strong though and there are lots of replacement parts for other controllers: rubber dome pads, analogue sticks, switches, stick tops, button tops etc.
A custom gamepad could probably be made to use some of those ... but the company behind the original part might not like it.

Some home-made gamepads, and even the recent Neo Geo Mini's gamepad use analogue thumb-sticks instead of D-pad or digital stick. Then there is a circuit or software that converts the signals from analogue to digital.
The Neo Geo Mini's gamepad is widely disliked because of how inexact it is, not providing any tactile feedback. (and compared to the original Neo Geo CD's gamepad which was digital and used microswitches ...)
On the other hand, unlike D-pads, diagonals feel the same as the cardinal directions, which I think is a drawback with D-pads.

My favourite Atari-style joystick is the handheld TAC-II where the "restrictor gate" is the switches. This makes every actuation distinct. The construction is very primitive: There is a conductive ball on the axis, which actuates by touching sheet-metal walls inside the joystick.

I have been thinking that maybe an analogue thumb-stick for digital input could be improved by adding an active restrictor gate to it. But unlike the TAC-II, the gate would not need to sense direction, as that would be done by the analogue part of the stick. The gate would only need to sense on or off.
Instead of a gate as a hole around a shaft, make the gate as a touch-sensitive ring mounted to the PCB around the stick, and have the bottom edge of the hemispherical stick bottom strike it. Make the shape of the gate by shaping the hemisphere's edge.
Alternatively, make the gate as a shaped hole from two parts of sheet metal sandwiched with an insulator in-between. Make the shaft be conductive (there are stick tops of metal) and use a capacitive sensor circuit connected to the sheet metal parts.

User avatar

21 Mar 2020, 17:39

Thanks a lot for the insight!

I love the idea of setting/getting the direction by making the stick shaft be conductive or having a touch sensitive ring around it.

Post Reply

Return to “Mice & other input devices”