Skip to content


Repository files navigation


Very alpha version.

NanoVNA interface implementation with WebUSB.


RUN with WebSerial

WebSerial is more experimental feature than WebUSB on Google Chrome. But it may resolve driver issues around WebUSB.

  1. Enable flag: chrome://flags/#enable-experimental-web-platform-features
  2. Access to .
  3. Connect your NanoVNA to USB port.
  4. Click [CONNECT] and select the device.

RUN with WebUSB

  1. Access to .
  2. Connect your NanoVNA to USB port.
  3. Click [CONNECT] and select the device.

Some OSes are additional requirements:



no requirements


Connect device via USB OTG connector. (Type-C to Type-C cable may not be usable. I recommend using USB-A OTG adapter.)

Linux (Ubuntu)

Copy 99-nanovna.rules to your /etc/udev/rules.d.

BE CAREFUL: This rule disables cdc_acm driver for all STM32CDC devices (vid:0x0483, pid:0x5740). So, If you want to use device as usb cdc device, you must remove this file again.


Replace driver with Zadig.


Connect via USB OTG connector.


This project uses Rust partially for DSP.

Install some tools

and install build tools as following:

$ cargo install wasm-pack
$ cargo install --force cargo-make

See also Compiling from Rust to WebAssembly

Android App


Play Store:

Install latest nightly

Download *.apk from your android.


  • Uninstall release build before installing lastest nightly.

Open with Android Studio

$ make cap
$ npx cap open android


  • Edit android/app/build.gradle and increment version
  • commit version
  • tag version
  • Build -> Generate Signed Bundle / APK
  • Android Build Bundle