USB Capabilities Patch SM and Seed

Hello! Enjoying the Daisy hardware.

My question is about USB support. I notice several libDaisy classes that hint at functionality, but which are unused in any examples, such as USBHostHandle.

A 2021 update introduced Fat32 for USB, but i dont understand the use case. Am i to believe i can plug in a Fat32 USB flash drive into the Patch SM or Seed USB pins, or the external port of the Pod, and expect to read files? If not, what is it for?

Also, curious for any update about USB host Midi, i.e. the ability to plug a USB midi keyboard into a Patch SM or Seed. If its on a roadmap, heres a big +1. Any other users been able to rig up anything for this, short of a small linux box?


Hi James!

I’m sorry for the delay in response!

Yes, USBHostHandle is for connecting a USB flash drive into the Daisy’s USB port and reading files.
Here’s the class docs on that: libDaisy: daisy::USBHostHandle Class Reference

Since the Daisy is a class compliant MIDI device over USB, it’s not possible for devices also looking for a host (like a KeyStep) to send MIDI directly to it via USB. So as of now, you can only send MIDI from the KeyStep to the Daisy via TRS MIDI. That being said, USB host functionality is a feature that’s planned for the future!

1 Like

I’ve been trying to get the USBHostHandle to work with an USB drive but to no avail.
@playjames have you been able to get it to work?
I declared all the callbacks in the config but none of them are ever called, even when I manually plug / unplug an usb drive.
@Takumi_Ogata is there any example available ? I searched in the source and forums but without any luck.
I checked USBHostHandle documentation but it just describes the methods, not how it should work as a whole, so a few questions are left pending
(should I call Process in the main loop ? do I need to call DaisySeed’s class usb_handle member Init method ? If yes before, or after the UsbHostHandle init ? Actually I tried many combinations and none of them trigger a single callback so I guess I’m doing something wrong)
A simple working example would greatly help !
Thanks a lot !

Welcome axel! I’m sorry for the delay in response.

Aurora-SDK should be a good reference to see how the USBHostHandle is used.

Thanks Takumi for answering.

  • The code shown in the sdk is not used anywhere, I didn"t find any example project calling the PrepareMedia in the qubit repositories or anywhere else.
  • based on the PrepareMedia method and its documentation, I made a test project but still without success. There is nothing new that I didn’t already test.
    I double check all 3 of my cables (micro USB to USB female) they are working and passing data (tested on a raspi)
    I tested with several USB drives, I tested both fat16 and fat32.
    I feel like I’m missing a simple thing which I didn’t see in any documentation / code (a definition to add in makefile or preprocessor maybe ? )
    A very simple working example (similiar to all the other code examples) would be very helpful, or any actual working project using either directly the USBHostHandle or the PrepareMedia of aurora-sdk.

Thanks !

I’m wondering, exactly what hardware are you trying to use? I’m pretty sure Daisy seed or patch SM don’t have the required hardware to supply USB power, which would be required to Host a USB drive.

The Daisy Seed.
I may have misunderstood the ability of the seed to host an usb drive ?

Edit : I’m working on a circuit where the power supply is fed to the seed via pins not via USB.
Would it be feasible to power the usb drive not via the seed usb but direclty via my power supply to bypass the issue ?

Edit 2 : For testing purposes, instead of plugging the usb in the daisy, if I go through an externally powered usb hub , that should solve the issue right ?
I ask all this because I didn’t design the hardware, I’m only developping the software part.

Thanks !

Tested with a powered usb hub with no success

Hello axel,

I just want to double check that what you’re trying to do is to flash a firmware to your project with a USB drive, correct?

Hello Takumi,

No, I’m trying to read files from an USB drive, from a C++ program running on a daisy seed.
I understood that it should be doable, as seen higher in the thread :

As my trials did not succeed I came to ask for a working sample to base my code on, as I can’t find any online.

Hello axel,

Thank you for the wait. I checked with the team, and we unfortunately don’t have any example code for reading files from an USB drive. When we get a chance soon, we would love to put one together and share it. We greatly appreciate your patience.

Thanks ! Looking forward to it.

1 Like

Greetings, is there any news on this subject ?

We haven’t had the chance to make an example code yet. I’m sorry for the wait.

OK, thanks for the answer

Hello I wanted to notify that I was finally been able to make it work

  • usb host does not works with the internal USB port (microUSB) but on the external one (I was misleaded by some old documentation that it should work)
  • use latest version of libDaisy

As a side note I realised that a program that reads files from USB works when running from either flash or QSPI but does not work on SRAM (from my tests it seems that the class active callback is never called if I run my program on SRAM but I don’t really have time to investigate the issue)
Is it a known issue ? It may be a bug in my software, but it works flawlessly when running from either flash or qspi.

1 Like