Rode Podcaster on Linux

From MassynWiki

Jump to: navigation, search

SUCCESS! On November 22nd at 21:18 Sydney time, I've managed to record the first audio with the Rode Podcaster microphone under the Linux platform. This was done with the major assistance from Antonio Ospite.

What follows on this page is the data we've collected on Linux to make this happen. A more concise Recording with the Podcaster on Linux page will come shortly... Recording with the Rode Podcaster on Linux

Contents

Contributors

Links

Still to do

  • How to install ALSA
  • How to configure ALSA for use in Audacity / Jokosher, etc.
  • The Vista firmware for the Podcaster is required for Linux support - unless you have one with a serial number greater than 7729 - those mics already have the update. --AlanR 06:28, 1 January 2009 (MST)

Done

  • Is a reboot required after plugging in the Podcaster? Just plug it in...
  • Can this be done without root? No need to be root
  • Does it work with OSS? Yes

USB Snoop

If you want to do some USB sniffing on windows you can use SniffUSB: http://www.pcausa.com/Utilities/UsbSnoop/default.htm

I'd use it this way:

1. Plug the PODCASTER
2. Install the filter for the Podcaster Device (from the SniffUSB UI)
3. unplug the Podcaster
4. Delete the log and resume the log capture (SniffUSB UI)
5. plug the podcaster again, wait some time
6. View the log and save it (SniffUSB UI)

USB Snoop output http://www.massyn.net/rode/snoop.txt

We could try to replay the log with Usbreplay: http://mcentral.de/wiki/index.php5/Usbreplay

Linux command output

dmesg

[216541.440661] usb 1-1.3: new full speed USB device using uhci_hcd and address 5
[216541.905616] usb 1-1.3: configuration #1 chosen from 1 choice
[216541.930323] ALSA /build/buildd/linux-ubuntu-modules-2.6.24-2.6.24/debian/build/build-server/sound/alsa-driver/usb/usbaudio.c:1296: 5:1:1: cannot get freq at ep 0x1
[216541.940301] ALSA /build/buildd/linux-ubuntu-modules-2.6.24-2.6.24/debian/build/build-server/sound/alsa-driver/usb/usbaudio.c:1296: 5:2:1: cannot get freq at ep 0x82
[216542.620462] usbcore: registered new interface driver hiddev
[216542.642014] input: RODE MICROPHONESj Rode Podcaster as /devices/pci0000:00/0000:00:1f.2/usb1/1-1/1-1.3/1-1.3:1.3/input/input4
[216542.678225] input,hidraw0: USB HID v1.00 Device [RODE MICROPHONESj Rode Podcaster] on usb-0000:00:1f.2-1.3
[216542.678297] usbcore: registered new interface driver usbhid
[216542.678307] /build/buildd/linux-2.6.24/drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver

lsusb

The Vendor and Product ids have not been registerd yet, add them to the linux usb ids database.

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 19f7:0001  
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lsusb -d 19f7:0001 -v

With firmware 0.01 we get:

