[LAD] BOSS BR-80 USB Audio

Kazutomo Yoshii kazutomo.yoshii at gmail.com
Sun Aug 7 21:23:42 UTC 2011


Hi All,

[ Sorry about reposting. Someone suggested LAD, so I reposted this to
both LAD and LAU. ]

I bought BOSS BR-80 recently, which can be used as USB audio
interface. Unfortunately, Fedora15(2.6.38.8) didn't recognize it.
Maybe someone already made BR-80 work but my google search
didn't show any hint, so I decided to hack.

I added an entry to quirks-table.h for BR-80 (see below)  and recompiled
the snd-usb-audio module and re-installed the module.
I also added a dmex and softvol config to .asoundrc(see also below).
It now works as a playback device, which satisfies my current requirements.

The capture interface and MIDI seems not working.
The lsusb output contains a couple of 'UNRECOGNIZED' lines.
lsusb output,/proc/asound/, etc are also below.

Although I might not use these interfaces, I'm just curious to hack.

Can anyone suggest where I should look at?

Thanks,
Kaz

========================================

--- sound/usb/quirks-table.h.orig    2011-08-06 21:17:32.686663306 -0500
+++ sound/usb/quirks-table.h    2011-07-26 19:05:21.790767824 -0500
@@ -1611,6 +1611,34 @@
          }
      }
  },
+{
+    USB_DEVICE(0x0582, 0x0130),
+    .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
+        /* .vendor_name = "BOSS", */
+        /* .product_name = "MICRO BR-80", */
+        .ifnum = QUIRK_ANY_INTERFACE,
+        .type = QUIRK_COMPOSITE,
+        .data = (const struct snd_usb_audio_quirk[]) {
+            {
+                .ifnum = 0,
+                .type = QUIRK_AUDIO_STANDARD_INTERFACE
+            },
+            {
+                .ifnum = 1,
+                .type = QUIRK_AUDIO_STANDARD_INTERFACE
+            },
+            {
+                .ifnum = 2,
+                .type = QUIRK_MIDI_STANDARD_INTERFACE
+            },
+            {
+                .ifnum = -1
+            }
+        }
+    }
+},
+
+

========================================
$HOME/.asoundrc

pcm.dmixer  {
      type dmix
      ipc_key 333444  # uniq val
      slave {
         pcm { type hw; card BR80AUDIO; }
         period_time 0
         period_size 1024
         buffer_size 8192
         rate 44100
     }
     bindings {
         0 0
         1 1
     }
}

#http://alsa.opensrc.org/How_to_use_softvol_to_control_the_master_volume
pcm.softvol {
     type            softvol
     slave {
         pcm         "dmixer"
     }
     control {
         name        "Master"
         card        0     # is this right?
     }
}

pcm.!default {
     type plug
     slave.pcm "softvol"
}

========================================

$ find /proc/asound/BR80AUDIO/ -type f
/proc/asound/BR80AUDIO/id
/proc/asound/BR80AUDIO/usbbus
/proc/asound/BR80AUDIO/usbid
/proc/asound/BR80AUDIO/stream0
/proc/asound/BR80AUDIO/midi0
/proc/asound/BR80AUDIO/pcm0p/sub0/status
/proc/asound/BR80AUDIO/pcm0p/sub0/sw_params
/proc/asound/BR80AUDIO/pcm0p/sub0/hw_params
/proc/asound/BR80AUDIO/pcm0p/sub0/info
/proc/asound/BR80AUDIO/pcm0p/xrun_debug
/proc/asound/BR80AUDIO/pcm0p/info

========================================

This message appears in kernel log
[81902.426215] ALSA sound/usb/midi.c:1680: MIDIStreaming interface 
descriptor not found

========================================

lsusb output

Bus 002 Device 008: ID 0582:0130 Roland Corp.
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          0x0130
   bcdDevice            0.00
   iManufacturer           1
   iProduct                2
   iSerial                 0
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength          176
     bNumInterfaces          4
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0xc0
       Self Powered
     MaxPower                2mA
     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
       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
       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            2
           Transfer Type            Bulk
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0200  1x 512 bytes
         bInterval               1
       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               1



More information about the Linux-audio-dev mailing list