web-dev-qa-db-ja.com

デュアルブートBluetoothデバイスのペアリング

Fedora 26で、2つのBluetoothデバイス、マウスとキーボードをペアリングしようとしています。Windows10もインストールしています。私がしたこと:LinuxとWindowsでペアにしましたが、Windowsから取得したキーを挿入しようとしたときに、ガイドに記載されているエントリ[LinkKey]が見つかりませんでした 私がフォローしました

これは、デバイスのいずれかの情報ファイルにあるものです。

[General]
Name=Designer Mouse
Appearance=0x03c2
AddressType=static
SupportedTechnologies=LE;
Trusted=true
Blocked=false
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;

[IdentityResolvingKey]
Key=D8F3A0A146FEB991BF2ECD9756C8BDFA

[LocalSignatureKey]
Key=23AB7AF05C5AC930F9322CF44114856B
Counter=0
Authenticated=false

[LongTermKey]
Key=D2681BEA8B2C177B1AB8786F22C89DBB
Authenticated=0
EncSize=16
EDiv=48309
Rand=10283782112900107958

[DeviceID]
Source=2
Vendor=1118
Product=2053
Version=272

[ConnectionParameters]
MinInterval=6
MaxInterval=6
Latency=60
Timeout=300

ガイドによると、それは[LinkKey]エントリであるはずですが、ありません。

私はすでにWindowsからキーを取得しており、 この質問に記載されている方法も試しました

8

問題は、デバイスがBluetooth LE(低エネルギー)デバイスであり、処理方法が異なることです。 Microsoft 3600マウスをデュアルブート用に設定するのに役立つ次の2つのソリューションが見つかりました。

Bluetooth LEデバイスで手動で行う方法のチュートリアルについては、こちらを確認してください。 http://console.systems/2014/09/how-to-pair-low-energy-le-bluetooth.html

主な手順は次のとおりです:

  • Linuxの最初のペア
  • リブート
  • Windowsのペアリング
  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\{computer-bluetooth-mac}\{device-bluetooth-id} からキー値を取得します
    • ControlSet001またはControlSet002のいずれかで、SYSTEM\Selectにありますが、通常はControlSet001です。
  • これは、例えば、行うことができます。 chntpwの使用(Linuxから)
    cd {PATH_TO_WINDOWS_PARTITION}/Windows/System32/config /
    chntpw -e SYSTEM
  • / var/lib/bluetooth/{computer-bluetooth-mac}に移動します
  • デバイスのBluetooth IDによく似たディレクトリを確認します(再度ペアリングするたびに変更される可能性があるため、通常は少しずれています)。
  • デバイスIDと一致するようにそのディレクトリの名前を変更します
  • 名前を変更したディレクトリの情報ファイルを編集します
  • 次の値をコピーします:
    • IRKKeyIdentityResolvingKey
    • CSRKKeyLocalSignatureKey
    • LTKKeyLongTermKey
    • ERandRandに:16進値ab cd efを取り、バイト反転(ef cd ab)し、それを10進数(例:電卓アプリケーションのプログラミングモードを使用)
    • EDIVからEDivへ:16進値を取得して通常どおり変換するか、10進値が表示されている場合はそれを直接使用します(chntpwが表示します)。
  • リブート

または
これを使用pythonこれらの手順を実行するMygodのスクリプト: https://Gist.github.com/Mygod/f390aabf53cf1406fc71166a47236ebf

スクリプトを使用して、LongTermKeyグループのLocalSignatureKeyIdentityResolvingKeyEDiv、およびRandLongTermKeyのグループのキーエントリをコピーしました。

リンクされた手動ルートに関する注意事項
実際には機能しなかったため、使用しませんでしたが、機能しなかった場合の一般的な修正は、他の人には機能しました:

  • チュートリアルでは言及していませんが、IRKエントリがある場合は、値をIdentityResolvingKeyキーにコピーします。
  • KeyLengthをEncSizeにコピーしないでください。そのままにしておいてください(私の場合は16)
  • デバイス名が正確に一致しない場合は、ディレクトリを移動することを忘れないでください。
    • 私の場合、5番目のグループはすべてのペアリングでカウントアップしていました。