Bus 001 Device 005: ID 19f7:0001  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x19f7 
  idProduct          0x0001 
  bcdDevice            0.01
  iManufacturer           1 RODE MICROPHONESj
  iProduct                2 Rode Podcaster
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          312
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x60
      (Missing must-be-set bit!)
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength          141
        bInCollection           2
        baInterfaceNr( 0)       1
        baInterfaceNr( 1)       2
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             5
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          9
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 2
        bSourceID               1
        bControlSize            1
        bmaControls( 0)      0x03
          Mute
          Volume
        bmaControls( 1)      0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0603 Line Connector
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 4
        bSourceID               3
        bControlSize            1
        bmaControls( 0)      0x01
          Mute
        bmaControls( 1)      0x02
          Volume
        bmaControls( 2)      0x02
          Volume
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                15
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                 6
        bNrInPins               3
        baSourceID( 0)          2
        baSourceID( 1)          4
        baSourceID( 2)          5
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        bmControls         0x00
        iMixer                  0 
        junk at descriptor end: 00
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 7
        bSourceID               6
        bControlSize            1
        bmaControls( 0)      0x15
          Mute
          Bass
          Treble
        bmaControls( 1)      0x02
          Volume
        bmaControls( 2)      0x02
          Volume
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             8
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID               7
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             9
        wTerminalType      0x0201 Microphone
        bAssocTerminal          1
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               9
        bControlSize            1
        bmaControls( 0)      0x03
          Mute
          Volume
        bmaControls( 1)      0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                11
        bNrInPins               1
        baSourceID( 0)         10
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        bmControls         0x00
        iMixer                  0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            12
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           5
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                23
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            5 Discrete
        tSamFreq[ 0]         8000
        tSamFreq[ 1]        11025
        tSamFreq[ 2]        22050
        tSamFreq[ 3]        44100
        tSamFreq[ 4]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0120  1x 288 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          12
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                23
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            5 Discrete
        tSamFreq[ 0]         8000
        tSamFreq[ 1]        11025
        tSamFreq[ 2]        22050
        tSamFreq[ 3]        44100
        tSamFreq[ 4]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x0120  1x 288 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      42
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              16
Device Status:     0x0001
  Self Powered

With firmware 0.09 we have:

Bus 001 Device 005: ID 19f7:0001  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x19f7 
  idProduct          0x0001 
  bcdDevice            0.09
  iManufacturer           1 RODE MICROPHONESj
  iProduct                2 Rode Podcaster
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          278
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x60
      (Missing must-be-set bit!)
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength          108
        bInCollection           2
        baInterfaceNr( 0)       1
        baInterfaceNr( 1)       2
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             5
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          9
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 2
        bSourceID               1
        bControlSize            1
        bmaControls( 0)      0x01
          Mute
        bmaControls( 1)      0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                 6
        bNrInPins               2
        baSourceID( 0)          2
        baSourceID( 1)          5
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        bmControls         0x00
        iMixer                  0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             8
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID               6
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             9
        wTerminalType      0x0201 Microphone
        bAssocTerminal          1
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               9
        bControlSize            1
        bmaControls( 0)      0x03
          Mute
          Volume
        bmaControls( 1)      0x00
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                11
        bNrInPins               1
        baSourceID( 0)         10
        bNrChannels             1
        wChannelConfig     0x0001
          Left Front (L)
        iChannelNames           0 
        bmControls         0x00
        iMixer                  0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            12
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           5
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                23
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            5 Discrete
        tSamFreq[ 0]         8000
        tSamFreq[ 1]        11025
        tSamFreq[ 2]        22050
        tSamFreq[ 3]        44100
        tSamFreq[ 4]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0120  1x 288 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          12
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                23
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            5 Discrete
        tSamFreq[ 0]         8000
        tSamFreq[ 1]        11025
        tSamFreq[ 2]        22050
        tSamFreq[ 3]        44100
        tSamFreq[ 4]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x0120  1x 288 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      42
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              16
Device Status:     0x0001
  Self Powered

The difference between the two descriptors are:

--- lsusb_0.01.txt
+++ lsusb_0.09.txt
@@ -10,7 +10,7 @@
   bMaxPacketSize0         8
   idVendor           0x19f7 
   idProduct          0x0001 
-  bcdDevice            0.01
+  bcdDevice            0.09
   iManufacturer           1 RODE MICROPHONESj
   iProduct                2 Rode Podcaster
   iSerial                 0 
@@ -18,7 +18,7 @@
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
-    wTotalLength          312
+    wTotalLength          278
     bNumInterfaces          4
     bConfigurationValue     1
     iConfiguration          0 
@@ -42,7 +42,7 @@
         bDescriptorType        36
         bDescriptorSubtype      1 (HEADER)
         bcdADC               1.00
-        wTotalLength          141
+        wTotalLength          108
         bInCollection           2
         baInterfaceNr( 0)       1
         baInterfaceNr( 1)       2
