💾 Archived View for alaskalinuxuser.ddns.net › 2021-09-30.gmi captured on 2024-09-29 at 00:16:34. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Passing USB through to Qemu

">

95w, https://alaskalinuxuser3.ddns.net/wp-content/uploads/2021/07/aqemu-

300x194.png 300w, https://alaskalinuxuser3.ddns.net/wp-content/uploads/2021/07/

aqemu-768x496.png 768w" sizes="(max-width: 895px) 100vw, 895px" />

Lately I’ve been getting away from VirtualBox and back to using Qemu. If you

use the Aqemu gui to control qemu, it really is just as good, or in my opinion,

better than VirtualBox. But, as that is not the topic of this post, I’ll leave

my preferences to the side for now. I did, however, run into an odd problem

with Aqemu and Qemu when it came to a USB pass-through the other day, and I

thought I’d share my experience in hopes of helping out the next guy.

To best understand the issue, I’ll mention the goal and setup first. I wanted

to utilize my home server, which has 32 GB of ram and lots of computing

resources to also run a virtual machine that I can use for working with HAM

radio programs. Originally, I had a dedicated computer for this, but the issue

I came across was that I had a conflict between dependencies for two different

programs, meaning I could only install a dependency to do one or the other. My

mind wandered to virtual machines as an easy fix, as then I could load

whichever machine set up for either set of programs.

With that setup, I also need to pass through my SignaLink USB sound card and

radio controller to the virtual machine. Ordinarily, this would be quite

simple, as in Aqemu, you select Media, then USB, then the USB port you want and

choose the device on it that you need to pass through. But for some reason, it

would error saying it couldn’t find “usb.0”.

So I started working with Qemu manually on the command line to be better

situated to find and fix the error. No matter how hard I tried, using the

normal method of setting the id, the bus, and the address didn’t work, like

this:

-device piix3-usb-uhci,id=usb1,bus=pci.0,addr=0x5 \\

Instead, what I found to work really well was to specify the vendor and device

ID, like so:

-device usb-host,vendorid=0x08bb,productid=0x29c6 \\

Thanks be to God, that worked much better! Keep in mind, if you specify a

specific vendor and product ID like this, it must be present to start the VM or

it will error out. My finished command looked like this:

$ /usr/bin/qemu-system-x86_64 \\\n -monitor stdio \\\n -soundhw ac97 \\\n

-machine accel=kvm \\\n -m 8192 \\\n -hda /home/alaskalinuxuser/.aqemu/

Ubuntu20_HDA.img \\\n -boot order=adc,menu=on \\\n -net nic \\\n -net

user \\\n -usb \\\n -device usb-host,vendorid=0x08bb,productid=0x29c6

\\\n -rtc base=localtime \\\n -alt-grab \\\n -name "Ubuntu20"

Depending, you may need root permission or be part of a group to access certain

devices, such as directly stealing USB interfaces, KVM, etc. Hopefully that

helps the next guy trying to do something like this. And if you are a Linux

user running VirtualBox, you might give Qemu/Aqemu a try, I find it works much

faster and is very easy to script and configure.

Linux – keep it simple.