Antecedentes: estou usando meu fone de ouvido bluetooth como saída de áudio. Consegui fazê-lo funcionar pela longa lista de instruções na documentação da comunidade BluetoothHeadset e automatizei o processo de ativação do fone de ouvido como saída de áudio padrão em um script, graças a outra pergunta .
No entanto, como eu uso o fone de ouvido bluetooth com o telefone e o computador (e o fone de ouvido não suporta duas conexões de entrada) para que o telefone não "roube" a conexão quando o aparelho está ligado, forço o fone de ouvido a modo de descoberta ao se conectar ao computador (o telefone pode se conectar a ele automaticamente).
Portanto, mesmo que o fone de ouvido esteja emparelhado e funcione automaticamente no cenário "normal", tenho que usar sempre o pequeno ícone de bluetooth na área de notificação para realmente conectar-me ao dispositivo (veja a captura de tela).
O que eu quero evitar: Esta GUI para conectar-se a um dispositivo bluetooth conhecido e emparelhado :
O que eu quero: quero que o bluetooth faça exatamente o que o clique no item de conexão na GUI faz, apenas usando a linha de comando. Desejo usar a linha de comando para poder criar um atalho de pressionamento de tecla único para a ação e não precisarei navegar na GUI toda vez que desejar estabelecer uma conexão com o dispositivo.
A pergunta: como posso conectar-me a um dispositivo bluetooth específico, conhecido e emparelhado na linha de comando?
Pergunta adicional: Como posso saber se a conexão foi bem-sucedida ou não?
fonte
Respostas:
Daemon Bluetooth
Na instalação padrão, um daemon ( bluetoothd ) é executado em segundo plano (executado a partir do arquivo
/etc/init.d/bluetooth
). Este daemon cuida do reconhecimento e conexão com dispositivos Bluetooth conhecidos e pode ser configurado com os arquivos de configuração/etc/bluetooth
. Para conectar automaticamente um fone de ouvido, a seguinte entrada de linhaaudio.conf
deve ser descomentada (remover#
):Para reiniciar o tipo de daemon
sudo /etc/init.d/bluetooth restart
.Observação: o uso da ferramenta de linha de comando
sudo hcitool cc <MAC-Adress>
não levou a uma conexão estável com um dispositivo conhecido no ambiente de teste aqui quando o daemon estava em execução.DBus
Para conectar um fone de ouvido desconectado, mas fisicamente presente e emparelhado, podemos usar o D-Bus a partir de um script. Aqui está um exemplo em python:
Caso tenhamos mais de um dispositivo Bluetooth, teremos que adaptar o dispositivo
devicePath
adequadamente, é claro. O exemplo acima irá conectar aHeadset
. Mude a interface para um protocolo diferente para qualquer outro serviço (por exemploAudioSink
).Pulseaudio
Se você conhece o endereço MAC do seu dispositivo Bluetooth, pode conectá-lo como um coletor de saída para o pulseaudio:
Onde xx_xx_xx_xx_xx_xx é o endereço MAC (substitua ':' por '_' para que o pulseaudio o reconheça).
Veja também esta resposta para mais detalhes.
fonte
Sink bluez_sink.xx_xx_xx_xx_xx_xx does not exist.
tentei maiúsculas e minúsculas.bt
oublue
está listado empacmd list-sinks
. (Ele relata apenas 1 afundar disponível.)Eu uso esse script para conectar meu dispositivo de áudio Bluetooth. Se o seu fone de ouvido já estiver emparelhado, você poderá conectá-lo da mesma maneira usando org.bluez.Headset.Connect / Disconnect no lugar de org.bluez.Audiosink.Connect / Disconnect .
HTH!
fonte
16.04
, obrigado! outros, não esqueça de passar aon
opção para o script!Como uso o i3 como gerenciador de janelas, não tenho o ícone da bandeja bluetooth disponível. Por alguma razão, o botão de seleção nas configurações da unidade não é sensível e, portanto, preciso de uma maneira de fazer isso de tempos em tempos quando meus fones de ouvido não se conectam.
Parece que
bluez
tem mudado sua API dbus . A resposta que utilizaorg.bluez.Manager
não parece mais funcionar. Em vez disso, é recomendável usarObjectManager
.Aqui está um script python atualizado que conectará o primeiro fone de ouvido bluetooth desconectado que encontrar (presumivelmente a lista inclui todos os dispositivos emparelhados?):
este exemplo, como o outro exemplo neste segmento, usa o
dbus
pacote python. No ubuntu 16.04 eu instalei isso completamenteapt-get install python-dbus
.Se você deseja corresponder a outros critérios, este documento parece mostrar uma lista de propriedades que podem ser consultadas no dbus.
Eu tenho esse script salvo no
~/.local/bin/bt-connect-headset
qual está meu,PATH
para que eu possa executá-lo no iniciador do i3. Torne-o executável (chmod +x bt-connect-headset
) se você planeja usá-lo como um comando.Este script foi testado apenas em um ubuntu 16.04 atualizado a partir de 28/09/2018.
fonte
2360344
vez de0x240404
.Disconnect()
método Eu não tentei, mas provavelmente é uma aposta segura;).first unconnected bluetooth headset
: ele sempre usará o fone de ouvido (se ligado) antes de outro dispositivo, como alto-falantes bluetooth (não importa a posição na lista)? É o que acontece no meu caso. - Além disso, para desconectar, não posso fazer isso apenas alterando a última linha paraadapter.Disconnect()
.)Depois de tentar algumas das opções acima (os scripts não funcionaram para mim), encontrei a seguinte solução.
Primeiro, descubra o endereço MAC do dispositivo ao qual você deseja se conectar
isso entrará em um shell e listará todos os dispositivos disponíveis com endereço. ("saia" para sair do shell e volte ao prompt)
Em seguida, conecte-se a XX: XX: XX: XX: XX: XX dispositivo bluetooth:
desconectar
procurava por isso há um bom tempo - nada parecia funcionar, senti-me tão aliviado quando descobri. Achei que os outros também gostariam de saber sobre isso. :))
fonte
~$ bluetoothctl Agent registered [UE BOOM 2]#
. Entãodisconnect "UE BOOM 2" Device UE BOOM 2 not available
.bluetoothctl
? Você precisa alimentar os comandos com o endereço MAC do dispositivo - que é a combinação dos valores HEX no formato XX: XX: XX: XX: XX: XX, em que X é uma letra ou um número.echo -e 'connect CC:AF:78:AF:59:03' | bluetoothctl
obter:Agent registered [bluetooth]# connect CC:AF:78:AF:59:03 Device CC:AF:78:AF:59:03 not available