[LAU] BOSS BR-80 USB Audio

From: Kazutomo Yoshii <kazutomo.yoshii@email-addr-hidden>
Date: Mon Aug 08 2011 - 00:23:42 EEST

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
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-user
Received on Mon Aug 8 00:15:03 2011

This archive was generated by hypermail 2.1.8 : Mon Aug 08 2011 - 00:15:04 EEST