GI Labs Support / EGO1 & EGO1GS

Restore factory calibration

Restore the factory camera and IMU calibration using the JSON file supplied for your device and the GI Labs utility. You do not need to capture a calibration target or run a new calibration.

Download the restore utility

Save this file beside your device's calibration JSON. Keep the filename set_calibration.py.

Download set_calibration.py

Before you begin

  • Use an EGO1 or EGO1GS with enough battery or a stable power supply.
  • Use a computer with Python 3.10 or newer.
  • Have the restore format calibration JSON supplied for this specific device.
  • Have a USB data cable, or connect your computer to the device's Wi-Fi.

Work with one standalone device at a time. Disconnect other Visio devices and devices attached through a hub. Stop recording and close applications that control the device.

Use the JSON supplied for this unit and keep it unchanged. Calibration is specific to each device. A JSON exported from a recording or calibration report may use a different format.

1. Prepare the files and Python

Put set_calibration.py and the supplied JSON in one folder. Open Terminal on macOS or Linux, or Command Prompt on Windows, and change to that folder. The examples use calibration.json; substitute your exact filename if needed.

While your computer has internet access, create a Python environment and install the required package.

macOS or Linux

python3 --version
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade "visio-schema>=0.9.1" protobuf

Windows Command Prompt

py -3 --version
py -3 -m venv .venv
.venvScriptsactivate.bat
python -m pip install --upgrade "visio-schema>=0.9.1" protobuf

The version command must show Python 3.10 or newer. Keep this terminal open. Complete installation before joining the device's Wi-Fi, which may have no internet access.

2. Check the supplied file

Run this before connecting to the device:

python set_calibration.py "calibration.json" --dry-run

For a complete EGO1 or EGO1GS restore, expect a device serial and five items:

would set cam0 intrinsics
would set cam1 intrinsics
would set cam1 extrinsics
would set imu0 info
would set imu0 extrinsics

The dry run reads the file and lists what would be written. It does not connect to the device or change calibration. If it reports an error or does not list all five items, contact GI Labs support. Do not edit the values or serial.

3. Connect the device

Power on the device and wait for startup. Temporarily disable VPN or proxy software that routes local device traffic.

USB

Connect the device directly to your computer with a USB data cable. USB network restoration requires firmware 1.1.6 or later. A charging-only cable will not work. Allow time for the connection to establish.

Wi-Fi

Join the device's GILABS-XXXXXX network using the credentials supplied with it. Stay connected even if the computer says the network has no internet.

4. Restore the calibration

For USB, run:

python set_calibration.py "calibration.json"

The utility tries USB first, then the device's Wi-Fi address. For a Wi-Fi connection, select it explicitly:

python set_calibration.py "calibration.json" --host 192.168.4.1

The utility checks that the connected device serial matches the JSON before writing. Keep the device powered and connected until the command finishes. If the serial does not match, use the correct device and its matching file.

5. Confirm the result

A successful run reports all five checks as ok:

check cam0 intrinsics: ok
check cam1 intrinsics: ok
check cam1 extrinsics: ok
check imu0 info: ok
check imu0 extrinsics: ok
DONE: calibration restored. Keep the device on for a few seconds before powering it off.

Save the terminal output. Leave the device powered for several seconds, then restart it. Make a short test recording; GI Labs support can use it to confirm that calibration remains present after restart.

The utility checks live device reports before restart. It does not perform a separate post-restart check. At a different capture resolution, the reported camera matrix changes; the camera check compares the distortion model and coefficients.

Troubleshooting

Message or symptomWhat to do
Python or py is not foundInstall Python 3.10 or newer, reopen the terminal, and repeat step 1.
No module named visio_schema or protobuf errorActivate the environment and rerun the package installation command while online.
File not foundCheck the working folder and use the exact JSON filename in quotation marks.
Invalid JSON, KeyError, or unexpected item countAsk GI Labs support for the correct restore format file. Do not edit calibration values.
Cannot reach the deviceCheck power and the USB data cable, or rejoin Wi-Fi. Disable VPN or proxy routing. On Wi-Fi, use --host 192.168.4.1.
Serial mismatchConnect the unit named in the JSON, or request the correct file from GI Labs.
device rejected, wrong_resolution, MISMATCH, or NOT REPORTEDSave the full output and contact GI Labs support. Do not treat the restore as complete.
Connection lost during a writeSome items may already have been written. Reconnect the same device and rerun with its original matching file. Contact support if it repeats.

When contacting GI Labs support, include the device model, serial and firmware version printed by the utility, your computer's operating system, whether you used USB or Wi-Fi, the JSON filename, and the complete terminal output.