Turn your M5StickC PLUS2 into a universal powerhouse. This custom firmware reverse-engineers and integrates multiple proprietary camera protocols into a single, lag-free control hub.
- ๐ง Dual-Core FreeRTOS Architecture: UI rendering and network protocols (Wi-Fi/BLE) run on separate cores. The interface never freezes, even during heavy HTTP requests or BLE handshakes.
- ๐ Universal Protocol Support:
- GoPro: Open GoPro 2.0 (BLE / Wi-Fi)
- Insta360: Reverse-engineered GATT characteristics (BLE)
- DJI Osmo & SJCAM: Wi-Fi / HTTP API integration
- ๐ก๏ธ Secure by Design: Wi-Fi credentials and API keys are strictly decoupled from the main source code. Your secrets never leak to version control.
- โก Instant Wake & Connect: Optimized boot sequence to get you connected to your camera in seconds.
| Brand | Protocol | Status | Notes |
|---|---|---|---|
| GoPro (Hero 5+) | BLE / Wi-Fi | ๐ข Active | Full CQ_COMMAND support |
| Insta360 | BLE | ๐ข Active | Custom UUID integrations |
| DJI (Osmo Action) | Wi-Fi (HTTP) | ๐ข Active | Requires AP connection |
| SJCAM | Wi-Fi (HTTP) | ๐ข Active | Requires AP connection |
The interface is designed for quick, one-handed operation using the M5StickC PLUS2 hardware buttons.
- Button A (Front): Enter / Shutter (Hold to Link)
- Button B (Side): Next / Mode (Hold to go Back)
- Double Press B: Camera Off
This project is built from the ground up using PlatformIO. Follow this step-by-step guide to configure the firmware for your specific cameras and flash it to your M5StickC PLUS2.
Before you begin, ensure your development environment is ready:
- Visual Studio Code installed.
- PlatformIO IDE extension installed in VS Code.
- USB Drivers: Make sure you have the CH9102 / CP210X USB drivers installed on your OS so your computer can recognize the M5StickC PLUS2.
Open your terminal and clone the repository:
git clone [https://github.com/Cnayx/Universal-M5-ActionRemote-Wi-Fi-BLE-.git](https://github.com/Cnayx/Universal-M5-ActionRemote-Wi-Fi-BLE-.git)Open VS Code, go to File > Open Folder..., and select the downloaded project folder. PlatformIO will automatically initialize the project and download all required dependencies (like M5Unified, FreeRTOS libs, etc.) defined in the platformio.ini file. This might take a minute or two on the first run.
To connect to cameras like DJI, SJCAM, or GoPro via Wi-Fi, you must enter their Access Point (AP) credentials into the firmware. We use a secure header approach to keep your passwords out of the public eye.
- In the file explorer on the left, navigate to the
includefolder and openAppConfig.h(or your designated config header). - Locate the network configuration section.
- Replace the placeholder strings with your actual camera Wi-Fi details. For example:
#define GOPRO_WIFI_SSID "Your_GoPro_Hero_XXXX" #define GOPRO_WIFI_PASS "Your_GoPro_Password" #define DJI_WIFI_SSID "OsmoAction_XXXX" #define DJI_WIFI_PASS "Your_DJI_Password"
๐ก๏ธ Security Note: This repository is configured with a strict .gitignore. Any local changes you make to configuration files containing passwords will not be tracked or pushed to GitHub. Your secrets stay securely on your computer.
- UI/Display: If you want to change colors, fonts, or menu layouts, you can edit the specific UI components inside the
src/directory. - Button Mapping: Physical button logic (Hold, Double Press, etc.) is handled via the M5Unified button states. You can tweak the timing or actions in the main control loop.
- Plug your M5StickC PLUS2 into your computer using a data-capable USB Type-C cable.
- Click on the PlatformIO icon (the alien head ๐ฝ) in the left sidebar of VS Code.
- Under
Project Tasks, expandenv:m5stick-c(or your specific environment), then expandGeneral. - Click Build to compile the firmware and ensure there are no syntax errors.
- Click Upload to flash the firmware to your device. (Alternatively, you can just click the right-pointing arrow
โin the bottom blue status bar).
Once the upload is 100% complete, the M5StickC PLUS2 will automatically reboot and display the main menu.
If you want to monitor the background processes (such as BLE handshakes, HTTP responses, or connection errors), click the Serial Monitor icon (plug symbol) in the bottom status bar of VS Code. Ensure your baud rate is set to 115200.
Developed by Can Demirci (@Cnayx)
This project is licensed under the MIT License. You are free to use, modify, and distribute this software, provided that the original copyright notice and this permission notice are included in all copies or substantial portions of the software.