@@ -78,47 +78,18 @@
         bUnitID                 2
         bSourceID               1
         bControlSize            1
-        bmaControls( 0)      0x03
-          Mute
-          Volume
-        bmaControls( 1)      0x00
-        iFeature                0 
-      AudioControl Interface Descriptor:
-        bLength                12
-        bDescriptorType        36
-        bDescriptorSubtype      2 (INPUT_TERMINAL)
-        bTerminalID             3
-        wTerminalType      0x0603 Line Connector
-        bAssocTerminal          0
-        bNrChannels             2
-        wChannelConfig     0x0003
-          Left Front (L)
-          Right Front (R)
-        iChannelNames           0 
-        iTerminal               0 
-      AudioControl Interface Descriptor:
-        bLength                10
-        bDescriptorType        36
-        bDescriptorSubtype      6 (FEATURE_UNIT)
-        bUnitID                 4
-        bSourceID               3
-        bControlSize            1
         bmaControls( 0)      0x01
           Mute
-        bmaControls( 1)      0x02
-          Volume
-        bmaControls( 2)      0x02
-          Volume
+        bmaControls( 1)      0x00
         iFeature                0 
       AudioControl Interface Descriptor:
-        bLength                15
+        bLength                13
         bDescriptorType        36
         bDescriptorSubtype      4 (MIXER_UNIT)
         bUnitID                 6
-        bNrInPins               3
+        bNrInPins               2
         baSourceID( 0)          2
-        baSourceID( 1)          4
-        baSourceID( 2)          5
+        baSourceID( 1)          5
         bNrChannels             2
         wChannelConfig     0x0003
           Left Front (L)
@@ -126,23 +97,6 @@
         iChannelNames           0 
         bmControls         0x00
         iMixer                  0 
-        junk at descriptor end: 00
-      AudioControl Interface Descriptor:
-        bLength                10
-        bDescriptorType        36
-        bDescriptorSubtype      6 (FEATURE_UNIT)
-        bUnitID                 7
-        bSourceID               6
-        bControlSize            1
-        bmaControls( 0)      0x15
-          Mute
-          Bass
-          Treble
-        bmaControls( 1)      0x02
-          Volume
-        bmaControls( 2)      0x02
-          Volume
-        iFeature                0 
       AudioControl Interface Descriptor:
         bLength                 9
         bDescriptorType        36
@@ -150,7 +104,7 @@
         bTerminalID             8
         wTerminalType      0x0301 Speaker
         bAssocTerminal          0
-        bSourceID               7
+        bSourceID               6
         iTerminal               0 
       AudioControl Interface Descriptor:
         bLength                12

The descriptor has been fixed and simplified in later firmware versions.

The linux snd-usb-audio driver works with firmware 0.09 but there is currently no way to update the microphone firmware under linux, you still have to run the Update under Windows.

evtest /dev/input/event4

Input driver version is 1.0.0
Input device ID: bus 0x3 vendor 0x19f7 product 0x1 version 0x100
Input device name: "RODE MICROPHONESj Rode Podcaster"
Supported events:
  Event type 0 (Sync)
Testing ... (interrupt to exit)

and then it waits for events.

As we can see there is no useful event exposed, the current guess is that the HID interface is used for control and management purposes (firmware upload/download).

If we rmmod the usbhid driver and run lsusb -d 19f7:0001 -vvv we can see the usb HID report descriptor:

