Hi Lucas, try the following patch to disable the hold on the URBs for the Roland D-05 for example.
--- endpoint.git.c 2021-04-08 23:35:55.786731210 -0300 +++ endpoint.c 2021-04-08 23:34:17.783404159 -0300 @@ -1343,6 +1343,7 @@ int snd_usb_endpoint_start(struct snd_us { int err; unsigned int i; + bool skip_implicit_fb_urb_hold;
if (atomic_read(&ep->chip->shutdown)) return -EBADFD; @@ -1375,7 +1376,13 @@ int snd_usb_endpoint_start(struct snd_us if (!ep_state_update(ep, EP_STATE_STOPPED, EP_STATE_RUNNING)) goto __error;
- if (snd_usb_endpoint_implicit_feedback_sink(ep)) { + skip_implicit_fb_urb_hold = false; + + if (USB_ID_VENDOR(ep->chip->usb_id) == 0x0582 && + USB_ID_PRODUCT(ep->chip->usb_id) == 0x01ff) + skip_implicit_fb_urb_hold = true; + + if (snd_usb_endpoint_implicit_feedback_sink(ep) && !skip_implicit_fb_urb_hold) { for (i = 0; i < ep->nurbs; i++) { struct snd_urb_ctx *ctx = ep->urb + i; list_add_tail(&ctx->ready_list, &ep->ready_playback_urbs);
On Thu, Apr 8, 2021 at 10:54 PM Lucas jaffa225man@gmail.com wrote:
Sorry, this is a question that has nothing to do with your last, but I previously tried creating a patch for endpoint.c that tests based on USB_ID_VENDOR(chip->usb_id), and USB_ID_PRODUCT(chip->usb_id) but they aren't recognised there. Do you know what I might be able to use there to avoid messing with every other snd_usb_audio device? Sorry, I just haven't looked the code over long enough.
I may just try your quick recompilation method, as I realized it shouldn't create any new files the package manager couldn't eventually remove through the usual "apt-get remove linux-image-5.11.9". Although, I'll probably be rebooting anyway, since the last time I tried to "modprobe -r snd_usb_audio" it refused due to dependencies.
Thanks!