Bluetooth working on host but not in VM

linesquarecube

New Member
Jul 11, 2024
8
2
3
Germany
Hi, I've made my first steps with Proxmox today and ran into an issue with passing my Bluetooth to a VM.

Executing bluetoothctl on the host answers as expected with the controller and I can scan for devices. So I guess it is working properly.
Code:
root@pve:~# bluetoothctl
Agent registered
[CHG] Controller 3C:6A:A7:21:28:79 Pairable: yes
[bluetooth]#

To see where my internal Bluetooth adapter is connected, I've checked hciconfig -a. Result, it is a USB device.
Code:
root@pve:~# hciconfig -a
hci0:    Type: Primary  Bus: USB
         BD Address: 3C:6A:A7:21:28:79  ACL MTU: 1021:4  SCO MTU: 96:6
         UP RUNNING
         RX bytes:17309 acl:0 sco:0 events:2801 errors:0
         TX bytes:689113 acl:0 sco:0 commands:2799 errors:0
         Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
         Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
         Link policy: RSWITCH SNIFF
         Link mode: PERIPHERAL ACCEPT
         Name: 'pve'
         Class: 0x000104
         Service Classes: Unspecified
         Device Class: Computer, Desktop workstation
         HCI Version: 5.1 (0xa)  Revision: 0x100
         LMP Version: 5.1 (0xa)  Subversion: 0x100
         Manufacturer: Intel Corp. (2)

As mentioned in another thread, I've also checked lsusb to see the vendor and device id.
Code:
root@pve:~# lsusb
Bus 002 Device 005: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 002 Device 004: ID 0bda:0415 Realtek Semiconductor Corp. 2-Port USB 3.0 Hub
Bus 002 Device 003: ID 0bda:9210 Realtek Semiconductor Corp. RTL9210 M.2 NVME Adapter
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Bus 001 Device 004: ID 0bda:5415 Realtek Semiconductor Corp. 2-Port USB 2.0 Hub
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I've tried to add the USB Device via the web-interface by using the Vendor/Device ID as well as via command line using qm set 102 -usb0 host=8087:0aaa. After starting the VM, the Bluetooth device is no longer listed when executing lsusb on the host. I assume this is the expected behavior, as the device is now only available inside the VM. Unfortunately, the VM does not recognize the passed Bluetooth adapter. Executing lsusb on the VM gives me nothing I can work with further :(.
Code:
~ # lsusb
Bus 005 Device 001: ID 1d6b:0001
Bus 003 Device 001: ID 1d6b:0002
Bus 010 Device 001: ID 1d6b:0003
Bus 001 Device 001: ID 1d6b:0002
Bus 008 Device 001: ID 1d6b:0001
Bus 006 Device 001: ID 1d6b:0001
Bus 004 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0001
Bus 009 Device 001: ID 1d6b:0002
Bus 003 Device 002: ID 0627:0001
Bus 007 Device 001: ID 1d6b:0001

I very appreciate hints and help to get this working :)

Host is a Dell Wyse 5070
Proxmox Version 8.2.4
VM is Home Assistant installed with the guide provided in this thread with the qcow2 image
 
Have you also tested switching between USB2.0 and 3.0?
You can set this in WebUI too.

Did you see some usefull logmessages with journalctl?
 
Thanks for your answer. Unfortunately there is only a check box regarding USB 3.0 which I cannot untick.

1720795428986.png
Maybe unrelated: Is it normal that I have to reboot the host after I've passed the device to a VM in order to be able to pass it again? Removing the device from the VM doesn't bring it back to the host.

