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를 다시 인식합니다.

하지만 아이패드를 사용하면 상황이 달라진다. Pi 데이터 USB 케이블을 카메라 연결 키트에 연결하면(Pi Zero도 PWR USB에 연결됨) 카메라 연결 키트를 iPad에 연결하면 Pi가 MIDI 장치로 인식됩니다. 하지만 카메라 연결 키트를 뽑았다가 다시 연결하면 아이패드가 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를 보낼 것으로 예상한다는 의미입니다. 아이패드에 이런 기능이 있는지는 모르겠네요

이것은 일반적인 구성이므로 g_midi의 버그가 아닙니다. USB 사양에 지정된 대로 CONFIG_USB_GADGET_VBUS_DRAW flag커널 을 컴파일할 때 이 설정을 변경할 수 있습니다 .mV * 2

예를 들어 13mV만 필요합니다.

CONFIG_USB_GADGET_VBUS_DRAW=26

또한 사용 가능한 최신 Linux 커널 버전을 사용해 보면 이 오류가 해결될 수도 있습니다.

관련 정보