--- lsusb_0.01.txt
+++ lsusb_vvv_0.01.txt
@@ -337,8 +338,39 @@
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength      42
-         Report Descriptors: 
-           ** UNAVAILABLE **
+          Report Descriptor: (length is 42)
+            Item(Global): Usage Page, data= [ 0x0c ] 12
+                            Consumer
+            Item(Local ): Usage, data= [ 0x01 ] 1
+                            Consumer Control
+            Item(Main  ): Collection, data= [ 0x01 ] 1
+                            Application
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x01 ] 1
+                            (null)
+            Item(Global): Logical Minimum, data= [ 0x00 ] 0
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Global): Report Count, data= [ 0x40 ] 64
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Main  ): Input, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): Collection, data= [ 0x02 ] 2
+                            Logical
+            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
+                            (null)
+            Item(Local ): Usage, data= [ 0x01 ] 1
+                            (null)
+            Item(Global): Logical Minimum, data= [ 0x00 ] 0
+            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
+            Item(Global): Report Count, data= [ 0x40 ] 64
+            Item(Global): Report Size, data= [ 0x08 ] 8
+            Item(Main  ): Output, data= [ 0x02 ] 2
+                            Data Variable Absolute No_Wrap Linear
+                            Preferred_State No_Null_Position Non_Volatile Bitfield
+            Item(Main  ): End Collection, data=none
+            Item(Main  ): End Collection, data=none
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5

There are an Input and an Output report, maybe we can read and write the firmware using them.

Audacity usb on mic link

On the page http://www.audacityteam.org/wiki/index.php?title=USB_mic_on_Linux there are some commands to try. I'm executing these now with the Podcaster plugged in... (Phil : 2008/11/22)

Which device?

root@carl:~# ls -l /dev/dsp*
crw-rw---- 1 root audio 14,  3 2008-11-22 17:10 /dev/dsp
crw-rw---- 1 root audio 14, 35 2008-11-22 17:57 /dev/dsp2
root@carl:~# date
Sat Nov 22 17:58:05 EST 2008
root@carl:~#

We're using /dev/dsp2

cat /proc/bus/usb/devices

With firmware 0.01:

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=19f7 ProdID=0001 Rev= 0.01
S:  Manufacturer=RODE MICROPHONESj
S:  Product=Rode Podcaster
C:* #Ifs= 4 Cfg#= 1 Atr=60 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
I:* If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I:  If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
E:  Ad=01(O) Atr=09(Isoc) MxPS= 288 Ivl=1ms
I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I:  If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
E:  Ad=82(I) Atr=0d(Isoc) MxPS= 288 Ivl=1ms
I:* If#= 3 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

lsmod | grep snd

root@carl:/proc/bus/usb# lsmod | grep snd
snd_usb_audio          83936  0
snd_usb_lib            18432  1 snd_usb_audio
snd_hwdep              10500  1 snd_usb_audio
snd_mpu401              9448  0
snd_mpu401_uart         9728  1 snd_mpu401
snd_seq_dummy           4868  0
snd_maestro3           26660  0
snd_ac97_codec        100772  1 snd_maestro3
ac97_bus                3072  1 snd_ac97_codec
snd_pcm_oss            42016  0
snd_mixer_oss          17792  1 snd_pcm_oss
snd_seq_oss            35456  0
snd_pcm                78596  4 snd_usb_audio,snd_maestro3,snd_ac97_codec,snd_pcm_oss
snd_seq_midi            9248  0
snd_rawmidi            25632  3 snd_usb_lib,snd_mpu401_uart,snd_seq_midi
snd_page_alloc         11528  1 snd_pcm
snd_seq_midi_event      8320  2 snd_seq_oss,snd_seq_midi
snd_seq                54096  6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer              24836  2 snd_pcm,snd_seq
snd_seq_device          9612  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
snd                    56868  16 snd_usb_audio,snd_usb_lib,snd_hwdep,snd_mpu401,snd_mpu401_uart,snd_seq_dummy,snd_maestro3,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_seq_oss,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore               8800  1 snd
usbcore               146028  5 snd_usb_audio,usbhid,snd_usb_lib,uhci_hcd

cat /dev/sndstat

root@carl:/proc/bus/usb# cat /dev/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.16 emulation code)
Kernel: Linux carl 2.6.24-19-server #1 SMP Wed Aug 20 23:54:28 UTC 2008 i686
Config options: 0

Installed drivers:
Type 10: ALSA emulation

