Estou tentando usar o MIDI Linux Gadget Module (g_midi) para transformar um Raspberry Pi Zero em um dispositivo USB MIDI. Eu habilitei o g_midi usando os seguintes comandos:
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
E agora um dispositivo MIDI aparece na lista quando eu executo sudo amidi -l
.
Quando conecto o Pi Zero a um computador via USB, o computador detecta um novo dispositivo MIDI e posso enviar mensagens MIDI entre o Pi e o computador. Eu posso conectar e desconectar o dispositivo quantas vezes eu quiser, e o computador sempre reconhece o Pi.
No entanto, isso não é o mesmo usando um iPad. Quando eu conecto o cabo USB de dados Pi no Kit de Conexão da Câmera (com o Pi Zero também sendo conectado com o PWR USB), posso conectar o Kit de Conexão da Câmera ao iPad e ele reconhecerá o Pi como um dispositivo MIDI. No entanto, se eu desconectar e reconectar o Kit de Conexão da Câmera, o iPad não reconhecerá o Pi novamente.
Conectar o Pi USB de volta a um computador faz com que o Pi seja reconhecido novamente naquele computador, mas não no iPad. Se eu desconectar o Pi e ligá-lo novamente, posso fazer com que ele reconheça bem novamente, mas apenas na primeira vez que eu o conecto.
Eu dei uma olhada usando dmesg -wH
e a saída é a seguinte:
Pi Zero sendo conectado inicialmente ao computador:
[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 está sendo conectado ao computador:
[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 sendo plugado inicialmente no 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 está sendo plugado novamente no iPad:
[ +5.517874] dwc2 20980000.usb: new device is low-speed
Eu tenho (muito ocasionalmente) conseguido fazer com que o Pi Zero seja reconhecido pela segunda vez no iPad, desconectando e reconectando muitas e muitas vezes, enquanto aguardo entre replugs. Eu cronometrei quando desconectei e recarreguei, mas esses tempos não são reproduzíveis. O que eu notei nas raras ocasiões em que o Pi Zero foi reconhecido pela segunda vez foi que a mensagem de dmesg -wH
era:
[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
e a parte estranha era que o new address
ainda era 1, enquanto no computador o endereço era incrementado em um a cada vez que eu conectava o Pi Zero.
Não sabendo nada sobre MIDI, USB ou Linux Gadget Modules, eu não tenho certeza se isso é significativo, mas até onde eu sei, é a única coisa diferente entre quando eu faço o Pi Zero reconhecer em um computador comparado a um iPad.
Alguém já teve alguma experiência em trabalhar com o MIDI Linux Gadget Module e um iPad, que sabe o que há de errado aqui? Eu gostaria de receber ajuda com isso.