Skip to content

mach0gr/renegade-stick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Renegade Stick

A DIY arcade-style, retro, wireless Bluetooth joystick.

Renegade Stick

This repository includes all the necessary code, bill of materials, instructions, and links to 3D printable files so you can build yourself a Renegade Stick. The 3D printable files can be found on printables.com


Disclaimer

All 3D-printed hardware part files are licensed under Open Community License (OCL) and are available on printables.com
The software code is licensed under the GPL-3.0 License
Part of the code is based on the ESP32-BLE-Gamepad library by lemmingDev distributed under the MIT license
The above project is based on the ESP32 chip and specifically a Firebeetle Board from DFRobot This project is solely for instructional and entertainment purposes.
The item as a complete unit or the 3D-printed parts it consists of are not sold and may not be sold without written permission from author.
Please be careful, especially with Li-Po batteries—they can be dangerous if mishandled. Take your time and stay safe!


Table of Contents


Who is this project for ?

Retro game enthusiasts, gamers, makers, tinkerers

Where can I use it ?

Wherever Bluetooth HID support is available. Retro emulators such as RetroPie, Recalbox etc, Mobile Phones, PCs, Steam box, modern Game Consoles like PlayStation etc

Where can I get it ?

This is not sold as a whole, you have to 3D print the parts, source a few electronic components and fasteners and build it yourself.

What do I need to build it ?

  1. Own or have access to a 3D printer
  2. Source or purchase some of the required parts like an ESP32 board, a Li-Po battery, microswitches, hook-up wires, screws etc
  3. Basic soldering (for hooking up wires)
  4. A PC from where you can flash or compile the code for the board
  5. Love building things, patience Read on for instructions

Specifications

  • Dual-axis joystick
  • 10 buttons
  • Bluetooth HID gamepad device
  • Rechargeable Battery
  • Auto Power-off (5 minutes inactivity)
  • Switchable mode (DPAD - Axis)
  • Switchable hand side (Right/Left hand side user - buttons can flip to other side)
  • Pairing/Mode indication (Green LED)
  • Battery Charging (Red LED)
  • Active battery state reporting (FireBeetle2 ESP32-C6 board only)
  • Serial Number reporting (so more than one device can get paired on one host)
  • Ambidextrous design (Hand side swap Key mapping) - Use the side you prefer

The Story Behind Renegade Stick

The whole project began as an idea for a gift for a good friend of mine, Nikos. Nikos and I grew up together in the 1980s, during the era when the first computer games truly flourished. Back then, gaming platforms usually fell into three categories: home computers, game consoles, or arcade coin-op machines. Should I name a few? Think Atari, Amstrad, Commodore, Amiga, early PCs, and more. We spent endless hours playing side by side—sometimes as opponents, sometimes cooperating—trying to reach the next level or beat the next boss. Games of that era were simple by design. The hero could usually move left and right, maybe up and down, and perform one action. That simplicity is exactly what gave birth to the joystick: a single handle that allowed the player to control the action without being tied to the bulky, uncomfortable keyboards of those early computer systems. Although not widely known abroad, in Greece—where we both grew up—several companies started producing joysticks inspired by the build quality and ease of use of arcade coin-op machines. You can find examples of these here: Greek Joysticks The feeling of playing with those joysticks—the weight, the click, the responsiveness—was unforgettable.

Unfortunately, Nikos and I now live on different continents. We see each other only once a year, but when we do, we always end up talking about computers and games. After all, we are still active gamers to this day. During our last meeting, we were discussing game emulators and eventually agreed on one thing: playing those games with modern gamepads just didn’t feel right. The idea didn’t fully sink in until a few days later, when we had to part ways again. I remembered him showing me his collection of retro joysticks—each one with a different cable and connector for a different system.

When I started searching online, I was disappointed to discover that joysticks like those no longer really exist—at least not in the compact form we were used to. Modern arcade controllers are often bulky, overloaded with buttons, and frankly quite ugly. Definitely not my cup of tea. Being a 3D-printing nerd, I immediately had the urge to create something that could revive—or perhaps emulate—that lost feeling. I bought a couple of bare-bones arcade-style sticks and experimented with different enclosure sizes until it finally felt right in my hands. And that was it. Behold the Renegade Stick.

The joystick takes its name from one of our favorite Amstrad games: Target Renegade. Target Renegade on Wikipedia Target Renegade on Amstrad CPC Youtube longplay

I created this joystick as a gift for Nikos, for all these reasons. I’m sure it will find its place among his Amstrad and retro computing memorabilia—even if it doesn’t strictly belong to that era.

