Install firmware¶
Install a prebuilt image on the horizontal v3 STM32H563RGT6 carrier with eight v2 VL53L8CX sensor boards. This is the carrier used in the Ascend-8tof v2 system described here. The installer programs the sensor board, not the flight controller. No firmware compiler or source checkout is required.
Download¶
| Package | Profile | Status |
|---|---|---|
| Firmware and installer ZIP | 8×8 · 10 Hz · 10 ms, AVOID=cp, 180° zone orientation |
Bench candidate — hardware verification pending |
| ZIP SHA-256 checksum | Verify the complete download | Version 2026.09.10-10hz10ms |
Read the release notes and validation status before installing. The ZIP contains the firmware, Python installer, launchers, OpenOCD configuration, manifest, checksums, and offline instructions. Extract all files into one folder; do not run the installer directly from the ZIP.
Validation status
Firmware compilation, regression tests, and 15 installer tests passed. The live installation attempt stopped before any write because no ST-Link was connected. This exact release has not yet completed hardware readback; range and input power are unmeasured. Windows/Linux hardware installation also remains unverified.
Prerequisites¶
- Python 3.9 or newer.
- An ST-Link programmer with its USB drivers or Linux USB permissions configured. An FTDI UART cable displays sensor data; it does not flash this board.
- ST OpenOCD with STM32H5 support, including
interface/stlink-dap.cfgandtarget/stm32h5x.cfg. Use the executable and scripts from the same ST distribution. ST OpenOCD is available with STM32CubeIDE or from ST's source. Generic OpenOCD 0.12 packages may lack STM32H5 support. - The complete extracted release ZIP. Python, OpenOCD, and USB drivers are installed separately; the installer does not download them automatically.
The installer targets Windows, macOS, and Linux using Python's standard
library. The ST OpenOCD build used for earlier board flashing was
0.12.0+dev-00635-g0a084c293.
Connect the board¶
Work on the bench with the vehicle disarmed and propellers removed. Supply regulated 5 V through J5 pin 1, with ground on pin 4. See Power and the connector photos.
Connect the ST-Link to J6:
| J6 pin | Board signal | ST-Link signal |
|---|---|---|
| 1 | GND | GND |
| 3 | SWDIO | SWDIO |
| 4 | SWCLK | SWCLK |
| 6 | +3V3 | Target-voltage sense / VTref |
J6 pin 6 is a voltage reference, not an input for a programmer's power
output. Check the pinout of your particular ST-Link. SWO and RESET are not
required by this installer; it uses a software reset. Connect only one ST-Link,
or select a probe with --serial. Close other debugger/programmer sessions.
Run the installer¶
Open a terminal in the extracted folder and check package integrity first:
If OpenOCD is not found, pass its paths explicitly. Replace the example paths with the executable and scripts in your ST installation:
STM32CubeIDE may put scripts in the debug plugin's
resources/openocd/st_scripts folder, separate from the executable in the
external-tools OpenOCD plugin. OPENOCD and OPENOCD_SCRIPTS environment
variables can supply the same paths.
The installer checks the image, identifies the MCU and flash layout, and shows
the unique board ID. Confirm that the physical board is the horizontal v3:
a matching MCU cannot identify a PCB revision. Type INSTALL to continue.
Automated bench runs can add --yes.
The installer then:
- Saves a complete 1 MiB flash backup in a new local directory.
- Programs and verifies the firmware region.
- Resets the board and waits for startup.
- Checks all eight sensors for autonomous mode, 8×8 resolution, 10 Hz, and 10 ms.
- Checks that saved mask bytes are unchanged and verifies the installed image's SHA-256 checksum by reading it back.
Success requires all eight sensors to start with the expected settings. Backups,
logs, and result.json are stored under Ascend8TOF/backups in your home
folder. Use --backup-dir PATH to choose another location. Keep these files
with that board; they are not part of the public download.
Verify the output¶
Open the configurator in Chrome, connect the FTDI adapter at 921600 baud, and check all eight channels. Move an object in front of each sensor. The tip of the A marks the nose: CH7/J8.
The dashboard's packet/frame rate may exceed 10 Hz because the MCU polls more frequently. It is not the rate of fresh measurements from each sensor.
This release reports unknown for weak, missing, masked, expired, or
unmeasured directions. PX4 may restrict motion into those directions. Do not
set CP_GO_NO_DATA merely to hide missing measurements. Valid close obstacles
are retained; use deliberate zone masks for enclosure and airframe returns.
See Communications.
Troubleshooting and rollback¶
| Problem | Next step |
|---|---|
| OpenOCD or scripts not found | Supply the explicit paths above; confirm stm32h5x.cfg and stlink-dap.cfg exist. |
| No ST-Link or target | Check USB enumeration, board power, VTref, ground, cable orientation, drivers/permissions, and other debugger sessions. |
| Unexpected MCU, flash layout, or protection | Stop and check the board. The installer does not unlock devices, change option bytes, or perform a mass erase. |
| Sensor verification failed | Read verify-sensors.log. Programming may have succeeded while a sensor was disconnected; check all eight boards and their power, then retry. |
| Saved mask or image readback mismatch | Keep the full backup and logs; do not treat the installation as verified. |
For rollback, retain that board's before-flash.bin and logs. A full restore
also restores its original mask. Use an STM32H563-capable programmer to write
the backup at 0x08000000, verify, and reset. Do not use another board's backup
or erase option bytes. The supplied installer accepts only its checksummed
release image.
Bench installation checks do not establish outdoor range, braking distance, or readiness for flight. Configure and validate the flight controller separately using the integration guide.