Como um teclado Bluetooth que requer uma entrada de código pode ser emparelhado no terminal?

20

Eu tenho um teclado Bluetooth ThinkPad 2 Tablet que desejo emparelhar com o meu Ubuntu Touch Aquaris E4.5. Devido a limitações da GUI, quero tentar fazer isso no terminal. Espero que o processo seja semelhante ao do Ubuntu Desktop.

No Ubuntu Desktop 15.10, ao emparelhar o teclado, a seguinte mensagem é apresentada em uma caixa de diálogo da GUI:

Please enter the following PIN on "ThinkPad keyboard" and press "Enter" on the keyboard:
<6-digit number>

Inserir o PIN de 6 dígitos no teclado Bluetooth e pressionar Enterconclui o emparelhamento do teclado e funciona bem. Quando tento emparelhar o teclado no Ubuntu Touch, nenhuma caixa de diálogo da GUI é exibida exibindo o código a ser inserido no teclado Bluetooth. Então, eu quero tentar emparelhar o teclado no terminal.

Eu tentei o seguinte:

phablet@ubuntu-phablet:~$ hcitool scan
Scanning ...
        AB:CD:EF:GH:IJ:KL       ThinkPad Keyboard
phablet@ubuntu-phablet:~$ bluez-simple-agent AB:CD:EF:GH:IJ:KL
RequestPinCode (/org/bluez/863/hci0/dev_AB_CD_EF_GH_IJ_KL)
Enter PIN Code: 0000
Release
Creating device failed: org.bluez.Error.ConnectionAttemptFailed: Page Timeout
phablet@ubuntu-phablet:~$

O que eu poderia tentar a seguir?

d3pd
fonte

Respostas:

26

Você pode tentar executar o bluetoothctl na linha de comando, verifique se o dispositivo está ligado / pronto para ser descoberto:

$ bluetoothctl
[NEW] Controller AA:BB:CC:DD:EE:FF device-name [default]

Quaisquer outros dispositivos bluetooth serão listados aqui. Você estará dentro de um [bluetooth]prompt.

Primeiro, ligue o Bluetooth (se o dispositivo estiver desligado):

[bluetooth]# power on
Changing power on succeeded

Em seguida, verifique se o seu agente está registrado:

[bluetooth]# agent on
Agent registered

[bluetooth]# default-agent 
Default agent request successful

Agora você pode procurar dispositivos no console:

[bluetooth]# scan on
Discovery started
[CHG] Controller AA:BB:CC:DD:EE:FF Discovering: yes
[NEW] Device FF:EE:DD:CC:BB:AA Someone's Keyboard

Você também pode emparelhar manualmente a partir daqui:

[bluetooth]# pair FF:EE:DD:CC:BB:AA 
Attempting to pair with FF:EE:DD:CC:BB:AA 
[CHG] Device C8:E0:EB:04:52:55 Connected: yes

Nesse ponto, você deve ser solicitado a inserir um código PIN para o emparelhamento:

Request PIN code
[agent] Enter PIN code: 12345

Digite um número (por exemplo, 12345) e você será solicitado a inserir o mesmo número no dispositivo:

[Someone's Keyboard]# 12345

Você deve ser notificado de que seu teclado foi emparelhado:

[CHG] Device FF:EE:DD:CC:BB:AA Paired: yes

Espero que isso funcione para você, estava tentando resolver isso por um tempo antes de encontrar qualquer referência bluetoothctl.


EDIT: A versão Ubuntu Touch OTA9 inclui o Bluez 5, permitindo o emparelhamento com os teclados ThinkPad. Aqui está o pequeno BQ Aquaris E4.5 agindo quase como um palmtop.

1nfiniti
fonte
Ok, pergunta boba: como faço para instalar bluetoothctl? Eu tentei sudo add-apt-repository ppa:vidplace7/bluez5; sudo apt-get update; sudo apt-get install bluez bluez-tools.
D3pd
... ¯_ (ツ) _ / ¯ - ele já estava lá na minha máquina, olhando para os meus pacotes Bluez, os únicos outros que eu tenho são bluez-obexde libbluetooth3, mas meu palpite é que eles vêm bluez(estou executando o 5.35 fwiw).
1nfiniti
Obrigado por sua ajuda a este respeito. Não tenho idéia de como instalar o BlueZ 5 no Ubuntu Touch (e emparelhar / reflorestar um dispositivo tentando fazê-lo), então vou fazer uma pergunta separada sobre isso.
D3pd
11
Ei, novamente, a versão Ubuntu Touch OTA9 inclui o Bluez 5 e permite o emparelhamento com os teclados ThinkPad Bluetooth, para que as idéias básicas da sua solução estivessem corretas. Obrigado novamente por sua ajuda.
D3pd
Eu tenho usado o bluetoothctl para conectar o Teclado Dobrável Universal da Microsoft ao meu tablet Aquaris M10 e consegui. O único problema é que o Ubuntu Touch não reconhece quando o teclado está desconectado e se recusa a me apresentar o OSK até eu reiniciar. Existe uma maneira de desconectar o teclado através de um comando bluetoothctl sem ter que passar pelo processo de emparelhamento novamente? Veja meu relatório de erros da barra de ativação aqui: bugs.launchpad.net/ubuntu/+source/ubuntu-system-settings/+bug/…
tomoqv
8

Seguiu as etapas de 1nfiniti no Ubuntu 16.04 amd64 e funcionou muito bem com a combinação de teclado e mouse Logitech MX5000. Mas quando reiniciei o computador, o teclado não digitou novamente. Ele mostrou como conectado, mas não emparelhado nas Configurações do Bluetooth. No entanto, o mouse funcionou bem.

Observando a referência bluetoothctl ( https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl ) percebemos que um comando 'trust' foi usado após o comando 'pair' para permitir que alguns dispositivos se reconectassem com êxito.

Então iniciei o bluetoothctl, desconectei e desemparelhei o teclado, conectei e emparelhei novamente e emiti

[bluetooth]# trust [keyboard MAC Address]

Fui notificado de que seu teclado é confiável

Trusted

E isso fez o truque, agora o teclado se conecta perfeitamente toda vez que eu inicio / reinicio o computador.

metacibi
fonte