Checking joruncalctl regarding bluetooth without starting the VM, I can see some errors in the output:
Code:
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Waiting for firmware download to complete
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Firmware loaded in 1601014 usecs
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Waiting for device to boot
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Device booted in 13917 usecs
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Malformed MSFT vendor event: 0x02
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Applying Intel DDC parameters completed
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Firmware revision 0.1 build 173 week 5 2024
Jul 12 16:41:20 pve kernel: Bluetooth: hci0: HCI LE Coded PHY feature bit is set, but its usage is not supported.
Errors highlighted red: Jul 12 16:41:20 pve kernel: Bluetooth: hci0: Malformed MSFT vendor event: 0x02
Errors highlighted yellow: Jul 12 16:41:20 pve kernel: Bluetooth: hci0: HCI LE Coded PHY feature bit is set, but its usage is not supported.


When adding the device via webinterface, journalctl shows:
Code:
Jul 12 17:06:18 pve pvedaemon[1002]: <root@pam> update VM 100: -usb0 host=8087:0aaa

When I start the VM, journalctl shows some errors regarding Bluetooth and USB interfaces which I think are related to passing the Bluetooth adapter:
Code:
Jul 12 17:08:38 pve pvedaemon[5378]: start VM 100: UPID:pve:00001502:000282BA:669146F6:qmstart:100:root@pam:
Jul 12 17:08:38 pve pvedaemon[1002]: <root@pam> starting task UPID:pve:00001502:000282BA:669146F6:qmstart:100:root@pam:
Jul 12 17:08:38 pve systemd[1]: Created slice qemu.slice - Slice /qemu.
Jul 12 17:08:38 pve systemd[1]: Started 100.scope.
Jul 12 17:08:40 pve kernel: tap100i0: entered promiscuous mode
Jul 12 17:08:40 pve kernel: vmbr0: port 2(tap100i0) entered blocking state
Jul 12 17:08:40 pve kernel: vmbr0: port 2(tap100i0) entered disabled state
Jul 12 17:08:40 pve kernel: tap100i0: entered allmulticast mode
Jul 12 17:08:40 pve kernel: vmbr0: port 2(tap100i0) entered blocking state
Jul 12 17:08:40 pve kernel: vmbr0: port 2(tap100i0) entered forwarding state
Jul 12 17:08:40 pve kernel: Bluetooth: hci0: urb 0000000054caa28f failed to resubmit (2)
Jul 12 17:08:40 pve bluetoothd[625]: Destroy Adv Monitor Manager
Jul 12 17:08:40 pve bluetoothd[625]: Battery Provider Manager destroyed
Jul 12 17:08:40 pve systemd[1]: Starting systemd-rfkill.service - Load/Save RF Kill Switch Status...
Jul 12 17:08:40 pve systemd[1]: Stopped target bluetooth.target - Bluetooth Support.
Jul 12 17:08:40 pve systemd[1]: Started systemd-rfkill.service - Load/Save RF Kill Switch Status.
Jul 12 17:08:40 pve pvedaemon[1002]: <root@pam> end task UPID:pve:00001502:000282BA:669146F6:qmstart:100:root@pam: OK
Jul 12 17:08:45 pve systemd[1]: systemd-rfkill.service: Deactivated successfully.
Jul 12 17:08:47 pve kernel: usb 1-9: reset full-speed USB device number 5 using xhci_hcd
Jul 12 17:08:50 pve kernel: usb 1-9: USB disconnect, device number 5
Jul 12 17:08:50 pve QEMU[5390]: kvm: libusb_release_interface: -4 [NO_DEVICE]
Jul 12 17:08:50 pve QEMU[5390]: kvm: libusb_release_interface: -4 [NO_DEVICE]
Jul 12 17:08:51 pve kernel: usb 1-9: new low-speed USB device number 6 using xhci_hcd
Jul 12 17:08:51 pve kernel: usb 1-9: device descriptor read/64, error -71
Jul 12 17:08:51 pve kernel: usb 1-9: device descriptor read/64, error -71
Jul 12 17:08:51 pve kernel: usb 1-9: new low-speed USB device number 7 using xhci_hcd
Jul 12 17:08:51 pve kernel: usb 1-9: device descriptor read/64, error -71
Jul 12 17:08:51 pve kernel: usb 1-9: device descriptor read/64, error -71
Jul 12 17:08:52 pve kernel: usb usb1-port9: attempt power cycle
Jul 12 17:08:52 pve kernel: usb 1-9: new low-speed USB device number 8 using xhci_hcd
Jul 12 17:08:52 pve kernel: usb 1-9: Device not responding to setup address.
Jul 12 17:08:52 pve kernel: usb 1-9: Device not responding to setup address.
Jul 12 17:08:52 pve kernel: usb 1-9: device not accepting address 8, error -71
Jul 12 17:08:52 pve kernel: usb 1-9: new low-speed USB device number 9 using xhci_hcd
Jul 12 17:08:52 pve kernel: usb 1-9: Device not responding to setup address.
Jul 12 17:08:53 pve kernel: usb 1-9: Device not responding to setup address.
Jul 12 17:08:53 pve kernel: usb 1-9: device not accepting address 9, error -71
Jul 12 17:08:53 pve kernel: usb usb1-port9: unable to enumerate USB device

