The QA402 software binaries are hosted on GitHub here. Theoretically, the images should run as-in on Linux and Mac under Mono. Most of the time, we’re all used to downloading different images based on our platform (and sometimes there’s even an image for x32 and x64 machines). But the tools folks (Android, Java and DotNet) are working hard to make single image a real thing, from phones to desktop–it just all works with a single image. Now, that’s still some ways off (see MSFT MAUI for what is next up in the queue) but it’s helpful on background to understand where things are headed.
Right now, the idea is a single image that works on desktops (Win, Linux, Mac). The executable is the same for all. This requires some up-front planning, mostly related to file system differences and also making sure that libraries are not being used that aren’t replicated on other platforms.
C# and DotNet and mono enable most of this. And LibUSB is the other piece of the puzzle. On Windows, LibUsb relies on WinUSB. And with the QA402, we’ve moved to a driverless install (the OS knows what to do based on advanced descriptors). And then for non-Windows platforms, LibUSB switches out the bottom half of the stack and just works.
OK, so what are going to be the issues? We’ll, the first are UI artifacts. We’ll need to address these as they come up (and you can see this in the Ubuntu image below). But those hopefully aren’t too hard but it will take time to get things cleaned up. Second, there are going to be weird issue that are hard to replicate. Finally, there will be issues related to refinement and polish (things like installers). Windows will have them from the start, but other platforms might not.
For now, if you’d like to try the QA402 software on Linux or Mac, you can try the following steps:
-
Download the EXE and install it on a PC (if you don’t have any way to do this, we could send a zip of the directory). The aim here is to get an image that you can put on your non-Windows machine. The app doesn’t use the registry or config files. It’s just a single EXE, a PDF and some sample files.
-
Install Mono. The install starting point is located here
-
With the QA402 unplugged, open a command shell/terminal and navigate to the install directory you made above. Type
mono QA40x.exe
The application should launch. Go to Help->Generate Linux USB Install Script
This will ask for a location where a .README file can be saved. The readme contents are also shown below:
# The steps needed to make the Audio Analyzer known to
# Linux are shown below. You might need to tweak
# depending on your platform
#
# Install MONO
# See https://www.mono-project.com/docs/getting-started/install/linux/
#
# Install LibUSB. This might be already installed.
# sudo apt-get install libusb-1.0-0
#
# Make the hardware known to the OS. The QA402 VID:PID is 0x16C0:4E37
# sudo sh -c 'echo "SUBSYSTEM ==\"usb\", ATTRS{idVendor}==\"16c0\", ATTRS{idProduct}==\"4e37\", MODE=\"0666\"" > /etc/udev/rules.d/51 - qa402.rules'
# cat /etc/udev/rules.d/51-qa402.rules
# sudo udevadm control --reload-rules
You will probably need to tweak the above based on your platform (this field has been plowed before by others, and their experiences for the QA401H application are here which might help.
Plugging in the QA402 and re-starting the app on Ubuntu shows the following:
You can see the this ran for ~350 updates before I stopped it. It’s still very fragile, but the fragility isn’t so much the USB as it is the UI. In the screenshot above, you can see the command bar is tiled (and partially replicated). Also, you need to click a control before you can scroll the control panel with your mouse (which is different than the PC version).
But you should see the REST server seems to work fine and automated tests run (but the graph doesn’t display for some reason). But it’s not a bad starting point.
In any case, give it a try and share your thoughts.