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を次に示します。

  1. コードネーム「bookworm」 64bit NG
  2.  $ 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
    
  3. コードネーム「bullseye 」32bit NG
  4.  $ 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
    
  5. コードネーム「buster 」32bit NG
  6. $ 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ファイルを指定します。