And since I had already gone this far, I thought: why not make it available to anyone who might want to build one themselves?


Bill of Materials

I'm not getting any commission nor am I affiliated with any of the below link sources. For my build I have sourced most of my parts from a local electronics store grobotronics.com with some exceptions. Most of my build was from (Link 1) I tried to find these items and provide you links for other platforms like Amazon, Temu etc (Link 2 and 3) however, I have not tried these links out so double-check or do your own research. The links are only indicative, feel free to source these materials from your own preferred stores. Pay attention to quantities and exact specifications.

Item Quantity Comment Photo Link 1 Link 2 Link 3
M3x3.0 or M3x4.0 Heat set inserts Short Version 21 You need the short version which is either 3mm or 4mm long M3x3.0 Heat Set Inserts CNC kitchen grobotronics Ruthex
Screw M3x8mm DIN965 (Countersunk) 10 Prefer Black one if you print a Black bottom. Alternatively you could use equivalent countersunk screws with a torx or allen head M3x8.0 countersunk screws grobotronics amazon.de TME
Screw M3x8mm DIN912 (Socket Head) 11 You can use any M3 non countersunk as long as it is 8mm screw body long M3x8.0 socket head grobotronics TME amazon.de
Microswitch Mini SPDT ON-(ON) - without Lever 10 prefer the no lever version Microswitch mini SPDT grobotronics TME amazon.de
Suction cup with M6 screw 4 Optional if you want a firm anchoring on table Suction Cups with M6 screw temu amazon.de
Nut M6 DIN934 4 Optional if you choose the suction cups above Nut M6 amazon.de TME
Arcade Joystick Assembly 1 There is no specific brand for this. There are many similar assemblies on the market, pay attention to the photo to source the exact one. Mind you the mini switches at the bottom. Arcade Joystick Assembly grobotronics amazon.de AliExpress
Batt 3.7V 2500mAh 1 You need one with JST PH2.0 connector. Try searching for LiPo 555060 LiPo Batt 3.7V grobotronics amazon.de AliExpress
Screw Terminal 6P 2.54mm 5 You can buy assortment for 2pin-3pin-4pin-5pin-6pin screw terminals but in most cases you’ll be ok with just buying 6pin and laying them down as needed. Make sure they are the 2.54mm pitch pin variant Screw Terminals grobotronics
Hook-Up Wire 22 to 24 AWG 0.32 to 0.20 mm2 Assortment colors (Stranded) Prefer different colors so to make your life easier identifying which switch to which board pin. Prefer stranded type. Diameter size is a matter of preference here Hook-up Wire grobotronics
FireBeetle2 ESP32-C6 (DFR1075) 1 Select only ONE of these 3 board. All have been tested to work. Prefer ESP32-C6 being cheaper, more modern and feature-rich. Make sure you buy one of the exact DFR codes. FireBeetle2 ESP32-C6 grobotronics DFRobot
FireBeetle2 ESP32-S3(N4) (DFR1145) 1 Select only ONE of these 3 board. All have been tested to work. Prefer ESP32-C6 being cheaper, more modern and feature-rich. Make sure you buy one of the exact DFR codes. FireBeetle2 ESP32-S3 grobotronics DFRobot
FireBeetle2 ESP32-E N16R2 (DFR1139) 1 Select only ONE of these 3 board. All have been tested to work. Prefer ESP32-C6 being cheaper, more modern and feature-rich. Make sure you buy one of the exact DFR codes. FireBeetle2 ESP32-E grobotronics DFRobot
Quick Disconnect - Female Bare 2.8mm 20 OPTIONAL item. Only needed if you don’t wish to solder the microswitch terminals. The 2.8mm version is for microswitches Quick Disconnect - Female Bare 2.8mm grobotronics
Quick Disconnect - Female Bare 4.8mm 8 OPTIONAL item. Only needed if you don’t wish to solder the microswitch terminals. The 4.8mm version is for the joystick assembly Quick Disconnect - Female Bare 4.8mm grobotronics

Regarding the DFRobot ESP boards, I have successfully tested all 3 different DFRobot boards and have modified the source code so it’s compatible with all three of them. If you would like to compile on your own, there is a single sketch. If you wish to flash directly using a .bin file, you’ll need to pick the correct binary for your board. ESP32-C6 (DFR1075) is the only one that supports active battery level monitoring. The other two will only report a dummy 100% battery. However ESP32-C6 is the trickiest to flash although I hear this is fixed in later board or chip revisions. In any case I provide clear instructions on how to flash each of them.


