社長、ティッシュどこですか?

ティッシュ社長 [ 株式会社Has-key (ハスキー) 代表取締役 ] のとっても個人的な投稿に見せかけてほんの少しだけ営業したいブログ

デュアルブート環境で、Bluetooth Low Energy (LE) マウスを快適に使う

f:id:thewayout:20180921172319j:plain

こんにちは。ティッシュ社長です。 

 

Bluetooth Low Energy (LE) のマウスをWindowsLinux (Ubuntuなど)のデュアルブート環境で使うと、LinuxでペアリングしたマウスをWindowsではもう一度ペアリングしないといけない。。ということが起きます。

 

以下のようにすると、常にWindowsLinuxでペアリングされたままでマウスが使えるので快適です。

 

ペアリング対象マウスは、Microsoft Designer Mouseです。

おそらくキーボードでも同じ。

 

大まかな手順

  1. Linuxでマウスをペアリングする。
  2. Windowsでマウスをペアリングする。
  3. Windowsからペアリングされた情報を引っ張ってくる。
  4. Linuxに対して、Windows側と同じペアリング情報を貼り付ける。

 

Linuxでマウスをペアリングする。

Windowsでマウスをペアリングする。

↑この2つは、通常どおりペアリングでOKです。

 

Windowsからペアリングされた情報を引っ張ってくる。

Windowsを起動して、PSToolsをダウンロード。
PSTools経由で、レジストリを起動。

 

 

psexec.exe -s -i regedit.exe

 

 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\

まで行きます。

 

BluetoothバイスMACアドレスのフォルダ下に、ペアリングされたマウスのMACアドレスが表示されているので、それ一式を保存。

 

一発で保存するならこんな感じ。

psexec.exe -s -i regedit /e C:\mouse.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys

 

ついでに、 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys 内部の ERandとEDIVの decimal 表記もメモっておきます。

 

C:\ に mouse.reg が出力されたはずです。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys]

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\f85971b362bb]
"MasterIRK"=hex:e6,8b,55,56,86,f3,a9,4c,eb,bd,d1,b7,81,e1,b2,86

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\f85971b362bb\c67d090c8295]
"LTK"=hex:e4,d9,bb,0f,f9,fc,e8,0c,92,a8,ab,45,fe,2c,ad,64
"KeyLength"=dword:00000000
"ERand"=hex(b):f3,50,ec,49,0c,ab,47,35 => 3839225276624818419
"EDIV"=dword:00003e1d => 15901
"IRK"=hex:6d,39,01,95,6d,37,bc,2c,e8,6f,54,e8,26,3d,74,98
"Address"=hex(b):95,82,0c,09,7d,c6,00,00
"AddressType"=dword:00000001
"CSRK"=hex:a1,c6,4d,a0,cb,8c,de,2d,95,da,5c,50,24,b8,27,24
"OutboundSignCounter"=dword:00000000
"MasterIRKStatus"=dword:00000001
"AuthReq"=dword:0000002d

 

 

mouse.reg と ERandのdecimal表記を持って、Linuxへ。

 

Linuxに対して、Windows側と同じペアリング情報を貼り付ける。

Linux内部では、一度マウスはペアリングされているので、 /var/lib/bluetooth 内にペアリング情報が入っています。

 

そのペアリング情報を、Windowsと同じものに置き換えることで、Windowsでペアリングしたマウスを、そのままLinuxで使える、というからくり。

 

1つづつ、ペアリング情報を変更していきます。

 

1. マウスのMACアドレスを変更する。

LinuxWindowsでは、ペアリングされたマウスのMACアドレスが微妙に異なります。なぜだろう。例えば C5:AB:XX:XX:XX の場合は、 C5:AC:XX:XX:XX のように。

 

mouse.regでの表記はHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys\f85971b362bb\c67d090c8295 要するに、 C6:7D:09:0C:82:95 なので、/var/lib/bluetooth/XX:XX:XX:XX:XX:XX/C6:7C:09:0D:82:95 とかディレクトリを、C6:7D:09:0C:82:95 にリネームします。

(XX:XX:XX:XX:XX はbluetooth自体のMACアドレス)

 

2. ペアリング情報を変更する

作業場所は

/var/lib/bluetooth/XX:XX:XX:XX:XX/C6:7D:09:0C:82:95

infoというファイルがあるので、それを変更。

 

mouse.regを参照しながら。

 

LongTermKeyのKeyに、LTKの値を入れます。

e4,d9,bb,0f,f9,fc,e8,0c,92,a8,ab,45,fe,2c,ad,64 => E4D9BB0FF9FCE80C92A8AB45FE2CAD64

 

EDivにEDIVの値を入れます。windowsではhexですが、decimal表記にしておきます。

00003e1d => 15901

 

LocalSignatureKeyのKeyに、CSRKの値を入れます。

a1,c6,4d,a0,cb,8c,de,2d,95,da,5c,50,24,b8,27,24 => A1C64DA0CB8CDE2D95DA5C5024B82724

 

IdentitiyResolvingKeyに、IRKの値を入れます。

6d,39,01,95,6d,37,bc,2c,e8,6f,54,e8,26,3d,74,98 => 6D3901956D37BC2CE86F54E8263D7498

 

Randに、ERandのdecimal表記の値を入れます。

f3,50,ec,49,0c,ab,47,35 => 3839225276624818419

 

これで終わり!

WindowsLinuxデュアルブート環境でBluetooth Low Energy (BLE)のマウスが快適に使えるはず。

 

おしまい。