MIDI 2.0 on Linuxのページ を見ながら、MIDI2.0に対応したデバイスをRaspberry Pi Zero 2W(以下Zero2Wと略します)上に構築してみます。 Zero2Wを選択した理由はUbuntuが動作すること、OTGモードでUSB-MIDIのデバイス としてPCから認識できるように設定できることにあります。
2026/03/22
下の記事は2024年に記載をしています。2026年3月現在、Raspberry Pi Zero 2Wには Ubuntu Server 25.10 (64bit)をインストールしました。

ALSAのバージョンを確認すると、以下の通りでした。
> dpkg -l | grep alsa ii alsa-topology-conf 1.2.5.1-3 all ALSA topology configuration files ii alsa-ucm-conf 1.2.12-1ubuntu2 all ALSA Use Case Manager configuration files ii alsa-utils 1.2.14-1ubuntu1 arm64 Utilities for configuring and using ALSA
> dpkg -l | grep libasound2 ii libasound2-data 1.2.14-1ubuntu1.1 all Configuration files and profiles for ALSA drivers ii libasound2-dev:arm64 1.2.14-1ubuntu1.1 arm64 shared library for ALSA applications -- development files ii libasound2t64:arm64 1.2.14-1ubuntu1.1 arm64 shared library for ALSA applications
> aseqdump -V aseqdump version 1.2.14
また、下に記載のRaspberry Pi Zero 2WをMIDI 2.0デバイスにするためのコマンドを シェルスクリプトにして、Githubに置きました。ご参照下さい。 まず、スーパーユーザになってから、2つのシェルスクリプト、midi2start.shとsetudc.shを順番に起動して下さい。
OSとしては、Ubuntu Server 24.10 (64bit)をインストールしました。

> uname -a Linux Inspiron 6.8.0-50-generic #51~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 21 12:03:03 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
さらに、「Raspberry Piの初期設定」のページ にも書きましたが、それに加えていくつかのPackageをインスツールしています。別途記載したいと思いますが、ALSAのバージョンを 更新するための準備です。
> sudo apt install net-tools > sudo apt install gcc g++ make cmake > sudo apt install libi2c-dev git-core > sudo apt install libasound2 libasound-dev > sudo apt install alsa-utils pmidi > sudo apt install pkgconf bzip2 automake > sudo apt install libncurses5-dev libncursesw5-dev > sudo apt install ncurses-term libgtk2.0-dev
以下の設定はSuper Userになっていた方が楽なので設定します。
> sudo passwd root [sudo] password for user: xxxxxxxx New password: yyyyyyyy Retype new password: yyyyyyyy > su Password: yyyyyyyy
MIDI2 USB Gadget Function Driver の項目を見ながらMIDI2.0デバイスの設定します。
> modprobe libcomposite
> cd /sys/kernel/config
> mkdir usb_gadget/g1
> cd usb_gadget/g1
> mkdir configs/c.1
> mkdir functions/midi2.usb0
> chmod 666 idProduct
> chmod 666 idVendor
> echo 0x0004 > idProduct
> echo 0x17b3 > idVendor
> mkdir strings/0x409
> chmod 666 strings/0x409/manufacturer
> chmod 666 strings/0x409/product
> chmod 666 strings/0x409/serialnumber
> echo "ACME Enterprises" > strings/0x409/manufacturer
> echo "ACMESynth" > strings/0x409/product
> echo "ABCD12345" > strings/0x409/serialnumber
> mkdir configs/c.1/strings/0x409
> chmod 666 configs/c.1/strings/0x409/configuration
> chmod 666 configs/c.1/MaxPower
> echo "Monosynth" > configs/c.1/strings/0x409/configuration
> echo 120 > configs/c.1/MaxPower
> chmod 666 functions/midi2.usb0/iface_name > chmod 666 functions/midi2.usb0/ep.0/ep_name > chmod 666 functions/midi2.usb0/ep.0/product_id > echo "ACMESynth" > functions/midi2.usb0/iface_name > echo "ACMESynth" > functions/midi2.usb0/ep.0/ep_name > echo "ABCD12345" > functions/midi2.usb0/ep.0/product_id > chmod 666 functions/midi2.usb0/ep.0/family > chmod 666 functions/midi2.usb0/ep.0/model > chmod 666 functions/midi2.usb0/ep.0/manufacturer > chmod 666 functions/midi2.usb0/ep.0/sw_revision > echo 0x0123 > functions/midi2.usb0/ep.0/family > echo 0x4567 > functions/midi2.usb0/ep.0/model > echo 0x123456 > functions/midi2.usb0/ep.0/manufacturer > echo 0x12345678 > functions/midi2.usb0/ep.0/sw_revision
> chmod 666 functions/midi2.usb0/ep.0/protocol > echo 2 > functions/midi2.usb0/ep.0/protocol
> chmod 666 functions/midi2.usb0/ep.0/block.0/name > chmod 666 functions/midi2.usb0/ep.0/block.0/first_group > chmod 666 functions/midi2.usb0/ep.0/block.0/num_groups > echo "Monosynth" > functions/midi2.usb0/ep.0/block.0/name > echo 0 > functions/midi2.usb0/ep.0/block.0/first_group > echo 1 > functions/midi2.usb0/ep.0/block.0/num_groups
> ln -s functions/midi2.usb0 configs/c.1
> ls /sys/class/udc 3f980000.usb
> chmod 666 UDC > echo 3f980000.usb > UDC
> cat /proc/asound/cards
....
1 [Gadget ]: f_midi2 - MIDI 2.0 Gadget
MIDI 2.0 Gadget
MACにZero2Wを接続してデバイスがMIDI2.0デバイスとして認識できるかをチェックします、 MACのUSBポートと、Raspberry Pi Zero 2WのUSBポートを接続します。

私の場合、PWR INのUSBケーブルを抜いてUSBポートに接続しました。 そのため、上で設定した構成が消えてしまいましたので、立ち上がった後でもう一度上の構成設定を行います。 シェルスクリプトを書いておくと良いと思います。
Audio MIDI設定を開きます。

「表示」メニューから「MIDIスタジオを表示」を選択します。

下のようなアイコンが見えると思います。上で設定した”ACMESynth"という名前のProductと、 "Monosynth" というポートと並んで、MIDI2.0というポートが設置されていることが確認できます。

MIDI2.0プロトコルを送受信するテストは以降に行いたいと思います。