Wie emuliere ich Bluetooth in einem Docker-Container?


3

Ich versuche, eine Linux-Anwendung in einem Docker-Container auszuführen, von dem erwartet wird, dass der Computer Bluetooth-Verbindungen unterstützt, sodass er mit dem Fehler "HCI-Socket kann nicht geöffnet werden" abstürzt.

Jetzt wird die Bluetooth-Funktionalität für meinen speziellen Anwendungsfall nicht mehr benötigt, sodass ich mit einer Art Bluetooth-Dummy-Treiber zurechtkommen kann, der sich zum Beispiel so verhält, als ob sich keine anderen Bluetooth-Geräte in Reichweite befinden.

Gibt es eine einfache Möglichkeit, ein solches virtuelles Bluetooth-Gerät in einem Docker-Container zu erstellen? Ich kann den Container nicht im privilegierten Modus ausführen oder die Bluetooth-Ressourcen des Hosts verwenden.

Antworten:


3

Teilantwort: Ich habe ein bisschen rumgespielt und das Kernel-Modul gefunden hci_vhci, mit dem sich /dev/vhcivirtuelle Host-Controller-Schnittstellen erstellen lassen.

Etwas zu finden, das dieses Kernelmodul tatsächlich verwendet, war etwas schwieriger. Anscheinend gab es einmal ein Programm, hciemudas eine HCI-Schnittstelle zumindest teilweise simulierte, aber es scheint von den meisten Distributionen verschwunden zu sein.

Außerdem konnte ich keine Dokumentation finden.

Nach dem Herunterladen einer noch zugänglichen TAR-Datei mit Quellcode (der nicht mehr von der Haupt-Download-Seite verlinkt zu sein scheint), Kompilieren und Ausführen

# modprobe hci_vhci
# hciemu localhost:10

Ich endete mit einer HCI-Schnittstelle,

$ 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

Dies kann für Ihren Anwendungsfall ausreichen oder nicht.

Wenn jemand herausfinden kann, wie man diese Schnittstellen tatsächlich nutzt, wäre ich sehr interessiert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.