Open-source USB interface: Audio Widget

What hardware are u using for capture testing?

In the sdr-widget, the AKM ADC chip is run in master i2s mode. You need both the hardware and the i2s clocks from the ADC and the sdr-widget firmware for capture to work.

In the Audio-Widget branches of the firmware, the EPs have been re-ordered and reused, after some of the capture side codes were commented out.

So the only tested and working capture+playback combi is sdr-widget hardware with sdr-widget firmware.

Alex
 
Hi Alex,
the hardware is OK, I checked the I2S signals, moreover (I use a Dragon to debug) I can see the samples in the buffers in memory. The problem is in the USB side.

Actually the endpoints for recording and feedback seem overlapped. When I start playback it looks like also recording is activated (I put some code to light up two leds based on the state of interface 2 alt 1 and interface 3 alt 1, and they seem to be activated at the same time). I use a hacked UAC2 driver in windows that has a spy tool, and I can see that only two endpoints are seen by the PC (altought the discovery is OK, I can dump the correct descriptors). The feedback endpoint has a wrong address, it has the address of recording endpoint. As both recording and playback start at the same time (although I start only one) on the feedback endpoint both type of buffers are received, and the recording arediscarded due to size limit violations.

Can you think of anythink that can cause the overlap of 0x81 and 0x83 endpoints? I checked a lot of sources, compared my code, but nothing. My main doubts are about the parts of the framework that were modified, I think I checked them but who knows ...

