Skip to content

Firmware Flashing and Configuration

Luke edited this page Jun 29, 2026 · 1 revision

1. Update Firmware (V4)

1.1 Firmware Download Mode

Hold the BOOT button, do not release it, connect the Sync Board to the computer via Type-C, then release the BOOT button

Image 1

After successfully entering configuration mode:

  1. All LED lights remain constantly on.
  2. The computer will show a new USB drive device, RP1-RP2, containing two files: INDEX.HTM and INFO_UF2.TXT.

1.2 Download and Upload Firmware

Firmware (Download Link) is located in the project: firmware/SDK2_FIRMWARE_xxxx-xx-xx.uf2, note the .uf2 extension. All firmware files are sorted by date — please download the latest firmware. Copy the firmware to the USB drive; after the transfer is complete, the system will automatically eject the USB drive. At this point, the firmware has been successfully loaded. 5 seconds after successful configuration, the LEDs will start blinking: the camera trigger indicator blinks at a fixed frequency, and the LiDAR PPS signal blinks at a fixed 1-second frequency.

Image 2

2. Configure Sync Board Parameters

2.1 Automatic Configuration Tool (Recommended)

We recommend the web-based automatic configuration tool imaginative-fenglisu-9fcdf0.netlify.app, which is more convenient and intuitive. We recommend using Google Chrome or Edge browsers; other browsers may have issues opening the serial port. image

2.2 Serial Tool Installation

Taking the Ubuntu serial tool as an example to demonstrate the parameter configuration process. In practice, serial tools on any platform can be used for parameter configuration.

sudo apt-get install cutecom # Download serial debugging tool
sudo cutecom                 # Launch serial debugging tool

Serial assistant configuration steps:

  1. Select serial port /dev/ttyACM* (may be /dev/ttyACM0 or /dev/ttyACM1).
  2. Click Open; default configuration is fine.
  3. A large amount of feedback data will appear in the data box below (if only USB is connected, without an Ethernet cable)

Image 3

2.3 Upload Configuration Parameters to Sync Board

Configuration parameters need to be uploaded to the Sync Board according to actual requirements. The configuration parameters are as follows:

Please copy and paste directly

{"f":"cfg","port":8888,"ip":[192,168,1,188],"subnet":[255,255,255,0],"hz_cam_1":1,"hz_cam_2":2,"hz_cam_3":4,"hz_cam_4":8,"hz_imu_2":10,"xtal_diff":0,"uart_0_baud_rate":921600,"uart_1_baud_rate":9600,"uart_2_baud_rate":115200,"use_gps":true,"use_pps":true,"version":400}\n

After sending, the serial tool will report a serial port error. At this point, you need to switch the serial port in the serial tool (/dev/ttyACM0 or /dev/ttyACM1) and reconnect.

Each parameter has a specific meaning, explained as follows:

  "f": "cfg",                 // Configuration file type identifier (fixed as "cfg")
  "port": 8888,               // Network communication port number
  "ip": [192,168,1,188],      // Device IP address
  "subnet": [255,255,255,0],  // Subnet mask configuration
  "hz_cam_1": 20,             // Camera 1 trigger frequency (unit: Hz, recommended ≤200Hz)
  "hz_cam_2": 30,             // Camera 2 trigger frequency (unit: Hz, recommended ≤200Hz)
  "hz_cam_3": 40,             // Camera 3 trigger frequency (unit: Hz, recommended ≤200Hz)
  "hz_cam_4": 50,             // Camera 4 trigger frequency (unit: Hz, recommended ≤200Hz)
  "hz_imu_2":1                // IMU2 trigger frequency (unit: Hz, recommended ≤200Hz)
  "uart_0_baud_rate": 921600, // Communication baud rate (Type-C) (high-speed mode, for time sync/sensor data)
  "uart_1_baud_rate": 9600,   // PPS baud rate (LiDAR) (low-speed mode, for LiDAR synchronization)
  "uart_2_baud_rate": 115200, // GPS baud rate (GPS/RTK) (medium-speed mode, for GPS data reading)
  "use_gps": true,            // GPS module enable flag
  "use_pps": true,            // PPS precise clock sync signal enable flag
  "cam1_ms": 50,              // Camera 1 trigger signal high-level duration (unit: ms) Adjust according to camera specs to control the high-level width (ms) of each camera trigger signal (note: trigger period must be greater than duration)
  "cam2_ms": 50,              // Camera 2 trigger signal high-level duration (unit: ms) (note: trigger period must be greater than duration)
  "cam3_ms": 50,              // Camera 3 trigger signal high-level duration (unit: ms) (note: trigger period must be greater than duration)
  "cam4_ms": 50,              // Camera 4 trigger signal high-level duration (unit: ms) (note: trigger period must be greater than duration)
  "imu2_ms": 50,              // IMU2 trigger signal high-level duration (unit: ms) Controls IMU2 trigger signal high-level width (ms) (note: trigger period must be greater than duration)
  "pps_ms": 100,              // PPS trigger signal high-level duration (unit: ms) Controls PPS pulse-per-second signal high-level width (ms) (note: trigger period must be greater than duration)
  "xtal_diff":0,              // Crystal oscillator deviation correction
  "version": 400,             // Hardware version number (V3/MINI: 300, V4: 400)
  "imu":true,                 // Default (optional), default is true. When set to false, the Sync Board will not send built-in IMU data.
  "mid360":true,              // Default (optional), default true syncs with MID360; when false, switches to other LiDAR sync.
  "sleep":5                   // Default (optional), Sync Board delayed startup time (default 5 seconds) (network communication wait time for host startup and network initialization)

