Open-Source Adaptive Gaming Joystick
A 3D-printable, ESP32-powered joystick designed for gamers with limited mobility.
Inspired by commercial solutions like QuadStick and Feather — but fully open and hackable.
The pivot is a Tetra II spherical flexure: bearing-free, frictionless, and self-centering — the first gram of input already moves it.
New here? Read the Executive Summary (one page) or the Whitepaper (the full technical story). Want to help? See CONTRIBUTING.md.
Phase 0: Bench Validation — V2 design baseline complete; proving the physics (force, noise, latency) before any product claims.
| Area | Status |
|---|---|
| Pivot mechanism | ✅ Tetra II spherical flexure (primary) — CAD in models/tetra2-flexure/; ball-in-PTFE pod kept as the alternative |
| V2 First-Principles Design | 🔄 Baseline written: docs/DESIGN_V2.md |
| Hardware Design | ⏳ Planning (flexure pod + main board) |
| 3D Print Files | 🔄 Flexure STEP/STL in repo; pod bodies in progress |
| Firmware | ⏳ Planning |
| Documentation | 🔄 In Progress |
| Project Nimbus Integration | ⏳ Planned |
Commercial adaptive controllers are expensive ($200–$500+) and often proprietary. Gamers with disabilities deserve affordable, customizable options they can build, modify, and repair themselves.
Alpha Stick aims to provide:
- Affordable — 3D-printed enclosure + off-the-shelf electronics (~$30–50 BOM)
- Open Source — Hardware, firmware, and documentation all freely available
- Customizable — Modular design adaptable to different needs and abilities
- Updateable — OTA firmware updates via ESP32
- Compatible — Works with Xbox Adaptive Controller, PlayStation Access Controller, PC, and Project Nimbus
Alpha Stick draws from the best features of existing adaptive controllers:
| Product | Key Features We're Inspired By |
|---|---|
| QuadStick | Mouth-operated joystick, sip/puff input, multi-platform support |
| Feather | Ultra-light force (<5g), magnetic sensing, tremor filter, adjustable sensitivity |
| Xbox Adaptive Controller | 3.5mm jack inputs, USB hub, profile switching, 3D-printable accessories |
| PlayStation Access | Swappable button caps, adjustable stick length, expandable inputs |
| Titan Two | Cross-platform compatibility, scripting, keyboard/mouse support |
- ESP32-S3 microcontroller with Bluetooth LE and USB HID
- Tetra II spherical flexure pivot — bearing-free, frictionless, self-centering; no springs, no break-away force
- Contactless dual-Hall sensing — a tilting magnet read by two TMAG5273 sensors; immune to temperature and creep
- Ultra-low force — under 5 grams full deflection, set by the flexure's blade geometry
- 3.5mm input jacks — connect external switches and buttons
- Modular enclosure — 3D-printed, designed for different mounting options
- Sip/puff interface (optional) — pressure sensor input
- USB HID gamepad — plug-and-play on PC/consoles
- Bluetooth LE gamepad — wireless connection
- XInput/DirectInput modes — broad game compatibility
- OTA updates — update firmware over WiFi
- Web-based configuration — adjust sensitivity, deadzone, button mapping via browser
- Profile system — save and switch between configurations
- Tremor filter — configurable smoothing for users with tremors
- Project Nimbus integration — use Alpha Stick with the virtual controller interface
- Xbox Adaptive Controller companion — connect via 3.5mm or USB
- Configuration app — desktop/mobile app for settings (future)
- PC — Windows (USB/Bluetooth), Linux, macOS
- Xbox — Via Xbox Adaptive Controller (3.5mm jack or USB)
- PlayStation — Via PS Access Controller or adapter
- Nintendo Switch — Via USB or Bluetooth (with appropriate mode)
- Mobile — Android/iOS via Bluetooth
alpha-stick/
├── README.md # This file
├── LICENSE # MIT License
├── TODO.md # Task tracking
├── LLM_ONBOARDING.md # AI assistant reference
├── docs/
│ ├── EXECUTIVE_SUMMARY.md # One page: what and why
│ ├── WHITEPAPER.md # The full technical narrative
│ ├── DESIGN_V2.md # V2 design baseline (working doc)
│ ├── WORKFLOW.md # Development loops & conventions
│ ├── HARDWARE.md # Build reference & BOM
│ ├── FIRMWARE.md # Firmware architecture (ESP-IDF)
│ ├── PHASE0_PARTS.md # Bench parts list
│ ├── BENCH_LOG.md # Measured results
│ ├── PRINTING.md # 3D printing guide
│ ├── ASSEMBLY.md # Assembly instructions
│ └── CONFIGURATION.md # Configuration guide
├── hardware/
│ ├── schematics/ # KiCad or EasyEDA files
│ ├── pcb/ # PCB design files
│ └── bom/ # Bill of materials
├── firmware/
│ ├── main/ # Entry point, mode supervisor
│ ├── components/ # Sensing, pipeline, HID, AS-Link, config
│ ├── web/ # Web config UI source
│ └── sdkconfig.defaults # ESP-IDF configuration
├── models/
│ ├── tetra2-flexure/ # Primary pivot: Tetra II flexure STEP + STL (CC-BY)
│ ├── stl/ # Ready-to-print STL files (alternative pod)
│ ├── step/ # STEP files for modification
│ └── source/ # FreeCAD/Fusion360 source files
├── software/
│ ├── web-config/ # Web-based configuration UI
│ └── tools/ # Utility scripts
└── examples/
└── profiles/ # Example configuration profiles
| Component | Purpose | Est. Cost |
|---|---|---|
| ESP32-S3 module | Main controller | $4–10 |
| Sensor pod (Tetra II flexure pivot + dual Hall + magnet) | Position input, <5 g force, self-centering | $5–7 |
| 3.5mm jacks (x4) | External switch inputs | $2 |
| Buttons (x2–4) | Direct button inputs | $1–2 |
| 3D-printed enclosure | Housing | $2–5 (filament) |
| USB-C connector | Power/data | $1 |
| Misc (wires, screws) | Assembly | $2–3 |
| Total | ~$20–30 |
| Component | Purpose | Est. Cost |
|---|---|---|
| Hall-effect joystick | Ultra-smooth input | $10–20 |
| Pressure sensor | Sip/puff interface | $5–10 |
| LiPo battery + charger | Wireless operation | $10–15 |
| OLED display | Status/config display | $5 |
Note: Hardware and firmware are still in development. Check back soon!
- 3D Printer — Any FDM printer (Ender 3, Prusa, etc.)
- Soldering iron — Basic through-hole soldering
- ESP-IDF 5.x — For firmware development (install)
- ESP32-S3 board — DevKitC or similar
# Clone the repository
git clone https://github.com/owenpkent/alpha-stick.git
# Navigate to firmware directory
cd alpha-stick/firmware
# Build and flash (ESP-IDF PowerShell)
idf.py set-target esp32s3; idf.py build flash
# Open web configuration
# Connect to "AlphaStick" WiFi network, navigate to http://192.168.4.1Alpha Stick is designed to work seamlessly with Project Nimbus — a virtual controller interface for accessibility.
- Direct USB — Alpha Stick appears as a standard gamepad; Project Nimbus can combine it with mouse input
- Bluetooth — Wireless connection to PC running Project Nimbus
- Hybrid mode — Use Alpha Stick for analog input, Project Nimbus for buttons and additional controls
- Configuration sync — Share sensitivity curves and profiles between projects
- Alpha Stick + Project Nimbus — Physical joystick for one hand, on-screen buttons for the other
- Dual Alpha Sticks — Two joysticks for flight sim or dual-stick shooters
- Alpha Stick + Xbox Adaptive Controller — Use Alpha Stick as an external joystick input
Designed with input from the disability gaming community:
- Ultra-light force — under 5 g full deflection from the flexure; swap to a stiffer-blade flexure (or the adjustable ball-pivot pod) to retune
- Configurable deadzone — Accommodate tremors and limited precision
- Tremor filtering — Smooth out unintended movements
- Button debouncing — Adjustable for different switch types
- One-handed operation — Compact form factor, all controls accessible
- Voice/switch control — External switch inputs for additional buttons
- Custom mounting — Designed for RAM mounts, Magic Arms, and wheelchair trays
We welcome contributions from everyone! Areas where we especially need help:
- 3D modeling — Enclosure designs for different needs
- PCB design — If you have KiCad/EasyEDA experience
- Firmware development — ESP32, ESP-IDF, Bluetooth HID
- Testing — Especially from users with disabilities
- Documentation — Tutorials, translations, videos
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes with clear commit messages
- Submit a pull request
See CONTRIBUTING.md for detailed guidelines.
- Define hardware requirements
- Select core components
- Create initial 3D model
- Basic firmware scaffold
- Working breadboard prototype
- USB HID functionality
- Basic web configuration
- First printable enclosure
- Bluetooth support
- OTA updates
- Sip/puff option
- Community testing
- Documentation complete
- Multiple enclosure options
- Profile library
- v1.0 release
- GitHub Issues — Bug reports, feature requests, questions
- Discussions — Share your builds, ask for help
- Discord — (Coming soon)
- Project Nimbus — Virtual controller interface for accessibility
- ATOS — Modular ESP32-S3 wheelchair platform; Alpha Stick V2 is designed to act as its input node (see docs/DESIGN_V2.md, section 9)
- Joypad OS — Universal controller firmware for adapters and protocol translation (reference architecture)
- Xbox Adaptive Controller — Microsoft's adaptive gaming hub
- QuadStick — Commercial mouth-operated controller
- Feather Joystick — Ultra-light force joystick
- OpenSwitchBoard — Open-source switch interface
- Makers Making Change — Community building assistive technology
- Code & firmware — MIT License.
- Original hardware designs (the pod, bench rig, bodies, toppers) — CERN-OHL-P v2 (permissive), see LICENSE-CERN-OHL-P-2.0.txt.
- Tetra II spherical flexure (the primary pivot) — third-party design by Jelle Rommers under Creative Commons Attribution (CC BY 3.0), used unmodified; credit is required if you share or build on it. See models/tetra2-flexure/LICENSE.
Bundled third-party components and their attribution are listed in NOTICE.md.
- The disability gaming community for feedback and inspiration
- AbleGamers and SpecialEffect for advocacy
- Owen — project creator, wheelchair user with muscular dystrophy
- Everyone building accessible gaming solutions