スクリプトの追加のヘルプ:

  • Linuxで実行されます。
  • Windowsパーティションをマウントする必要があります。
  • コマンドは次のようになります。
    ./export-ble-infos.py -s {PATH_TO_WINDOWS_PARTITION}/Windows/System32/config/SYSTEM
    • SYSTEMファイルを別の場所にコピーして、-s {PATH}でパスを渡すこともできます
  • LEでないか、少なくともこの形式ではないウィンドウズが認識している他のBluetoothデバイスがある場合、クラッシュします。
14
Stefan Fabian

私は前の回答で説明されている方法を試しました(つまり、 のチュートリアルに従います)http://console.systems/2014/09/how-to-pair-low-energy-le-bluetooth.html )Windows 10とUbuntu 18.04m LTSのデュアルブート構成で、Surface Book 2でシームレスに機能するようにSurfaceキーボードをセットアップします。 私は働きませんでした

まず、Ubuntu 18.04でSurfaceを最大限に活用するには、Jakedayカーネルをインストールする必要があります( https://github.com/jakeday/linux-surface )。次に、Microsoft Surfaceキーボード(bluetooth)を使用するには、bluez( の最新バージョンを入手する必要があります)https://medium.com/@overcode/fixing-bluetooth-in-ubuntu-pop-os -18-04-d4b8dbf7ddd6 )。

アイデアは、ペアリングの順序を逆にし、Ubuntuで認証を無効にしてから、キーをWindows 10レジストリにコピーすることです。

  1. Windows 10でSurfaceキーボードをペアリングします。これにより、デバイスのレジストリエントリが作成されます。

  2. Ubuntuで再起動します。

  3. Ubuntuでキーボードをペアリングし、Settings>BluetoothからキーボードのBluetoothアドレスを取得し、接続されているSurface KeyboardをクリックしてAddressをコピーします(私のシステムではCE:2E:25:B9:D1:0Cにあります。これを保持してください)念頭に置いて!)。
  4. ターミナルコンソールを開き、root:Sudo -iと入力します。
  5. info Bluetooth構成ファイルを編集して、認証を削除します。キーボード構成ディレクトリcd /var/libに移動します。このディレクトリのコンテンツを一覧表示してBluetooth MACアドレスを取得しますls、次にcdをキーボードの構成フォルダに追加します。私のシステムでは、そのcd /var/lib/bluetooth/B8:31:B5:9A:5D:15/CE:2E:25:B9:D1:0Cで、最後のビットは手順3)のキーボードのBluetoothアドレスです。お気に入りのエディタを使用して、このディレクトリのinfoファイルを開き、[LocalSignatureKey]Authenticatedフィールドをfalseに変更し、[LongTermKey]Authenticatedフィールドから0へ。これは私のマシンでinfoファイルがどのように見えるかです:
[General]
Name=Surface Keyboard
Appearance=0x03c1
AddressType=static
SupportedTechnologies=LE;
Trusted=true
Blocked=false
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;0000180a-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb;00001812-0000-1000-8000-00805f9b34fb;[ConnectionParameters]
MinInterval=12
MaxInterval=12
Latency=20
Timeout=200

[DeviceID]
Source=2
Vendor=1118
Product=2327
Version=304

[IdentityResolvingKey]
Key=BAC8FF051F3EB6014D0B66678C725435

[LocalSignatureKey]
Key=C7E1BDA700A3213E12463D801F4B4496
Counter=0
Authenticated=false

