Skip to contentSkip to conversation

MOTU MicroBook II playback issue snd-usb-audio (hacky fix)

PATCH In review Sally Marcher 3 participants 5 messages Sep 1 – Oct 27 3 messages not in the archive Sound

lore
Share & tools
lore
#0 lore raw

Hi - quick help wanted:

*Issue:*
MOTU MicroBook 2 produced really crunchy sound on the output with snd-usb-audio driver.

*hacky Fix:*
Just setting urb_packs = 8 fixed in usb/endpoint.c (in data_ep_set_params)

*Question:*
I would love to contribute, but just implementing a quirk that fixes urb_packs at 8 seemed really hacky to me, any recommendations on further things to check / try?

*How I figured it out:*
When I modified the old module https://github.com/manuel-rhdt/snd-microbookii to compile with a modern kernel it worked fine. Looking at the usb traffic with WireShark the usb packet size was smaller in case of snd-usb-audio compared to the snd-microbookii driver.

*Kernel (issue also verified on a newer one, on this I did all my debugging / testing):* 7.1.8-arch1-3 (Arch Linux)

*Relevant dmesg output:*

[17703.794487] usb 1-2: new high-speed USB device number 40 using xhci_hcd
[17703.922374] usb 1-2: New USB device found, idVendor=07fd, idProduct=0004, bcdDevice= 0.49
[17703.922383] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[17703.922386] usb 1-2: Product: MicroBookII 
[17703.922389] usb 1-2: Manufacturer: MOTU
[17703.926053] usb 1-2: Waiting for MOTU Microbook II to boot up...
[17703.926874] MicroBookII snd: 00 00 00 00 00 00 0b 14 00 00 00 01
[17703.927854] MicroBookII rcv: 00 02 00 00 00 00 0b 14
[…]
[17707.052011] MicroBookII snd: 00 04 00 00 00 00 0b 18
[17707.052932] MicroBookII rcv: 00 06 00 00 00 00 0b 18 00 00 00 01
[17707.052943] usb 1-2: MOTU MicroBook II ready
[17707.053014] usb 1-2: 0:1 : invalid sync pipe. bmAttributes 03, bLength 7, bSynchAddress 00

Thanks for any help / advice,
Sally

#1 lore raw

PATCH 1/1 ALSA: usb-audio: MOTU MicroBook II playback fix

Add correct datainterval in the quirks-table for Microbook II

This patch fixes playback issues on the Microbook II. The correct value was in the older driver for this device ( https://github.com/manuel-rhdt/snd-microbookii/blob/dd304c097bb6a9d52276ac29c6969fa02bc7674a/audio.c#L914 ).

---
 sound/usb/quirks-table.h | 2 ++

 1 file changed, 2 insertions(+)
sound/usb/quirks-table.h +0 -0
index dd02c6294edf..79df0cb10783 100644
@@ -2813,6 +2813,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),

                                        .rates = SNDRV_PCM_RATE_96000, .ep_attr = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC,
+                                       .datainterval = 1, .rate_min = 96000, .rate_max = 96000, .nr_rates = 1,
@@ -2835,6 +2836,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                                        .rates = SNDRV_PCM_RATE_96000, .ep_attr = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC,
+                                       .datainterval = 1, .rate_min = 96000, .rate_max = 96000, .nr_rates = 1,

Signature · 1 line
2.55.0
Quoted 35 lines · Sally Marcher

Hi - quick help wanted:

*Issue:*
MOTU MicroBook 2 produced really crunchy sound on the output with snd-usb-audio driver.

*hacky Fix:*
Just setting urb_packs = 8 fixed in usb/endpoint.c (in data_ep_set_params)

*Question:*
I would love to contribute, but just implementing a quirk that fixes urb_packs at 8 seemed really hacky to me, any recommendations on further things to check / try?

*How I figured it out:*
When I modified the old module https://github.com/manuel-rhdt/snd-microbookii to compile with a modern kernel it worked fine. Looking at the usb traffic with WireShark the usb packet size was smaller in case of snd-usb-audio compared to the snd-microbookii driver.

*Kernel (issue also verified on a newer one, on this I did all my debugging / testing):* 7.1.8-arch1-3 (Arch Linux)

*Relevant dmesg output:*

