如何在 Docker 容器内模拟蓝牙?

如何在 Docker 容器内模拟蓝牙?

我正在尝试在 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

对于您的用例来说,这可能足够,也可能不够。

如果有人能弄清楚如何实际使用这些接口,我会非常感兴趣。

相关内容