Como emular o Bluetooth dentro de um contêiner do Docker?

3

Eu estou tentando executar um aplicativo Linux dentro de um contêiner docker que espera que a máquina suporte conexões Bluetooth para que ele falhe com um erro "Não é possível abrir o soquete HCI".

Agora, a funcionalidade Bluetooth não é realmente necessária para meu caso de uso específico, então eu poderia gerenciar com algum tipo de driver Bluetooth fictício que, por exemplo, apenas age como se não houvesse outros dispositivos Bluetooth ao alcance.

Existe alguma maneira fácil de criar um dispositivo Bluetooth virtual dentro de um contêiner docker? Não consigo executar o contêiner no modo privilegiado ou usar os recursos Bluetooth do host.

    
por shang 05.09.2017 / 14:51

1 resposta

3

Resposta parcial: Brinquei um pouco e encontrei o módulo de kernel hci_vhci , que se liga a /dev/vhci e permite criar interfaces de controlador de host virtual.

Encontrar algo que realmente use este módulo do kernel foi um pouco mais difícil. Aparentemente, em um ponto houve um programa hciemu que simulou, pelo menos em parte, uma interface HCI, mas parece ter desaparecido da maioria das distribuições.

Além disso, não consegui encontrar nenhuma documentação.

Mas mesmo assim, depois de baixar um arquivo tar ainda acessível com o código-fonte (que parece não estar mais ligada da página principal de download), compilando-a e fazendo

# modprobe hci_vhci
# hciemu localhost:10

Acabei com uma interface 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

Isso pode ou não ser suficiente para o seu caso de uso.

Se alguém puder descobrir como realmente usar essas interfaces, ficarei muito interessado.

    
por 09.09.2017 / 17:00