Assembly Instructions

You can find Assembly instructions with photos here --> Renegade Stick Assembly Guide (PDF)


Operating Instructions

Charging the Renegade Stick

To charge the Renegade stick, connect a USB type-C cable. A Red LED next to the USB port will indicate that the battery is charging. The Red LED will go off when battery is fully charged, you may disconnect the USB type-C cable.


Turn the device ON

A green LED next to the USB connector indicates the current power state of the Renegade Stick:

  • Green LED ON: the device is powered on and active
  • Green LED OFF: the device is powered off or in deep-sleep mode

To wake the device from deep sleep, press and hold both front buttons (the eyes of the ghost) for at least 3 seconds.
The green LED will begin to flash, indicating that the device has powered on.
To preserve battery life, the Renegade Stick will automatically enter deep sleep in the following cases:

  • If the device is paired but no button presses or joystick movement are detected for more than 5 minutes
  • If the device is not paired, or pairing does not occur within 5 minutes

Pairing the Renegade Stick

When the Renegade Stick is ready to be paired—or is not currently paired with a host—the green LED will blink slowly (about once per second).
On your host device, open the Bluetooth settings and scan for nearby devices. You should see “Renegade Stick” appear in the list. Select it to initiate pairing.
Pairing behavior may vary slightly depending on your operating system or host device, but in most cases selecting the device from the list is all that is required.
Once pairing is successful, the green LED will begin to flash rapidly, indicating an active connection to a host. While paired, the Renegade Stick will stop advertising itself to other devices. If you wish to pair it with a different host, you must first unpair it from the currently connected device. If the Renegade Stick was previously paired but the host is turned off or out of range, it will automatically return to pairing mode and wait to be claimed by a host.


Button Mapping

If your game or console allows, it would be a good idea to do some button mapping. By default the handle will be discovered as a dual axis Joystick and the buttons are numbered from left to right 1 to 4 and then from the right side to the left 5 to 8 like below. Renegade Stick Button Mapping
The buttons can switch position with a key combo, read Mode of Operation / Combo Keys
The two front buttons from left to right are SELECT and START


On some consoles the default mapping is the following but it may differ on your console.

Renegade Stick Buttons PC Android PS Mode 1 PS Mode 2
BUTT 1 1 A square button X button
BUTT 2 2 B X button circle button
BUTT 3 3 C circle button X button
BUTT 4 4 X triangle button button square button
BUTT 5 5 Y L1 shoulder triangle button button
BUTT 6 6 Z R1 shoulder R1 shoulder
BUTT 7 7 L1 L2 shoulder L1 shoulder
BUTT 8 8 R1 R2 shoulder R1 shoulder

Modes of Operation / Combo Keys

The device has two modes of operation DPAD mode and dual Axis mode. Dual axis mode is meant to be used by analog controllers and some games depend on axis control. Other games are easier to be played on DPAD mode.
You can instantly switch between modes by pressing a "key combo". The device needs to be paired. You will notice the Green LED blinking at a different rate.

The device can flip the keys over depending if you prefer to move the stick with your Right or Left hand. To flip the keys use a "key combo".

Key Combos

Mode of Operation Key combo (press the keys at the same time )
Switch Hand side 1 + 2 + 5 + 6
Switch mode (axis/DPAD) 3 + 4 + 7 + 8
Switch Off/enter Deep Sleep SELECT + START + 7
Reboot board Firmware SELECT + START + 8
WakeUp/Power On SELECT + START

You can verify and test using gamepad testers. Testing the Device.
Every time the device switches off it will not retain any of these settings and will default to axis mode and right hand operation


LED indicators

USB LED Color State Meaning
Green Flashing slow (1s) Device Not paired
Green Flashing very quick Device Paired (axis mode)
Green Flashing quick Device Paired (DPAD mode)
Green OFF Gamepad is in sleep mode/battery discharged
Red permanently ON Battery charging
Red OFF Battery charged/ Battery Full
Red Flashing No battery detected

Testing the Device

On a PC/MAC you can test your device online directly on hardwaretester.com
On an Android Device you can download the following app Gamepad Tester


Flashing the Renegade Stick

Prerequisites

  • USB-C cable

  • Windows, macOS, or Linux PC

  • One of the following:

    • Arduino IDE
    • Python + esptool
    • Espressif Flash Download Tool (not supported on all of the boards)

Please follow the flush instructions here --> flash instructions


Liked it ?

If you found some of this information useful and would like to buy me a coffee you can donate below

Donate with PayPal

or you can just say thank you at

pmatsakos@gmail.com