Author Topic: VIPER488 Symbiotic VISA  (Read 1532 times)

0 Members and 3 Guests are viewing this topic.

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
VIPER488 Symbiotic VISA
« on: October 11, 2026, 11:19:20 am »
Long story short: this project actually started as a side effort to build the software stack for my custom USB/GPIB adapter.

Since JLCPCB stopped offering free ENIG surface finish, I had to pull a spin on my PCB design. While waiting for the new boards to arrive, I decided to put the downtime to good use and flesh out the software side properly.

Originally, it was just meant to be a minimal driver tool for my own WinUSB adapter. But as anyone leveraging AI tools nowadays knows, writing and structuring code has become ridiculously fast. Naturally, scope creep kicked in and I decided to shoot for a complete, standalone VISA runtime.

The end goal is to support not just my own hardware, but also common commercial adapters like the Keysight 82357B, NI USB-GPIB-HS, Prologix, and AR488, allowing us to finally ditch those bloated multi-gigabyte VISA suites from NI and Keysight.

It is fully cross platform and already running smoothly on Windows 11, macOS, and Ubuntu, both with GUI utilities and in CLI environments.

All core features are implemented, right now I'm just polishing up the details, docs, and edge cases.

I'll be pushing the source code to GitHub very soon. Posting this thread here mainly to hold myself accountable and keep from slacking off!
« Last Edit: October 11, 2026, 11:41:33 am by gamalot »
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 
The following users thanked this post: Mickle T., edavid, coromonadalix, TizianoHV

Offline TizianoHV

  • Regular Contributor
  • *
  • Posts: 184
  • Country: it
    • My Website
Re: VIPER488 Symbiotic VISA
« Reply #1 on: October 11, 2026, 01:11:45 pm »
It would be incredible!
I put my USB-GPIB-HS up for sale because I couldn't stand NI-MAX installing 8GB of junk instead of just giving me a driver (and only for windows) :palm:
Looking forward!

Offline abeyer

  • Frequent Contributor
  • **
  • Posts: 953
  • Country: us
Re: VIPER488 Symbiotic VISA
« Reply #2 on: October 12, 2026, 01:19:43 am »
👀
 

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #3 on: October 16, 2026, 09:24:36 am »
This reply is generated entirely by AI, but I will read the feedback.

Here is a preview: interfaces and file formats may still change.

What it is

A VISA library -- the standard VISA C API (viOpenDefaultRM, viOpen, viWrite, viRead, ...) as visa64.dll / visa32.dll on Windows and libvisa64.so on Linux -- so pyvisa, LabVIEW-style applications, C programs and anything else that loads a VISA library can use it. VISA.NET and VISA COM implementations sit on top of the same C API. It comes with a configuration window and a command-line tool (symbiotic-ctl).

What it talks to

  • GPIB through USB adapters: Viper488, NI GPIB-USB-HS, Keysight 82357B, CONTEC GP-IB(USB)FL, and Prologix / AR488 controllers on a serial port
  • USBTMC instruments (USB0::0x0957::0x1792::MY12345678::INSTR)
  • LAN instruments: VXI-11, HiSLIP and raw socket (TCPIP0::192.168.1.20::hislip0::INSTR)
  • Serial instruments (ASRL3::INSTR)
  • Aliases you define (DMM instead of GPIB1::6::INSTR)
Any number of programs can share one adapter at the same time: a small daemon owns the adapter, starts on demand and exits 10 seconds after the last program has gone, so the adapter is free for other tools again.

Downloads (attached)

  • Windows (x64): symbiotic-machine-0.1.253.msi -- installs for all users, needs an administrator
  • Linux (amd64, Ubuntu 22.04 / Debian 12 and newer): viper488-symbiotic-visa_0.1.253_amd64.deb
  • macOS: a package will follow later. Until then it builds from source (Apple Silicon tested; all four GPIB adapters, USBTMC and serial work there).

