デュアルブートBluetooth LE(低エネルギー)デバイスのペアリング

デュアルブートBluetooth LE(低エネルギー)デバイスのペアリング

Fedora 26で2つのBluetoothデバイス、マウス、キーボードをペアリングしようとしています。私もWindows 10がインストールされています。私がしたことは次のとおりです。 LinuxとWindowsでペアリングしましたが、Windowsから取得したキーを挿入しようとすると、[LinkKey]上記の項目が見つかりません。私が従う指示

以下は、デバイスの1つに関する情報ファイルの内容です。

[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でキーを取得し、上記の方法も試しました。この問題

答え1

問題は、お使いのデバイスが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}からキー値を取得します。
    • SYSTEM\Select で見つけることができる ControlSet001 または ControlSet002 かもしれませんが、通常 ControlSet001 です。

  • たとえば、chntpw(Linux上)cd {PATH_TO_WINDOWS_PARTITION} / Windows / System32 / config /
    chntpw -e SYSTEMを使用してこれを実行できます。
  • /var/lib/bluetooth/{computer-bluetooth-mac} に移動します。
  • 非常に似たデバイスのBluetooth IDのディレクトリを確認してください(再度ペアリングするたびに変更される可能性があるため、通常は若干異なります)。
  • デバイスIDと一致するようにディレクトリ名を変更します。
  • 名前が変更されたディレクトリ内の情報ファイルを編集します。
  • 次の値をコピーします。
    • IRKKey入力するIdentityResolvingKey
    • CSRKKey入力するLocalSignatureKey
    • LTKKey入力するLongTermKey
    • ERandinto Rand:16進値を取得します。ab cd ef、バイト逆方向(EF CD ab)これを10進数に変換します(たとえば、電卓アプリのプログラミングモードを使用)。
    • EDIVinto EDiv:16進値を取得して正常に変換または表示される場合は、10進値を直接使用します(chntpwが表示する)
  • 再起動

または
Mygod が提供する Python スクリプトを使用して、次の手順を実行します。 https://gist.github.com/Mygod/f390aabf53cf1406fc71166a47236ebf

私はスクリプトを使用し、グループのキー項目LongTermKeyとグループの項目をコピーしました。LocalSignatureKeyIdentityResolvingKeyEDivRandLongTermKey

手動パス接続時の考慮事項
私には実際には効果がなかったので使用しませんでした。しかし、他の人にも効果がない場合は、次の一般的な回避策に従ってください。

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

このスクリプトの追加のヒントは次のとおりです。

  • Linuxで動作します。
  • Windowsパーティションをマウントする必要があります。
  • コマンドは次のようにする必要があります。
    ./export-ble-infos.py -s {PATH_TO_WINDOWS_PARTITION}/Windows/System32/config/SYSTEM
    • SYSTEM ファイルを別の場所にコピーし、次のコマンドを使用してパスを渡すこともできます。-s {PATH}
  • WindowsがLEでないか、少なくともこの形式以外のBluetoothデバイスがあることがわかると、競合が発生します。

答え2

前の回答で説明した方法を試しました(例:チュートリアルに従ってください)。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でキーボードをペアリングし、からキーボードのBluetoothアドレスを取得し、[接続]をクリックしてSettings>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をに変更します0infoマイコンピュータのファイルは次のとおりです。
[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キーボードで接続をオンにして、バッテリーを再挿入します。キーボードが接続され、正しく機能する必要があります。バッテリーを取り外さずに再起動して、キーボードが正しく機能していることを確認してください。
  3. ファイルを保存/印刷してinfoキーにアクセスし、キーボードのWindows 10レジストリキーを更新します。私の場合は、Windows 10およびUbuntuにインストールされているディスクにファイルを保存しました(Windows 10レジストリにデータをコピー/入力できるように)。
  4. Surfaceキーボードをオフにして(バッテリーを取り外し)、Windows 10で再起動します。PSTools's psexecレジストリの編集に使用されます。まず、PSTools次からダウンロードしてください。http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx。 zipファイルを解凍し、管理者としてターミナルコンソールを開き、解凍したファイルにディレクトリを変更してから、実行すると、ペアリングキーが保存されている特権レジストリpsexec -s -i regedit.exeキーにアクセスできます。
  5. ファイルのキーをinfoSurface キーボードの Windows レジストリキーにコピーします。まず、キーボードの2つの項目の名前を変更する必要があります。航海Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters。以下の項目DevicesKeysSurfaceキーボードに対応する項目の名前を変更します。キーボードがペアリングされるたびに、前のペアリングと区別するためにアドレスが少しずつ変更されます。私の場合、初期のWindows 10ペアリングがオンになっており、その後のce2e25b810cUbuntuペアリングもオンになっていましたCE:2E:25:B9:D1:0C(小文字のandを除いてほぼ同じアドレスですが、:toが増えたことに注意してください)。元のWindows 10ペアリングアドレスに対応するレジストリ名を右クリックし、名前をUbuntuアドレスに変更します。b8B9

レジストリキーの名前を変更した後、私のシステムでは次のように表示されます。 ここに画像の説明を入力してください。

  1. infoファイルのキーをKeys/{MAC Address}/{Bluetooth Address}レジストリキー(\Keys\b831b59a5d15\ce2e25b9d10c例では)にコピーします。まず、フィールドを右クリックして、BluetoothアドレスをUbuntuでペアリングするために使用されたアドレスに更新します(例では、元のWindows 10の「ce2e25b810c」とUbuntuの「ce2e25b910c」が16進数でペアリングされています)ModifyAddress

ここに画像の説明を入力してください。

同様にModify、次の各レジストリフィールドは、infoUbuntuファイルのデータを対応するWindows 10レジストリフィールドにコピー/キー指定します。

  • IdentityResolvingKey Key値はIRKレジストリフィールドに入ります。変更時には、hexエントリを削除し、手順8)で保存したファイルKeyからhex形式で入力します。info

  • LocalSignatureKey Key値を入力CSRK

  • LongTermKey Key入力するLTK

  • RandEnter:DECIMAL形式ERandでファイルのデータを入力します。info

  • EDivEnter EDiv:DECIMAL形式でデータを入力します。

info12.ファイルの間隔、遅延、およびタイムアウト値をDeviceレジストリキーにコピーします(すべてDECIMAL形式)。

  • MaxInterval入力するLERemoteConnParamsIntervalMax

  • MinInterval入力するLERemoteConnParamsIntervalMin

  • Latency入力するLERemoteConnParamsLatency

  • Timeout入力するLERemoteConnParamsLSTO

ここに画像の説明を入力してください。

  1. Windowsを再起動し、Windows Bluetoothサービスに接続されているSurfaceキーボードにバッテリーを再挿入します。キーボードを再ペアリングせずに、Windows 10からUbuntu 18.04またはその逆にスムーズに起動できる必要があります。

関連情報