デュアルブート環境で、Bluetooth Low Energy (LE) マウスを快適に使う
こんにちは。ティッシュ社長です。
Bluetooth Low Energy (LE) のマウスをWindowsとLinux (Ubuntuなど)のデュアルブート環境で使うと、LinuxでペアリングしたマウスをWindowsではもう一度ペアリングしないといけない。。ということが起きます。
以下のようにすると、常にWindowsとLinuxでペアリングされたままでマウスが使えるので快適です。
ペアリング対象マウスは、Microsoft Designer Mouseです。
おそらくキーボードでも同じ。
大まかな手順
- Linuxでマウスをペアリングする。
- Windowsでマウスをペアリングする。
- Windowsからペアリングされた情報を引っ張ってくる。
- 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アドレスを変更する。
LinuxとWindowsでは、ペアリングされたマウスの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
これで終わり!
WindowsとLinuxのデュアルブート環境でBluetooth Low Energy (BLE)のマウスが快適に使えるはず。
おしまい。