web-dev-qa-db-ja.com

Bluetoothキーボードを使用してスリープから復帰する方法

Mac book proとHengeドックがあります。ドックは、数個のデバイスを簡単に接続してMBPを「ドッキング」できるホルダーにすぎません。 Appleワイヤレスキーボードもあります。キーボードはbluetoothです。

キーボードは「正常に」正常に動作しますが、問題は、MBPのふたを閉じるとラップトップがスリープ状態になることです(これを防ぐことはできません)。スリープ(Bluetoothがないためだと思います)。ゲームパッドを使用してデバイスをスリープから解除すると、ロック画面のパスワードプロンプトが表示されますが、Bluetoothキーボードが接続されていないため、実際には何も入力できません。

それでは、Bluetoothキーボード(Appleワイヤレスキーボード)を使用してMac Book Proをスリープ状態から復帰させる方法、または失敗した場合、パスワードを入力できるようにマシンの再開時に再接続を強制できますか?

ここに私のハードウェアの詳細があります。

Mac Book Pro 6.2(通常は動作しないことはわかっていますが、クローズドハードウェアプラットフォームです)

バス001デバイス008:ID 050d:0017 Belkin Components B8T017 Bluetooth + EDR 2.1
Bus 001デバイス007:ID 05ac:8218 Apple、Inc. Bluetoothホストコントローラー

Linuxバージョン

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

Ubuntu 12.10

私がやったこと:

AppleワイヤレスキーボードをUbuntuとペアリングしました。

私が期待するもの:

Appleワイヤレスキーボードのキーをマッシュすると、システムがスリープから復帰します。

何が起こるか

Appleワイヤレスキーボードのキーをマッシュすると、何も.....

受け入れられる答えに期待するもの:

キーをマッシュすると、Appleワイヤレスキーボードがスリープ状態から復帰し、コンピューティングの日を続けることができます。

注:

私は通常、これを見たり言ったりするのが嫌いですが、.... Mac OS XとWindowsで動作するため、ハードウェアがこれを実行できることを知っています。

8
coteyr

私が見つけたもの

時間をかけて、私が見つけたいくつかのことを説明します。これは、なぜこれがそんなに複雑なプロセスであるのか、そして少なくとも彼らにとってそれを改善するために何ができるのかを人々が理解するのに役立つはずです。

まず、MBPのBluetooth無線は「USB」デバイスです。これは、ラップトップや一部のデスクトップでも非常に一般的です。そのため、LinuxはそれをUSBデバイスとして扱い、それに応じて構成できます。

第二に、Bluetooth無線には、キーボードとマウス専用の非常に基本的な「プロファイル」であるHIDモードの2つのモードがあります。このモードでは、Bluetoothデバイスを管理するアプリケーションが存在する前にキーボードを使用できます。たとえば、GRUBメニューでBluetoothキーボードを使用する場合、それはHIDモードです。あなたのラップトップとキーボードはまだペアリングする必要がありますが、問題や介入なしにこの非常に低いレベルで動作できます(もう一度ペアリングされます)。ただし、HIDモードは非常に制限されており、特定の機能が動作しません。たとえば、キーボードのバッテリーレベルは機能しません。また、HIDモードでは、ファンクションキーとメディアキーで苦労しました(このキーボードでは同じキーであり、ソフトウェアで切り替えることができます)。

次に、キーボードからラップトップに「何か」を送信する必要があります。 「何か」を受け取るにはラップトップも必要です。次に、ラップトップを実際に起動させるために、すべてを結び付ける必要があります。

最後に、Linux、Ubuntu、Bluez、または誰かが、すべてのBluetoothコントローラーがHCIモードで動作するはずだと考えているようです。このキーボードでもHIDモードでは非常に制限されており、単純なマウスとキーボード(携帯電話やヘッドセットなど)を超えるものにはHCIモードが必要であることを考えると、これはおそらく非常に健全なデフォルトです。ただし、HCIモードを実行するには完全なソフトウェアスタックが必要であり、ラップトップがサスペンド/スリープ/電源オフされている間は実行されません。そのため、デフォルトでは、ラップトップがスリープすると、キーボードが切断され、リスニングが終了します。

動作させるための実際の手順

ステップ0:回避策

私がこれをやっていたとき、私は問題を解決するために何もすることができなかったという事実に非常にイライラしました。ラップトップがスリープ状態のときは何もできません。少なくともMac Book Proでは、スリープ状態にしないと蓋を閉じることができません。そのため、ビデオは動作しない(ドッキングされていないときに接続されていない外部モニタに接続されるため)か、キーボードがなくてもすべてが表示される(動作しない/ペアリングされる/何でもないため)内部のものにはアクセスできません)。これを回避するには、実行する必要があります。 LDMのログイン画面でビジュアルキーボードを使用します。パスワードプロンプトが表示されたら、ユーザーの切り替えをクリックしてから、ビジュアルキーボードを使用してログインできます。同じユーザーとしてログインしている限り、セッションは失われません。そうは言っても、これらの手順を実行している間は、作業を保存しないでおきません。

