Skip to content

Latest commit

ย 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Universal M5-ActionRemote Banner

License: MIT Platform Framework Hardware


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.

M5StickC PLUS2 Main Menu
M5StickC PLUS2 running Universal ActionRemote firmware.

๐Ÿš€ Key Features

  • ๐Ÿง  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.

๐Ÿ“ธ Supported Cameras & Protocols

BLE Protocols Wi-Fi Protocols
BLE Camera Menu WiFi Camera Menu
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

๐ŸŽฎ Controls & Mapping

The interface is designed for quick, one-handed operation using the M5StickC PLUS2 hardware buttons.

Controls Menu
  • Button A (Front): Enter / Shutter (Hold to Link)
  • Button B (Side): Next / Mode (Hold to go Back)
  • Double Press B: Camera Off

๐Ÿ–ผ๏ธ Interface Gallery

Wi-Fi Mode Bluetooth (BLE) Mode System Config
WiFi Mode BLE Mode Config Mode

๐Ÿ’ป Installation & Comprehensive Setup Guide

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.

Prerequisites

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.

1. Clone and Open the Project

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.

2. Configure Your Secrets & Camera Credentials

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.

  1. In the file explorer on the left, navigate to the include folder and open AppConfig.h (or your designated config header).
  2. Locate the network configuration section.
  3. 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.

3. Modifying the Code (Optional)

  • 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.

4. Build and Flash to M5StickC PLUS2

  1. Plug your M5StickC PLUS2 into your computer using a data-capable USB Type-C cable.
  2. Click on the PlatformIO icon (the alien head ๐Ÿ‘ฝ) in the left sidebar of VS Code.
  3. Under Project Tasks, expand env:m5stick-c (or your specific environment), then expand General.
  4. Click Build to compile the firmware and ensure there are no syntax errors.
  5. Click Upload to flash the firmware to your device. (Alternatively, you can just click the right-pointing arrow โ†’ in the bottom blue status bar).

5. Verify & Debug

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.


๐Ÿ‘จโ€๐Ÿ’ป Author & License

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.


Minecraft Steve

Releases

Packages

Contributors

Languages