Awesome Open Source
Awesome Open Source

GoPro Control Arduino

This is a library to interface with GoPro cameras over WiFi using Arduino!

Alt text

Alt text

Here there is a short video that shows the potential of the library

Alt text

Supported actions

  • take a picture
  • start and stop a video
  • change the mode (photo, video, etc)
  • delete last file
  • format the SD
  • turn the camera on/off
  • change the field of view (FOV)
  • change frame rate
  • change photo and video resolution
  • turn the localization on/off
  • change the orientation
  • more

Supported boards:

  • ESP32
  • ESP8266
  • MKR1000
  • MKR WiFi 1010
  • MKR VIDOR 4000
  • UNO WiFi Rev.2
  • any other boards (UNO, NANO, bluepill) attached to an ESP01 using AT commands with this library

Supported cameras:

  • HERO3
  • HERO4
  • HERO5
  • HERO6
  • HERO7
  • HERO8
  • MAX

I made the library with a style which would be quite easy to add other cameras (not only GoPro). I would be very happy to accept pull requests 😃


  • Arduino IDE:
    • Go to Tools > Manage libraries
    • Search for GoProControl
  • PlatformIO:
    • From command line: run pio lib install "GoProControl" or use the ID pio lib install 5599
    • Or if you prefer a GUI from Platformio IDE
  • Manually:


Start with the GoProControl.ino to get used with the library

If you wish to control two (or more) camera at the same time check MultiCam.ino

On the ESP32 there is the possibility to use the dual core architecture with the FreeRTOS framework, check ESP32_FreeRTOS.ino

An advantage use of the getStatus() and getMediaList() can be seen in ArduinoJson.ino, you would need to download the ArduinoJson library

Important: Before uploading to your board you have to change the SSID, password and camera model from Secrets.h

Supported Settings

You can see the available settings in the manual of your camera or here for HERO3 and here for HERO4 and newer.

In the file Settings.h you can see how them are defined

NOTE: Not all the combination of settings are available for all the cameras (for example on a HERO3 you can't set 8K at 240 frame per second 😲).

To Do list and known issues

  • ESP8266 can't get the BSSID of the camera. So if you want to turn it on you need to manually pass it to the constructor, see the docs
  • There is no way to know if an HERO3 camera is on or off so the function isOn() will always return true on this camera - open an issue if you found a way
  • BLE not implemented: the ESP32 core is not enough stable, especially if used together with wifi: see here
  • No confirm pairing for HERO4: see here - PR are welcome
  • on STM32 there is a known bug with WiFiEsp
  • Arduino official WiFi API doesn't support getHostname(), see here
  • HERO4 and later camera can't be turned on, this is due to a bug inside this library which I wasn't able to fix yet


All the commands came from the great work of KonradIT

The idea of making a GoPro library for arduino comes from another library which works only on arduino WiFi boards and only with GoPro HERO3

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
C Plus Plus (369,542
Arduino (21,651
Esp8266 (2,931
Esp32 (2,748
Wifi (1,605
Arduino Library (1,466
Esp (204
Gopro (68
Hero (64
Mkr (7
Related Projects