ステップ1:キーボードを事前にペアリングします。

テスト中に、このステップが必要であることに気付きました。ただし、その理由は完全にはわかりません。 Appleは奇妙なことをするので手放すつもりです。

  1. PRAM/NVRAM/Whateverをリセットします。これにより、現在のOS X設定がクリアされ、不要な場合がありますが、クリーンな状態で開始する方が適切です。 AppleサポートWebサイトに手順があります 。 PMUをリセットする必要はありません。
  2. OS Xを起動または再起動して、キーボードを通常どおりペアリングします。他のすべてのBluetoothデバイスをオフにして、キーボードに集中することをお勧めします。私が言えることから、これはNVRAMとすべてのキーボードにいくつかの情報を保存し、電源が切れたラップトップと通信します。
  3. [詳細設定](OS Xでは、ペアリング後)をクリックして、[Bluetoothデバイスによるコンピューターのウェイクアップを許可する]をオンにします。 もう一度AppleサポートWebサイトに指示があります
  4. コンピューターをLinuxで再起動します。 ReFIT/GRUB /起動中、キーボードは正常に動作するはずです。

ステップ2:Linuxをキーボードで動作させる

何らかの理由で、ログイン時にキーボードがペアリングを失います。おそらく、BluetoothコントローラーがHCIモードに切り替えられたためです。これを修正するには、Linuxでペアリングする必要があります。これにより、手順1で行ったペアリングが解除されますが、ラップトップの電源がオフになっているときや起動中にHIDモードが解除されることはありません。ただし、再起動すると、BluetoothスタックがHCIモードで再び完全に実行されるまでキーボードは機能しません。これは、キーボードがHCIモードで話そうとしているが、誰も聞いていないためです。シャットダウンして接続がタイムアウトするのを待つと、キーボードはHIDモードで再び動作します。

  1. Sudo apt-get install bluez-compatを実行してbluez-compatをインストールします。これにより、簡単にペアリングできます。 Bluetoothマネージャーがないと、クラッシュしてしまいました。
  2. 通常、キーボードをLinuxとペアリングします。 UnityダッシュからBluetoothを実行し、プラス記号をクリックします。キーボードをペアリングモードにし(Appleワイヤレスキーボードの電源ボタンを押しながら)、指示に従います。スムーズにペアリングする必要があります。この時点で、キーボードはLinuxで正常に動作し、ラップトップがスリープ状態のときにHIDコントローラーに信号を送信します。

ステップ3:目を覚ます必要があることをLinuxに伝える

次に、Bluetoothデバイスが「何か」を取得した場合にLinuxにウェイクアップするように指示する必要があります。 このサイト のスクリプトのおかげで、これを行うのは非常に簡単です。基本的な手順は以下のとおりですが、不明な点がある場合は the site をお読みください。これのほとんどすべてはリンクされたサイトから来ています。

  1. いくつかの依存関係をインストールSudo apt-get install notify-send zenity
  2. dev再開スクリプト をダウンロードし、/ usr/local/sbin/enable-wakeupにコピーします。
  3. デバイス選択スクリプト をダウンロードし、/ usr/local/sbin/select-resume-devicesにコピーします
  4. スクリプトを実行可能にします:chmod a+x /usr/local/sbin/select-resume-devicesおよびchmod a+x /usr/local/sbin/enable-wakeup
  5. デバイスの選択スクリプトをルート権限で実行します。 Sudo /usr/local/sbin/select-resume-devices
  6. 少なくとも、「A​​pple、Inc. Bluetooth Host Controller」、「Belkin Components B8T017 Bluetooth + EDR 2.1」、「Apple Inc. Internal Keyboard/Trackpad(ANSI)」、およびコンピューターの再開に使用する他のデバイスを選択します。 。
  7. OKをクリックします。
  8. ファイル/etc/udev/rules.d/90-hid-wakeup-enable.rulesを確認し、意味があることを確認します。
  9. コンピューターを再起動します。

ステップ4:テストとキャッチ

コンピューターを再起動したので、すべて正常に動作するはずです。再度ログインしたら、何らかの方法でコンピューターをスリープモードにします。キーボードのキーをたたくと、ラップトップが再開します。ただし、キャッチがいくつかあります。

  1. コンピューターがスリープモードの場合、HIDデバイスを探しています。そのため、キーボードはHIDモードで起動します。スリープモードからの復帰が完了すると、LinuxはHCIデバイスを探します。キーボード(ラップトップではなく)が接続をリセットする必要があります。これは約45秒後に自然に起こります。バッテリーを取り外すことで強制できますが、ペアリングが混乱する可能性があります。キーボードを使用してスリープから復帰しない場合、これは問題ではありません。
  2. 再起動すると、キーボードは引き続きHCIモードで通信しようとしますが、ラップトップはHIDデバイスのみを探します。再びタイムアウト後、キーボードはそれを取得し、再び正しく動作します。
7
coteyr