[17703.794487] usb 1-2: new high-speed USB device number 40 using xhci_hcd
[17703.922374] usb 1-2: New USB device found, idVendor=07fd, idProduct=0004, bcdDevice= 0.49
[17703.922383] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[17703.922386] usb 1-2: Product: MicroBookII
[17703.922389] usb 1-2: Manufacturer: MOTU
[17703.926053] usb 1-2: Waiting for MOTU Microbook II to boot up...
[17703.926874] MicroBookII snd: 00 00 00 00 00 00 0b 14 00 00 00 01
[17703.927854] MicroBookII rcv: 00 02 00 00 00 00 0b 14
[…]
[17707.052011] MicroBookII snd: 00 04 00 00 00 00 0b 18
[17707.052932] MicroBookII rcv: 00 06 00 00 00 00 0b 18 00 00 00 01
[17707.052943] usb 1-2: MOTU MicroBook II ready
[17707.053014] usb 1-2: 0:1 : invalid sync pipe. bmAttributes 03, bLength 7, bSynchAddress 00

Thanks for any help / advice,
Sally

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#5 lore raw

Re: [PATCH] ALSA: usb-audio: MOTU MicroBook II playback fix

Hi,
patch is attached to this email.

Thanks,
Sally Marcher

Quoted 43 lines · Alexander Tsoy

В Пн, 26/10/2026 в 14:40 +0100, Sally Marcher пишет:

Quoted 33 lines

 From cd7f80a8beaa40bcb2b313586a3c698d35982c21 Mon Sep 17 00:00:00
2001
From: Sally Marcher <[email protected]>
Date: Mon, 26 Oct 2026 14:29:34 +0100
Subject: [PATCH] Add correct datainterval in the quirks-table for Microbook II

