BIOSやFileVaultでBluetoothキーボードを使う

Published: Sat Dec 01 2018

Category: Hardware

通常、BIOSやFileVaultのロック解除画面では、Bluetooth接続されたキーボードは使用できません。

これを回避し、HHKBでFileVaultのロック解除を行う方法を探していたところ、HID Proxyなる機能にたどり着きました。

この記事では、BIOSやFileVaultのパスワード入力画面で、Bluetooth接続のキーボードを使用する方法を説明しています。

動作原理

Raspberry Pi Zero WはBluetooth経由でキーボードの入力を受け取ります。

そしてRaspberry Pi Zero Wは仮想キーボードとして動作し、USB経由で入力をコンピュータに送信します。

Virtual Keyboard

こちらの記事で紹介されているように、HID Proxyに対応したドングルのみでも可能な場合がありますが、HHKBとは相性が悪いのか、私の環境では動作しませんでした。Raspberry Pi Zero Wもトータルコストはそんなに変わらないので、個人的にはこの記事の方法をおすすめします。

必要デバイス

  • Raspberry Pi Zero W
  • Raspberry Piとパソコンを接続するためのUSBケーブル

Instructions

  1. 必要なオプションを追記します
    echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
    echo "dwc2" | sudo tee -a /etc/modules
    echo "libcomposite" | sudo tee -a /etc/modules
    
  2. Bluetooth接続のキーボードと、Raspberry Pi Zero Wを接続します。
  3. Quimbyと呼ばれるソフトウェアをリポジトリからクローン、インストールします。
    git clone https://gitlab.com/dcro/quimby.git
    cd quimby
    sudo apt install python3-evdev
    sudo cp quimby-* /usr/local/bin/
    sudo cp udev/quimby.rules /etc/udev/rules.d/
    sudo cp systemd/system/quimby.service /usr/lib/systemd/system/
    
  4. Raspberry Pi Zero Wを再起動します。
    sudo reboot
    

私のキーボード(HHKB)は、入力デバイスが2つとして認識されており、"/dev/input/event0 "が共通のキー入力で、"/dev/input/event1 "がメディア制御などのための特殊なキー入力でした。 AppleのMagic Keyboard 2の場合は入力デバイスが1つの扱いだったので、HHKB特有の仕様なのかもしれません。

HHKB

そこで、/usr/lib/systemd/system/quimby.service のExecStartの引数の-iオプションに/dev/input/event1を追加しました。

[Unit]
Description=Quimby Input Forwarder
Requires=bluetooth.service
[Service]
Type=simple
ExecStartPre=/usr/local/bin/quimby-setup quimby
ExecStart=/usr/local/bin/quimby-relay -i /dev/input/event0 -i /dev/input/event1 -k /dev/hidg0 -c /dev/hidg1
ExecStop=/usr/local/bin/quimby-cleanup quimby

References

  • https://mlug-au.org/lib/exe/fetch.php?media=workshops:quimby_a_bluetooth-usb_hid_proxy.pdf
  • https://gitlab.com/dcro/quimby