gdsports / USB_Host_Library_SAMD

USB host library 2.0 for Zero/M0/SAMD
125 stars 39 forks source link

Problem with USBH_MIDI with Zoom G3. #4

Open soulwyx opened 5 years ago

soulwyx commented 5 years ago

I can make USB_STATE_RUNNING with my Zoom G3 without de USBH_MIDI library. But when I add the: USBH_MIDI midiUsb(&usb); I get problems. Stuck a while with USB_STATE_CONFIGURING and then USB_STATE_ERROR. Any Idea of what is happening or what I need to look for?

I just need to send data. Another library that I can use to send data? outTransfer(bAddress, epInfo[epDataOutIndex].epAddr, bytes_send, dataptr); How I get the "bAdress" and "epInfo[epDataOutIndex].epAddr" without USBH_MIDI library?

gdsports commented 5 years ago

Post your code and any serial console debug output.

soulwyx commented 5 years ago
#include <Arduino.h>
#include <usbhub.h>

USBHost usb;

void setup() {
    Serial.begin(9600);
    usb.Init();
}

void loop() {
    usb.Task();
    delay(1000);
}

Code that works. Debug output:

#include <Arduino.h>
#include <usbhub.h>
#include <usbh_midi.h>

USBHost usb;
USBH_MIDI midiUsb(&usb);
void setup() {
    Serial.begin(9600);
    usb.Init();
}

void loop() {
    usb.Task();
    delay(1000);
}

Code that doesn't work. I get USB_STATE_RUNNING randomly one time. (???) Debug output:

Configuring: parent=0 Port=0 Vid=5766 Pid=351 DeviceClass=0 blindly attempt to configure AttemptConfig: parent= 0 port=0 Inside AttemptConfig -> rcode=0 Inside AttemptConfig -> rcode=0 Inside AttemptConfig -> rcode=0 Inside AttemptConfig -> rcode=0 /!\ USBHost::Task : USB_STATE_CONFIGURING failed with code: 8

soulwyx commented 5 years ago

Look likes the problem is on AttemptConfig function. Any idea?

gdsports commented 5 years ago

What SAMD board are you using? If you are using an Uno, Mega, or Leonardo with a USB host shield, look in the https://github.com/felis/USB_Host_Shield_2.0.

I do not see how sketch 1 could work. Most SAMD boards have only 1 USB port which this library switches to USB host mode so serial console debug ouput does not come out on the same port. Serial console debug output must be sent to Serial1 or other Serial port.

By the way, remove the delay(1000) because it is not needed.

If the Zoom G3 is not MIDI class compliant it will not work.

There is one program in github that indicates the device is usable with the old USB Host Shield library so it may be MIDI class compliant. This uses the older USB host shield so does not work with this library.

https://github.com/vegos/ZoomG3_ArduinoMIDI/blob/master/ZoomG3_ArduinoMIDI.ino

soulwyx commented 5 years ago

I'm using arduino zero. So I can serial debug and use the USB Host application. A lot of people make works the Zoom G3 with USB Host Shield. Here randomly work. I think the problem is on AttemptConfig. For a unknown reason, the code stucks in there. Anything that I can try to change?

soulwyx commented 5 years ago

I don't know why, now it's working. Maybe a problem in my Zoom G3, or noise problem. I'm feeling stupid.

gdsports commented 5 years ago

The Zero is a good board for USB host debugging since it has two USB ports. I am glad to hear it is working.