Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[USB][v5.1.4] Yamaha P-525 returns HUB: Bad transfer status 1: CHECK_SHORT_DEV_DESC (IDFGH-14542) #15304

Open
chipweinberger opened this issue Jan 29, 2025 · 10 comments
Assignees
Labels
Awaiting Response awaiting a response from the author Status: Opened Issue is new Type: Bug bugs in IDF

Comments

@chipweinberger
Copy link
Contributor

chipweinberger commented Jan 29, 2025

IDF version.

v5.1.4

Espressif SoC revision.

esp32-s3

Development Kit.

custom pcb

Power Supply used.

USB

What is the expected behavior?

USB communication should succeed.

What is the actual behavior?

    (103239) HUB: Bad transfer status 1: CHECK_SHORT_DEV_DESC
    (103243) HUB: Stage failed: CHECK_SHORT_DEV_DESC

Steps to reproduce.

  1. plug in Yamaha P-525

More Information.

This is all the relevant information I have. This is a customer report.

@chipweinberger chipweinberger added the Type: Bug bugs in IDF label Jan 29, 2025
@chipweinberger
Copy link
Contributor Author

@tore-espressif
@peter-marcisovsky
@roma-jam

Thanks for your time.

@github-actions github-actions bot changed the title [USB][v5.1.4] Yamaha P-525 returns HUB: Bad transfer status 1: CHECK_SHORT_DEV_DESC [USB][v5.1.4] Yamaha P-525 returns HUB: Bad transfer status 1: CHECK_SHORT_DEV_DESC (IDFGH-14542) Jan 29, 2025
@espressif-bot espressif-bot added the Status: Opened Issue is new label Jan 29, 2025
@roma-jam
Copy link
Collaborator

Hi @chipweinberger,

Thanks for reporting the problem.

Could you try to increase the root port delays in menuconfig?
Component config -> USB-OTG -> Root Hub configuration

Step 1. Increase only Reset recovery delay to 3000 ms. If that helps, you can decrease the value and find out which one works. If not:
Step 2. Increase Reset hold to 1000 ms. If not helps:
Step 3. Increase SetAddress() recovery time to 1000 ms.

Let me know if that helps.

@chipweinberger
Copy link
Contributor Author

chipweinberger commented Jan 29, 2025

Thanks for the suggestions. i'll try it!

Question - My product needs to work with hundreds if not thousands of different piano models.

Could changing these hurt compatibility with other models?

I need one set of values that works with all digital pianos.

imo, we should use the most compatible values by default. and we should probably use the values most similar to a Windows PC

Thanks for your help.

@chipweinberger
Copy link
Contributor Author

I'll also need a way to change these at runtime, so that the same firmware can support all models.

@roma-jam
Copy link
Collaborator

Hi @chipweinberger,

Yes, that's right indeed.
This will increase the overall time from plugging the device to the port and getting the enumeration done. It won't affect any devices, which works with less delay.

Right now there is a tendency to move from build-time configuration to the run-time and as a part of this process the delay values as a configurable parameter also could be eliminated. Unfortunately there is no information about when this could be implemented.

@espressif-bot espressif-bot added the Awaiting Response awaiting a response from the author label Feb 4, 2025
@espressif-bot espressif-bot assigned igi540 and roma-jam and unassigned igi540 Feb 4, 2025
@roma-jam
Copy link
Collaborator

roma-jam commented Feb 4, 2025

Hi @chipweinberger,

Does the delay changing help?

@tore-espressif
Copy link
Collaborator

@chipweinberger I reproduced the error on a different digital piano.

Unfortunately, it seems to be device problem. My windows PC cannot enumerate it too, this is a screenshot from USB Device Tree Viewer after the problem occurs

Image

I had to turn the piano off and back on to fix the problem.

Could you please verify that it is not the USB device's problem? You can try like this

  1. Plug and unplug the USB device to ESP32 repeatedly until the problem occurs
  2. Do NOT turn off the piano and plug it into PC

If the PC cannot enumerate the device, it is the USB device (piano) problem

@chipweinberger
Copy link
Contributor Author

chipweinberger commented Feb 4, 2025

Hi @chipweinberger,

Does the delay changing help?

I don't have this piano personally, so it's more difficult.

But in the next couple weeks I plan to test it, with the customer's help.

@chipweinberger
Copy link
Contributor Author

chipweinberger commented Feb 4, 2025

@tore-espressif I had the customer plug and unplug many times. Their piano was able to connect to a Mac, but not ESP32-S3. I don't think they ever reset their piano.

@tore-espressif does your piano only enter that bad state after communication with the esp32? If so, that seems like the esp32 is doing things in a non standard way.

@chipweinberger
Copy link
Contributor Author

chipweinberger commented Feb 4, 2025

IMO Espressif should consider acquiring this piano for further testing.

Customers want usb to "just work", and Yamaha is a big reputable brand.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting Response awaiting a response from the author Status: Opened Issue is new Type: Bug bugs in IDF
Projects
None yet
Development

No branches or pull requests

5 participants