Card config:
ESS Allegro PCI at 0x1000, irq 5
MPU-401 UART at 0x300, irq 10
RODE MICROPHONESj Rode Podcaster at usb-0000:00:1f.2-1.3, full speed

Audio devices:
0: Allegro (DUPLEX)
2: USB Audio (DUPLEX)

Synth devices: NOT ENABLED IN CONFIG

Midi devices:
1: MPU-401 UART MIDI

Timers:
7: system timer

Mixers:
0: ESS Technology ESS1988
1: mixer10
2: USB Mixer

cat /proc/asound/cards

root@carl:/proc/bus/usb# cat /proc/asound/cards
 0 [PCI            ]: Allegro - ESS Allegro PCI
                      ESS Allegro PCI at 0x1000, irq 5
 1 [UART           ]: MPU-401 UART - MPU-401 UART
                      MPU-401 UART at 0x300, irq 10
 2 [Podcaster      ]: USB-Audio - Rode Podcaster
                      RODE MICROPHONESj Rode Podcaster at usb-0000:00:1f.2-1.3, full speed

cat /proc/asound/pcm

root@carl:/proc/bus/usb# cat /proc/asound/pcm
00-00: Allegro : Allegro : playback 2 : capture 1
02-00: USB Audio : USB Audio : playback 1 : capture 1

arecord --list-devices

root@carl:/proc/bus/usb# arecord --list-devices
**** List of CAPTURE Hardware Devices ****
card 0: PCI [ESS Allegro PCI], device 0: Allegro [Allegro]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Podcaster [Rode Podcaster], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

