Script de inicialização do Linux para se conectar ao bluetooth e ao cron para mantê-lo conectado

5

Eu tenho um mini teclado Bluetooth e um Raspberry Pi rodando uma distro baseada no Debian. Eu sei o endereço MAC do teclado, mas para essa pergunta, vamos usar apenas AA:BB:CC:DD:EE:FF . Agora eu tenho que ter um teclado com fio conectado, assim como meu dongle Bluetooth para o mini-teclado. No teclado com fio, eu tenho que executar o seguinte quando o dispositivo é inicializado:

sudo hidd --connect AA:BB:CC:DD:EE:FF

Se o dispositivo ficar ocioso por muito tempo, o Bluetooth desconecta e eu tenho que puxar meu teclado com fio e redigitar o mesmo comando.

O que estou procurando é uma maneira de executar esse comando na inicialização e uma maneira de detectar se ele é desconectado para que ele se reconecte automaticamente.

O mais irritante é que o teclado tem que estar no modo de emparelhamento (mesmo que já tenha sido emparelhado) quando eu executo esse comando, caso contrário, ele me diz que o host está inativo. Então, talvez o script precise impedir que ele seja desconectado devido à inatividade. Caso contrário, terei que colocá-lo de volta no modo de pareamento para se reconectar.

Então, para recapitular:

  • Um script para conectar na inicialização. Eu posso ter certeza de colocar o teclado no modo de emparelhamento antes de ligá-lo.
  • Um script para evitar que ele seja desconectado. Talvez algum tipo de sinal para enviá-lo a cada 60 segundos ou algo assim?
por D.R. 18.09.2012 / 07:03

2 respostas

1

(Substitua XX:XX:XX:XX:XX:XX pelo endereço Bluetooth do seu dispositivo)

Instale o suporte a Bluetooth.

# pacman -S bluez

Crie o arquivo de configuração do dispositivo.

# nano /etc/bluetooth/hcid.conf
device XX:XX:XX:XX:XX:XX {
  name "Apple Wireless Keyboard";
  auth enable;
  encrypt enable;
}

Ativar o bluetooth.

# nano /etc/conf.d/bluetooth
DAEMON_ENABLE="true"
HIDD_ENABLE="true"

Adicione daemons. Certifique-se de que o dbus apareça primeiro.

# nano /etc/rc.conf
DAEMONS=(… dbus bluetooth)

Reinicie.

Teste a conexão (verifique se o teclado pode ser descoberto ou se isso falhará).

# hidd --connect XX:XX:XX:XX:XX:XX

Para habilitar a reconexão do teclado após entrar no modo de suspensão, criamos nosso próprio daemon, que verifica se o teclado está conectado uma vez por segundo. Se for, ele não faz nada desse ciclo, caso contrário, ele tenta se conectar ao endereço especificado em address .

Crie o script para executar o daemon.

# nano /etc/rc.d/connect-bt-devs
#!/bin/bash
/etc/rc.d/connect-bt-devs.sh &
exit 0

Crie o script.

# nano /etc/rc.d/connect-bt-devs.sh

#!/bin/bash
address="XX:XX:XX:XX:XX:XX"
while (sleep 1)
do
  connected=$(hidd --show) > /dev/null
  if [[ ! $connected =~ .*${address}.* ]] ; then
    hidd --connect ${address} > /dev/null 2>&1
  fi
done

Torne-os executáveis.

# chmod +x /etc/rc.d/connect-bt-devs
# chmod +x /etc/rc.d/connect-bt-devs.sh

Adicionar daemon.

# nano /etc/rc.conf
DAEMONS=(… connect-bt-devs)

Reinicie.

Quando fiz isso pela primeira vez, funcionou quando o script se conectou pela primeira vez, mas recebi relatórios de falhas desagradáveis no console sempre que o daemon personalizado tentava se reconectar a um teclado reativado. Depois de um pouco mais de investigação, descobriu-se que isso ocorreu porque o dongle da Belkin estava cheio de bugs e não se desconectou do dispositivo quando o dispositivo foi desligado. Eu mudei para um dongle cheapo sem marca e funciona perfeitamente.

Combinação de informações do wiki do arco e Publicação de blog de Benny Bottema .

    
por 22.09.2012 / 17:02
-1

Postagem antiga, mas eu procurei em toda a Web por uma solução aceitável. Aqui está .. rápido e simples

Crie o arquivo de configuração do dispositivo.

# nano /etc/bluetooth/hcid.conf
device XX:XX:XX:XX:XX:XX {
  name "Apple Wireless Keyboard";
  auth enable;
  encrypt enable;
}

execute e adicione essa linha ao seu /etc/rc.local

# hidd --server
    
por 08.01.2016 / 10:54