[alsa-devel] BOSS GT-1 USB audio and implicit feedback
Mike Oliphant
oliphant at nostatic.org
Sun Jan 19 00:34:06 CET 2020
I've been digging around in the USB audio section of the kernel for the
past month or so trying unsuccessfully to get audio on my BOSS GT-1
pedalboard to work in Linux.
The device is recognized by the current kernel, but aplay just hangs when
trying to output to it.
My searches led me to this now-resolved issue with implicit feedback quirk
handling on BOSS Katana amplifiers:
https://bugzilla.kernel.org/show_bug.cgi?id=195223
I have patched pcm.c with a similar fix for the GT-1 in
set_sync_ep_implicit_fb_quirk():
case USB_ID(0x0582, 0x01d6): /* BOSS GT-1 */
return 0;
This results in successful playback, but with frequent pops/clicks in the
audio - even with high buffer sizes under very low load - likely
attributable to the lack of implicit feedback.
The GT-1 has come up on the mailing list before - some good information is
here, but no resolution:
https://mailman.alsa-project.org/pipermail/alsa-devel/2018-January/130957.html
My understanding from what I think I know about implicit feedback and the
output of lsusb, is that the device is designed to operate with
simultaneous capture/playback, with feedback being provided in the capture
stream to be used to sync both capture and playback.
It seems like this is what the feedback quirk might be trying to do, since
this is what I see from dmesg when trying to play audio with aplay on the
stock kernel:
[ 218.530738] usb 1-1.1: setting usb interface 1:1
[ 218.530753] Creating new playback data endpoint #d
[ 218.530772] Creating new capture data endpoint #8e
[ 218.531687] usb 1-1.1: Setting params for ep #d (type 0, 12 urbs), ret=0
[ 218.531706] usb 1-1.1: match_endpoint_audioformats: (fmt @ed1fbd45)
score 2
[ 218.531840] usb 1-1.1: Setting params for ep #8e (type 0, 12 urbs), ret=0
[ 218.531855] usb 1-1.1: Starting data EP @f114d201
[ 218.532514] usb 1-1.1: Starting sync EP @984e9cce
I have also tried to manually set the feedback endpoint in
set_sync_ep_implicit_fb_quirk():
case USB_ID(0x0582, 0x01d6): /* BOSS GT-1 */
ep = 0x8e;
ifnum = 2;
goto add_sync_ep_from_ifnum;
but this results in the same behavior.
Any suggestions on what else to try would be much appreciated. It seems
like the device is *very* close to working properly.
Output from lsusb for the interface follows.
Thanks!
Mike
---
Output from lsusb:
Bus 001 Device 003: ID 0582:01d6 Roland Corp.
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 255
bMaxPacketSize0 64
idVendor 0x0582 Roland Corp.
idProduct 0x01d6
bcdDevice 0.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x00bc
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 2
iInterface 0
** UNRECOGNIZED: 06 24 f1 01 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 2
iInterface 0
** UNRECOGNIZED: 07 24 01 01 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 04 18 01 44 ac 00
** UNRECOGNIZED: 06 24 f1 04 16 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x0d EP 13 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0038 1x 56 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 1
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 1
iInterface 0
** UNRECOGNIZED: 07 24 01 07 00 01 00
** UNRECOGNIZED: 0b 24 02 01 02 04 18 01 44 ac 00
** UNRECOGNIZED: 06 24 f1 04 16 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8e EP 14 IN
bmAttributes 37
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Implicit feedback Data
wMaxPacketSize 0x0038 1x 56 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
bInterfaceProtocol 0
iInterface 0
** UNRECOGNIZED: 06 24 f1 02 01 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 3
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 4
More information about the Alsa-devel
mailing list