Skip to content
NanoVNA interface implementation with WebSerial/WebUSB/Android.
JavaScript HTML Rust CSS Java Makefile Other
Branch: master
Clone or download
Latest commit 8614632 Oct 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update Oct 17, 2019
android v1.4 Oct 11, 2019
dsp-wasm init dsp Sep 7, 2019
etc update drivers Sep 1, 2019
images generate splash Oct 4, 2019
lib version detection Oct 15, 2019
node_modules version detection Oct 15, 2019
.gitignore Update android.yml Oct 5, 2019
COPYING apply gpl Aug 30, 2019
Makefile update Oct 8, 2019 v1.3 Oct 9, 2019
capacitor.config.json capacitor files Oct 1, 2019
dfu.html update dfu Sep 12, 2019
dfu.js update dfu Sep 12, 2019
index.html version detection Oct 15, 2019
manifest.json manifest.json Aug 27, 2019
nanovna.js recall Oct 9, 2019
package-lock.json version detection Oct 15, 2019
package.json version detection Oct 15, 2019
script.js check first device Oct 17, 2019
sketch.mjs init Aug 27, 2019
snp.mjs init Aug 27, 2019
sw.js manifest.json Aug 27, 2019
worker.js recall Oct 9, 2019 optimize resources Oct 11, 2019


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
You can’t perform that action at this time.