Source code (MIT licence): https://github.com/gamalot/viper488-visa

Please read before installing

  • The MSI is not code-signed yet, so Windows SmartScreen may warn when you run it.
  • The installer shows its pages (features, folder) before it changes anything. USBTMC instruments on WinUSB is on by default: it gives USBTMC instruments that have no driver Windows' own WinUSB driver. Any vendor USBTMC driver outranks it, so instruments that already have a driver keep it. To install that driver package, the installer creates a certificate on your machine, adds it to the trusted root store and then deletes its private key; uninstalling removes both. Untick it if you don't want that.
  • Registering with the IVI VISA router, VISA.NET and VISA COM is off by default. Turn it on only if you want programs that look for "the system VISA" to find this one -- they will then also reach (and scan) your instruments. Until then, give pyvisa the path:
Code: [Select]
import pyvisa
rm = pyvisa.ResourceManager(r"C:\Program Files\Symbiotic\visa64.dll")
print(rm.visalib, rm.list_resources())
print(rm.open_resource("GPIB0::20::INSTR").query("*IDN?"))
  • NI, Keysight and CONTEC adapters must be bound to WinUSB on Windows first (from an elevated PowerShell: windows\winusb-bind.ps1 -VidPid <VID:PID>). That takes them away from the vendor's own software. A Viper488 needs nothing.
  • The Keysight 82357B boots blank and needs Keysight's firmware image, which I can't distribute. See firmware/README.md in the repository for where to get it and where to put it.
  • On Linux the package doesn't take the system's libvisa.so name; give pyvisa /usr/lib/symbiotic/libvisa64.so. Serial ports need your user in dialout.
Known limits

  • No VXI, PXI, shared memory or trigger mapping; no TLS/SASL for HiSLIP; no viGpibControlATN / viGpibPassControl.
  • GPIB secondary addresses work on the USB adapters, not through a Prologix / AR488.
  • Not yet verified with real hardware: genuine Prologix controllers and LAN/GPIB gateways. If you have one, I'd love a report.

Feedback, bug reports and "it works with my X" are all welcome -- here or as GitHub issues. When something fails, the daemon's log (%LOCALAPPDATA%\Symbiotic\logs\symbioticd.log on Windows, ~/.local/state/symbiotic/ on Linux) and the output of symbiotic-ctl list help a lot.

SHA-256:
Code: [Select]
051bfefa8b01653e93624df93319012a27957d590c48992af28bb47585a794e0  symbiotic-machine-0.1.253.msi
d459cac19917d2fb9d34bfb327c9abdea94d2f616e612dd0a94ff8ae9c7af7aa  viper488-symbiotic-visa_0.1.253_amd64.deb
« Last Edit: October 16, 2026, 09:26:11 am by gamalot »
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #4 on: October 16, 2026, 09:27:40 am »
Exceeds the attachment file size limit.
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #5 on: October 16, 2026, 12:00:33 pm »
The latest release is now available on GitHub, There aren't many new features but macOS installation files have been added.

https://github.com/gamalot/viper488-visa/releases/tag/v0.1.254

I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #6 on: October 16, 2026, 03:40:55 pm »
Version 0.1.255 adds Raspberry Pi (ARM64) support: https://github.com/gamalot/viper488-visa/releases/tag/v0.1.255
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 

Offline BennoG

  • Frequent Contributor
  • **
  • Posts: 384
  • Country: nl
Re: VIPER488 Symbiotic VISA
« Reply #7 on: October 16, 2026, 04:46:02 pm »
It would be incredible!
I put my USB-GPIB-HS up for sale because I couldn't stand NI-MAX installing 8GB of junk instead of just giving me a driver (and only for windows) :palm:
Looking forward!
Mine is collecting dust for the same reason, so now it can probably made to good use.

Benno
 

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #8 on: October 18, 2026, 12:46:58 pm »
Preview 0.1.259 is up: https://github.com/gamalot/viper488-visa/releases/tag/v0.1.259

