Created attachment 305024 [details] alsa-info.sh output I am experiencing a problem with the Numark Party Mix II DJ controller. This USB device contains a MIDI controller (which works perfectly fine), along with two audio output interfaces intended to connect speakers and headphones. However, these audio outputs are not initialized properly by ALSA. Based on the dmesg error, I suspect this is due to some sort of quirk with the USB implementation in this device. Upon plugging in the USB, the following output appears in dmesg: ``` [345586.227613] usb 5-4: new high-speed USB device number 8 using xhci_hcd [345586.356105] usb 5-4: New USB device found, idVendor=15e4, idProduct=003d, bcdDevice= 0.00 [345586.356110] usb 5-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [345586.356112] usb 5-4: Product: Party Mix MKII [345586.356113] usb 5-4: Manufacturer: Numark [345586.356114] usb 5-4: SerialNumber: SA2208192425778A [345586.360622] usb 5-4: 3:1 : bogus bTerminalLink 1 ``` I find very few references to this "bogus bTerminalLink" error on the net, so I don't know how to proceed with troubleshooting that. Full output of alsa-info.sh is attached. Notably, the device is recognized as a soundcard by ALSA: ``` 3 [MKII ]: USB-Audio - Party Mix MKII Numark Party Mix MKII at usb-0000:0b:00.3-4, high speed ``` However, ALSA does not initialize any outputs on the device, and alsamixer reports "This sound device does not have any controls." ----------- lsusb of the device: ``` Bus 005 Device 007: ID 15e4:003d Numark Party Mix MKII Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x15e4 Numark idProduct 0x003d bcdDevice 0.00 iManufacturer 1 Numark iProduct 2 Party Mix MKII iSerial 3 SA2208192425778A bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x00f5 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 380mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 1 Audio bFunctionSubClass 0 bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 0 iInterface 2 Party Mix MKII AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0009 bInCollection 1 baInterfaceNr(0) 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 1 Audio bInterfaceSubClass 3 MIDI Streaming bInterfaceProtocol 0 iInterface 2 Party Mix MKII MIDIStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0032 MIDIStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 2 (MIDI_IN_JACK) bJackType 1 Embedded bJackID 1 iJack 0 MIDIStreaming Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (MIDI_OUT_JACK) bJackType 1 Embedded bJackID 2 bNrInputPins 1 baSourceID( 0) 1 BaSourcePin( 0) 1 iJack 0 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 bRefresh 0 bSynchAddress 0 MIDIStreaming Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 1 (Invalid) bNumEmbMIDIJack 1 baAssocJackID( 0) 1 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 bRefresh 0 bSynchAddress 0 MIDIStreaming Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 1 (Invalid) bNumEmbMIDIJack 1 baAssocJackID( 0) 2 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 1 Audio bFunctionSubClass 0 bFunctionProtocol 32 iFunction 2 Party Mix MKII Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 32 iInterface 2 Party Mix MKII AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 2.00 bCategory 8 wTotalLength 0x0048 bmControls 0x00 AudioControl Interface Descriptor: bLength 8 bDescriptorType 36 bDescriptorSubtype 10 (CLOCK_SOURCE) bClockID 5 bmAttributes 1 Internal fixed clock bmControls 0x05 Clock Frequency Control (read-only) Clock Validity Control (read-only) bAssocTerminal 0 iClockSource 2 Party Mix MKII AudioControl Interface Descriptor: bLength 17 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bCSourceID 5 bNrChannels 4 bmChannelConfig 0x00000000 iChannelNames 4 Master Left bmControls 0x0000 iTerminal 2 Party Mix MKII AudioControl Interface Descriptor: bLength 26 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 6 bSourceID 1 bmaControls(0) 0x00000000 bmaControls(1) 0x00000000 bmaControls(2) 0x00000000 bmaControls(3) 0x00000000 bmaControls(4) 0x00000000 iFeature 0 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 2 wTerminalType 0x0301 Speaker bAssocTerminal 0 bSourceID 6 bCSourceID 5 bmControls 0x0000 iTerminal 2 Party Mix MKII Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 32 iInterface 2 Party Mix MKII Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 32 iInterface 2 Party Mix MKII AudioStreaming Interface Descriptor: bLength 16 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 1 bmControls 0x00 bFormatType 1 bmFormats 0x00000001 PCM bNrChannels 4 bmChannelConfig 0x00000000 iChannelNames 4 Master Left AudioStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bSubslotSize 4 bBitResolution 24 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0070 1x 112 bytes bInterval 1 AudioStreaming Endpoint Descriptor: bLength 8 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bmControls 0x00 bLockDelayUnits 0 Undefined wLockDelay 0x0000 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 17 Transfer Type Isochronous Synch Type None Usage Type Feedback wMaxPacketSize 0x0004 1x 4 bytes bInterval 4 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) --endcollapse-- ``` System information: OS: Arch Linux with kernel 6.4.12-zen1 Motherboard: ASUS TUF GAMING X570-PRO Sound: Using pipewire 0.3.78 atop ALSA This problem has been experienced by others for a while. Here are some links to downstream questions regarding the missing audio output on this hardware: https://linuxmusicians.com/viewtopic.php?t=25552 https://mixxx.discourse.group/t/numark-party-mix-2/23164 If this bug should be reported elsewhere, please let me know; I'm reporting it here since ALSA appears to only partially recognize it. I'm willing to troubleshoot deeper, test patches, etc if given some direction on where to look.
Same with kernel 6.5.5-arch1-1 Bus 003 Device 013: ID 15e4:003d Numark Party Mix MKII http://alsa-project.org/db/?f=1be7bb06ec68f3ad493b529b6ac3034fb5f310d3 regards, christian
Hi, also with kernel 6.8.7-arch1-1 Bus 003 Device 003: ID 15e4:003d Numark Party Mix MKII https://alsa-project.org/db/?f=7cfa758cb75f55bd0e1c7f08e3bb115f3bc62395 Thank you & regards, Felix
I see the same issue with the Numark Party Mix Live Linux sage 6.7.12+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.7.12-1~bpo12+1 (2024-05-06) x86_64 GNU/Linux jason@sage:~$ cat /proc/asound/cards 0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xedd28000 irq 141 1 [Live ]: USB-Audio - Party Mix Live Numark Party Mix Live at usb-0000:00:14.0-1, high speed Bus 001 Device 006: ID 15e4:003e Numark Party Mix Live jason@sage:~$ sudo lsusb -v -d 15e4:003e Bus 001 Device 006: ID 15e4:003e Numark Party Mix Live Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x15e4 Numark idProduct 0x003e bcdDevice 0.00 iManufacturer 1 Numark iProduct 2 Party Mix Live iSerial 3 N42109192702157A bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x00f5 bNumInterfaces 4 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 0mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 1 Audio bFunctionSubClass 0 bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 0 iInterface 2 Party Mix Live AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0009 bInCollection 1 baInterfaceNr(0) 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 1 Audio bInterfaceSubClass 3 MIDI Streaming bInterfaceProtocol 0 iInterface 2 Party Mix Live MIDIStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0032 MIDIStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 2 (MIDI_IN_JACK) bJackType 1 Embedded bJackID 1 iJack 0 MIDIStreaming Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (MIDI_OUT_JACK) bJackType 1 Embedded bJackID 2 bNrInputPins 1 baSourceID( 0) 1 BaSourcePin( 0) 1 iJack 0 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 bRefresh 0 bSynchAddress 0 MIDIStreaming Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 1 (GENERAL) bNumEmbMIDIJack 1 baAssocJackID( 0) 1 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 bRefresh 0 bSynchAddress 0 MIDIStreaming Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 1 (GENERAL) bNumEmbMIDIJack 1 baAssocJackID( 0) 2 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 1 Audio bFunctionSubClass 0 bFunctionProtocol 32 iFunction 2 Party Mix Live Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 32 iInterface 2 Party Mix Live AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 2.00 bCategory 8 wTotalLength 0x0048 bmControls 0x00 AudioControl Interface Descriptor: bLength 8 bDescriptorType 36 bDescriptorSubtype 10 (CLOCK_SOURCE) bClockID 5 bmAttributes 1 Internal fixed clock bmControls 0x05 Clock Frequency Control (read-only) Clock Validity Control (read-only) bAssocTerminal 0 iClockSource 2 Party Mix Live AudioControl Interface Descriptor: bLength 17 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bCSourceID 5 bNrChannels 4 bmChannelConfig 0x00000000 iChannelNames 4 Master Left bmControls 0x0000 iTerminal 2 Party Mix Live AudioControl Interface Descriptor: bLength 26 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 6 bSourceID 1 bmaControls(0) 0x00000000 bmaControls(1) 0x00000000 bmaControls(2) 0x00000000 bmaControls(3) 0x00000000 bmaControls(4) 0x00000000 iFeature 0 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 2 wTerminalType 0x0301 Speaker bAssocTerminal 0 bSourceID 6 bCSourceID 5 bmControls 0x0000 iTerminal 2 Party Mix Live Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 32 iInterface 2 Party Mix Live Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 32 iInterface 2 Party Mix Live AudioStreaming Interface Descriptor: bLength 16 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 1 bmControls 0x00 bFormatType 1 bmFormats 0x00000001 PCM bNrChannels 4 bmChannelConfig 0x00000000 iChannelNames 4 Master Left AudioStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bSubslotSize 4 bBitResolution 24 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0070 1x 112 bytes bInterval 1 AudioStreaming Endpoint Descriptor: bLength 8 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bmControls 0x00 bLockDelayUnits 0 Undefined wLockDelay 0x0000 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 17 Transfer Type Isochronous Synch Type None Usage Type Feedback wMaxPacketSize 0x0004 1x 4 bytes bInterval 4 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0001 Self Powered jason@sage:~$
output from alsa-info.sh here: https://alsa-project.org/db/?f=a9fd03705d1ee093b936c72c9c23e81cd68c51d9
In sound/usb/card.c, function: usb_audio_probe, there is an assumption that the first interface should be used, with comment that this need to be revisited in the future. Numark device seems to have more control interfaces and the first one in not correct for it. Indeed, when I manually hard-coded it to use the next one - device started to work. I was not able to find clear documentation around the logic which should be used to find the proper control interface, I was considering to propose one of below solutions: a) Search for interface with "bInterfaceProtocol == 32", as in one of spec documents it was recommended to use this value, see: Audio Devices Rev. 2.0 and Adopters Agreement -> Appendix A.6 "Audio Interface Protocol Codes", value "IP_VERSION_02_00", and 0 is "INTERFACE_PROTOCOL_UNDEFINED" b) Instead of searching for clocks and terminals in only one (first) control interface -> do it for all of them as it seems that the IDs should be unique. Both changes should be fairly safe, as the first configuration interface will always be considered first.
(In reply to Karol Kosik from comment #5) > In sound/usb/card.c, function: usb_audio_probe, there is an assumption that > the first interface should be used, with comment that this need to be > revisited in the future. > > Numark device seems to have more control interfaces and the first one in not > correct for it. Indeed, when I manually hard-coded it to use the next one - > device started to work. I was not able to find clear documentation around > the logic which should be used to find the proper control interface, I was > considering to propose one of below solutions: > > a) Search for interface with "bInterfaceProtocol == 32", as in one of spec > documents it was recommended to use this value, see: Audio Devices Rev. 2.0 > and Adopters Agreement -> Appendix A.6 "Audio Interface Protocol Codes", > value "IP_VERSION_02_00", and 0 is "INTERFACE_PROTOCOL_UNDEFINED" > > b) Instead of searching for clocks and terminals in only one (first) control > interface -> do it for all of them as it seems that the IDs should be unique. > > Both changes should be fairly safe, as the first configuration interface > will always be considered first. I've send a patch which fixes the problem: "[PATCH] ALSA: usb-audio: Support multiple control interfaces" and hopefully covers other consoles as well.
I have a Numark Party Mix Live with the built in speakers I have updated to kernel 6.11 I still see this error in dmesg: [11130.955385] usb 1-6: USB disconnect, device number 12 [11135.459208] usb 1-6: new high-speed USB device number 13 using xhci_hcd [11135.611718] usb 1-6: New USB device found, idVendor=15e4, idProduct=003e, bcdDevice= 0.00 [11135.611726] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [11135.611729] usb 1-6: Product: Party Mix Live [11135.611731] usb 1-6: Manufacturer: Numark [11135.611732] usb 1-6: SerialNumber: N42109192702157A [11135.616466] usb 1-6: 3:1 : bogus bTerminalLink 1 root@x270:~# uname -a Linux x270 6.11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11-1~exp1 (2024-09-19) x86_64 GNU/Linux
(In reply to jason@dickson.st from comment #7) > I have a Numark Party Mix Live with the built in speakers > > I have updated to kernel 6.11 > > I still see this error in dmesg: > > [11130.955385] usb 1-6: USB disconnect, device number 12 > [11135.459208] usb 1-6: new high-speed USB device number 13 using xhci_hcd > [11135.611718] usb 1-6: New USB device found, idVendor=15e4, idProduct=003e, > bcdDevice= 0.00 > [11135.611726] usb 1-6: New USB device strings: Mfr=1, Product=2, > SerialNumber=3 > [11135.611729] usb 1-6: Product: Party Mix Live > [11135.611731] usb 1-6: Manufacturer: Numark > [11135.611732] usb 1-6: SerialNumber: N42109192702157A > [11135.616466] usb 1-6: 3:1 : bogus bTerminalLink 1 > root@x270:~# uname -a > Linux x270 6.11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11-1~exp1 (2024-09-19) > x86_64 GNU/Linux Unfortunately, the patch was not merged to 6.11. It is currently in mainline and will be available in 6.12, some users of mixxx application reported a success with it: https://mixxx.discourse.group/t/numark-party-mix-2/23164/7
Great news! thank you for the update!