我正在尝试在 Docker 容器内运行一个 Linux 应用程序,该应用程序希望机器支持蓝牙连接,因此它会因“无法打开 HCI 套接字”错误而崩溃。
现在,对于我的特定用例来说,蓝牙功能实际上并不是必需的,因此我可以使用某种虚拟蓝牙驱动程序来进行管理,例如,就像范围内没有其他蓝牙设备一样。
有没有简单的方法可以在docker容器内创建这样的虚拟蓝牙设备?我无法以特权模式运行容器或使用主机的蓝牙资源。
答案1
部分答案:我玩了一下,找到了内核模块hci_vhci
,它绑定/dev/vhci
并允许创建虚拟主机控制器接口。
找到真正使用这个内核模块的东西有点困难。显然曾经有一个程序hciemu
至少部分模拟了 HCI 接口,但它似乎已经从大多数发行版中消失了。
另外,我找不到任何文档。
但无论如何,下载后仍然可以访问tar 文件使用源代码(似乎不再链接到主下载页面),编译它,然后执行
# modprobe hci_vhci
# hciemu localhost:10
我最终得到了一个 HCI 接口,
$ hciconfig
hci0: Type: Primary Bus: Virtual
BD Address: 7F:00:00:01:00:0A ACL MTU: 192:8 SCO MTU: 0:0
DOWN
RX bytes:0 acl:0 sco:0 events:8 errors:0
TX bytes:36 acl:0 sco:0 commands:8 errors:0
对于您的用例来说,这可能足够,也可能不够。
如果有人能弄清楚如何实际使用这些接口,我会非常感兴趣。