Skip to content

TAGinside/AdaSpace3D

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AdaSpace3D 🚀

The definitive firmware upgrade for your DIY SpaceMouse.

License: CC BY-NC-SA 4.0 Platform Status

AdaSpace3D is a drop-in firmware replacement for any DIY SpaceMouse using an RP2040 and TLx493D sensor.

It fixes the biggest issue with previous DIY firmwares: It replaces glitchy mouse/keyboard emulation with Native 3DConnexion Driver Support.

Your DIY build will now be recognized by Windows/macOS as a genuine SpaceMouse Pro Wireless. No more glitchy shortcuts, no more keybinding headaches—just buttery smooth 5DOF navigation in 3D software (Fusion360, OrcaSlicer, Blender, etc.).


💬 Support & Community

I am still learning the ropes here on GitHub, so support is offered mainly on Discord.

This is also the place where we hang out to talk, make suggestions, and dream about the new upcoming v2 SpaceMouse!

👉 Join the Discord Server


✨ Features

  • Native Driver Support: Emulates the official 3DConnexion USB protocol. Works out-of-the-box with standard drivers.
  • Unified Firmware: One file for everyone. The code automatically detects if your sensor is connected via Stemma QT (Cable) or Soldered Headers.
  • Reactive Lighting:
    • Dual Drive: Supports both Addressable (NeoPixel) and Standard LEDs simultaneously.
    • Smart Feedback: LED glows dim when idle and brightens as you move the knob.
  • 5DOF Navigation: Smooth X, Y, Z translation + Pitch and Roll.
  • Bulletproof Flasher: Includes a custom "One-Click" build script that handles libraries, compilers, and upload automatically.

Important

Hardware Limitation: Spin/Twist rotation is not functional due to the physics of the current sensor setup. For best results, configure your 3DConnexion driver to use either Pan/Zoom or Rotation mode—not both simultaneously. Use the programmable buttons to toggle between these modes on-the-fly.


🛠️ Hardware Support

This firmware is designed for the Adafruit QT Py RP2040, but will possibly work on other RP2040 boards with possible minor pin changes. The current project mapping keeps the four original QT Py buttons and adds extra named functions through an MCP23017 expander. The MCP23017 mapping currently defines 11 additional buttons, bringing the configured total to 15 buttons like 3D SpaceMouse PRO Wireless.

Component Pin (Default) Notes
Sensor TLx493D Auto-detects on Wire1 (Stemma) or Wire (Solder).
QT Py local buttons A0, A1, A2, A3 Mapped to HID Buttons 13, 14, 15, 16.
MCP23017 buttons A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, B2 Mapped to HID Buttons 1, 2, 27, 23, 26, 24, 25, 3, 5, 6, 9.
NeoPixel GPIO 4 Addressable RGB Strip (WS2812).
Simple LED GPIO 3 Standard 2-leg LED (PWM brightness).

Note: The firmware drives GPIO 3 and GPIO 4 simultaneously. You can connect your LED to either pin depending on your build, and change the behavior in UserConfig.h.


🚀 Quick Start (Windows)

We have included a "One-Click" tool so you don't need to install Arduino IDE or mess with libraries manually.

  1. Download this repository as a ZIP and extract it.
  2. Open UserConfig.h in any text editor to customize your settings (Sensitivity, LED Colors, etc.).
  3. Plug in your RP2040 device.
  4. Enter Bootloader Mode:
    • Hold down the BOOT button.
    • Press and release the RESET button.
    • Release the BOOT button.
    • A new drive named RPI-RP2 should appear on your computer.
  5. Double-click FLASH.bat.

The script will automatically:

  • Download the compiler (Arduino CLI).
  • Install the RP2040 Core and Infineon Sensor libraries.
  • Compile the firmware with the correct "SpaceMouse" USB ID.
  • Detect the RPI-RP2 drive and flash it instantly.

Tip

For manual builds without the script (Linux/macOS/advanced users), see ADVANCED-INSTRUCTIONS.md.


⚙️ Configuration (UserConfig.h)

You can tweak the feel of your SpaceMouse without touching the complex code.

// --- SENSOR SETTINGS ---
// Increase if movement feels too slow. Default: 150.0
#define CONFIG_TRANS_SCALE     150.0  

// --- LED CONFIGURATION ---
// 0 = Static (Solid Color)
// 1 = Breathing (Pulse)
// 2 = Reactive (Dim resting color, Brightens on movement)
#define LED_MODE            2

// Choose your preferred color (RGB 0-255)
#define LED_COLOR_R         0
#define LED_COLOR_G         255
#define LED_COLOR_B         255

🤝 Credits & Acknowledgments

This project stands on the shoulders of giants in the DIY community.

  • Salim Benbouzid: For setting the seed and inspiring the DIY SpaceMouse revolution with his original video.
  • AndunHH: For his excellent work on the software side, proving the concept of using the drivers for navigation.
  • LeoSpaceLab: For refining the mechanical design that brought us all here (watch the build video).

Developed with ❤️ for the maker community by Axiom3d (aka Uzzo)

⚠️ Disclaimer: This project is intended for educational purposes only. The creators assume no liability for any damages or injuries — build and modify at your own risk.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0). You are free to:

  • Share: Copy and redistribute the material in any medium or format.
  • Adapt: Remix, transform, and build upon the material. Under the following terms:
  • Attribution: You must give appropriate credit to the original authors.
  • NonCommercial: You may not use the material for commercial purposes.
  • ShareAlike: If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.

About

Firmware for DIY SpaceMouse. Replaces mouse/keyboard emulation with Native 3DConnexion driver support. ADD 11 Buttons with MCP23017

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PowerShell 60.5%
  • C++ 30.5%
  • C 6.4%
  • Batchfile 2.6%