QA401H on VirtualBox

The purpose of this post is to outline the steps required to get QA401H running on Ubuntu 18.04.3 via VirtualBox. It’s likely not interesting or important to most except for those that are doing the development on a Linux guest platform in a VM on a Windows Host.

  1. Install VirtualBox 6.1.2
  2. Install Ubuntu 18.04.3. Use 4 procs and 4G of RAM.
  3. Install add-ons (also 18.04.3) for the guest OS
  4. Install add-ons (also 18.04.3) for the host OS
  5. Enabled bidirectional copy/paste (general settings), VMSVGA (display settings), USB 2.0 or USB 3.0 (try USB 2.0 first)
  6. Restart the VM
  7. Follow MSFT instructions HERE for installing DotNet Core on Ubutnu 18.04. You only need to install the .NET Core Runtime, and make sure it’s version 3.1
  8. Make the QA401 hardware known to the OS:
sudo sh -c 'echo "SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"16c0\", ATTRS{idProduct}==\"4e27\", MODE==\"0666\"" > /etc/udev/rules.d/51-qa401.rules'
cat /etc/udev/rules.d/51-qa401.rules
sudo udevadm control --reload-rules
  1. Unzip the QA401 package into the directory of choice
  2. Navigate to that directory and type
dotnet QA401H.dll
  1. You will probably see an error that the libusb library cannot be found. This library (libusb) is installed by default on the Ubuntu 16.04 and 18.04. What is likely happening is that the dotnet Core runtime cannot find it. Read more about that and how to fix it here here. The upshot is you probably will need to issue:
cd /lib/x86_64-linux-gnu
sudo ln -s
  1. Plug in the QA401 hardware, and try again. The error about libusb should be gone, but now you’ll likely see a message “Device Not Found”. This is because we need to capture the device from the host OS.

  2. On the USB icon on the bottom right of the VirtualBox guest OS, right click on the USB and click to capture the QA401 hardware. It might show up as “Van Ooijen” or QuantAsylum.

  3. Once captured, type ‘lsusb’ and you should see something similar to the following. What you are looking for is the VID:PID of 0x16C0:0x4E27.


  1. The above means that the system has captured and recognizes the hardware. Next, create a USB filter that appears as follows. This will tell VirtualBox to automatically capture any hardware with the matching VID:PID. Once you have this setup correctly, plugging in the hardware will result in it being automatically captured and you will see a checkbox appear next to the hardware whenever you right click on the USB icon in the lower right.

  1. Now, plugin the QA401 hardware and run the QA401H.dll app. You should see the QA401 get configured, and start listening on the 9401 socket. The LINK LED should glow.


At this point, you can use your browser and go to http://localhost:9401 to get the API for the QA401H:


And if you use your brower to browse to the Version page, you should see the following returned:



The steps above outline how to get the QA401H application running Ubuntu under a VM host on a Win10 machine. This can be useful if you need to develop for a Linux install (for factory) on your Win10 desktop.