O que eu encontrei
Vou reservar um tempo para explicar algumas coisas que descobri. Isso deve ajudar as pessoas a entender por que esse processo é tão complicado e o que eles podem fazer para ajudá-lo a melhorar, pelo menos para eles.
Primeiro, o rádio Bluetooth no MBP é um dispositivo "USB". Isso é bastante comum em laptops e até em alguns desktops. Por esse motivo, o Linux o trata como um dispositivo USB e você pode configurá-lo de acordo.
Segundo, o rádio Bluetooth possui dois modos HID, com um "perfil" muito básico apenas para teclados e mouses. Este modo é o que permite que você use o teclado antes que haja um Aplicativo gerenciando o dispositivo Bluetooth. Por exemplo, quando você usa o teclado Bluetooth no menu GRUB, esse é o modo HID. Seu laptop e teclado ainda precisam ser emparelhados, mas eles podem operar neste nível muito baixo sem problemas ou intervenção (novamente uma vez emparelhados). No entanto, o modo HID é muito limitado e certas coisas não funcionam. Por exemplo, o nível da bateria do teclado não funcionará. Também no modo HID, tive dificuldades com as teclas de função e de mídia (neste teclado elas são a mesma tecla e podem ser alternadas pelo software).
Em seguida, você precisa obter o teclado para enviar "algo" para o laptop. Você também precisa do laptop para receber "alguma coisa". Então você precisa juntar tudo para que o laptop realmente acorde.
Finalmente, Linux, Ubuntu, Bluez, ou alguém, parece pensar que todos os controladores Bluetooth devem agir no modo HCI. Esse provavelmente é um padrão muito sensato, já que mesmo esse teclado é muito limitado no modo HID e qualquer coisa além de um mouse e teclado simples (por exemplo, um telefone celular ou um conjunto de fones de ouvido) exigiria o modo HCI. No entanto, o modo HCI requer uma pilha de software completa para ser executada e não será executada enquanto o laptop estiver suspenso / em suspensão / desligado. Portanto, por padrão, quando o laptop dorme, ele desconecta o teclado e para de ouvir.
Etapas reais para fazê-lo funcionar
Etapa 0: uma solução alternativa
Quando eu estava fazendo isso, fiquei muito frustrado pelo fato de não conseguir fazer nada para solucionar o problema. Você não pode fazer nada quando o laptop está dormindo, e pelo menos com os Mac Book Pros, você não pode fechar a tampa sem que eles durmam. Portanto, você fica com uma situação em que o Vídeo não funciona (porque está indo para o monitor externo que não está conectado quando está desencaixado) ou você pode ver tudo, mas não possui teclado (porque não está funcionando / emparelhado / o que quer que seja, e o interno não está acessível). Para contornar isso, você deve se deparar com isso. Use o teclado visual na tela de login do LDM. Se você acordar com um prompt de senha, poderá clicar em alternar usuário e usar o teclado visual para fazer login. Desde que você faça o login como o mesmo usuário, sua sessão não deve ser perdida. Dito isto, eu não
Etapa 1: pré-emparelhe seu teclado.
Enquanto testava, notei que essa etapa era necessária. No entanto, não entendo completamente o porquê. A Apple faz algumas coisas estranhas, então eu vou deixar passar.
- Redefina sua PRAM / NVRAM / Whatever. Isso limpará as configurações atuais do OS X e pode não ser necessário, mas é melhor iniciar a limpeza. O site de suporte da Apple tem instruções . Você não precisa redefinir a PMU.
- Inicie ou reinicie no OS X e emparelhe o teclado normalmente. Eu recomendo deixar todos os outros dispositivos bluetooth desligados e focando no teclado. Pelo que sei, isso armazenará algumas informações na NVRAM e em todo o teclado para se comunicar com o laptop desligado.
- Clique em Avançado (no OS X, uma vez emparelhado) e marque "Permitir que dispositivos Bluetooth ativem o computador". Mais uma vez, o site de suporte da apple tem instruções
- Reinicie o computador no Linux. No ReFIT / GRUB / durante a inicialização, o teclado deve funcionar perfeitamente.
Etapa 2: Fazendo o Linux funcionar com o teclado
Por alguma razão, o teclado perde o pareamento ao fazer o login. Provavelmente porque o controlador Bluetooth está no modo HCI. Para corrigir isso, você precisa emparelhar no Linux. Isso interromperá o emparelhamento realizado na etapa 1, mas não interromperá o modo HID quando o laptop for desligado ou inicializado. Dito isto, quando você reiniciar, o teclado não funcionará até que a pilha do bluetooth esteja funcionando novamente novamente no modo HCI. Isso ocorre porque o teclado está tentando falar no modo HCI, mas ninguém está ouvindo. Se você desligar e aguardar o tempo limite da conexão, o teclado funcionará novamente no modo HID.
- Instale o bluez-compat executando
sudo apt-get install bluez-compat
Isso permitirá que você emparelhe com facilidade. Sem o gerenciador do Bluetooth, apenas travava para mim.
- Emparelhe seu teclado normalmente com o Linux. Execute a
Bluetooth
partir do Unity Dash e clique no sinal de mais. Coloque o teclado no modo de emparelhamento (mantenha pressionado o botão liga / desliga no teclado Apple Wireless) e siga as instruções. Deve emparelhar bastante suavemente. Nesse ponto, seu teclado deve funcionar bem no Linux e até envia sinais para um controlador HID quando o laptop está dormindo.
Etapa 3: Dizendo ao Linux que ele precisa acordar
Agora precisamos dizer ao Linux para acordar se o dispositivo bluetooth receber "algo". Fazer isso é muito fácil, graças aos scripts deste site . As instruções básicas estão abaixo, mas você deve ler o site se algo não estiver claro. Quase tudo isso vem do site vinculado.
- Instale algumas dependências
sudo apt-get install notify-send zenity
- Faça o download do script de resumo do udev e copie para / usr / local / sbin / enable-wakeup.
- Faça o download do script de seleção do dispositivo e copie para / usr / local / sbin / select-resume-devices
- Torne os scripts executáveis:
chmod a+x /usr/local/sbin/select-resume-devices
e chmod a+x /usr/local/sbin/enable-wakeup
.
- Execute com permissões de root o script de seleção do dispositivo.
sudo /usr/local/sbin/select-resume-devices
- Selecione, no mínimo, "Apple, Inc. Bluetooth Host Controller", "Belkin Components B8T017 Bluetooth + EDR 2.1", "Apple Inc. Teclado / Trackpad Interno (ANSI)" e quaisquer outros dispositivos que você deseja usar para reiniciar o computador .
- Clique OK.
- Revise o arquivo /etc/udev/rules.d/90-hid-wakeup-enable.rules e verifique se faz sentido.
- Reinicie o computador.
Etapa 4: testes e capturas
Tudo deve funcionar bem agora que você reiniciou o computador. Depois de logado, coloque o computador no modo de suspensão de alguma forma. Toque uma tecla no teclado e o laptop deve continuar. No entanto, existem algumas capturas.
- Quando o computador está no modo de suspensão, ele procura dispositivos HID. Portanto, o teclado inicia no modo HID. Quando você termina de sair do modo de suspensão, o Linux procura um dispositivo HCI. O teclado (não o laptop) precisa redefinir a conexão. Isso acontece naturalmente após cerca de 45 segundos. Você pode forçá-lo removendo as baterias, mas isso pode atrapalhar o emparelhamento. Se você não usar o teclado para sair do modo de suspensão, isso não será um problema.
- Ao reiniciar, o teclado ainda estará tentando se comunicar no modo HCI, mas o laptop estará procurando apenas dispositivos HID. Novamente após o tempo limite, o teclado irá obtê-lo e funcionará corretamente novamente.