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 再次被识别的罕见情况下,我注意到来自的消息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 小工具模块一无所知,我不确定这是否重要,但据我所知,这是我在计算机上识别 Pi Zero 与在计算机上识别时唯一不同的地方iPad。


有没有人有使用 MIDI Linux 小工具模块和 iPad 的经验,知道这里出了什么问题?如果我能得到任何帮助,我将不胜感激。

答案1

这可能是因为默认情况下 g_midi 小工具(顺便说一句,已弃用)使用 250mV VBus Draw,这意味着它期望主机设备向设备发送 250mV。不知道iPad有没有这个功能

这不是 g_midi 上的错误,因为它是通用配置。您可以在编译内核时通过将 更改CONFIG_USB_GADGET_VBUS_DRAW flag为 a 来更改此设置mV * 2,如 USB 规范所指定。

例如,仅需要 13mV:

CONFIG_USB_GADGET_VBUS_DRAW=26

另外,尝试使用您可用的最新Linux内核版本,它可能会修复此错误。

相关内容