Raspberry Pi 400 は、 Raspberry Pi とキーボードとが一体化されている端末です。
このキーボードを PC で使えたら便利なのになと思って調べてみました。
何故かビルドしないとうまく動かなかったので、今回はビルドする方法から紹介します。
環境
今回の環境は下記のとおりです。
開発端末
- OS: Windows 11 Pro
- CPU: Intel Core i7-9750H
- メモリ: 64GB
- GPU: NVIDIA GeForce RTX 2070 Max-Q
Raspberry Pi
- 端末: Raspberry Pi 400
- OS: Raspberry Pi OS with desktop
- System: 64-bit
- Kernel version: 6.1
- Debian version: 12 (bookworm)
Raspberry Pi OS のセットアップ
まずは Raspberry Pi 400 を使うために Raspberry Pi OS のセットアップを行います。
特に特殊な作業はありませんが、よく分からない方は下記を参考にしてください。
OTGモードでの起動設定
sudo nano /boot/config.txt
末尾に追記します。
dtoverlay=dwc2
再起動します。
sudo reboot
USB HID キーボードのビルド
前述の通り、ビルドを行う必要があります。
手順の通り行えば問題なく動くと思います。
必要なパッケージのインストール
sudo apt -y install libconfig-dev git cmake
GitHub リポジトリのクローン
git clone https://github.com/Gadgetoid/pi400kb
ディレクトリの移動
cd pi400kb
サブモジュールの更新
git submodule update --init
ビルド用のディレクトリの作成
mkdir build
ビルド用のディレクトリに移動
cd build
ビルド手順の生成
cmake ..
ビルドの実行
make
ビルドしたファイルの実行
PC と Raspberry Pi 400 を USB A to C ケーブルなどで接続します。
USB A 側を PC に接続し、 Type-C 側を Raspberry Pi 400 に接続します。
USB ケーブルで接続したら、 Raspberry Pi 400 を起動します。
モジュールの読み込み
sudo modprobe libcomposite
ビルドしたファイルの実行
sudo ~/pi400kb/build/pi400kb
PC と Raspberry Pi 400 の制御の切り替えは、 Ctrl
+ Raspberry
でできます。
終了するには Ctrl
+ Shift
+ Raspberry
を押します。
スタートアップへの登録
毎回、起動するのは面倒なので、スタートアップへ登録しておきます。
libcomposite モジュールの自動読み込み設定の追加
sudo nano /etc/modules
末尾に下記を追記して保存します。
libcomposite
設定例
環境によって異なりますが参考にしてみてください。
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
i2c-dev
libcomposite
ビルドした実行ファイルのコピー
sudo cp ~/pi400kb/build/pi400kb /usr/sbin/pi400kb
サービスへの登録
下記のコマンドを実行し、 pi400kb.service
の中身をコピペして保存します。
sudo systemctl edit --force --full pi400kb.service
[Unit]
Description=pi400kb USB OTG Keyboard & Mouse forwarding
[Service]
ExecStart=/usr/sbin/pi400kb
User=root
Group=root
Type=simple
Restart=on-failure
[Install]
WantedBy=multi-user.target
サービスの開始
sudo systemctl start pi400kb.service
ステータスの確認
Active: active (running)
と表示されていれば問題ありません。
sudo systemctl status pi400kb.service
スタートアップへの登録
sudo systemctl enable pi400kb.service
参考文献
下記のサイトを参考にさせて頂きました。