1. はじめに
雑談
前回に引き続き「外出先から自宅PCをマウスで操作したい」を実現するためにシステム構築(主に要素の実使用確認)を続けていく。
なお、前回このシステムを”遠隔ハードウェア環境”と呼称していたが、世の中ではKVMやIP-KVMと呼ばれているらしい。
「PiKVM」なる物があるとの事なので、そのうち使ってみたいと考えている。
本筋
Raspberry PiとPCを接続した時、PCから見てマウスやキーボードのようなHIDとして振舞わせるUSB OTGという機能がある。
これによりマウスの移動や右クリック、左クリックをRaspberry PiからPCへ送ることができる。
ただし、この機能はすべてのRaspberry Piでは使えないようである。少し調べてみたがRaspberry Pi ZeroシリーズとRaspberry Pi 4では確実に使えるということしか分からなかった。
2. 環境
■ Raspberry Pi OS
本記事投稿時点で最新の2025-12-04版
Based on Debian Trixie
Linux kernel 6.12.47 - 359f37f0faefb712add32a39f98751aea67d5c1f
■ 接続先PC
Windows10機
3. 実装方法
ポイント
・Raspberry PiにはBluetoothでキーボードを接続しておくこと
・Raspberry PiのOTG対応USBポートとPCを接続(電源供給と通信兼用)
1つ
user@RaspberryPi:~$ sudo nano /boot/firmware/config.txt
dtoverlay=dwc2
を最終行に追記する。
前行に同じ記述があるが、構わず追記する。下図は参考。
ここで筆者はハマった。

2つ
user@RaspberryPi:~$ sudo nano /boot/firmware/cmdline.txt
dwc2
をtxt内の"rootwait"の直後に追記する。
3つ
user@RaspberryPi:~$ echo "dwc2" | sudo tee -a /etc/modules
user@RaspberryPi:~$ reboot
ここでPCでは「不明なデバイス」として認識されるはずである。
4つ
RapberryPi Zero WをUSBマウスにの中にあるhid.shを適当な場所に置く。ここでは以下の場所。
なおserialnumber等は好きに変更しても動作に影響はない。
user@RaspberryPi:~$ sudo nano /home/user/hid.sh
5つ
user@RaspberryPi:~$ chmod 777 /home/user/hid.sh
user@RaspberryPi:~$ sudo /home/user/hid.sh
ここでPCでは「USB入力デバイス」として認識されるはずである。
4. 動作確認
user@RaspberryPi:~$ sudo su
root@RaspberryPi:/home/user# echo -ne "\0\x30\0" > /dev/hidg0
右へマウスのポインタが移動したはずである。
/dev/hidg0のHIDマウスのレポートにX移動を書き込んだことで指定量が反映された結果である。
送信しているはマウスレポートは3バイト構成になっている。
# echo -ne "\[ボタン(byte0)]\[X移動(byte1)]\[Y移動(byte2)]" > /dev/hidg0
| byte位置 | 役割 | 値 | 動作 |
|---|---|---|---|
| byte0 | ボタン | x00 |
クリック解放 |
x01 |
左クリック維持 | ||
x02 |
右クリック維持 | ||
x03 |
左+右クリック維持 | ||
x04 |
中クリック維持 | ||
| byte1 | X移動 | x01〜x7f |
右へ移動 (x7fが最大) |
xff〜x81 |
左へ移動 (x81が最大) | ||
| byte2 | Y移動 | x01〜x7f |
下へ移動 (x7fが最大) |
xff〜x81 |
上へ移動 (x81が最大) |
右クリックをする場合は
# echo -ne "\x01\0\0" > /dev/hidg0
# echo -ne "\0\0\0" > /dev/hidg0
のように右クリック維持+クリック解放をすると動作する。
5. おわりに
RaspberryPiをマウスにする記事が複数あるが、どれもBullseyeやBookwormがベースOSとなっている頃のものが多く、現行のTrixieベースの記事がなかった。以下参考記事。
https://qiita.com/sgrk/items/7a818b2a059d5b06b209
https://toki-blog.com/pi4-gadget-mouse/
https://tomosoft.jp/design/?p=41233
Bullseyeで動作することを確認後、やはり最新OSで動かしたいと正月前から格闘し、ようやく動かすことができた。
初めTrixieで動作させようとした際にChatGPTにアドバイスを求めたが、最終的には「Trixieベース、Linux kernel 6.12.47では動かない」と結論付けられてしまった。学習元データにない、やや突っ込んだ内容には弱いのかもしれない。
次回はRaspberryPiのIPアドレスにアクセスするとマウスを動かすインターフェースが出るようなものを作りたい。ChatGPTが大いに役立つことを期待しながら筆を置く事とする。