Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Unraid is constantly saying Bluetooth: hci0: Hardware error

Featured Replies

For the last couple of weeks I've noticed my drives are not spinning down. They've been working fine for months so I'm rather confused on what has changed.

I started with file activity logs, and saw nothing is running 24/7, so that should rule that out. I think checked my system logs and found a constant Bluetooth: hci0: Hardware error 0x0a being sent every second.

I only use BT for home assistant. The handful of BT devices I have from switchbot are all showing in HA, and appear to be working as expected.

I've attached my diagnostics. Anyone have any idea what could be causing this?

joshflix-diagnostics-20250915-1545.zip

  • Community Expert

ignore it or pass the Bluetooth into a vm/docker that can use it like home assistant that will always stay running...

Its mostlikely a modprbe or usb reset error due to unraid linux slack kernal and the missing host unraid packages are not installed.

To use and see bluetooth, that why you see errors. I bleve the 3rd party packages whcih requires gui boot mode is called blueman to utilize and use bluetooth on unraid host.

Given the post... you could have a usb bind or other isseus with passing your device given the info presented...

  • Community Expert

Sep 15 04:40:13 JOSHFLIX kernel: Bluetooth: hci0: Exception info

Sep 15 04:40:13 JOSHFLIX kernel: Bluetooth: hci0: Hardware error 0x0a

this looks like a improper vm pass and usb power stae error using usb bluetooth with a vm/docker.
please review:

https://www.youtube.com/watch?v=ZXvcdI3mQuA

https://www.youtube.com/watch?v=UilWLtMYd-U
https://www.reddit.com/r/unRAID/comments/1fsgvlt/video_guide_install_home_assistant_vm_on_unraid/
https://www.reddit.com/r/unRAID/comments/lw8f0l/how_to_set_up_home_assistant_on_unraid/

if using Home assistnat while there are CA dockers you realy should use teh HA VM.

https://community.home-assistant.io/t/ha-os-on-unraid/59959
https://community.home-assistant.io/t/install-home-assistant-as-a-vm-on-unraid/270195

https://youtu.be/-EAbiMkrcFE?si=sXLpEbvQmg8V-HKc

https://github.com/home-assistant/operating-system/releases

where its easeer to gui select your bluethooth device for the VM only.

  • Author
17 minutes ago, bmartino1 said:

Sep 15 04:40:13 JOSHFLIX kernel: Bluetooth: hci0: Exception info

Sep 15 04:40:13 JOSHFLIX kernel: Bluetooth: hci0: Hardware error 0x0a

this looks like a improper vm pass and usb power stae error using usb bluetooth with a vm/docker.
please review:

https://www.youtube.com/watch?v=ZXvcdI3mQuA

https://www.youtube.com/watch?v=UilWLtMYd-U
https://www.reddit.com/r/unRAID/comments/1fsgvlt/video_guide_install_home_assistant_vm_on_unraid/
https://www.reddit.com/r/unRAID/comments/lw8f0l/how_to_set_up_home_assistant_on_unraid/

if using Home assistnat while there are CA dockers you realy should use teh HA VM.

https://community.home-assistant.io/t/ha-os-on-unraid/59959
https://community.home-assistant.io/t/install-home-assistant-as-a-vm-on-unraid/270195

https://youtu.be/-EAbiMkrcFE?si=sXLpEbvQmg8V-HKc

https://github.com/home-assistant/operating-system/releases

where its easeer to gui select your bluethooth device for the VM only.

I am running it in a VM already. I used the HA in a box docker from spaceinvader that sets it up as a VM. You can see I've checked the bluetooth device in my screenshot. image.png

I've really have two problems, one the bluetooth error, which I can ignore if it's not what's causing my other issue, which is my drives will not stay spun down. They keep getting pinged every few seconds even though file activity shows nothing is being accessed. I thought the two might be related.

  • Community Expert

good as the diag don't tell the full story and what was givein was limited.
ok we can confirm this is a VM devcie pass isue and we are refering to HA as the VM not a docker...

the spam in the log is most likely when the vm was turned off and the devce didn't power cycle or take the mvoing form the host tot eh vm corectly.

have you alread restarted the host unraid?

yo may need to run adational gube modprb comnds and have a user script to reset the bluetotth devcie whent eh vm turns of or when its in use with the vm as the host dind't pass it corectly to the VM.

What are your VM Settings?
image.png

the dig ddin't show a good lspci

you should rely bind the bluetooth devie out.

main > flash>
to edit unriad host grub boot options...
example:
image.png

so what i recomend for adational grub boot loading to fix this and restart unraid is:
modprobe.blacklist=btusb,btintel,btrtl,btbcm

