Firmware Update
The NanoVNA-H firmware can be updated via USB using DFU (Device Firmware Update) mode. This allows you to install new features, bug fixes, or specialized firmware versions.
Before You Begin
Section titled “Before You Begin”Requirements
Section titled “Requirements”- NanoVNA-H device
- USB cable (data-capable)
- Computer with dfu-util installed
- Firmware binary file (.bin)
Backup Your Settings
Section titled “Backup Your Settings”Before updating, save your calibrations and settings:
# Note your calibration slots# Export S-parameter data if needed# Record any custom settingsDownload Firmware
Section titled “Download Firmware”- Go to the NanoVNA-H GitHub repository
- Navigate to Releases
- Download the appropriate .bin file:
H.binfor NanoVNA-H (STM32F072)H4.binfor NanoVNA-H4 (STM32F303)
Enter DFU Mode
Section titled “Enter DFU Mode”Method 1: Via Menu
Section titled “Method 1: Via Menu”- Power on the NanoVNA-H normally
- Go to
CONFIG - Tap
DFU(or->DFU) - Device enters DFU mode (screen may go blank)
Method 2: Hardware Boot
Section titled “Method 2: Hardware Boot”- Power off the device
- Locate the BOOT0 jumper or button
- Connect BOOT0 to VCC (or hold BOOT button)
- Connect USB cable
- Release BOOT0 after a few seconds
Method 3: Via Shell
Section titled “Method 3: Via Shell”reset dfuVerify DFU Mode
Section titled “Verify DFU Mode”On Linux:
lsusb | grep DFU# Should show: STMicroelectronics STM Device in DFU ModeOn Windows:
- Device Manager shows “STM32 BOOTLOADER” or similar
Install dfu-util
Section titled “Install dfu-util”Linux (Debian/Ubuntu)
Section titled “Linux (Debian/Ubuntu)”sudo apt install dfu-utilLinux (Arch)
Section titled “Linux (Arch)”sudo pacman -S dfu-utilbrew install dfu-utilWindows
Section titled “Windows”Download from dfu-util.sourceforge.net or use zadig to install WinUSB driver.
Flash Firmware
Section titled “Flash Firmware”For NanoVNA-H (STM32F072)
Section titled “For NanoVNA-H (STM32F072)”dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D H.binFor NanoVNA-H4 (STM32F303)
Section titled “For NanoVNA-H4 (STM32F303)”dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D H4.binFlash Process
Section titled “Flash Process”- Run the dfu-util command
- Wait for “Downloading” progress to complete
- Device should automatically restart
- If screen stays blank, power cycle manually
Expected output:
dfu-util 0.11Opening DFU capable USB device...Device ID 0483:df11Downloading to address = 0x08000000, size = 65536Download [=========================] 100%Verify Update
Section titled “Verify Update”After restarting:
- Check firmware version in menu or via
versioncommand - Test basic functionality
- Recalibrate if needed
versionPost-Update Steps
Section titled “Post-Update Steps”- Perform touch calibration if needed
- Run
clearconfigif experiencing issues (resets all settings) - Perform RF calibration (SOLT)
- Verify TCXO setting
Troubleshooting
Section titled “Troubleshooting”Device Not Detected in DFU Mode
Section titled “Device Not Detected in DFU Mode”- Try a different USB cable
- Try a different USB port
- On Windows, install correct drivers
- Verify BOOT0 is connected properly
Flash Fails with Error
Section titled “Flash Fails with Error”# Try with sudo on Linuxsudo dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D H.binDevice Won’t Boot After Update
Section titled “Device Won’t Boot After Update”- Enter DFU mode via hardware method
- Flash known-good firmware
- If persistent, the device may need recovery
Wrong Firmware Flashed
Section titled “Wrong Firmware Flashed”- Enter DFU mode via hardware
- Flash the correct firmware file
Building From Source
Section titled “Building From Source”For custom builds:
# Clone repositorygit clone https://github.com/hugen79/NanoVNA-H.gitcd NanoVNA-H
# Extract ChibiOS7z x ChibiOS.7z
# Build for NanoVNA-Hmake
# Build for NanoVNA-H4make TARGET=F303
# Output files in build/Emergency Recovery
Section titled “Emergency Recovery”If the device is completely unresponsive:
- Disconnect all power
- Short BOOT0 to VCC
- Connect USB
- Flash firmware via dfu-util
- Power cycle
If the above doesn’t work, the bootloader may be corrupted, requiring JTAG/SWD recovery.