This patch fixes playback issues on the Microbook II. The correct value was in the older driver for this device (
https://github.com/manuel-rhdt/snd-microbookii/blob/dd304c097bb6a9d522
76ac29c6969fa02bc7674a/audio.c#L914).

Datainterval needs to be set explicitly.

---
   sound/usb/quirks-table.h | 2 ++
   1 file changed, 2 insertions(+)
sound/usb/quirks-table.h +1 -0
index 71444c2898b4..ac7861c3d26c 100644
@@ -2781,6 +2781,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                       .rates = SNDRV_PCM_RATE_96000,
                       .ep_attr = USB_ENDPOINT_XFER_ISOC |
                              USB_ENDPOINT_SYNC_ASYNC,
+                    .datainterval = 1,
                       .rate_min = 96000,
                       .rate_max = 96000,
                       .nr_rates = 1,

sound/usb/quirks-table.h YAMAHA_DEVICE(0x7010, "UB99"), · line 2810

Quoted 7 lines
sound/usb/quirks-table.h +1 -0
@@ -2803,6 +2804,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                       .rates = SNDRV_PCM_RATE_96000,
                       .ep_attr = USB_ENDPOINT_XFER_ISOC |
                              USB_ENDPOINT_SYNC_ASYNC,
+                    .datainterval = 1,
                       .rate_min = 96000,
                       .rate_max = 96000,
                       .nr_rates = 1,

Hi!

Quoted 7 lines

You should send this path to [email protected] and CC
mainterners: Takashi Iwai <[email protected]>, Jaroslav Kysela <[email protected]>

Also your email client garbles the patch. For example tabs are replaced by spaces. If you cannot fix that, then it's better to just attach the patch as a text file.

From cd7f80a8beaa40bcb2b313586a3c698d35982c21 Mon Sep 17 00:00:00 2001
From: Sally Marcher <[email protected]>
Date: Mon, 26 Oct 2026 14:29:34 +0100
Subject: [PATCH] Add correct datainterval in the quirks-table for Microbook II

This patch fixes playback issues on the Microbook II.
The correct value was in the older driver for this device (https://github.com/manuel-rhdt/snd-microbookii/blob/dd304c097bb6a9d52276ac29c6969fa02bc7674a/audio.c#L914).

Datainterval needs to be set explicitly.

---
 sound/usb/quirks-table.h | 2 ++
 1 file changed, 2 insertions(+)
sound/usb/quirks-table.h +2 -0
index 71444c2898b4..ac7861c3d26c 100644
@@ -2781,6 +2781,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 					.rates = SNDRV_PCM_RATE_96000,
 					.ep_attr = USB_ENDPOINT_XFER_ISOC |
 						   USB_ENDPOINT_SYNC_ASYNC,
+					.datainterval = 1,
 					.rate_min = 96000,
 					.rate_max = 96000,
 					.nr_rates = 1,
@@ -2803,6 +2804,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 					.rates = SNDRV_PCM_RATE_96000,
 					.ep_attr = USB_ENDPOINT_XFER_ISOC |
 						   USB_ENDPOINT_SYNC_ASYNC,
+					.datainterval = 1,
 					.rate_min = 96000,
 					.rate_max = 96000,
 					.nr_rates = 1,
Signature · 1 line
2.56.0
#6 lore raw

Re: [PATCH] ALSA: usb-audio: MOTU MicroBook II playback fix

Quoted 3 lines · Sally Marcher

Hi,
patch is attached to this email.

OK, I applied manually now.

thanks,

Takashi

Quoted 93 lines

Thanks,
Sally Marcher

Quoted 43 lines · Alexander Tsoy

В Пн, 26/10/2026 в 14:40 +0100, Sally Marcher пишет:

Quoted 33 lines

 From cd7f80a8beaa40bcb2b313586a3c698d35982c21 Mon Sep 17 00:00:00
2001
From: Sally Marcher <[email protected]>
Date: Mon, 26 Oct 2026 14:29:34 +0100
Subject: [PATCH] Add correct datainterval in the quirks-table for Microbook II

This patch fixes playback issues on the Microbook II. The correct value was in the older driver for this device (
https://github.com/manuel-rhdt/snd-microbookii/blob/dd304c097bb6a9d522
76ac29c6969fa02bc7674a/audio.c#L914).

Datainterval needs to be set explicitly.

---
   sound/usb/quirks-table.h | 2 ++
   1 file changed, 2 insertions(+)
sound/usb/quirks-table.h +1 -0
index 71444c2898b4..ac7861c3d26c 100644
@@ -2781,6 +2781,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                       .rates = SNDRV_PCM_RATE_96000,
                       .ep_attr = USB_ENDPOINT_XFER_ISOC |
                              USB_ENDPOINT_SYNC_ASYNC,
+                    .datainterval = 1,
                       .rate_min = 96000,
                       .rate_max = 96000,
                       .nr_rates = 1,

sound/usb/quirks-table.h YAMAHA_DEVICE(0x7010, "UB99"), · line 2810

Quoted 7 lines
sound/usb/quirks-table.h +1 -0
@@ -2803,6 +2804,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                       .rates = SNDRV_PCM_RATE_96000,
                       .ep_attr = USB_ENDPOINT_XFER_ISOC |
                              USB_ENDPOINT_SYNC_ASYNC,
+                    .datainterval = 1,
                       .rate_min = 96000,
                       .rate_max = 96000,
                       .nr_rates = 1,

Hi!

Quoted 7 lines

You should send this path to [email protected] and CC
mainterners: Takashi Iwai <[email protected]>, Jaroslav Kysela <[email protected]>

Also your email client garbles the patch. For example tabs are replaced by spaces. If you cannot fix that, then it's better to just attach the patch as a text file.

From cd7f80a8beaa40bcb2b313586a3c698d35982c21 Mon Sep 17 00:00:00 2001
From: Sally Marcher <[email protected]>
Date: Mon, 26 Oct 2026 14:29:34 +0100
Subject: [PATCH] Add correct datainterval in the quirks-table for Microbook II

This patch fixes playback issues on the Microbook II.
The correct value was in the older driver for this device (https://github.com/manuel-rhdt/snd-microbookii/blob/dd304c097bb6a9d52276ac29c6969fa02bc7674a/audio.c#L914).

Datainterval needs to be set explicitly.

---
 sound/usb/quirks-table.h | 2 ++
 1 file changed, 2 insertions(+)
sound/usb/quirks-table.h +2 -0
index 71444c2898b4..ac7861c3d26c 100644
@@ -2781,6 +2781,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 					.rates = SNDRV_PCM_RATE_96000,
 					.ep_attr = USB_ENDPOINT_XFER_ISOC |
 						   USB_ENDPOINT_SYNC_ASYNC,
+					.datainterval = 1,
 					.rate_min = 96000,
 					.rate_max = 96000,
 					.nr_rates = 1,
@@ -2803,6 +2804,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 					.rates = SNDRV_PCM_RATE_96000,
 					.ep_attr = USB_ENDPOINT_XFER_ISOC |
 						   USB_ENDPOINT_SYNC_ASYNC,
+					.datainterval = 1,
 					.rate_min = 96000,
 					.rate_max = 96000,
 					.nr_rates = 1,
Signature · 1 line
2.56.0
#7 lore raw

Re: [PATCH] ALSA: usb-audio: MOTU MicroBook II playback fix

В Вт, 27/10/2026 в 08:33 +0100, Takashi Iwai пишет:

Quoted 7 lines
Quoted 3 lines · Sally Marcher

Hi,
patch is attached to this email.

OK, I applied manually now.

Thanks!

I just want to add some context here for the history. I replied to original thread on alsa-devel ML, but it seems MTA on alsa-project.org is currently down.

This device is not class compliant and all endpoints are contained in a single interface. snd_usb_parse_datainterval() probably returns bInterval of the first endpoint which is an Interrupt endpoint with bInterval=4. That's why datainterval needs to be set explicitly.