Yesterday evening I discovered some minor problem about endpoint descriptors (not in my code, in all the sources that I've seen), actually a field is missing (with respect to the UAC2 specification) so struct size is smaller. I added the field, compiled, it works, but no behaviour change.
But I remember browsing the sources and discovering an endpoint initialization routine that actually jumps over the structs based on struct size, and this can be fooled by size differences.

Any idea about how the endpoints can overlap? Any idea about initialization routins tha I can check?
Thank you for your help anyway.
 
Hi
Any chance of a recapture for a recent arrival and a interested bystander, I have a wish to
record 4 channels 24 bit Microphone level input.

- Pointer to firmware with recording working.
- pointer to Nikolay's driver
- The easiest way to Aquire a Audio Widget card.
- Any pointers to 4 channel ADC designs.

Sorry if I sound like "I Want It All Now" without any work from me :eek:

Best Regards
Bosse
 
Hi Alex,

Can you think of anythink that can cause the overlap of 0x81 and 0x83 endpoints? I checked a lot of sources, compared my code, but nothing. My main doubts are about the parts of the framework that were modified, I think I checked them but who knows ...

This is the usb descriptors of the audio-widget I have, in uac2:

Bus 002 Device 003: ID 16d0:075d GrauTec
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x16d0 GrauTec
idProduct 0x075d
bcdDevice 10.00
iManufacturer 1 Audio-Widget
iProduct 2 QNKTC USB DAC AB-1.2
iSerial 3 1.0.0.0.0.0.A
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 193
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 1
bInterfaceCount 2
bFunctionClass 1 Audio
bFunctionSubClass 0
bFunctionProtocol 32
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 7 SDR-Widget
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
bCategory 4
wTotalLength 64
bmControl 0x00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 5
bmAttributes 0x01 Internal fixed Clock
bmControls 0x07
Clock Frequency Control (read/write)
Clock Validity Control (read-only)
bAssocTerminal 3
iClockSource 5 Clock 2
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 17
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bCSourceID 5
bNrChannels 2
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
bmControls 0x0000
iChannelNames 0
iTerminal 8 Audio-widget
AudioControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 18
bSourceID 17
bmaControls( 0) 0x00000003
Mute Control (read/write)
bmaControls( 1) 0x00000003
Mute Control (read/write)
bmaControls( 2) 0x00000003
Mute Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 19
wTerminalType 0x0302 Headphones
bAssocTerminal 0
bSourceID 18
bCSourceID 5
bmControls 0x0000
iTerminal 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 17
bmControls 0x07
Active Alternate Setting Control (read/write)
Valid Alternate Setting Control (read-only)
bFormatType 1
bmFormats 1
PCM
bNrChannels 2
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
iChannelNames 0
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 0x0188 1x 392 bytes
bInterval 2
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 67
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 5
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 5
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

0x81 is the rate feedback EP. 0x02 is the playback EP. No overlap.


This is the usb descriptor of my sdr-widget:

Bus 001 Device 002: ID 16c0:05dc VOTI shared ID for use with libusb
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x16c0 VOTI
idProduct 0x05dc shared ID for use with libusb
bcdDevice 10.00
iManufacturer 1 SDR-Widget
iProduct 2 Yoyodyne SDR-Widget
iSerial 3 1.0.0.0.0.0.0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 280
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 1
bInterfaceCount 3
bFunctionClass 1 Audio
bFunctionSubClass 0
bFunctionProtocol 32
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 7 SDR-Widget
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
bCategory 4
wTotalLength 128
bmControl 0x00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 4
bmAttributes 0x01 Internal fixed Clock
bmControls 0x07
Clock Frequency Control (read/write)
Clock Validity Control (read-only)
bAssocTerminal 3
iClockSource 4 Clock 1
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 5
bmAttributes 0x01 Internal fixed Clock
bmControls 0x07
Clock Frequency Control (read/write)
Clock Validity Control (read-only)
bAssocTerminal 3
iClockSource 5 Clock 2
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 11 (CLOCK_SELECTOR)
bUnitID 6
bNrInPins 2
baCSourceID( 0) 4
baCSourceID( 1) 5
bmControls 0x03
Clock Selector Control (read/write)
iClockSelector 6 Select clock
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Microphone
bAssocTerminal 0
bCSourceID 6
bNrChannels 2
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
bmControls 0x0000
iChannelNames 0
iTerminal 8 Audio In Trm
AudioControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 2
bSourceID 1
bmaControls( 0) 0x00000003
Mute Control (read/write)
bmaControls( 1) 0x00000003
Mute Control (read/write)
bmaControls( 2) 0x00000003
Mute Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 2
bCSourceID 6
bmControls 0x0000
iTerminal 9 Audio Out Trm
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 17
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bCSourceID 6
bNrChannels 2
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
bmControls 0x0000
iChannelNames 0
iTerminal 0
AudioControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 18
bSourceID 17
bmaControls( 0) 0x00000003
Mute Control (read/write)
bmaControls( 1) 0x00000003
Mute Control (read/write)
bmaControls( 2) 0x00000003
Mute Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 19
wTerminalType 0x0302 Headphones
bAssocTerminal 0
bSourceID 18
bCSourceID 6
bmControls 0x0000
iTerminal 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 10 Widget-Lite
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 11 Audio In Alt
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 3
bmControls 0x07
Active Alternate Setting Control (read/write)
Valid Alternate Setting Control (read-only)
bFormatType 1
bmFormats 1
PCM
bNrChannels 2
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 37
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Implicit feedback Data
wMaxPacketSize 0x0126 1x 294 bytes
bInterval 2
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 17
bmControls 0x07
Active Alternate Setting Control (read/write)
Valid Alternate Setting Control (read-only)
bFormatType 1
bmFormats 1
PCM
bNrChannels 2
bmChannelConfig 0x00000003
Front Left (FL)
Front Right (FR)
iChannelNames 0
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 3
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 0x0126 1x 294 bytes
bInterval 2
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 0 Undefined
wLockDelay 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0040 1x 64 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

0x81 is the capture EP. 0x02 is the playback EP. 0x83 is the rate feedback EP.

Let me emphasize again that sdr-widget has both capture and playback, and audio-widget has playback only.

It is possible (or indeed likely) that there might be some sdr-widget code for capture that has not been commented out in audio-widget firmware. But in audio-widget firmware, capture is not meant to be enabled (so far).

I have actually tried to add back capture to the audio-widget firmware but failed. The capture part worked but the playback was not working at any speed higher than 48khz. The sdr-widget and audio-widget branches have diverged too much for an easy merge. There are many differences. E.g. the audio-widget is now 32 bits, but the sdr-widget remains at 24 bits (as the ADC is a 24 bit device). The HID codes in audio-widget may not be compatible with the sdr-widget codes. The cpu horsepower may be exceeded when there are capture, playback, HID EP's to service. etc.

So I have been incrementally adding functions/features in the audio-widget-experimental branch to the sdr-widget branch (which is master), but not wholesale merge.


Alex
 
Actually the endpoints for recording and feedback seem overlapped. When I start playback it looks like also recording is activated (I put some code to light up two leds based on the state of interface 2 alt 1 and interface 3 alt 1, and they seem to be activated at the same time). I use a hacked UAC2 driver in windows that has a spy tool, and I can see that only two endpoints are seen by the PC (altought the discovery is OK, I can dump the correct descriptors). The feedback endpoint has a wrong address, it has the address of recording endpoint. As both recording and playback start at the same time (although I start only one) on the feedback endpoint both type of buffers are received, and the recording arediscarded due to size limit violations.

Hi Starn02,

In many (? most, including Nikolay's driver and commercial drivers) uac2 drivers, they will AUTOMATICALLY use the capture EP as the timing source for playback, EVEN when there is a separate explicit FB EP, which will be ignored.

This is a feature/function of the uac2 drivers. Please read the driver documentations (if any). There may be a way to defeat it, but I'm not familiar with it.

Alex
 
Hi all,

The fact that in many uac2 drivers the capture EP will be used for timing of playback stream even in the presence of an explicit FB EP, explains some issues that some users have experienced under certain conditions:

1. running audio-widget firmware with audio-widget hardware - no problems;
2. running audio-widget firmware with sdr-widget hardware - no problems. (as the rate FB EP is used.)
3. running sdr-widget firmware with sdr-widget hardware under Linux - no problems.
4. running sdr-widget firmware with sdr-widget hardware under Nikolay's Windows driver - metallic sound during playback after some minutes (as the FB EP is not used. the driver uses the capture EP for timing.)

These issues were reported by some users, but not experienced by others and not by me. I suspect it is because the timing difference between the sdr-widget and the PC used by those users are too great for the uac2 driver to sync. If the timing difference is small, then the driver can sync the two clocks and there is no metallic sound.

Improvements to the rate feedback algorithm in the FB EP, by Borge (and Nikolay) will NOT help as the feedback source is the capture EP.

Obviously the Linux uac2 driver is able to sync. So may be some improvements to Nikolay's driver will help.

If all these sound very confusing, please remember that Borge and Nikolay have things worked out very well for PLAYBACK of audio-widgets.

It is when people try to do BOTH capture and playback that things get more complicated. It works very well with sdr-widget (that we use in amateur ratio projects) under certain conditions (but not all conditions). We are still working on these issues.

Alex
 
Hi Alex,
I have modified the endpoints to work with 32 bit, they work OK.
And I have tried other changes in endpoint numbering, for instance even exchanging the index of feedback and rec endpoints the behaviour is the same (altough the "spy tool" reports a different address.

I understand your suggestions , and will try again to check source codes.
Anyway, how can it be that when I start playback both interface 2 alt 1 and interface 3 alt 1 are activated? One of them is for playback and one for recording. In spite of this the behaviour is constant, never seen a different one with all the versions that I tried.

Thank you anyway.
 
Hi Alex,
unfortunately I don't have a github ID. I use the Atmel Studio 6 ide, and for the source browsing I actually use internet ...

Anyway, looking back at your recent posts, I can see what's the situation of usb descriptors in the two cases (sdr and audio).
Also in my case the usb descriptors are reported OK, I dumped them with the Thesycon tdd tool and they are ok. The addresses of endpoints are correctly set to 0x81, 0x02 and ox83 (rec, play and feedback).

It's when the interface is in use that I see the strange behaviour of both alternate 1 interfaces (2 = rec, 3 = play) activated at the same time when only playing ....

Anyway, I will make another check of the sdr-widget branch code and compare the usb parts with my source. I hope I can catch the problem ...
 
Latest news about recording

After all the test and source compares ... I decided that I had to install Linux and try a different OS. My doubt was about the effectiveness of the driver that I have on windows ....

So I installed Ubuntu 12.4, plugged the board and ... voilà, playback is OK , but also recording is working (I get strange samples, but that's a different problem). Even the leds that I installed work properly, and only one is active when the relative alternate setting is selected (I have a green led for play and a red one for REC).

So it looks like either the UAC2 driver under windows is working only for playback (but it's strange, it is intended also for adc/dac boards) or the actual descriptor layout is OK for Linux but not completely ok for windows .. or at least for that driver.

I need to work under windows, but I have no alternatives for the driver.
I will try to arrange the descriptors in another way, maybe by having two alternate settings for interface 2 (1 for rec, one for playback). I remember I saw a version of the firmware that actually had alternate 2 in #defines (although it was not used in practice).

If somebody is more expert than me ... what's the usual layout when you need two AS interfaces, 1 for rec and 1 for play?
It's better to have one interface with alternates 0,1 and 2 or to separate (like in most sources that I saw) in two groups (interface 2 alt 0 and 1, and interface 3 alt 0 and 1)?
 
One more detail ... I used audacity for recording in Linux.
It works up to 96 khz, but there is no selection for 192.
Is it normal?
Can you suggest some software under linux to test recording?
Thank you all.

You first find out the capture device:

$ arecord -l

Suppose it is card 1, then the alsa name of that hardware is hw:1.

To record if it is using sdr-widget firmware, with 24 bit:

$ arecord -D hw:1 -c 2 -r 192000 -f S24_3LE > test.wav

If you are using 32 bits, then the format will be:

-f S32_LE

etc.

Alex
 
Hi
Any chance of a recapture for a recent arrival and a interested bystander, I have a wish to
record 4 channels 24 bit Microphone level input.

- Pointer to firmware with recording working.
- pointer to Nikolay's driver
- The easiest way to Aquire a Audio Widget card.
- Any pointers to 4 channel ADC designs.

Sorry if I sound like "I Want It All Now" without any work from me :eek:

Best Regards
Bosse

Q N K T C USB-I2S Module and Analog Board

https://github.com/amontefusco/sdr-widget/blob/audio-widget-experimental/AW_readme.txt

http://www.yoyodyneconsulting.ca/pages/Audio_Hardware.html