[LongTermKey]
Key=721CEF56A21CFD5CB0BEF8F565F7F5A6
Authenticated=0
EncSize=16
EDiv=44718
Rand=14981484917123435222
  1. Surfaceキーボードの電源を切り(バッテリーを取り出します)、Ubuntuを再起動します。
  2. [設定]> [Bluetooth]> [Surface Keyboard]で接続をオンにして、電池を再度挿入します。キーボードが接続され、正しく動作するはずです。キーボードを正常に動作させるために(バッテリーを取り出さずに)再起動します。
  3. infoファイルを保存/印刷して、キーボードのWindows 10レジストリエントリを更新するためのキーにアクセスします。私の場合、Windows 10とUbuntuの両方にマウントされているディスクにファイルを保存しました(Windows 10レジストリにデータをコピー/入力できるようにするため)。
  4. Surfaceキーボードの電源を切り(バッテリーを取り出して)、Windows 10を再起動します。レジストリを編集するには、PSTools's psexecを使用します。まず、 http://technet.Microsoft.com/en-us/sysinternals/bb897553.aspx からPSToolsをダウンロードします。 Zipファイルを抽出し、管理者特権でターミナルコンソールを開き、抽出したファイルにディレクトリを変更してpsexec -s -i regedit.exeを実行します。これにより、ペアリングキーが格納されている特権レジストリエントリにアクセスできます。
  5. キーをinfoファイルからSurfaceキーボードのWindowsレジストリエントリにコピーします。まず、キーボードの2つのエントリの名前を変更する必要があります。 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parametersに移動します。 Surfaceキーボードに対応するDevicesおよびKeysの下のエントリの名前を変更します。キーボードをペアリングするたびに、アドレスはわずかに変化して、以前のペアリングと区別されます。私の場合、最初のWindows 10のペアリングはce2e25b810cでしたが、その後のUbuntuのペアリングはCE:2E:25:B9:D1:0Cでした(:を除いてほとんど同じアドレスで、小文字の文字が含まれていますが、増加に注意してください。 b8からB9まで)。元のWindows 10ペアリングアドレスに対応するレジストリ名を右クリックして、Ubuntuアドレスに名前を変更します。

レジストリエントリの名前を変更した後、私のシステムでは次のようになりました: enter image description here

  1. キーをinfoファイルからKeys/{MAC Address}/{Bluetooth Address}レジストリエントリ(この例では\Keys\b831b59a5d15\ce2e25b9d10c)にコピーします。まず、Modify the Addressフィールドを右クリックして、BluetoothアドレスをUbuntuでペアリングするために使用されているアドレスに更新します(元のWindows 10のペアリングで 'ce2e25b810c'のHEXでは '私の例ではUbuntuのce2e25b910c ')。

enter image description here

同様に、Modify次の各レジストリフィールドは、Ubuntu infoファイルから対応するWindows 10レジストリフィールドにデータをコピー/入力します。

  • IdentityResolvingKeyKey値はIRKレジストリフィールドに入力されます。変更する場合は、HEXエントリを消去し、手順8)で保存したKeyファイルからinfoをHEXADECIMAL形式で入力します。

  • LocalSignatureKeyKey値はCSRKに入ります

  • LongTermKeyKeyLTKに入ります

  • RandERandに入ります:infoファイルのデータをDECIMAL形式で入力します

  • EDivEDivに入ります:データをDECIMAL形式で入力します。

12.Interval、Latency、およびTimeoutの値をinfoファイルからDeviceレジストリエントリにコピーします(すべてDECIMAL形式)。

  • MaxIntervalLERemoteConnParamsIntervalMaxに入ります

  • MinIntervalLERemoteConnParamsIntervalMinに入ります

  • LatencyLERemoteConnParamsLatencyに入ります

  • TimeoutLERemoteConnParamsLSTOに入ります

enter image description here

  1. Windowsを再起動し、バッテリーをSurfaceキーボードに再度挿入します。これにより、Windows Bluetoothサービスに接続されます。キーボードを再ペアリングすることなく、Windows 10からUbuntu 18.04へ、またはその逆にシームレスに起動できるはずです。
0
cygnus