Continue with the steps from 2.1:

  1. Copy the parameters above, paste into the input box, and press Enter to send.
  2. When sending, the feedback data will disappear, LEDs will dim, and the serial port will disconnect (the system automatically switches ports /dev/ttyACM0 or /dev/ttyACM1).
  3. After 5 seconds, LEDs will resume blinking. Reopen the serial port and you should see a large amount of feedback data — configuration is successful.
  4. You can further try modifying different configuration parameters, such as camera trigger frequency, and observe the LED changes.

Try adjusting the hz_cam_1 parameter setting and observe the corresponding LED blinking frequency — you should see the LED blinking frequency match the set frequency.

2.4 Factory Reset

Due to the many configuration parameters of the Sync Board, some users may have incorrect parameter configurations causing it to not work properly. In this case, a factory reset is needed.

Latest Sync Board (V4)

  1. Update with the reset firmware SDK2_FIRMWARE_FACTORY_RESET_XX.uf2 Download Link. (Also sorted by date, it is recommended to use the latest reset firmware). The system will restore the previous configuration to default settings.
  2. After the default configuration is updated, you must flash the latest firmware again to complete the reset.

3rd Generation Sync Board (V3/MINI)

When using SDK2_FIRMWARE_FACTORY_RESET_ONLY_FOR_MINI reset firmware, send the following command via the serial tool: (V3/MINI only)

{"f":"cfg","port":8888,"ip":[192,168,1,188],"subnet":[255,255,255,0],"hz_cam_1":10,"uart_0_baud_rate":921600,"uart_1_baud_rate":9600,"uart_2_baud_rate":115200,"use_gps":true,"use_pps":true,"version":300}\n

3. Minimal SDK Startup

3.1 Startup Preparation

  • Connect Type-C
  • Grant device permissions
ls /dev/ttyACM*

You may get results like /dev/ttyACM0, /dev/ttyACM1, etc. These vary with each plug/unplug. Therefore, the permission command must be modified accordingly.

sudo chmod 777 /dev/ttyACMx

Replace ttyACMx above with the corresponding device name.

3.2 Compile SDK Code

sudo apt-get install libzmq3-dev 
git clone git@github.com:InfiniteSenseLab/SimpleSensorSync.git -b main
cd SimpleSync
mkdir build && cd build
cmake ..
make -j

If the git clone command fails and you cannot download, you can directly download from the project page via Code/Download ZIP.

3.3 Run Minimal SDK Program

./example/NetCam/net_cam uart /dev/ttyACM0

This includes two parameters: the first specifies using the serial port for synchronization, and the second is the serial device name, which should be determined based on your own device name.

After successful execution, IMU data will appear:

main.cpp:9 1757679321305197 Accel: -0.890675 0.555475 9.94587 Gyro: 0.082176 -0.054001 0.010651 Temp: 33.2126
main.cpp:9 1757679321315197 Accel: -0.890675 0.550686 9.94108 Gyro: 0.143211 -0.054001 0.010651 Temp: 33.2277
main.cpp:9 1757679321325197 Accel: -0.881098 0.565052 9.95545 Gyro: 0.082176 0.007034 0.010651 Temp: 33.2277
main.cpp:9 1757679321335197 Accel: -0.895463 0.541109 9.95545 Gyro: 0.021141 0.129105 0.071686 Temp: 33.2729
main.cpp:9 1757679321345199 Accel: -0.890675 0.550686 9.93629 Gyro: 0.021141 0.068069 0.071686 Temp: 33.2126
main.cpp:9 1757679321355198 Accel: -0.895463 0.555475 9.94108 Gyro: 0.082176 0.007034 0.071686 Temp: 33.2729

📝 中文页面 (Chinese Page)

Clone this wiki locally