After messing with this for a bit I realized I could in fact pass the specific USB bluetooth device as yayitazale attempted above. The key was to pass it as a path. Instead of doing
--device='/dev/bus/usb/001/006'
Pass that device as a path with read/write access and make the container privileged. So under your docker container settings, add a path and enter the device path into both the host and container path values and make it read/write:
More specific to the home assistant docker container, it did not start up with the device running so I had to start it. To do that, first run hciconfig (Bluetooth MAC addresses obscured to protect the innocent):
# hciconfig
hci0: Type: Primary Bus: USB
BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 1021:8 SCO MTU: 64:1
DOWN
RX bytes:1609 acl:0 sco:0 events:74 errors:0
TX bytes:777 acl:0 sco:0 commands:70 errors:0
So we see hci0 is there but is down, so issue the up command:
# hciconfig hci0 up
# hciconfig
hci0: Type: Primary Bus: USB
BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:2183 acl:0 sco:0 events:104 errors:0
TX bytes:1145 acl:0 sco:0 commands:100 errors:0
And now with a subsequent hciconfig command see the device is running. So now we can do stuff like lescan:
# hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX:XX bhyve_XXXXXX
XX:XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX:XX (unknown)
I haven't gone as far as to get bluetooth devices reading in home assistant yet, but at least this proves that the device can be passed to the docker from unraid regardless of whether the firmware file is there.