Skip to content

DFU on an MUSB-based controller (MSPM0) #3415

@Vinamra-TI

Description

@Vinamra-TI

Operating System

Linux

Commit SHA

3a0

Board

MSPM0G5187

Firmware

Sorry this is my first time creating issue here, please respond if i need to provide something else.

What happened ?

While using DFU via TinyUSB on an MUSB-based controller, DFU_UPLOAD intermittently fails after one successful upload. The failure occurs specifically when the host issues a DFU_GETSTATUS request immediately after a DFU_UPLOAD transfer.

This results in:
• Device no longer responding to GETSTATUS
• DFU state machine getting stuck
• Subsequent DFU operations failing until reset

How to reproduce ?

These are the steps:
• Device completes an IN data stage (DFU_UPLOAD)
• MUSB auto-ACKs STATUS OUT
• Host immediately sends the next SETUP packet (DFU_GETSTATUS)

At this point:
• _dcd.status_out is still set
• A new valid SETUP packet is already present
• The driver incorrectly interprets the new SETUP as STATUS handling and drops it

This causes GETSTATUS to never be processed.

Debug Log as txt file (LOG/CFG_TUSB_DEBUG=2)

NA

Screenshots

Image

When i change this highlighted OR condition to AND condition , everything is working fine without status request getting stuck after upload request.

I have checked existing issues, discussion and documentation

  • I confirm I have checked existing issues, discussion and documentation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions