私が見つけたもの
私が見つけたいくつかのことを時間をかけて説明していきます。これは、これがこのような複雑なプロセスである理由を理解し、少なくとも彼らにとってそれを改善するために何ができるかを理解するのに役立つはずです。
まず、MBPのBluetooth無線は「USB」デバイスです。これはラップトップだけでなく、一部のデスクトップでも非常に一般的です。そのため、LinuxはそれをUSBデバイスとして扱い、それに応じて構成できます。
次に、Bluetooth無線には2つのモードHIDモードがあり、キーボードとマウスのみの非常に基本的な「プロファイル」です。このモードでは、Bluetoothデバイスを管理するアプリケーションがある前にキーボードを使用できます。たとえば、GRUBメニューでBluetoothキーボードを使用している場合、それはHIDモードです。ラップトップとキーボードはまだペアリングする必要がありますが、問題や介入なしに(この場合はペアリングされます)、この非常に低いレベルで動作できます。ただし、HIDモードは非常に制限されており、特定のものが機能しません。たとえば、キーボードのバッテリーレベルは機能しません。また、HIDモードでは、ファンクションキーとメディアキーで苦労しました(このキーボードでは、これらは同じキーであり、ソフトウェアで切り替えることができます)。
次に、キーボードで「何か」をラップトップに送信する必要があります。「何か」を受け取るにはラップトップも必要です。次に、ラップトップを実際に起動させるために、すべてをまとめる必要があります。
最後に、Linux、Ubuntu、Bluez、または誰かが、すべてのBluetoothコントローラはHCIモードで動作する必要があると考えているようです。このキーボードはHIDモードで非常に制限されており、単純なマウスとキーボード(携帯電話やヘッドセットなど)以外ではHCIモードが必要であることを考えると、これはおそらく非常に健全なデフォルトです。ただし、HCIモードを実行するには完全なソフトウェアスタックが必要であり、ラップトップがサスペンド/スリープ/電源オフの状態では実行されません。したがって、デフォルトでは、ラップトップがスリープ状態になると、キーボードが切断され、リスニングが終了します。
機能させるための実際の手順
ステップ0:回避策
私がこれを行っていたとき、問題のトラブルシューティングを行うために何もできないという事実に非常に苛立ちました。ラップトップがスリープ状態のときは何もできません。少なくともMac Book Proでは、スリープ状態にならないとカバーを閉じることができません。つまり、ビデオが機能しない(ドッキングされていないときに外部モニターに接続されているため)、またはすべてが表示されるがキーボードが表示されない(機能していない/ペアリングされている/何であれ)内部にはアクセスできません)。これを回避するには、それに遭遇する必要があります。LDMのログイン画面でビジュアルキーボードを使用します。パスワードプロンプトが表示されたら、ユーザーの切り替えをクリックしてから、ビジュアルキーボードを使用してログインできます。同じユーザーとしてログインしている限り、セッションが失われることはありません。とはいえ、私は
手順1:キーボードを事前にペアリングします。
テストをしていると、このステップが必要であることに気付きました。しかし、その理由はよくわかりません。Appleは奇妙なことをするので、手放すだけです。
- PRAM / NVRAM /何でもリセットします。これにより、現在のOS X設定がクリアされますが、必要ではないかもしれませんが、クリーンな状態で開始することをお勧めします。アップルのサポートWebサイトに説明があります。PMUをリセットする必要はありません。
- OS Xを起動または再起動して、キーボードを通常どおりペアリングします。他のすべてのBluetoothデバイスはオフのままにして、キーボードに焦点を合わせることをお勧めします。私が言うことができることから、これはNVRAMとすべてのキーボードにいくつかの情報を保存し、電源が切れたラップトップと通信します。
- [詳細設定](OS Xではペアリングされた後)をクリックし、[Bluetoothデバイスによるコンピュータのスリープ解除を許可する]をオンにします。ここでも、アップルのサポートWebサイトに説明があります
- コンピューターをLinuxで再起動します。ReFIT / GRUB /の起動中、キーボードは問題なく動作するはずです。
ステップ2:Linuxをキーボードで動作させる
何らかの理由で、ログインするとキーボードのペアリングが失われます。BluetoothコントローラーがHCIモードに切り替えられたためと考えられます。これを修正するには、Linuxでペアリングする必要があります。これにより、手順1で行ったペアリングは解除されますが、ラップトップの電源がオフまたは起動しているときにHIDモードは解除されません。つまり、再起動しても、BluetoothスタックがHCIモードで完全に実行されるまでキーボードは機能しません。これは、キーボードがHCIモードで話そうとしているが、誰も聞いていないためです。シャットダウンして接続がタイムアウトするのを待つと、キーボードはHIDモードで再び動作します。
- 実行してbluez-compatをインストール
sudo apt-get install bluez-compat
します。これにより、簡単にペアリングできます。Bluetoothマネージャーがないと、クラッシュしてしまいました。
- 通常、キーボードをLinuxとペアリングします。
Bluetooth
Unity Dashから実行し、プラスをクリックします。キーボードをペアリングモードにし(Apple Wirelessキーボードの電源ボタンを押したまま)、指示に従います。かなりスムーズにペアリングするはずです。この時点で、キーボードはLinuxで正常に機能し、ラップトップがスリープ状態のときにHIDコントローラーに信号を送信することもできます。
ステップ3:ウェイクアップする必要があることをLinuxに伝える
次に、Bluetoothデバイスが「何か」を取得した場合にLinuxをウェイクアップするように指示する必要があります。これを行うのは、このサイトのスクリプトのおかげでかなり簡単です。基本的な手順を以下に示しますが、不明な点がある場合はサイトを読んでください。これのほとんどすべてはリンクされたサイトから来ています。
- いくつかの依存関係をインストールする
sudo apt-get install notify-send zenity
- udev再開スクリプトをダウンロードし、 / usr / local / sbin / enable-wakeupにコピーします。
- デバイス選択スクリプトをダウンロードし、 / usr / local / sbin / select-resume-devicesにコピーします
- スクリプトを実行可能にします:
chmod a+x /usr/local/sbin/select-resume-devices
およびchmod a+x /usr/local/sbin/enable-wakeup
。
- root権限でデバイス選択スクリプトを実行します。
sudo /usr/local/sbin/select-resume-devices
- 少なくとも、「Apple、Inc. Bluetooth Host Controller」、「Belkin Components B8T017 Bluetooth + EDR 2.1」、「Apple Inc. Internal Keyboard / Trackpad(ANSI)」、およびコンピュータを再開するために使用するその他のデバイスを選択します。 。
- OKをクリックします。
- /etc/udev/rules.d/90-hid-wakeup-enable.rulesファイルを確認して、意味があることを確認します。
- コンピュータを再起動します。
ステップ4:テストとキャッチ
コンピューターを再起動したので、すべてが正常に機能するはずです。ログインしたら、なんとかしてコンピュータをスリープモードにします。キーボードのキーを押して、ラップトップを再開します。ただし、いくつかの問題点があります。
- コンピューターがスリープモードのときは、HIDデバイスを探しています。したがって、キーボードはHIDモードで起動します。スリープモードから再開すると、LinuxはHCIデバイスを探します。キーボード(ラップトップではない)が接続をリセットする必要があります。これは約45秒後に自然に発生します。電池を外すことで強制できますが、ペアリングが失敗する可能性があります。キーボードを使用してスリープ状態から再開しない場合、これは問題ではありません。
- 再起動しても、キーボードはHCIモードで通信しようとしますが、ラップトップはHIDデバイスのみを探します。再びタイムアウト後、キーボードはそれを取得し、再び正しく動作します。