Como acordar do sono usando um teclado bluetooth

8

Eu tenho um Mac book pro e uma doca Henge. O dock não passa de um suporte que permite conectar facilmente alguns dispositivos para que você possa "encaixar" seu MBP. Eu também tenho um teclado sem fio da Apple. O teclado é bluetooth.

O teclado funciona bem "normalmente", mas o problema é que, quando fecho a tampa do meu MBP, o laptop entra no modo de suspensão (isso não pode ser evitado) coloco o laptop no dock (com a tampa fechada) e não consigo acordar de dormir (eu assumo porque não bluetooth). Se eu usar meu gamepad para acordar o dispositivo, recebo o prompt de senha da tela de bloqueio, mas não consigo inserir nada porque o teclado bluetooth não está conectado.

Então, como posso acordar o Mac Book Pro do modo de suspensão usando um teclado bluetooth (o teclado sem fio da apple) ou, na sua falta, forçá-lo a reconectar quando a máquina for reiniciada para que eu possa digitar minha senha?

Aqui estão os meus detalhes de hardware.

Mac Book Pro 6.2 (eu sei que normalmente não funciona, mas é uma plataforma de hardware fechada)

Dispositivo 001 do barramento 008: ID 050d: 0017 Componentes Belkin B8T017 Bluetooth + EDR 2.1
Dispositivo 007 do barramento 007: ID 05ac: 8218 Apple, Inc. Bluetooth Host Controller

Versão Linux

Linux macbook 3.5.0-22-generic #34-Ubuntu SMP

Ubuntu 12.10

O que eu fiz:

Emparelhei meu teclado Apple Wireless com o Ubuntu.

O que eu espero:

Quando pressiono uma tecla no teclado sem fio da apple, o sistema sai do modo de suspensão.

O que acontece:

Quando pressiono uma tecla no teclado sem fio da apple; Nada.....

O que eu espero de uma resposta aceitável:

Uma maneira de fazer isso quando eu pressiono uma tecla no teclado sem fio da apple, meu computador acorda do sono e posso continuar com o meu dia de computação.

De importância:

Eu geralmente odeio ver isso e dizer isso, mas ... Ele funciona no Mac OS X e no Windows, então eu sei que o hardware é capaz de fazer isso.

coteyr
fonte

Respostas:

7

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.

  1. 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.
  2. 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.
  3. 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
  4. 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.

  1. Instale o bluez-compat executando sudo apt-get install bluez-compatIsso permitirá que você emparelhe com facilidade. Sem o gerenciador do Bluetooth, apenas travava para mim.
  2. Emparelhe seu teclado normalmente com o Linux. Execute a Bluetoothpartir 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.

  1. Instale algumas dependências sudo apt-get install notify-send zenity
  2. Faça o download do script de resumo do udev e copie para / usr / local / sbin / enable-wakeup.
  3. Faça o download do script de seleção do dispositivo e copie para / usr / local / sbin / select-resume-devices
  4. Torne os scripts executáveis: chmod a+x /usr/local/sbin/select-resume-devicese chmod a+x /usr/local/sbin/enable-wakeup.
  5. Execute com permissões de root o script de seleção do dispositivo. sudo /usr/local/sbin/select-resume-devices
  6. 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 .
  7. Clique OK.
  8. Revise o arquivo /etc/udev/rules.d/90-hid-wakeup-enable.rules e verifique se faz sentido.
  9. 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.

  1. 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.
  2. 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.
coteyr
fonte