nanoVNA-H – can firmware be updated if it has a broken USB socket?

The usual method used for firmware upgrade is DFU (Direct Flash Update) using the USB interface and one of many PC clients to load the firmware.

Before attempting a firmware upgrade, be certain of the hardware you have, and the appropriate / compatible firmware file and format. Look for a label on the back, or on the silkscreen of the PCB (though sometimes hidden under the battery… doh!)… know what hardware you have to ensure you load compatible firmware.

Before discussing how to upgrade firmware if the USB interface is not functional, be sure that this problem is not driver related, that there is a real hardware problem.

Hardware

I have encountered problems with the USB socket on my first NanoVNA-H, the problem and its resolution is discussed in the following articles.

nanoVNA-H – v3.3 USB problems

nanoVNA-H – continuing USB-C woes #2

nanoVNA-H – continuing USB-C repair

Windows ‘detects' the presence of a device by the voltages on D+ and D- wires, and it will then try to negotiate setup with the device… which includes installation / connection of an appropriate driver. This whole process is called USB device enumeration.

Drivers

Two different and incompatible drivers are commonly used by the many PC client programs for firmware loading:

  • STTub30.sys; and
  • libusb or derivatives (WinUSB, libUSBk, etc).

If an incompatible driver or no driver ‘connects' to the device, the application program will probably report “no device found” or “unable to connect to device” or the like.

More at:

NanoVNA-App – driver for NanoVNA firmware updates

It seems that lots of users stumble on this problem, and misdiagnose the problem… which means they cannot fix it until they recognise the true problem.

USB really does not work, what else?

The device can be programmed by an STLINK programmer connected to the pins provided on the NanoVNA. The use of several alternatives is explained at:

nanoVNA-H – recovery

This will allow installation of firmware, but does not address the USB failure.

An example scenario

A user installs ST's DfuSeDemo and successfully updates the firmware on his NanoVNA-H. All good, it shows that activating the bootloader, hardware, drivers, software all worked.

Next attempt to do the same, the computer does not recognise the NanoVNA-H (started in bootloader mode)… because the cable is dicky / faulty.

Seeking expert advice online, he is told that it is a driver problem, use Zadig to install the ‘correct' driver.

He does that and DfuSeDemo does not find the bootloader device… and it NEVER will, the driver installed on the expert's advice is INCOMPATIBLE with DfuSeDemo.

Ah, the expert advises, you have a crook cable.

After a lot of cable swapping, the user diagnoses that the common element in all failure configurations is the NanoVNA-H, it MUST have a faulty USB socket.

Out of frustration, this is probably going to be consigned to the bin.

Resolution

To resolve this problem, you need to determine if the USB device is enumerating, then whether the device driver appropriate to your application software is installed and ‘connecting'.

If the NanoVNA can be used in ‘normal' mode with a PC client (NanoVNA-Saver, NanoVNA-App etc), the the USB port hardware is functional.

If the device will not enumerate in normal or bootloader mode after trying different  cables, ports and driver, it is quite likely that the NanoVNA has a faulty USB port in some way.

Above is an example schematic of the USB-C connector on a NanoVNA-H v3.3. A competent technician could carefully check continuity and voltages on the critical USB_DM, USB_DP, VBUS and GND connections… it might be a 24 pin connector (or less), but only 4 working connections are necessary to USB enumeration. If the battery can be charged, VBUS and GND are probably good, just two more wires to check.

So, the answer the subject question, it should be possible to install / update firmware using an STLINK or similar… though the functionality of the NanoVNA will be limited if the USB port does not work properly.