USB Headset

158 views
Skip to first unread message

Stephan Marwedel

unread,
Apr 1, 2017, 12:20:40 PM4/1/17
to qubes...@googlegroups.com
Dear Qubes user community,

I want to use a USB headset (Jabra Evolve) for the purpose of using my
laptop as a replacement for a desktop phone. Is that possible with
Qubes? If so, what are the settings I need to tweak for that?

Can I use it also inside a Windows HVM to enable the use of proprietary
conferencing software from Cisco? I have tried it using a Windows VM
with VirtualBox on CentOS 7. That worked, although the audio quality is
pretty bad. Do I need special settings for my Windows HVM in order to
use the headset?

Regards,
Stephan

Vít Šesták

unread,
Apr 1, 2017, 4:43:12 PM4/1/17
to qubes-users
Well, this is not going to be so straightforward.

For using it with Qubes (but not with Windows), the easiest way is to connect it to an USB controller connected to dom0 (provided you trust the device enough). Well, it depends how many USB controllers you have etc. If you have two USB controllers, you can assign one to dom0 and one to sys-usb. If you have just one USB controller, then you have to assign all USB devices to dom0, or assign all USB devices to sys-usb. Unfortunately, this will not work on Windows, because Windows has no drivers for Qubes audio.

Alternatively, you can connect the device to a controller connected to USBVM (probably sys-usb) and then connect the USB device to the VM you need through qvm-usb. This implies less trust to the device, but the audio from/to the device works just for one VM.

The third way is assigning whole USB controller to a VM you need the USB device in. You will probably have no reason to prefer it over the first two options on Linux, but it can be useful in Windows. Unfortunately, this can be problematic:

* I am not sure how well it works with HVMs in current release. I remember there were some issues, but I don't know if they are resoolved or not.
* PCI pass-through currently requires VT-d support or usage of PVMs. Note that PVMs cannot be used with Windows, so you will probably need VT-d.

Regards,
Vít Šesták 'v6ak'

Grzesiek Chodzicki

unread,
Apr 1, 2017, 6:19:03 PM4/1/17
to qubes-users, stephan....@tu-ilmenau.de
I did a similar thing with my sound card that requires proprietary Windows only drivers to operate.
First, check whether VT-d is available and enabled on your laptop with xl dmesg|grep VT-d
Second, identify the number of available USB controllers with sudo lspci|grep USB. If you have more than one controller, assign it to Windows HVM.
Within Windows HVM install USB controller driver (if it's a USB 3.0 or later) and then install drivers for the headset (if required).
I am able to use the soundcard in the Windows HVM with no problems so you should too. Remember to enable VT-d in BIOS/UEFI first.

Vít Šesták

unread,
Apr 2, 2017, 3:07:49 AM4/2/17
to qubes-users
Note that even having multiple USB controllers does not imply a win. Some controllers might be just internal (for integrated webcam, touchscreen etc.) and some might be needed for another purposes (e.g., keyboard attached to dom0, phone attached to sys-usb, …).

Vít Šesták

unread,
Apr 2, 2017, 3:11:05 AM4/2/17
to qubes-users
Forgot to mention:

AFAIR, Qubes 4.0 will have Linux-based stubdoms. Maybe they will support USB passthrough or even sound directly. I am not 100% sure about it, but Linux-based stubdom seems to be a step towards those features.

Regards,
Vít Šesták 'v6ak'

Stephan Marwedel

unread,
Apr 3, 2017, 2:45:19 PM4/3/17
to Grzesiek Chodzicki, qubes-users
I tried to configure my system like described below. I stopped the
sys-usb VM and assigned the USB controller to which the headset is
connected to the Windows HVM. When trying to start it the following
error appears:

--> Loading the VM (type = HVM)...
Traceback (most recent call last):
File "/usr/bin/qvm-start", line 136, in <module>
main()
File "/usr/bin/qvm-start", line 120, in main
xid = vm.start(verbose=options.verbose,
preparing_dvm=options.preparing_dvm, start_guid=not options.noguid,
notify_function=tray_notify_generic if options.tray else None)
File
"/usr/lib64/python2.7/site-packages/qubes/modules/01QubesHVm.py", line
335, in start
return super(QubesHVm, self).start(*args, **kwargs)
File
"/usr/lib64/python2.7/site-packages/qubes/modules/000QubesVm.py", line
1966, in start
self.libvirt_domain.createWithFlags(libvirt.VIR_DOMAIN_START_PAUSED)
File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1059, in
createWithFlags
if ret == -1: raise libvirtError ('virDomainCreateWithFlags()
failed', dom=self)
libvirt.libvirtError: internal error: Unable to reset PCI device
0000:00:14.0: no FLR, PM reset or bus reset available

I tried to connect the headet to a different USB controller and assign
that to the Windows HVM to no avail:

--> Loading the VM (type = HVM)...
Traceback (most recent call last):
File "/usr/bin/qvm-start", line 136, in <module>
main()
File "/usr/bin/qvm-start", line 120, in main
xid = vm.start(verbose=options.verbose,
preparing_dvm=options.preparing_dvm, start_guid=not options.noguid,
notify_function=tray_notify_generic if options.tray else None)
File
"/usr/lib64/python2.7/site-packages/qubes/modules/01QubesHVm.py", line
335, in start
return super(QubesHVm, self).start(*args, **kwargs)
File
"/usr/lib64/python2.7/site-packages/qubes/modules/000QubesVm.py", line
1958, in start
nd.dettach()
File "/usr/lib64/python2.7/site-packages/libvirt.py", line 5249, in
dettach
if ret == -1: raise libvirtError ('virNodeDeviceDettach() failed')
libvirt.libvirtError: Requested operation is not valid: PCI device
0000:00:1d.0 is in use by driver xenlight, domain AIB

What did I miss in my configration? I have VT-d and VT-x enabled (I'm on
a i7-3520M CPU).

Grzesiek Chodzicki

unread,
Apr 3, 2017, 2:46:49 PM4/3/17
to qubes-users, grzegorz....@gmail.com, stephan....@tu-ilmenau.de
run qvm-pci -s sys-usb pci_strictreset false then reboot the physical machine and try again

Stephan Marwedel

unread,
Apr 11, 2017, 12:25:09 PM4/11/17
to Grzesiek Chodzicki, qubes-users
Thank you for the hints. When assigning the USB controller to the
Windows HVM not error messages are displayed anymore. BTW, it is
difficult to figure out which USB controller to assign to the Windows HVM.

However, the USB headset does not appear as a device in Windows, so the
appropriate driver is not installed and I cannot assign it as
input/output device in my conferencing software. Do I need anything on
the Windows side as well? Is it necessary to install the Qubes Windows
Tools to have USB audio functionalty? I do not have them installed
currently.

Grzesiek Chodzicki

unread,
Apr 11, 2017, 12:44:03 PM4/11/17
to qubes-users, grzegorz....@gmail.com, stephan....@tu-ilmenau.de
You need to install the USB controller drivers (check the laptop/motherboard manufacturer's page for those) for them to work in the VM.
Reply all
Reply to author
Forward
0 new messages