OSSM M5 Remote Redux is an unofficial fork/rewrite of the user interface and firmware from the original OSSM M5 Remote project. It supports the same M5Stack Core2 and CoreS3 remote hardware, but replaces significant parts of the firmware and user interface.
Compatible with:
- Official OSSM BLE firmware
- OSSM-Lite
- OSSM-RS
The goal of this project is to provide a clean, reliable, and easy-to-use remote that is actively maintained. Reliability and predictable behavior come before adding more features.
Because Redux works with the official OSSM BLE firmware, there is no need to flash custom firmware to the machine.
Warning
Work in progress: This is pre-v1.0 code and may still change significantly. Carefully test all controls and functionality with your specific remote and machine in a safe manner before relying on a new version.
This project is not affiliated with, endorsed by, or maintained by the original OSSM M5 Remote project, the OSSM project, or their authors/maintainers. It remains licensed under CC BY-SA 4.0; see LICENCE.
Instructions for building the hardware are identical to the original M5 Remote and can be found further down on this page or in the original repo.
The easiest way to install or update the firmware is with the web flasher. Connect the remote via USB, open the flasher in a browser that supports Web Serial (such as Chrome or Edge), select the battery charge current, and choose an installation type. The flasher detects Core2 and CoreS3 hardware automatically.
Use the recommended 500 mA charge current unless the installed battery is explicitly rated for charging at 1000 mA.
The Web Flasher offers Full install and Update Redux. Use Full install for first-time installation, recovery, or replacing other firmware. Use Update Redux only when the remote already runs Redux; it preserves saved settings.
To upload the firmware from source instead:
- Install Visual Studio Code and the PlatformIO extension.
- Open this repository in VS Code.
- Adjust the charge current if necessary for your battery (see development notes below).
- Connect the remote via USB.
- Select the correct PlatformIO environment for your device.
- Click Upload in PlatformIO.
Alternatively, from the command line:
For CoreS3:
pio run -e m5stack-cores3 -t upload
For Core2:
pio run -e m5stack-core2 -t upload
- Power on the OSSM and let it home.
- Power on the M5 Remote.
- Click Scan on the Welcome screen.
- Select the discovered OSSM and click Connect.
- Set the speed to a non-zero value using the left encoder.
The last used connection is stored as the default. Auto-connect is enabled by default and can be disabled in Settings. Press the left encoder to cancel connecting, or hold the left encoder while turning on the remote to skip the automatic attempt.
The left encoder adjusts speed, the right encoder adjusts sensation, and the two middle encoders adjust stroke and depth.
At the bottom of the screen, three soft buttons show the available click actions for the left encoder, the right encoder, and the center MX button.
To change the active pattern, click the right encoder, turn it to select a pattern, then click it again to confirm.
Settings can be reached from the welcome screen or the control screen by clicking the left encoder. The Stroke direction setting controls how the left middle encoder adjusts stroke. By default, turning it right decreases the stroke, matching the slider motion and machine travel.
The Stop button remains active at all times while connected, including in menus.
Direct PlatformIO builds use the recommended 500 mA charge current by default. This is set via
default_charge_current_ma in platformio.ini. The standard remote build uses an external
battery; retaining a small stock M5 battery is not a supported configuration.
The 500 mA setting is compatible with the external batteries documented by this project when charged at room temperature. Use 1000 mA fast charging only when the installed battery is explicitly rated for a charge current of at least 1000 mA, such as the EEMB LP103454. Always verify the battery's polarity and charging specification before connecting it.
For development, you can override the charge current locally with the
OSSM_CHARGE_CURRENT_MA environment variable without changing tracked project configuration:
export OSSM_CHARGE_CURRENT_MA=1000
pio run -e m5stack-cores3Release builds produce 500 mA and 1000 mA variants explicitly and do not rely on this local default.
The hardware and assembly information below still applies. References to the original firmware, its setup, or its behavior are preserved for context and may not apply to Redux.
A Remote Control Platform for all ESP Controlled Sex Toys,with a focus on the OSSM and related toys.
Intially developed for the OSSM Project: https://github.com/KinkyMakers/OSSM-hardware
To help with development and design join the KinkyMakers Discord: https://discord.gg/MmpT9xE . Be sure to say hello in the #m5-remote channel.
This Branch is needed: https://github.com/ortlof/OSSM-Stroke
The Cable remote is obsolete with this firmware. If you want to go back you need to flash the OSSM orginal firmware back.
You can Easy flash the OSSM Mainboard with this Online Flasher.
| OSSM Machine | https://github.com/KinkyMakers/OSSM-hardware |
| EJECT | https://github.com/ortlof/EJECT-cum-tube-project | [A Work in Progress]
Assembly instructions: Klick Here !
All M5Stack Core2 and CoreS3 are supported Now.
BOM is on Octopart for Easy Sourcing: https://octopart.com/bom-tool/rURYMuwB
PCB Files are located in the Hardware/PCB folder if you want to make one yourself or use a different manufacturer other than PCBWay.
| Quantity | Part | Sourcing EU | Price € |
|---|---|---|---|
| 1x | M5Stack CoreS3 SE | https://www.digikey.de/de/products/detail/m5stack-technology-co-ltd/K128-SE/23628221?s=N4IgTCBcDaILIFYDKAXAhgYwNYAIDCA9gE4CmSAzDkgKIgC6AvkA | 43 € |
| 2x | M3x25mm Hex Head Cap Bolt | https://www.amazon.de/Edelstahl-Innensechskant-Bolzenset-Eisenrahmen-Mechanischer-Innensechskantschraube-Mutternset/dp/B07PPFT871/ | 12,97 € |
| 4x | M3x20mm Hex Head Cap Bolt | Comes as part of the set mentioned above | " |
| 4x | Heat Set inserts M3 | https://www.amazon.de/ruthex-Gewindeeinsatz-St%C3%BCck-Gewindebuchsen-Kunststoffteile/dp/B08BCRZZS3 | 8,99 € |
| 1x | 3,7v 2000mAh Lipo Batterie Size 34,5 mm x 10,6 mm x 56 mm | https://www.amazon.de/EEMB-103454-2AhLithium-Schutzplatine-Isolationsbeschichtung/dp/B08214DJLJ/ | 14,89 € |
| 4x | Encoder Knob Bought or 3D Printed | https://de.aliexpress.com/item/1005001394286414.html | 5 € |
| 1x | OSSM M5 Remote PCB | KinyMaker Discord #M5-Remote Channel or https://www.pcbway.com/project/shareproject/M5Stack_Core2_Remote_Plattform_2cb5bac0.html | 15 € |
| Quantity | Part | Sourcing US | Price $ |
|---|---|---|---|
| 1x | M5Stack CoreS3 SE | https://www.digikey.de/de/products/detail/m5stack-technology-co-ltd/K128-SE/23628221?s=N4IgTCBcDaILIFYDKAXAhgYwNYAIDCA9gE4CmSAzDkgKIgC6AvkA | $47 |
| 2x | M3x25mm Hex Head Cap Bolt | https://www.amazon.com/dp/B09NR8X2LV | $17.99 |
| 4x | M3x20mm Hex Head Cap Bolt | Comes as part of the set mentioned above | " |
| 4x | Heat Set inserts M3 | https://www.amazon.com/ruthex-M3-Threaded-Inserts-RX-M3x5-7/dp/B08BCRZZS3 | $10.99 |
| 1x | 3.7v 2000mAh Lipo Battery Size 34.5 X 56 X 10.6 mm (The wires will need to be reversed in the connector on this one! See Assembly instructions for more info.) | https://www.amazon.com/EEMB-2000mAh-Battery-Rechargeable-Connector/dp/B08214DJLJ/ | $14.99 |
| 4x | Encoder Knob Bought or 3D Printed | https://www.aliexpress.us/item/3256801207971662.html?gatewayAdapt=deu2usa4itemAdapt | $5.00 |
| 1x | M5 Remote PCB | KinyMaker Discord #M5-Remote Channel or https://www.pcbway.com/project/shareproject/M5Stack_Core2_Remote_Plattform_2cb5bac0.html | $30.00 |
| Quantity | Part | Information |
|---|---|---|
| 1x | M5_curved_w6mm+5.stl Thanks to "Hoodlatch" KM Discord | There is a specific version for the wider Adafruit LIPO battery. Print with the base side facing down, 6 walls 20% Infill |
| 1x | TOP-*-Keycap-Standoff.stl | Top Depends on your Keycap: Cherry or DSA (DSA is wider) |
| 4x | M5_Remote_Knob_Customizable.scad | If you go for the 3d Printed knobs |
Filament - A good quality PLA works well. While there are no threads it is recommended that your printer is well calibrated.
- Power on the OSSM and let it home.
- Power on the OSSM M5 Remote.
- Press the left encoder to select 'Connect'
- You can verify it is connected by looking in the top left corner, it should say 'connected'.
- You can now begin use. You'll need to set the speed, depth and stroke to more than 0 and press the middle key to start. Start the speed out slow.

