Check out my YouTube channel →

Open-Source DIY Remote for Insta360 Cameras

I created this open-source remote, based on M5StickC devices, for Insta360 cameras. It lets you switch modes, start/stop recording, capture photos, put the camera to sleep, and wake the camera up. Also accepts external GPIO control:

Pull G0 to GND to trigger the shutter/recording. Pull G26 to HIGH to put the camera into SLEEP mode. Pull G36 to HIGH to wake the camera.

This is part of a much larger project for me, but I noticed that there really wasn’t anything like this available, so I wanted to share it with the community.

Use the Arduino IDE to flash the code:

Find all of the code here on GitHub!

I recommend using an M5Stack M5StickC Plus2 (Amazon affiliate link)

Also tested with an original M5StickC and it should work with the M5StickC Plus, as well.

I have tested this with the Insta360 X5, but I think it should also work with the X3, X4, and RS.

A big thank you to Patrick Chwalek! His Medium post and GitHub repository were very helpful for getting me started down the right path for this project.


The code is pretty well-commented, but feel free to ask me any questions if you want to know how things work. I’m pretty responsive!

I’ll try to update this with a FAQ and more technical details as I get the time.


Instructions

To make one of these yourself, you’ll want to get an M5StickC Plus2 (or an original M5StickC) from M5Stack. Then you’ll flash the code to it using the Arduino IDE.

Step 1: Install the Arduino IDE

If you don’t already have it, then you’ll need to download and install the Arduino IDE.

Step 2: Add the M5Stack Boards

The M5StickC Plus 2 isn’t a default Arduino board, so we need to add it to the board manager. Follow M5Stack’s instructions here to do that.

The basic process is to add this link:

https://static-cdn.m5stack.com/resource/arduino/package_m5stack_index.json 

to the “Additional Boards Manager URLs” field in the preferences menu of your Arduino IDE.

Then you can open the Arduino IDE board manager, search for “M5Stack” and click Install.

Step 3: Install the M5Unified library

For the code to work, the Arduino IDE needs to understand the hardware we’re using and how to interact with it. For that, you need M5Stack’s M5Unified library.

To install it, open the Arduino IDE’s Library Manager, search for “M5Unified” and click Install.

Step 4: Download my code

Now your environment is ready, so you can download my code. Go to my GitHub repository and click the green Code button, and click Download ZIP from the menu that pops up.

It is important that you download the entire ZIP, because there are several files that are necessary in addition to the main “.ino” Arduino file.

Step 5: Extract and open

Extract the downloaded ZIP folder and move it to wherever you want to store it on your computer. Then open the folder and double-click the main file:

insta360_m5StickC_remote-main.ino

That file, along with all of the other included files, should open up in the Arduino IDE.

Step 6: Set the unique REMOTE_IDENTIFIER

There is only one thing in the code that you should need to change and that is “REMOTE_IDENTIFIER” near the top of the main file. It should be line 29:

const char REMOTE_IDENTIFIER[4] = "A01";  // Maximum 3 characters + null terminator

That is there to give your remote a unique ID to prevent interference if you’re using multiple remotes/cameras.

It isn’t strictly necessary if you’re only using one remote/camera, but I suggest changing it anyone.

You can pick any sequence of three alphanumeric characters that you want. Just replace the A01 in that line with whatever you choose.

Step 7: Select your board and port

To flash the code to your M5StickC device, the Arduino IDE needs to know what to target.

In the “Tools” menu at the top, go to Board > M5Stack and then click on the device you’re actually using (either M5StickC, M5StickCPlus, or M5StickCPlus2).

Now you need to select the COM port you’re using from Tools > Port.

That tends to be a little confusing to people who aren’t familiar with Arduino, so Google it if you don’t understand. But all you’re doing is selecting the USB COM port for your M5StickC. If you don’t know which one it is, try plugging in and unplugging the USB cable to see which COM port pops up and goes away.

Make sure you have the USB cable plugged in and select its COM port.

Step 8: Flash the code

Now you’re ready! Click the right-facing arrow icon at the top-left of the Arduino screen, which is Upload.

The Arduino IDE will compile the code and flash it to your M5StickC.

That will take a few minutes, so be patient!

Step 9: Use the remote!

Make sure your Insta360 is turned on and Bluetooth is enabled. Then turn on your M5StickC (long press the power button).

Use the M5StickC’s B button to cycle through the menu and the A button to select.

Select “CONNECT” and the remote should pair with the Insta360 (confirm on the Insta360).

That’s it, you’re done! It should automatically reconnect in the future and you can now use the remote’s functions!


Comments

6 responses to “Open-Source DIY Remote for Insta360 Cameras”

  1. Mark Shon Avatar
    Mark Shon

    This is the coolest shit man, thank you.

  2. Hi thanks for this I just got it working. Is there anyway you could display on the remote the status of the X5 ie recording, paused etc I am using on a bike and cant easily see whether it is recording or not so was hoping to have this functionality

  3. Robin Wipprecht Avatar
    Robin Wipprecht

    I’ve got an x5 and need a solution to connect a bluetooth transmitter to the x5 to send audio from an analog input through the transmitter to the x5. None of the transmitters I have tried, 5.0, 5.2, and 5.3 will pair with the x5. I have no expertise in bluetooth and don’t know the first thing about their protocol. I am looking for someone that can help me come up with something. If you can help me or direct me to someone that can I would be very greatful.

    1. Unfortunately, I don’t think that’s possible. The Bluetooth connection is only for control.

      1. Robin Wipprecht Avatar
        Robin Wipprecht

        Doesn’t the mic air connect via bluetooth?

        1. Hmm… Actually, I think you are right. But I didn’t see any way to do that when I was working on this and have no idea how it could be set up. But it must be possible for that mic to work. My guess would be that the mic needs to have the correct name and possibly mac address.

Leave a Reply to Mark Shon Cancel reply

Your email address will not be published. Required fields are marked *