GoPro Labs: explore new dimensions
GoPro Labs is a platform that allows you to unlock advanced and experimental features, surpassing standard settings and offering more in-depth control and customization of the GoPro through simple QR codes.
Installing GoPro Labs and QR Control
The first step is to install the dedicated firmware on the GoPro, which can be downloaded directly from the official GoPro Labs website. After downloading the .zip file, extract its contents and copy the “UPDATE” folder to the main directory of the microSD card, without placing it in any subfolders.
With the battery fully charged, insert the microSD card into the camera and turn it on: the firmware update will start automatically.
Once the new software is installed, you can generate specific QR codes to activate various features. The most practical method is through the GoPro QR Control app, which is free and available from the App Store or Google Play Store.


Configuring the commands

Using the GoPro QR Control, you access an interface where you can select and configure specific commands. The process for setting a command is straightforward.
In the Extras section, each Labs command has its own syntax: most are activated by setting them to “1” (on) and deactivated with “0” (off). Others require entering a specific value, often indicated with “X,” which defines the intensity (such as bitrate, color temperature, or trigger sensitivity).
By default, many Labs commands reset when the GoPro is turned off. However, during the QR code creation, there is a “Permanent” checkbox that will keep that configuration active until overwritten by a new QR code. For each selection, the app generates a QR code; scanning it with the GoPro will produce a confirmation “beep”: the new settings will then be active.
Labs commands for diving
WBLK=1 (auto white balance lock)
Kudah Rah Thilla, Ari, Maldives 2022 – with GP10, 5.3K 16:9 30 fps
This command can be useful underwater. Before starting to record, the GoPro automatically determines the optimal white balance for the scene. Once recording begins, this value is “locked” and maintained constant throughout the clip.
This prevents the white balance from changing during filming due to light or depth variations, ensuring colors remain more consistent and natural, especially in the changing lighting conditions typical of the underwater environment.
Looking at my video, it’s clear how, within the same shot and just a few seconds, the white balance changed multiple times, giving the image green or blue dominates depending on the moment.
Kudah Rah Thilla, Ari, Maldives 2022 – with GP10, 5.3K 16:9 30 fps
DIVE=1 (HyperSmooth optimization for diving)
Activating DIVE=1, the GoPro’s HyperSmooth stabilization is specifically optimized for underwater use. Normally, HyperSmooth is calibrated for use out of water, but underwater lighting behaves differently due to refraction. This command adjusts the stabilization algorithm to account for water’s refractive index (default at 1.335, suitable for common freshwater and saltwater), significantly improving vibration removal and making underwater footage even smoother, approaching nearly 100% stabilization.
WARM=x (red channel increase)
In underwater environments, especially at depth, red is the first color to disappear, causing images to look bluish or greenish. The command WARM=x (where x is a value from -50 to 100) allows you to artificially boost the red channel’s intensity. A positive value (e.g., WARM=30) “warms” the image, helping to recover lost red tones and achieve more vivid, natural colors. This compensates for the absorption of red light by water and works well when combined with DIVE=1.
COOL=x (blue reduction)
Complementary to WARM, the command COOL=x (with x ranging from -50 to 100) manages the often excessive blue cast in deep underwater shots. Using a negative value (e.g., COOL=-20) reduces the intensity of the blue channel alone. This helps balance the colors better, diminishing the “all blue” effect and enhancing the remaining warm colors or those recovered with the WARM command, resulting in a more balanced overall image.
NR01=x (noise reduction control)
The command NR01=x (where x ranges from 1 to 100, with 100 being the maximum reduction or default setting) adjusts the intensity of the internal noise reduction. When using LOG profiles (such as GP-Log or LOGB in Labs) to maximize dynamic range, details in the shadows can become “smudged” by overly aggressive noise reduction. Lowering NR01 (e.g., NR01=50) preserves more shadow details, at the expense of a slightly noisier image that may require post-processing. This setting is useful for those performing intense color grading.

EXPS=1 (displays ISO and shutter speed)

EXPS=1 shows ISO and shutter speed directly on the screen, both in preview and during recording. Underwater, this is very useful: monitoring the current ISO helps understand how the GoPro handles the light. A high ISO indicates low light and potential noise; this information can prompt you to find better illumination.
WBDV=1 (dynamic white balance for diving)
This command offers a more automated and intelligent white balance adjustment for underwater applications compared to the WARM setting. Instead of a fixed red channel augmentation, WBDV analyzes the scene: the more pronounced the blue cast in the image (indicative of increased depth and red light attenuation), the more the red channel is dynamically amplified. It operates using internal parameters (e.g., red gain up to 4x after it reaches 2.33x) which can also be customized (e.g., $WBDV=2.4,5.0) for finer control based on specific water conditions. This feature is exclusive to GoPro13.
Following my inquiry regarding the WBDV and WARM functionalities, David Newman, Software Engineering from the GoPro Labs firmware group, provided the following textual response:
“All have been tested, just with mixed results, particular WBDV is not perfect: is it so experimental that it may only help under ideal conditions. WARM works as designed, just too manual so it is hard to set perfectly. WBDV is a crude an attempt to automate WARM“.
BITR=x (bitrate adjust)
With BITR=x (where x is the value in Mb/s, e.g., BITR=150), you can set a custom bitrate for recordings in HEVC (Protune High Bitrate), often exceeding the standard 100 Mb/s. A higher bitrate means more data per second, resulting in potentially better image quality with fewer compression artifacts, especially in complex scenes or when using LOG profiles. It requires fast SD cards and thorough reliability testing. Remember that lower frame rates (e.g., 24fps) can support higher bitrates than higher frame rates (e.g., 120fps). Use this setting with caution.