Raspberry PiのiPad付きMIDI Linuxガジェットモジュール(g_midi)

Raspberry PiのiPad付きMIDI Linuxガジェットモジュール(g_midi)

私はMIDI Linuxガジェットモジュール(g_midi)を使ってRaspberry Pi ZeroをUSB MIDIデバイスに切り替えたいと思います。次のコマンドを使用してg_midiを有効にしました。

echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
echo "dwc2" | sudo tee -a /etc/modules
echo "g_midi" | sudo tee -a /etc/modules
reboot

これでMIDIデバイスがリストに表示されますsudo amidi -l

USB経由でPi Zeroをコンピュータに接続すると、コンピュータは新しいMIDIデバイスを検出し、Piとコンピュータ間でMIDIメッセージを送信できます。必要に応じてデバイスを接続して切断でき、コンピュータは常にPiを再認識します。

しかし、iPadを使うと状況が変わる。 PiデータUSBケーブルをカメラ接続キットに接続すると(Pi ZeroもPWR USBに接続されています)、カメラ接続キットをiPadに接続すると、PiはMIDIデバイスとして認識されます。ただし、カメラ接続キットを取り外して再接続すると、iPadはPiを再認識しません。

Pi USBをコンピュータに再接続すると、そのコンピュータではPiが再認識されますが、iPadでは認識されません。 Piを抜いて再び電源を入れると、再び正常に認識できますが、初めて接続するときにのみ可能です。

使用しましたが、dmesg -wH結果は次のとおりです。

Pi Zeroは最初にコンピュータに接続されています。

[May27 11:58] dwc2 20980000.usb: new device is high-speed
[  +0.012000] dwc2 20980000.usb: new address 25
[  +0.008198] MIDI Gadget gadget: high-speed config #1: MIDI Gadget

Pi Zeroをコンピュータに再接続します。

[May27 11:59] dwc2 20980000.usb: new device is high-speed
[  +0.010505] dwc2 20980000.usb: new address 26
[  +0.006452] MIDI Gadget gadget: high-speed config #1: MIDI Gadget

Pi Zeroは最初にiPadに接続されています。

[ +23.850688] dwc2 20980000.usb: new device is low-speed
[  +0.158771] dwc2 20980000.usb: new device is high-speed
[  +0.015806] dwc2 20980000.usb: new address 1
[  +0.007635] MIDI Gadget gadget: high-speed config #1: MIDI Gadget

Pi Zero iPadの再挿入:

[  +5.517874] dwc2 20980000.usb: new device is low-speed

私は(非常に偶然に)再接続するのを待っている間にPi Zeroを数回引いた後、再接続してiPadでPi Zeroを再認識させました。プラグを抜いて再接続するのにかかる時間を測定しましたが、この時間は再現できません。まれにPi Zeroが再認識されると、次のメッセージが表示されますdmesg -wH

[May27 11:52] dwc2 20980000.usb: new device is low-speed
[  +0.158547] dwc2 20980000.usb: new device is high-speed
[  +0.015820] dwc2 20980000.usb: new address 1
[  +0.008327] MIDI Gadget gadget: high-speed config #1: MIDI Gadget

奇妙なことはnew addressまだ1ということです。一方、コンピュータでは、Pi Zeroを接続するたびにアドレスが1ずつ増加します。

MIDI、USB、またはLinuxのガジェットモジュールについて何も知らないので、これが重要かどうかはわかりませんが、私が知っている限り、コンピュータとiPadでPi Zeroを識別する方法の唯一の違いです。


iPadでMIDI Linux Gadgetモジュールを使った経験があり、ここで何が起こるのかを知っている人はいますか?お手伝いいただければ幸いです。

答え1

これはおそらく、デフォルトではg_midiガジェット(廃止予定)が250mV VBus Drawを使用しているためです。これは、ホストデバイスがデバイスに250mVを送信すると予想することを意味します。 iPadにこのような機能があるかどうかはわかりません。

これは一般的な設定なので、g_midiのバグではありません。 USB仕様で指定されているようにCONFIG_USB_GADGET_VBUS_DRAW flagカーネルをコンパイルするときにこの設定を変更できます。mV * 2

たとえば、13mVだけが必要です。

CONFIG_USB_GADGET_VBUS_DRAW=26

また、利用可能な最新のLinuxカーネルバージョンを試してみると、このエラーが解決する可能性があります。

関連情報