Як наслідувати Bluetooth всередині контейнера Docker?


3

Я намагаюся запустити додаток Linux всередині контейнера докера, який очікує, що машина підтримує з'єднання Bluetooth, так що він виходить з ладу з помилкою "Не вдається відкрити сокет HCI".

Тепер функціональність Bluetooth насправді не потрібна для мого конкретного випадку використання, тому я міг би керувати якимось фіктивним драйвером Bluetooth, який, наприклад, просто працює так, як немає інших Bluetooth-пристроїв у діапазоні.

Чи є простий спосіб створити такий віртуальний пристрій Bluetooth всередині контейнера докера? Я не можу запустити контейнер у привілейованому режимі або використовувати ресурси Bluetooth хоста.

Відповіді:


3

Часткова відповідь: Я трохи розігрався і виявив модуль ядра 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

Це може бути або не вистачити для вашого випадку використання.

Якщо хтось може зрозуміти, як насправді використовувати ці інтерфейси, я був би дуже зацікавлений.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.