to stop the host form loading bluetooth out right at bootand pasing the device id per your picture toteh xml code to passs the device for use int eh vm only

<hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
    <vendor id='0x8087'/>
    <product id='0x0aaa'/>
  </source>
</hostdev>

if you have the user script plugin tool this script might work taht wil acomplish this...

#!/bin/bash
# Detach Intel BT (8087:0aaa) from any host driver and hot-attach to a VM if running.
VENDOR="8087"
PRODUCT="0aaa"
VM_NAME="Windows 11"   # <-- set your VM name exactly
# 1) Try to unbind interfaces of the matching USB device from any driver (e.g. btusb)
for dev in /sys/bus/usb/devices/*; do
  [[ -f "$dev/idVendor" && -f "$dev/idProduct" ]] || continue
  if [[ "$(cat "$dev/idVendor")"  "$VENDOR" && "$(cat "$dev/idProduct")"  "$PRODUCT" ]]; then
    for ifpath in "$dev":*; do
      [[ -e "$ifpath/driver/unbind" ]] || continue
      intf="$(basename "$ifpath")"
      echo "$intf" > "$ifpath/driver/unbind" 2>/dev/null
    done
    # prevent auto-rescan/rebind on host
    [[ -w "$dev/authorized" ]] && echo 0 > "$dev/authorized"
  fi
done
# 2) If the VM is already up, hot-plug the USB device into it
cat >/tmp/usb-bt.xml <<EOF
<hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
    <vendor id='0x${VENDOR}'/>
    <product id='0x${PRODUCT}'/>
  </source>
</hostdev>
EOF
if command -v virsh >/dev/null 2>&1; then
  if virsh domstate "$VM_NAME" 2>/dev/null | grep -qi running; then
    virsh attach-device "$VM_NAME" /tmp/usb-bt.xml --live
  fi
fi
echo "Bluetooth ${VENDOR}:${PRODUCT} detached from host and attached to ${VM_NAME} (if running)."

Some FAQs / gotchas

  • Why not vfio-pci?
    Intel Bluetooth shows up as a USB device (8087:0aaa), so vfio-pci doesn’t apply. vfio-pci is for PCIe devices (USB controllers can be PCIe, but this BT module itself is USB).

  • Do I need ACS override / unsafe interrupts?
    No. Those are for PCIe passthrough. Not needed for a raw USB device.

  • Still seeing logs?
    Make sure btusb is blacklisted (either via the file or append) and rebooted. You can verify with:

lsmod | grep bt

need more info to asist otherwise...

Edited by bmartino1
code script blox issue

  • Author
11 minutes ago, bmartino1 said:

good as the diag don't tell the full story and what was givein was limited.
ok we can confirm this is a VM devcie pass isue and we are refering to HA as the VM not a docker...

the spam in the log is most likely when the vm was turned off and the devce didn't power cycle or take the mvoing form the host tot eh vm corectly.

have you alread restarted the host unraid?

yo may need to run adational gube modprb comnds and have a user script to reset the bluetotth devcie whent eh vm turns of or when its in use with the vm as the host dind't pass it corectly to the VM.

What are your VM Settings?
image.png

the dig ddin't show a good lspci

you should rely bind the bluetooth devie out.

main > flash>
to edit unriad host grub boot options...
example:
image.png

so what i recomend for adational grub boot loading to fix this and restart unraid is:
modprobe.blacklist=btusb,btintel,btrtl,btbcm

to stop the host form loading bluetooth out right at bootand pasing the device id per your picture toteh xml code to passs the device for use int eh vm only<hostdev mode='subsystem' type='usb' managed='yes'><source>
    <vendor id='0x8087'/>
    <product id='0x0aaa'/></source></hostdev>

if you have the user script plugin tool this script might work taht wil acomplish this...

#!/bin/bash# Detach Intel BT (8087:0aaa) from any host driver and hot-attach to a VM if running.
VENDOR="8087"
PRODUCT="0aaa"
VM_NAME="Windows 11"   # <-- set your VM name exactly# 1) Try to unbind interfaces of the matching USB device from any driver (e.g. btusb)for dev in /sys/bus/usb/devices/*; do
  [[ -f "$dev/idVendor" && -f "$dev/idProduct" ]] || continueif [[ "$(cat "$dev/idVendor")"  "$VENDOR" && "$(cat "$dev/idProduct")"  "$PRODUCT" ]]; then
    for ifpath in "$dev":*; do
      [[ -e "$ifpath/driver/unbind" ]] || continue
      intf="$(basename "$ifpath")"
      echo "$intf" > "$ifpath/driver/unbind" 2>/dev/null
    done
    # prevent auto-rescan/rebind on host
    [[ -w "$dev/authorized" ]] && echo 0 > "$dev/authorized"fidone# 2) If the VM is already up, hot-plug the USB device into itcat >/tmp/usb-bt.xml <<EOF
<hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
    <vendor id='0x${VENDOR}'/>
    <product id='0x${PRODUCT}'/>
  </source>
</hostdev>
EOFif command -v virsh >/dev/null 2>&1; thenif virsh domstate "$VM_NAME" 2>/dev/null | grep -qi running; then
    virsh attach-device "$VM_NAME" /tmp/usb-bt.xml --live
  fifiecho "Bluetooth ${VENDOR}:${PRODUCT} detached from host and attached to ${VM_NAME} (if running)."

Some FAQs / gotchas

  • Why not vfio-pci?
    Intel Bluetooth shows up as a USB device (8087:0aaa), so vfio-pci doesn’t apply. vfio-pci is for PCIe devices (USB controllers can be PCIe, but this BT module itself is USB).

  • Do I need ACS override / unsafe interrupts?
    No. Those are for PCIe passthrough. Not needed for a raw USB device.

  • Still seeing logs?
    Make sure btusb is blacklisted (either via the file or append) and rebooted. You can verify with:

lsmod | grep bt

need more info to asist otherwise...

Here are my VM settings.

image.png

I've also power cycled a few times and nothing changes.

As for the user script, just to make sure I'm not missing something, I just need to add that as a script, reboot and see if that fixes it? Do I need to modify it in any way?

Also, do you think this could be what is causing my disks to stay spun up? That's the real thing I'm trying solve for.

Edited by ShadohStorm

  • Community Expert

you will need to add this to the main grub boot launch
modprobe.blacklist=btusb,btintel,btrtl,btbcm

and run my script posted above yes.

this is because unraids kerneal is trying to touch and load apart of the bluetooth device even though you are planning to pass it to a VM.
this is to stop the host unraid form touching the devices meant for other arears.

Edited by bmartino1

  • Author
12 hours ago, bmartino1 said:

you will need to add this to the main grub boot launch
modprobe.blacklist=btusb,btintel,btrtl,btbcm

and run my script posted above yes.

this is because unraids kerneal is trying to touch and load apart of the bluetooth device even though you are planning to pass it to a VM.
this is to stop the host unraid form touching the devices meant for other arears.

Sorry, I've never done this before. Am I modifying it here?

default menu.c32

menu title Lime Technology, Inc.

prompt 0

timeout 50

label Unraid OS

menu default

kernel /bzimage

append modprobe.blacklist=btusb,btintel,btrtl,btbcm initrd=/bzroot

label Unraid OS GUI Mode

kernel /bzimage

append initrd=/bzroot,/bzroot-gui

label Unraid OS Safe Mode (no plugins, no GUI)

kernel /bzimage

append initrd=/bzroot unraidsafemode

label Unraid OS GUI Safe Mode (no plugins)

kernel /bzimage

append initrd=/bzroot,/bzroot-gui unraidsafemode

label Memtest86+

kernel /memtest

If not, are there instructions somewhere on how to add it?

Edited by ShadohStorm

  • Community Expert

ok so let me clarify it then. Thank you for asking as I don't alwys go into great depth as it can be alot.... as this is advanced linux stuff...

The goal atm is to tell the host unraid kernel not to load the Bluetooth drivers.

Since this is kinda a mutable os. (run in ram and things are loaded off the usb... we have to run scripts or edit things at boot to apply some settings to stay at a reboot or apply to the system.
Unraid loads and exists in ram...


if you don't want to edit grub as explained before above. We can try the modprobe file action. As there are many ways to accomplish the same things...

you can make a file at /boot/config/modprobe.d/blacklist-bt.conf


# Keep host from binding the onboard BT so we can pass it to a VM

blacklist btusb

blacklist btintel

blacklist btrtl

blacklist btbcm


after making the file you will need to reboot to apply it.

This can also be seen in the GUI via tool > system drivers

image.png

I find it easier to tell grub this additional boot option then trying to mess with unraids modprobe configurations and adding stuff to the flash drive to edit the linux default drivers....

So, as I prefer the syslinux route and add options to grub at the boot screen, in Main → Flash → Syslinux add to the append line:

if you go to main flash and scroll to the bottom, you will see the system Linux grub area.
<unraid IP>/Main/Flash?name=flash

and scroll to the very bottom:


image.png

I would leave the top syslinux configuration alone. we only care about the green box. this is are default boot options for unraid and also where one can enable or disable UEFI boot via the unraid gui.

as noted in my system's setup I have additional grub options I run and configurations for each machine I run linux on depending on needed use case and to set specific options...

image.png

the bear min here in the boxes to boot unraid is

kernel /bzimage

append initrd=/bzroot


note the gui option below has adationail line for intrid to load the gui stuff... note my picture above and how I have additional data after the initrd....

Some web ui settings like the VM settings add grub options here so at boot here is where one can leverage linux to turn on or off features. here, we can leverage at boot configurations for modprobe to turn on or off device drivers

If you have something in the green box as I default to default boot (with uefi). Some use gui mode... we want to add to the append line in that box.... so here i want you to add the modprobe gurb option that will blacklist (disable) the devices that use thoese drivers.

if you run in terminal lspci -a

you will see at the bottom of your device a driver in use. We are essential telling unraid to never use or load that driver.

Since this is a usb Bluetooth I believe the command is lsusb -a where you can see the Bluetooth device.
Ideally we want the device to use vfio-pci for pce devices for VM only use... but since this is USB and not PCI we have to go a different route.

so at this grub area option I want you to replace the UNRAID OS green box contents with this:

kernel /bzimage

append initrd=/bzroot modprobe.blacklist=btusb,btintel,btrtl,btbcm

*If you have soemthing int he box already let me know as this may chage what need to be in this box!!!

then click apply at the end.

image.png

you can see my grub boot line as example:
kernel /bzimage

append initrd=/bzroot intel_iommu=on iommu=pt nvme_core.default_ps_max_latency_us=5500 default_hugepagesz=1G hugepagesz=1G transparent_hugepage=always pci=noaer pcie_aspm=off

all of the theses options affect my running hardware and are used to fin tune some options for the host for my use case. Some are forced to default on by unraid. Other help Virtualization and side bugs. Other turn off things that I don't want on to begin with.

In your case, I just want the host to not use the Bluetooth modprobe. There is technical a terminal command but i rather this be default off off. And not deal with any lingering issues after a reboot.

This is one to target Bluetooth as we belvie that its the bluetooth device giving you the spam in the logs... (I want a rebooted machine with theses options and diag...)

then post a updated diag file. As the cmdline will tel me if you ran it or not and potential give me the other necessary data to double-check that we got the device

image.png
example infor for your lsusb as this is your bluetooth device...
Bus 001 Device 007: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)

as we want to target this device for vm use...


Then using a hook script that I shared above with the data given we can tell the host to find your usb via its vendor data and attach it to the VM in question.


As normaly I deal with the pcie devices and that level... but the same concepts and principles apply here. we also have other options as well...


since the spam of the log let bring down the device...

Bring the controller down (if it exists) and unbind the USB interfaces

try to run command hciconfig hci0 down 2>/dev/null || true

*At least this is what would work in debain. unraid runs on slackware. Since i don't have access to the affect machine nor the hardware, I can only go over things I would do to get to the bottom of xyz...

lspci -nn | grep -i usb

# example: 00:14.0 USB controller: Intel Corporation ... [8086:a2af]

(which i have that need to clarify the device...)

and lsusb as shown per your diag....

I would potential add adational grub options like
usbcore.autosuspend=-1 to stop usb power management and usb sleep states. and things like vfio-pci.ids=8086:a2af intel_iommu=on iommu=pt but this would require unraid vm setting for ACLS that would add something like pcie_acs_override=downstream,multifunction to the green box...


but this in theory would only remote the port to port pass the device to the VM and is a bit convoluted. which is why I'm trying to start small and get you to point a test check and then to point b.
With the devices black listed, we could then use CA plugins for USB devices to auto connect to a VM when running instead of the script. but that was after confirm that the hw error is indeed bluetooth...

as the goal is to st make sure the host doesn't touch use nor interact with the bluetooth device.
then in the VM / vm config and settings attach the device to the VM so only the vm can manage and use the device.

I rather a reboot and this in grub at a higher level to affect the kernel and host operations due to the mutable OS where I can't always edit a config file, and it remains in use and effect at a reboot.

to test as there is techily a mod probe to remove the current installed Bluetooth devices in use. (Not disable!)
sudo modprobe -r btusb btintel btrtl btbcm 2>/dev/null || true

but things were touched and the spam in the syslog make it near imposable for me to assist with other checks and problems... removing doesn't undo the problem at hand...
thus part of the answer and a script to try. as I don't know you skill level and I rather you ask question and get answer then randomly take the word of a person on a public forum.

Edited by bmartino1
inline broke file name correction

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.