「RapberryPi Zero WをUSBマウスに」に従って、設定をRapberry Pi OSの最新版で動作させたところ、「/dev/hidg0」が表示されませんでした。
「/dev/hidg0」が表示されなかったRapberry Pi OS
Rapberry Pi 4およびRapberry Pi Zero Wで設定しても、「/dev/hidg0」が表示されなかったRapberry Pi OSを次に示します。
- コードネーム「bookworm」 64bit NG
- コードネーム「bullseye 」32bit NG
- コードネーム「buster 」32bit NG
$ uname -a Linux raspberrypi 6.1.0-rpi7-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.63-1+rpt1 (2023-11-24) aarch64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
$ uname -a Linux raspberrypi 6.1.21+ #1642 Mon Apr 3 17:19:14 BST 2023 armv6l GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye
$ uname -a Linux raspberrypi 5.10.17+ #1414 Fri Apr 30 13:16:27 BST 2021 armv6l GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
Rapberry Pi OSのコードネーム一覧を次に示します。
- Lenny (Debian GNU 5.0) 2009年〜2012年
- Squeeze(Debian 6.0)2011年〜2014年
- Wheezy (Debian 7.0)2013年〜2016年
- Jessie(Debian 8.0)2015年〜2018年
- Stretch(Debian9.0)2017年〜2020年
- Buster(Debian10.0)2019年〜2021年
- Bullseye(Debian11.0)2021年〜2024年
- Bookworm(Debian12.0)2023年〜2026年
- Trixie(Debian13.0)2025年〜
複合デバイスの制御「modprobe libcomposite」
USB Gadget 「modprobe 」は HID デバイスなど様々なデバイスの機能をサポートしています。詳細については、「USB Gadget 機能を利用して Raspberry Pi を HID Keyboard と RNDIS の複合デバイスにする」を参照します。
複合デバイスの制御は、次のようにモジュール「libcomposite」を読み込みます。
$ modprobe libcomposite
次に、 どの機能を組合せるのかを指定するには configfs というファイルシステムを利用し、 そこに予め規定されているファイルを作成することで、必要なパラメータを指定します。
configfs は事前に 「/sys/kernel/config」 にマウントされます。
USB Gadget のパラメータをセットする場合、 「/sys/kernel/config」 の下の 「usb_gadget 」ディレクトリ内に任意の名前のディレクトリを作成し、 そのディレクトリ中に設定ファイルを作成します。
$ sudo mkdir -p /sys/kernel/config/usb_gadget/g1
不具合の原因
シェル「hid.sh」を実行すると、USB Gadget 「modprobe 」が実行され、「/sys/kernel/config/usb_gadget/」が次のように作成されます。
Rapberry Piを再起動すると設定されてた「/sys/kernel/config/usb_gadget/」が次のように削除されます。なぜ削除されるか、どうしたら削除されないかは調査中です。
古いバージョンのRapberry Pi OSのインストール方法
過去のRaspberry Pi OSのイメージは、「Index of /raspbian/images」からダウンロードできます。今回はその中のフォルダ「Index of /raspios_armhf/images/raspios_armhf-2021-05-28」の「 2021-05-07-raspios-buster-armhf.zip」をダウンロードしました。
Raspberry Pi Imagerを起動し「OSを選択」でOSを選択する際に、スクロールを下げて「Use custom」をクリックし、ダウンロードしたzipファイルを指定します。