Errors highlighted red:
Jul 12 17:08:40 pve kernel: Bluetooth: hci0: urb 0000000054caa28f failed to resubmit (2)
Jul 12 17:08:50 pve QEMU[5390]: kvm: libusb_release_interface: -4 [NO_DEVICE]
Jul 12 17:08:51 pve kernel: usb 1-9: device descriptor read/64, error -71
Jul 12 17:08:52 pve kernel: usb 1-9: device not accepting address 8, error -71
Jul 12 17:08:53 pve kernel: usb 1-9: device not accepting address 9, error -71
Jul 12 17:08:53 pve kernel: usb usb1-port9: unable to enumerate USB device

Errors highlighted yellow:
Jul 12 17:08:52 pve kernel: usb 1-9: Device not responding to setup address.

If it helps, I've attached the complete journalctl output since last boot before starting the VM and handing over the USB device.

Thank you for help :)
 

Attachments

Last edited:
After some more research, I found out that this is maybe a hardware related problem, even if the WIFI-Bluetooth card is working properly on the host. Out of curiosity, I've installed the WIFI-Bluetooth card from my laptop in the Wyse 5070, and lo and behold, the passthrough to the virtual machine worked flawlessly.

I will receive an exchange card within this week and will respond if the setup also works with this card.

Nevertheless, a big thank you @fireon for taking the time to help me and for pointing me in the right direction for troubleshooting. I truly appreciate your support and expertise.
 
  • Like
Reactions: Kingneutron
Maybe unrelated: Is it normal that I have to reboot the host after I've passed the device to a VM in order to be able to pass it again? Removing the device from the VM doesn't bring it back to the host.
No, normaly not. This should work on the fly.

After some more research, I found out that this is maybe a hardware related problem, even if the WIFI-Bluetooth card is working properly on the host. Out of curiosity, I've installed the WIFI-Bluetooth card from my laptop in the Wyse 5070, and lo and behold, the passthrough to the virtual machine worked flawlessly.
This sounds good :cool:. Nice that you have found the solution. Very good!

I will receive an exchange card within this week and will respond if the setup also works with this card.
I'm curious already...
 
Last edited:
Please excuse me, I haven't given any feedback for a long time.

After the replaced WiFi card didn't work, the entire computer was exchanged. However, this also didn't solve the problem initially. After countless hours of trial and error, I realized that I had been repeatedly trying to create the VM using a script from tteck or with the provided VM image from Home Assistant.

I then simply tried to install plain Debian, and voila, it worked immediately to pass Bluetooth to the VM. As a second step, I installed Home Assistant Supervised, and I had no problems with this either.

So, if anyone else has encountered Bluetooth forwarding issues with Home Assistant installed via the tteck script or the official qcow2 image, consider trying a manual installation on Debian instead.
 
  • Like
Reactions: thuantan2060

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!