ls -l /dev/snd/*

root@carl:/proc/bus/usb# ls -l /dev/snd/*
crw-rw---- 1 root audio 116,  0 2008-11-22 17:10 /dev/snd/controlC0
crw-rw---- 1 root audio 116, 32 2008-11-22 17:10 /dev/snd/controlC1
crw-rw---- 1 root audio 116, 64 2008-11-22 17:57 /dev/snd/controlC2
crw-rw---- 1 root audio 116, 40 2008-11-22 17:10 /dev/snd/midiC1D0
crw-rw---- 1 root audio 116, 24 2008-11-22 17:10 /dev/snd/pcmC0D0c
crw-rw---- 1 root audio 116, 16 2008-11-22 17:10 /dev/snd/pcmC0D0p
crw-rw---- 1 root audio 116, 88 2008-11-22 17:57 /dev/snd/pcmC2D0c
crw-rw---- 1 root audio 116, 80 2008-11-22 17:57 /dev/snd/pcmC2D0p
crw-rw---- 1 root audio 116,  1 2008-11-22 17:10 /dev/snd/seq
crw-rw---- 1 root audio 116, 33 2008-11-22 17:10 /dev/snd/timer

arecord --list-pcms

root@carl:/proc/bus/usb# arecord --list-pcms
default:CARD=PCI
    ESS Allegro PCI, Allegro
    Default Audio Device
front:CARD=PCI,DEV=0
    ESS Allegro PCI, Allegro
    Front speakers
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=UART
    MPU-401 UART
    Default Audio Device
default:CARD=Podcaster
    Rode Podcaster, USB Audio
    Default Audio Device
surround40:CARD=Podcaster,DEV=0
    Rode Podcaster, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Podcaster,DEV=0
    Rode Podcaster, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Podcaster,DEV=0
    Rode Podcaster, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Podcaster,DEV=0
    Rode Podcaster, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Podcaster,DEV=0
    Rode Podcaster, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Podcaster,DEV=0
    Rode Podcaster, USB Audio
    IEC958 (S/PDIF) Digital Audio Output

Recording attempts

alsamixer -c 2

Image:Playback.png Image:Capture.png Image:All.png

amixer -c 2 set Mic 32

Setting the mixer to full volume from the command line.

Simple mixer control 'Mic',0
  Capabilities: cvolume pswitch pswitch-joined cswitch cswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: Capture 0 - 32
  Mono: Playback [off] Capture 32 [100%] [23.04dB] [on]

arecord -Dplughw:2,0 -f cd linuxpodcaster.wav

root@carl:~# arecord -Dplughw:2,0 -f cd linuxpodcaster.wav
Recording WAVE 'linuxpodcaster.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Aborted by signal Interrupt...

Success!! http://www.massyn.net/rode/linuxpodcaster.wav (See signal analysis Image:Linuxpodcaster.png )

arecord -Dplughw:2,1 -f cd test2.wav

root@carl:~# arecord -Dplughw:2,1 -f cd test2.wav
arecord: main:546: audio open error: No such file or directory

More examples

dmesg

[259364.405901] usb 1-1.3: USB disconnect, address 3
[263935.850793] usb 1-1.3: new full speed USB device using uhci_hcd and address 4
[263936.275739] usb 1-1.3: configuration #1 chosen from 1 choice
[263936.300492] ALSA /build/buildd/linux-ubuntu-modules-2.6.24-2.6.24/debian/build/build-server/sound/alsa-driver/usb/usbaudio.c:1296: 4:1:1: cannot get freq at ep 0x1
[263936.310464] ALSA /build/buildd/linux-ubuntu-modules-2.6.24-2.6.24/debian/build/build-server/sound/alsa-driver/usb/usbaudio.c:1296: 4:2:1: cannot get freq at ep 0x82
[263936.375667] input: RODE MICROPHONESj Rode Podcaster as /devices/pci0000:00/0000:00:1f.2/usb1/1-1/1-1.3/1-1.3:1.3/input/input5
[263936.408705] input,hidraw0: USB HID v1.00 Device [RODE MICROPHONESj Rode Podcaster] on usb-0000:00:1f.2-1.3

cat /proc/asound/cards

 0 [PCI            ]: Allegro - ESS Allegro PCI
                      ESS Allegro PCI at 0x1000, irq 5
 1 [UART           ]: MPU-401 UART - MPU-401 UART
                      MPU-401 UART at 0x300, irq 10
 2 [Podcaster      ]: USB-Audio - Rode Podcaster
                      RODE MICROPHONESj Rode Podcaster at usb-0000:00:1f.2-1.3, full speed

arecord -Dhw:2,0 file3.wav

Recording WAVE 'file3.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:901: Sample format non available

arecord -Dhw:2,0 -f cd file3.wav

Recording WAVE 'file3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
arecord: set_params:901: Sample format non available

arecord -Dplughw:2,0 -f cd file3.wav

Recording WAVE 'file3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Aborted by signal Interrupt...

OSS

2008/11/26 - Phil - I could never get the Podcaster to work through OSS, but for some reason, it is working now.

aumix -d /dev/dsp2 -m 100

No response...

sound-recorder -c 2 -s 44100 -b 16 -A /dev/dsp2 -f wav dsp.wav

Success!

Sound Recorder version 0.06 (Build on Oct 30 2005)
Copyright (C) 1997-2000 by B. Warmerdam under GPL.
This program is free software and comes with ABSOLUTELY NO WARRANTY.

Record from dsp (no cdrom support).
To end the recording press CTRL-C
Creating file: dsp.wav

Time 00:04
End of recording: dsp.wav with 524288 samples

Limitations of recording

plughw or hw

It seems the podcaster only likes plughw. Any attempt to record with hw has failed.

Acceptable alsa recording formats

The podcaster had no difficulty recording in 8,11,22,44 or 48khz. Recording either in mono or stereo worked in all cases.

ALSA has some funny business when you change the recording format, for example, when you specify the output type as wav, you have more success than when you speciy au or voc. wav is the most accepted format anyway, I'd suggest you keep using that.

When using WAV, I found the following recording formats worked :-

  • FLOAT_LE
  • S16_LE
  • S24_LE - very bad recording -- really bad!
  • S32_LE
  • U8

Other recording

arecord -D hw:1,0 -f S24_3LE -r 48000 out.wav

Success!

Personal tools