Control

This page will detail operations to command and control the GoPro.

Operations

Keep Alive
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

TLV command

ID:
0x5B

In order to maximize battery life, GoPro cameras automatically go to sleep after some time. This logic is handled by a combination of the Auto Off setting which most (but not all) cameras support and a Keep Alive message that the user can regularly send to the camera. The camera will automatically go to sleep if both timers reach zero.

The Auto Power Down timer is reset when the user taps the LCD screen, presses a button on the camera, programmatically (un)sets the shutter, sets a setting, or loads a Preset.

The Keep Alive timer is reset when the user sends a keep alive message.

The best practice to prevent the camera from inadvertently going to sleep is to start sending Keep Alive messages every 3.0 seconds after a connection is established.

Request
UUID:

Setting

Parameters:
  • keep_alive (uint8) - hard-coded data set to 0x42
Response
UUID:

Settings Response

Set Analytics
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

TLV command

ID:
0x50

Configure the client as third-party for analytic tracking.

Request
UUID:

Command

Response
UUID:

Command Response

Set AP Control
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

TLV command

ID:
0x17

Enable / disable the camera’s WiFi access point.

Request
UUID:

Command

Parameters:
  • mode (uint8) - 0 to disable, 1 to enable
Response
UUID:

Command Response

Set Camera Control
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c
Type:

Protobuf

../_images/global_behaviors.png
Request

Set Camera Control Status (as part of Global Behaviors feature)

This command is used to tell the camera that the app (i.e. External Control) wishes to claim control of the camera. This causes the camera to immediately exit most contextual menus and return to the idle screen. Any interaction with the camera’s physical buttons will cause the camera to reclaim control and update control status accordingly. If the user returns the camera UI to the idle screen, the camera updates control status to Idle.

The entity currently claiming control of the camera is advertised in camera status 114. Information about whether the camera is in a contextual menu or not is advertised in camera status 63.

Response: ResponseGeneric

UUID:

Command

Feature ID:
0xF1
Action ID:
0x69
Message:

RequestSetCameraControlStatus (docs) (source)

Response

Generic Response used across many response / notification messages

UUID:

Command Response

Feature ID:
0xF1
Action ID:
0xE9
Message:

ResponseGeneric (docs) (source)

Set Date Time
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

TLV command

ID:
0x0D

Set the camera’s date and time (without timezone and daylight-savings information).

The date_time parameter is a 7 byte value defined as such:

  • uint16 year

  • uint8 month (1-12)

  • uint8 day (1-31)

  • uint8 hour (0-23)

  • uint8 minute (0-59)

  • uint8 second (0-59)

For example, date time “2023-01-31 03:04:05” is serialized as 07:e7:01:1f:03:04:05

Request
UUID:

Command

Parameters:
  • date_time (7 byte date_time defined above) - Date time to set
Response
UUID:

Command Response

Set Local Date Time
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6
Type:

TLV command

ID:
0x0F

Set the cameras date and time with timezone and daylight-savings information.

The date_time parameter is a 10 byte value defined as such:

  • uint16 year

  • uint8 month (1-12)

  • uint8 day (1-31)

  • uint8 hour (0-23)

  • uint8 minute (0-59)

  • uint8 second (0-59)

  • int16 UTC offset in minutes

  • uint8 is_dst (1 if daylight savings time is enabled, 0 otherwise)

For example, date time “2023-01-31 03:04:05 (utc-02:00) (dst: on)” is serialized as 07:E7:01:1F:03:04:05:FF:88:01

Request
UUID:

Command

Parameters:
  • date_time (10 byte date_time defined above) - Date time to set
Response
UUID:

Command Response

Set Shutter
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

TLV command

ID:
0x01

Set Shutter On / Off

Request
UUID:

Command

Parameters:
  • mode (uint8) - 0 for off, 1 for on
Response
UUID:

Command Response

Set Turbo Transfer
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

Protobuf

Request

Enable/disable display of “Transferring Media” UI

Response: ResponseGeneric

UUID:

Command

Feature ID:
0xF1
Action ID:
0x6B
Message:

RequestSetTurboActive (docs) (source)

Response

Generic Response used across many response / notification messages

UUID:

Command Response

Feature ID:
0xF1
Action ID:
0xEB
Message:

ResponseGeneric (docs) (source)

Sleep
https://img.shields.io/badge/HERO13 Black-ffe119 https://img.shields.io/badge/HERO12 Black-f58231 https://img.shields.io/badge/HERO11 Black Mini-911eb4 https://img.shields.io/badge/HERO11 Black-f032e6 https://img.shields.io/badge/HERO10 Black-bcf60c https://img.shields.io/badge/HERO9 Black-fabebe
Type:

TLV command

ID:
0x05

Put the camera to sleep.

Note

The camera is still be connectable via BLE in sleep.

Request
UUID:

Command

Response
UUID:

Command Response