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

tud_umount_cb not called on Raspberry Pi Pico W #2700

Open
1 task done
Slion opened this issue Jul 5, 2024 · 2 comments
Open
1 task done

tud_umount_cb not called on Raspberry Pi Pico W #2700

Slion opened this issue Jul 5, 2024 · 2 comments
Labels

Comments

@Slion
Copy link
Contributor

Slion commented Jul 5, 2024

Operating System

Others

Board

Raspberry Pi Pico WH

Firmware

Modified dev_hid_composite example from Pico SDK examples.
https://github.com/raspberrypi/pico-examples/tree/master/usb/device/dev_hid_composite

What happened ?

tud_umount_cb is never called after calling tud_disconnect though if you call tud_connect then tud_mount_cb is called as expected.

How to reproduce ?

Here is a modified version of Pico SDK dev_hid_composite example.
You can disconnect and connect by pushing the board's button.
I've added logs to mount and unmount callback.
main.zip

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

no-unmount.txt

Screenshots

No response

I have checked existing issues, dicussion and documentation

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

I'm not the only one seeing this:
https://stackoverflow.com/questions/78655855/rpi-pico-not-receiving-tinyusb-unmount-callbacks/78711334

@Slion Slion added the Bug 🐞 label Jul 5, 2024
@Slion
Copy link
Contributor Author

Slion commented Jul 6, 2024

Updated the first post with logs and example.

@jay94ks
Copy link

jay94ks commented Dec 23, 2024

I could bypass this problem using tud_ready function instead of waiting tud_umount_cb getting called.
It can be bypassed like: (temporary solution)

int main(void) {
   tud_init(0);
   // ...
   uint8_t last = 0;
   while (1) {
      tud_task();
      uint8_t now = tud_ready();
      if (now != last) {
          if (!(last = now)) {
              // unmounted.
          } else {
              // mounted.
          }
      }
   }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants