An alternate firmware for Orbion spacemouse compatible with 3Dconnexion drivers that mimic Spacemouse compact.
The firmware is licensed under GPL 3.0 .
It provides 6 degrees of freedom (6DoF: 3DoF*2 ;-) ) functionality to your Orbion (see usage). The current firmware is designed for Arduino Leonardo. Ports for more modern mcus and different sensors is planned.
Xyz Mouse firmware shares the material support of Orbion 3D mouse.
- Arduino micro ATmega32U4,
- Oled display 128x64 i2c,
- XY joystick,
- Encoder for knob,
- 3 buttons + knob button,
- Neopixel led strip.
The firmware has been reported to work on latest Windows and macOS with 3dxware drivers. For Linux systems, SpaceNav project is required. Note that not all applications will work with the driver. It depends on the support of both the driver and the software.
It can be tricky to get the firmware to be recognized by the system. Follow this steps to get it work.
- Clone the current repo,
- Open the folder with platformio in Vscode
- Check
platformio.iniandsrc\settings.h - Compile and upload the firmware
- Unplug/plug the Orbion
- Install the 3DConnexion drivers (Windows, macOS) or spacenav (Linux)
- Restart your computer.
Note
The default display build is configured for sh110x, if you want to use ssd1306 open platformio.ini and change default_envs value to ssd1306
To fix reversed encoder behavior in the Settings menu, interchange the CLK and DT pins in src/settings.h.
At first run the firmware store a default config in EEPROM
| Mode | actuators | function | Notes |
|---|---|---|---|
| Normal | B1/B2 | Button Left / Button right | |
| Joystick or rot knob | Panning / Rotation | ||
| B3 | Enter settings | ||
| B_Knob + Joystick or rot Knob | Panning / Rotation | ||
| Settings | B_Knob | Select | |
| B3 | Return/Cancel | ||
| rot_Knob | scroll | ||
| Color settings | rot_Knob | change Hue | 16M color settings |
| Joystick X | change saturation | ||
| Joystick Y | change brigthness | Brigthness of Color1 is used in Rainbow mode |
Press B3 button to enter menu
Use encoder to navigate, Knob button to enter item or validate, B3 button to cancel.
-
Knob dir.: [Left hand, Right hand] (default: Left Hand)
Change the direction of the encoder. -
Rot / Pan: [Hold to Pan, Hold to Rot, Click to invert] (default: Click to invert)
Three modes:Hold to Pan(hold knob button to pan),Hold to Rot(hold knob button to rotate),Click to change(press knob button to switch between panning and rotation mode). -
DZ Width: [3 - 20] (default: 5).
Joystick deadzone setting -
Sensitivity: [1 - 5] (default: 5).
Joystick sensitivity -
1st Color: For LED effects (default: HSV(46,127,127)).
-
2nd Color: Secondary color for LED effects (default: HSV(127,127,127)).
-
Led Motion: [Running, Chase, Fixed] (default: Chase).
-
Color Mode: [Off, 1st Color, Mixed, Rainbow] (default: Mixed)
Mixed creates a gradient between Color 1 and Color 2. -
OLED Contrast: [1 - 5] (default: 1).
Screen contrast setting (only for SH110x display, it does nothing on SSD1306) -
Timeout (sec): [3 - 60] (default: 30s).
Time before screensaver activates -
Restore def.: Reset all settings to default value.
All other settings (by app, buttons functions )can be done in 3DxWare on your computer.
I'm not able to upload firmware on Arduino micro.
- Press reset button twice quickly before uploading.
- See Orbion How to flash firmware for details.
I cannot access the Settings menu pressing B3.
- Check the wiring.
- Ensure
settings.hmatches your pinout configuration.
The mouse keeps disconnecting/resetting, or the Neopixel blinks when I move the axes.
- Double-check your wiring — I2C and Neopixel require high-quality, stable connections.
Black screen at startup
- Verify all wiring connections.
- Confirm that
settings.hmatches your hardware's pinout. - Ensure the correct display type is set (
ssd1306orsh110x) inplatformio.ini.
Mouse is not recognize as a SpaceMouse.
- Manually set driver to 3Dconnexion Spacemouse compact in device manager
- Alternatively, uninstall and reinstall the 3Dconnexion drivers, then restart your computer.
- Reflash the firmware if necessary.
Display only shows half of the content
- This likely indicates a 128x32 OLED display. Xyz Mouse is only compatible with 128x64 OLED displays
The Mouse doesn't respond on my software.
- Refer to 3Dconnexion Software Support page.
Encoder behaves in reverse
- In the Settings Menu: Swap the CLK and DT pins in
settings.h - In software applications: Adjust axis direction in the 3Dconnexion settings.
I can't change axes on my software, but it works in others.
- Refer to 3Dconnexion Software Support page.
- for Superslicer ,
- Enable "Support for legacy 3Dconnexion devices" in Preferences > Camera.
- Use
Ctrl+Mto open the 3D mouse settings tab in SuperSlicer.
- Otherwise, contact the software developer for SpaceMouse Compact support.
How do Zoom with encoder instead of joystick ?
- Change Zoom direction in 3Dxware settings
- or uncomment
#define ZOOM_ON_ENCODERinsrc\settings.h
@fboc on Discord