Mostly about making problems easier to report:

  • The configuration window now has a Service and diagnostics page (Tools menu, or click the service status in the status bar). It shows whether the background service is running, lets you stop it to hand an adapter to another vendor's tool right away, shows the end of its log, and has a Make a diagnostics bundle button that writes a zip to your Downloads folder.
  • If something doesn't work, please attach that zip to your post or a GitHub issue. It has versions, settings, the log and the USB/serial devices seen, but no private keys. It does include serial numbers, addresses and aliases, so have a look before you share it.
  • If you installed an earlier preview, the page is switched on for you once. Set service = off in features.conf to hide it again.
  • The downloads are now named the same way on every platform: symbiotic-visa-<version>-<platform>-<arch>. The Linux package name hasn't changed, so apt upgrades an earlier install in place.

Windows x64 (MSI), Linux amd64 and arm64 (.deb), and macOS (universal .dmg). The install notes are the same as last time and are on the release page.
« Last Edit: October 18, 2026, 12:55:10 pm by gamalot »
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 
The following users thanked this post: Mickle T.

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #9 on: Yesterday at 07:21:16 am »
Preview 0.1.261 is up: https://github.com/gamalot/viper488-visa/releases/tag/v0.1.261

This one adds an I/O trace, for when you want to see what a program actually sends to an instrument:

  • The configuration window now has an I/O trace window (Tools → Open I/O trace…). It lists every VISA call from every program on this computer: which program, which instrument, which function, the status, how long it took and the data read or written. Much like NI I/O Trace or Keysight IO Monitor.
  • Tick Record to start. Closing the window stops recording, so it doesn't keep logging in the background after you've forgotten about it. You can filter the list, show only errors, copy the rows or export everything as text.
  • The trace files are capped at 64 MiB in total; the oldest are deleted first.
  • Making a diagnostics bundle, exporting the trace and exporting a picture pack now open a Save As dialog, so you can choose the folder and file name. It starts in Downloads with the usual name.
  • If you installed an earlier preview, the trace window is switched on for you once. Set trace = off in features.conf to hide it again.

Windows x64 (MSI), Linux amd64 and arm64 (.deb), and macOS (universal .dmg). The install notes are on the release page, same as before.
« Last Edit: Yesterday at 07:24:08 am by gamalot »
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 
The following users thanked this post: Mickle T., bsw_m

Online gamalotTopic starter

  • Super Contributor
  • ***
  • Posts: 1947
  • Country: au
  • Correct my English
    • Youtube
Re: VIPER488 Symbiotic VISA
« Reply #10 on: Today at 06:07:28 am »
Preview 0.1.262 is up: https://github.com/gamalot/viper488-visa/releases/tag/v0.1.262

This one makes an alias mean one particular instrument, not just whatever is at an address:

  • In the aliases window (Tools → Manage aliases…) each alias now has a lock button that binds it to the unit at its address. The window asks the instrument *IDN? once and remembers its manufacturer, model and serial number.
  • From then on, viOpen("DMM") checks that it is still that unit. If you moved it to another GPIB address or adapter, or DHCP gave it a new IP, the alias finds it there. If another instrument now sits at the old address, the alias won't open it under that name.
  • *IDN? is sent only when you click bind, never in a background scan. Instruments you've excluded from *IDN? can't be bound, and you can't bind an instrument while it's offline. USB instruments are checked by their descriptor, with no command at all. Serial ports are checked but not searched, because opening a port toggles DTR.
  • From the command line: symbiotic-ctl alias bind DMM / unbind DMM.
  • If you installed an earlier preview, binding is switched on for you once. Set alias_binding = off in features.conf to hide it again.

Windows x64 (MSI), Linux amd64 and arm64 (.deb), and macOS (universal .dmg). The install notes are on the release page, same as before.
I'm a poet, I didn't even know it. |  https://youtube.com/@gamalot | https://github.com/gamalot
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->