ttrftech / NanoVNA

Very Tiny Palmtop Vector Network Analyzer
1.06k stars 296 forks source link

NanoVNA not recognized by Python script #150

Open 0xCoto opened 2 years ago

0xCoto commented 2 years ago

@edy555 @cho45 I'm trying to run the Python script, but I get

Traceback (most recent call last):
  File "/Users/user/Documents/NetworkOptimizer/./nanovna.py", line 377, in <module>
    nv = NanoVNA(opt.device or getport())
  File "/Users/user/Documents/NetworkOptimizer/./nanovna.py", line 18, in getport
    raise OSError("device not found")
OSError: device not found

Even though my NanoVNA does get recognized fine by NanoVNA-Saver, listing: /dev/cu.usbmodemDEMO1 (S-A-A-2)

Screenshot 2021-09-27 at 2 45 09 AM

Anyone faced this issue or has any idea what the issue could be? I also tried debugging using print(device_list), and I see a difference:

NanoVNA plugged in:

[<serial.tools.list_ports_common.ListPortInfo object at 0x10d484be0>, <serial.tools.list_ports_common.ListPortInfo object at 0x10d484ca0>]

vs. Nano VNA not plugged in:

[<serial.tools.list_ports_common.ListPortInfo object at 0x119392b80>]

Thanks in advance!

0xCoto commented 2 years ago

Update: I figured from the NanoVNA-Saver that it uses

VID = 0x04b4
PID = 0x0008

for the S-A-A V2 model, and although at first it seems to work, it doesn't respond. E.g. I run ./nanovna.py -C out.png and it gets stuck on capturing... without any out.png being saved of course. Perhaps there's a better Python script suited S-A-A V2 model?

0xCoto commented 2 years ago

@zarath - In case you have any ideas (since you seem to be familiar with the code you've written for the V2 model), I'd greatly appreciate any input as to how we could adapt this.

(My goal is to export s2p data from the VNA to my machine via Python)

zarath commented 2 years ago

The V2 firmware doesn't support on device gui when connected to usb. Therefore it has no screenshot option.

0xCoto commented 2 years ago

@zarath One more thing: I've managed to get everything working and I'm able to output touchstone files, plot them etc., but I see that the |S21| values disagree between the NanoVNA alone (i.e. not connected to python/a computer) and the ones the python script is measuring.

My understanding is that once I calibrate the device (SOLT) and connect it to the computer, the python interface does not seem to pick up the latest calibration on file. Is there a simple way to either load the latest calibration on file or manually re-run the SOLT calibration again through python, or do I write something up and save each state (OPEN, SHORT, LOAD, THRU) as a separate sNp file and apply the calibration locally?

zarath commented 2 years ago

Oh, that's of course a lot more work... V2 just delivers uncalibrated data via usb and it is requiered to do it by ones own. An idea would be to give the script an option to read in a calibration file, which for example can be created by nanoVNA-saver

0xCoto commented 2 years ago

Solved with scikit-rf's calibration tool, thanks!

Haydarjammoul commented 2 years ago

Hello can you share with us how you were able to solve it. Currently blocked on trying to connect my SAA-2N via python Thank you in advance

0xCoto commented 2 years ago

@Haydarjammoul I had to change my VIDPIDs to: VIDPIDs = set([(0x0483, 0x5740), (0x04b4,0x0008)]); so the SAA V2 device could be recognized. See: https://github.com/0xCoto/OptimizeRF/blob/main/nanovna.py