Skip to content
Very Tiny Palmtop Vector Network Analyzer
C Jupyter Notebook Objective-C Python C++ Makefile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci update golang 1.10 Sep 14, 2019
.vscode env: add tasks.json for vscode Oct 14, 2019
ChibiOS @ 669d4bb revert chibios fix Sep 2, 2019
NANOVNA_STM32_F072 move `enter dfu` to submenu of config Sep 6, 2019
doc add schematics, block diagram and pcb photo, update Feb 3, 2017
python doc: update notebook example Nov 17, 2019
.gdbinit add hard_fault handler Jan 22, 2017
.gitignore env: ignore png files Oct 14, 2019
.gitmodules env: replace git submodule url as http to prevent failure to fetch wi… Sep 26, 2019
Font5x7.c chore: shrink 5x7 font Oct 21, 2019
Makefile chore: reduce foot-print of numfont20x24 Oct 21, 2019 doc: update link to docker hub Oct 29, 2019
STM32F072xB.ld add save and restore dac value in flash Jan 2, 2017
adc.c show battery indicator (requires implementing D2 on board) Sep 9, 2019
chconf.h static inline reduce stack memory usage Aug 28, 2019
dsp.c remove buffer used only in dump command Oct 22, 2019
ffconf.h initial commit Sep 4, 2016
fft.h fix #92 : 'for' loop initial declarations Nov 17, 2019
flash.c add interpolation on cal Sep 15, 2017
halconf.h change adc driver not to use chibios hal Dec 17, 2016
ili9341.c feat: add feedback of lever mode Nov 17, 2019
main.c fix: make touch cal default suitable for 2.8 panel Nov 17, 2019
mcuconf.h change adc driver not to use chibios hal Dec 17, 2016
nanovna.h feat: add feedback of lever mode Nov 17, 2019
numfont20x22.c chore: reduce foot-print of numfont20x24 Oct 21, 2019
plot.c feat: add feedback of lever mode Nov 17, 2019 initial commit Sep 4, 2016
si5351.c fix: adjust delay Oct 22, 2019
si5351.h add argument rdiv in si5351 setupMultisynth Feb 1, 2017
tlv320aic3204.c chore: update codec control Oct 21, 2019
ui.c fix: change to marker lever mode on transform enabled Nov 17, 2019
usbcfg.c initial commit Sep 4, 2016
usbcfg.h initial commit Sep 4, 2016

NanoVNA - Very tiny handheld Vector Network Analyzer

GitHub release CircleCI


NanoVNA is very tiny handheld Vector Network Analyzer (VNA). It is standalone with lcd display, portable device with battery. This project aim to provide an RF gadget but useful instrument for enthusiast.

This repository contains source of NanoVNA firmware.

Prepare ARM Cross Tools

UPDATE: Recent gcc version works to build NanoVNA, no need old version.


Install cross tools and firmware updating tool.

$ brew tap px4/px4
$ brew install gcc-arm-none-eabi-80
$ brew install dfu-util

Linux (ubuntu)

Download arm cross tools from here.

$ wget
$ sudo tar xfj -C /usr/local gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2
$ PATH=/usr/local/gcc-arm-none-eabi-8-2018-q4-major/bin:$PATH
$ sudo apt install -y dfu-util

Fetch source code

Fetch source and submodule.

$ git clone
$ cd NanoVNA
$ git submodule update --init --recursive


Just make in the directory.

$ make

Build firmware using docker

Using this docker image and without installing arm toolchain, you can build the firmware.

$ cd NanoVNA
$ docker run -it --rm -v $(PWD):/work edy555/arm-embedded:8.2 make

Flash firmware

First, make device enter DFU mode by one of following methods.

  • Jumper BOOT0 pin at powering device
  • Select menu Config->DFU (needs recent firmware)

Then, flash firmware using dfu-util via USB.

$ dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D build/ch.bin

Or simply use make.

$ make flash

Companion Tools

There are seveal numbers of great companion PC tools from third-party.




Hardware design material is disclosed to prevent bad quality clone. Please let me know if you would have your own unit.

Authorized Distributor



You can’t perform that action at this time.