Jump to content
IGNORED

Contracting for a custom Linux driver


joelha

Recommended Posts

Well, I'm prepared to learn that what I'm asking for can't be done, is crazy expensive, or something else equally disappointing.

 

Having said that, I have a PUC2 Lite USB converter which, from what I've experienced in my system and what I've read from other users, in Linux, will only run at 16/48. That's it. There are Windows and Mac drivers, but nothing for Linux.

 

I know that I can submit the related computer logs to the folks who work on Linux kernels, etc. But my experience so far is that process can take a long time if it ever gets resolved at all.

 

If I wanted to investigate the price of having someone custom write a driver for me, is such a thing doable?

 

Has anyone done anything like that before?

 

If so, what can the costs run?

 

And where would I look to investigate?

 

Thanks,

 

Joel

Link to comment

Having said that, I have a PUC2 Lite USB converter which, from what I've experienced in my system and what I've read from other users, in Linux, will only run at 16/48. That's it. There are Windows and Mac drivers, but nothing for Linux.

 

This is snd-usb-audio, I presume? The maintainer of the code is Takashi Iwai; he keeps a web site stub here.

 

Second option, you could post your proposal to one of the alsa mailing lists (alsa-devel); it's not unusual to donate hardware in exchange for getting functionality into driver code.

 

Third option, if you can read C code, you might take a look yourself. Sometimes device initialization is aborted simply because the response to a function call is unexpected.

 

Just out of curiosity: could you post USB audio driver related logs? If it runs at 16/48, it seems that it does not get recognized as UAC-2 device and uses UAC-1 as fall-back ...

Primary ::= Nabla music server | Mutec MC-3+USB w/ Temex LPFRS-01 RB clock | WLM Gamma Reference DAC; Secondary ::= Nabla music server | WaveIO | PrismSound Lyra

Link to comment
Well, I'm prepared to learn that what I'm asking for can't be done, is crazy expensive, or something else equally disappointing.

 

Having said that, I have a PUC2 Lite USB converter which, from what I've experienced in my system and what I've read from other users, in Linux, will only run at 16/48. That's it. There are Windows and Mac drivers, but nothing for Linux.

 

I know that I can submit the related computer logs to the folks who work on Linux kernels, etc. But my experience so far is that process can take a long time if it ever gets resolved at all.

 

If I wanted to investigate the price of having someone custom write a driver for me, is such a thing doable?

 

Has anyone done anything like that before?

 

If so, what can the costs run?

 

And where would I look to investigate?

 

Thanks,

 

Joel

 

Your USB converter should just need a standard USB Audio class 2 driver and that is a standard part of Linux. Writing one of those from scratch would cost a lot of time and money if it was needed.

 

You haven't given any details of your Linux setup - what hardware and software are you using and how it is configured? If the converter appears to top out at 48k I would think it is most likely that dmix in ALSA is resampling everything to 48k, and you need to configure ALSA to talk directly to the converter and not go via dmix.

System (i): Stack Audio Link > 2Qute+MCRU psu; Gyrodec/SME V/Hana SL/EAT E-Glo Petit/Magnum Dynalab FT101A) > PrimaLuna Evo 100 amp > Klipsch RP-600M/REL T5x subs

System (ii): Allo USB Signature > Bel Canto uLink+AQVOX psu > Chord Hugo > APPJ EL34 > Tandy LX5/REL Tzero v3 subs

System (iii) KEF LS50W/KEF R400b subs

 

Link to comment
Your USB converter should just need a standard USB Audio class 2 driver and that is a standard part of Linux. Writing one of those from scratch would cost a lot of time and money if it was needed.

 

You haven't given any details of your Linux setup - what hardware and software are you using and how it is configured? If the converter appears to top out at 48k I would think it is most likely that dmix in ALSA is resampling everything to 48k, and you need to configure ALSA to talk directly to the converter and not go via dmix.

 

To the OP, please post the output of these Linux commands:

 

1. aplay -l (that's a lower-case L)

2. aplay -L

3. lsusb -v -s <bus>:<device> with bus and device numbers as reported by plain "lsusb"

Link to comment

Thanks so much to everyone for your messages. I'm very grateful.

 

So, in answer to mansr's message, here's what I have

 

aplay -l got me the following:

**** List of PLAYBACK Hardware Devices ****

card 1: PUC2 [YELLOWTEC PUC2], device 0: USB Audio [uSB Audio]

Subdevices: 1/1

Subdevice #0: subdevice #0

 

 

aplay -L got me the following:

 

default

Playback/recording through the PulseAudio sound server

null

Discard all samples (playback) or generate zero samples (capture)

pulse

PulseAudio Sound Server

sysdefault:CARD=PUC2

YELLOWTEC PUC2, USB Audio

Default Audio Device

front:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Front speakers

surround40:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

4.0 Surround output to Front and Rear speakers

surround41:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

4.1 Surround output to Front, Rear and Subwoofer speakers

surround50:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

5.0 Surround output to Front, Center and Rear speakers

surround51:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

5.1 Surround output to Front, Center, Rear and Subwoofer speakers

surround71:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

iec958:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

IEC958 (S/PDIF) Digital Audio Output

dmix:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Direct sample mixing device

dsnoop:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Direct sample snooping device

hw:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Direct hardware device without any conversions

plughw:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Hardware device with all software conversions

 

 

And lsusb got me the following:

 

Bus 001 Device 004: ID 058f:6254 Alcor Micro Corp. USB Hub

Bus 001 Device 003: ID 8564:1000

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 005 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 003 Device 002: ID 17ef:6009 Lenovo ThinkPad Keyboard with TrackPoint

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 006 Device 003: ID 0a4a:6a02

Bus 006 Device 002: ID 0424:2412 Standard Microsystems Corp.

Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

Based on the lsusb command, I'm not sure which are the bus and device numbers.

 

Please let me know and I'll enter (hopefully) the appropriate commands.

 

Also, please know I tried alsa, or least believe I did and got the same response. I actually thought I had deleted Pulse Audio but apparently, if I'm reading the above report correctly, I didn't get that done.

 

I also thought I had installed alsa, but there too, maybe not.

 

Thanks again for the above replies.

 

Joel

Link to comment
Your USB converter should just need a standard USB Audio class 2 driver and that is a standard part of Linux. Writing one of those from scratch would cost a lot of time and money if it was needed.

 

You haven't given any details of your Linux setup - what hardware and software are you using and how it is configured? If the converter appears to top out at 48k I would think it is most likely that dmix in ALSA is resampling everything to 48k, and you need to configure ALSA to talk directly to the converter and not go via dmix.

 

Hi Richard,

 

For low power purposes, I'm running Daphile off of a dn2800mt motherboard with 4GB of RAM. I connect to an Adnaco board via an optical cable then run USB to the PUC2 Lite converter although I have the same issue if I try to run USB directly out of my PC to the PUC2 Lite.

 

For the purposes of running the logs I've listed in my message below, I ran Ubuntu 14.04.

 

As I'm close to knowing absolutely nothing about Linux, I'll be happy to take any advice you have about getting alsa to talk to my converter as you suggest.

 

Ideally, if it's possible to correct this issue, I'd like to be able to resolve this issue in both Ubuntu and Daphile.

 

If I'm not giving you enough information about my configuration, please let me know what else you'd like to know.

 

Thanks a lot for your help.

 

Joel

Link to comment
Thanks so much to everyone for your messages. I'm very grateful.

 

So, in answer to mansr's message, here's what I have

 

aplay -l got me the following:

**** List of PLAYBACK Hardware Devices ****

card 1: PUC2 [YELLOWTEC PUC2], device 0: USB Audio [uSB Audio]

Subdevices: 1/1

Subdevice #0: subdevice #0

 

 

aplay -L got me the following:

 

default

Playback/recording through the PulseAudio sound server

 

That's likely to be at least part of the problem. PulseAudio is a rather nasty software mixer/resampler that allows simultaneous playback from multiple applications. For any serious listening, I'd recommend getting rid of it entirely, although it can be configured to use a higher sample rate.

 

null

Discard all samples (playback) or generate zero samples (capture)

pulse

PulseAudio Sound Server

sysdefault:CARD=PUC2

YELLOWTEC PUC2, USB Audio

Default Audio Device

front:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Front speakers

surround40:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

4.0 Surround output to Front and Rear speakers

surround41:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

4.1 Surround output to Front, Rear and Subwoofer speakers

surround50:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

5.0 Surround output to Front, Center and Rear speakers

surround51:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

5.1 Surround output to Front, Center, Rear and Subwoofer speakers

surround71:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

iec958:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

IEC958 (S/PDIF) Digital Audio Output

dmix:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Direct sample mixing device

dsnoop:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Direct sample snooping device

hw:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Direct hardware device without any conversions

plughw:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Hardware device with all software conversions

 

The command "aplay -D hw:CARD=PUC2 --dump-hw-params /dev/zero" will print what ALSA thinks the device is capable of. You might need to stop PulseAudio first.

 

And lsusb got me the following:

 

Bus 001 Device 004: ID 058f:6254 Alcor Micro Corp. USB Hub

Bus 001 Device 003: ID 8564:1000

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 005 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 003 Device 002: ID 17ef:6009 Lenovo ThinkPad Keyboard with TrackPoint

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 006 Device 003: ID 0a4a:6a02

Bus 006 Device 002: ID 0424:2412 Standard Microsystems Corp.

Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

Based on the lsusb command, I'm not sure which are the bus and device numbers.

 

Please let me know and I'll enter (hopefully) the appropriate commands.

 

Try the second unnamed device, that is "lsusb -v -s 6:3" That ID belongs to Ploytec GmbH, a vendor of USB audio devices.

 

Also, please know I tried alsa, or least believe I did and got the same response. I actually thought I had deleted Pulse Audio but apparently, if I'm reading the above report correctly, I didn't get that done.

 

I also thought I had installed alsa, but there too, maybe not.

 

ALSA is the low-level sound card drivers in Linux, so you always have that. PulseAudio sits on top and generally gets in the way of things.

Link to comment

OK Mansr,

 

The lsusb -v -s 6:3 command returned nothing . . . just my linux prompt.

 

The aplay -D hw:CARD=PUC2 --dump-hw-params /dev/zero command returned:

 

Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono

HW Params of device "hw:CARD=PUC2":

--------------------

ACCESS: MMAP_INTERLEAVED RW_INTERLEAVED

FORMAT: S24_3LE

SUBFORMAT: STD

SAMPLE_BITS: 24

FRAME_BITS: 48

CHANNELS: 2

RATE: 48000

PERIOD_TIME: [1000 1820438)

PERIOD_SIZE: [48 87381]

PERIOD_BYTES: [288 524286]

PERIODS: [2 1024]

BUFFER_TIME: [2000 3640875]

BUFFER_SIZE: [96 174762]

BUFFER_BYTES: [576 1048572]

TICK_TIME: ALL

--------------------

aplay: set_params:1233: Sample format non available

Available formats:

- S24_3LE

 

What do you think?

 

Thanks again.

 

Joel

Link to comment
Hi Richard,

 

For low power purposes, I'm running Daphile off of a dn2800mt motherboard with 4GB of RAM. I connect to an Adnaco board via an optical cable then run USB to the PUC2 Lite converter although I have the same issue if I try to run USB directly out of my PC to the PUC2 Lite.

 

For the purposes of running the logs I've listed in my message below, I ran Ubuntu 14.04.

 

As I'm close to knowing absolutely nothing about Linux, I'll be happy to take any advice you have about getting alsa to talk to my converter as you suggest.

 

Ideally, if it's possible to correct this issue, I'd like to be able to resolve this issue in both Ubuntu and Daphile.

 

If I'm not giving you enough information about my configuration, please let me know what else you'd like to know.

 

Thanks a lot for your help.

 

Joel

 

I think mansr has done a great job telling what commands to run in order to debug the problem. I had suspected that resampling to 48khz was going on and thought it was dmix (an ALSA) plugin, but as mansr points out the culprit is PulseAudio which also resamples. The good news is that there is probably nothing wrong with your USB converter's Linux support and you won't need to get any sort of custom driver written.

 

The solution is still to get your USB converter to talk to ALSA directly rather than going through something like PulseAudio or dmix. However, I think that configuring a general purpose Linux OS like Ubuntu to do that might be quite hard. If you can find a canned recipe out on the internet to do that, then you might be OK.

 

I use a Raspberry Pi 2 running a music server OS 'Volumio' with the MPD music server software, and that worked with my Bel Canto uLink USB converter 'out of the box'. I think Linux is best with dedicated music server devices and accompanying OSs like that. If you are going to use a general purpose like Ubuntu to drive an audiophile USB device, there is less advantage in using Linux over Mac OS X or Windows.

System (i): Stack Audio Link > 2Qute+MCRU psu; Gyrodec/SME V/Hana SL/EAT E-Glo Petit/Magnum Dynalab FT101A) > PrimaLuna Evo 100 amp > Klipsch RP-600M/REL T5x subs

System (ii): Allo USB Signature > Bel Canto uLink+AQVOX psu > Chord Hugo > APPJ EL34 > Tandy LX5/REL Tzero v3 subs

System (iii) KEF LS50W/KEF R400b subs

 

Link to comment

Thanks for the message, Richard.

 

My daily player is Daphile . . . considerably slimmer than Ubuntu. I'm only using Ubuntu to develop the logs I need as I'm not sure how to do it or even if can be done in Daphile.

 

I've used both Windows and Mac OS's with many of the associated third party software packages. Daphile to this point, has worked out best for me.

 

I'll keep pursuing this issue and hope for the best.

 

Thanks again.

 

Joel

Link to comment

I just found this on-line as regards disabling PulseAudio. Does it look like what I want to do?:

 

You can tell Pulseaudio not to respawn itself by issuing this command:

 

echo "autospawn = no" > $HOME/.config/pulse/client.conf

You can now kill pulseaudio:

 

jorge@den:~$ pkill -f pulseaudio

jorge@den:~$ ps aux | grep pulse

jorge 6310 0.0 0.0 23900 916 pts/1 S+ 18:11 0:00 grep --color=auto pulse

 

Pulseaudio should be restarted on session startup, but it might be terminated if there is no sound activity, so after you are done, remember to remove the file you have created before, so Pulseaudio can be respawned when needed.

 

rm $HOME/.config/pulse/client.conf

Link to comment
Thanks for the message, Richard.

 

My daily player is Daphile . . . considerably slimmer than Ubuntu. I'm only using Ubuntu to develop the logs I need as I'm not sure how to do it or even if can be done in Daphile.

 

I've used both Windows and Mac OS's with many of the associated third party software packages. Daphile to this point, has worked out best for me.

 

I'll keep pursuing this issue and hope for the best.

 

Thanks again.

 

Joel

 

Ah I see, I didn't realise that Daphile was a Linux Music OS based in Squeezebox that you were actually using to drive your DAC for music. I just saw 'Ubuntu' and thought that was what you were wanting to use. I strongly suspect that Daphile doesn't run Pulse Audio and so disabling Pulse Audio is probably a bit of a red herring. Not all Linux audio environments are the same for debugging purposes!

 

As a start you could run the commands given by mansr on Daphile by ssh'ing onto the server. You will need to ask on the Daphile forums about how to ssh onto the server in order to run the commands perhaps.

System (i): Stack Audio Link > 2Qute+MCRU psu; Gyrodec/SME V/Hana SL/EAT E-Glo Petit/Magnum Dynalab FT101A) > PrimaLuna Evo 100 amp > Klipsch RP-600M/REL T5x subs

System (ii): Allo USB Signature > Bel Canto uLink+AQVOX psu > Chord Hugo > APPJ EL34 > Tandy LX5/REL Tzero v3 subs

System (iii) KEF LS50W/KEF R400b subs

 

Link to comment
The lsusb -v -s 6:3 command returned nothing . . . just my linux prompt.

 

That's odd. Did you run the command as root? If not, try it in case it's a permission thing.

 

The aplay -D hw:CARD=PUC2 --dump-hw-params /dev/zero command returned:

 

Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono

HW Params of device "hw:CARD=PUC2":

--------------------

ACCESS: MMAP_INTERLEAVED RW_INTERLEAVED

FORMAT: S24_3LE

SUBFORMAT: STD

SAMPLE_BITS: 24

FRAME_BITS: 48

CHANNELS: 2

RATE: 48000

PERIOD_TIME: [1000 1820438)

PERIOD_SIZE: [48 87381]

PERIOD_BYTES: [288 524286]

PERIODS: [2 1024]

BUFFER_TIME: [2000 3640875]

BUFFER_SIZE: [96 174762]

BUFFER_BYTES: [576 1048572]

TICK_TIME: ALL

--------------------

aplay: set_params:1233: Sample format non available

Available formats:

- S24_3LE

 

What do you think?

 

Not good. Something thinks it can only do 48kHz. Typically you get something like "RATE: [44100 192000]" with the min and max supported rates.

 

There might also be something in the kernel log (display it with the "dmesg" command), either when connecting the device or when playing something.

Link to comment

I did run it from my root directory, mansr.

 

I'm going to switch my strategy here. Daphile has never allowed anyone to ssh into their program, but now it will for certain so called non-public builds. As this is my primary player, I'm going to see how to ssh into it and run some of the reports you've asked for and see if I get any more promising information.

 

Thanks,

 

Joel

Link to comment

Thanks mansr.

 

I'm going to move over to Daphile for my research as I understand it's possible to ssh into it although I'm trying to learn the command for making that happen.

 

As soon as I do, I'm going to run the commands you've recommended and report back.

 

Thanks again for all of your help.

 

Joel

Link to comment

Well, for the first time, I've been able to ssh into Daphile.

 

While I'll show what got in the reports below, the bottom line seems to be this:

 

aplay -D hw:CARD=PUC2 --dump-hw-params /dev/zero

aplay: main:722: audio open error: Device or resource busy

 

Was my command incorrect?

 

Copy of related logs follow.

 

Thanks a lot in advance for your help.

 

Joel

 

 

aplay -l

 

Subdevices: 8/8

Subdevice #0: subdevice #0

Subdevice #1: subdevice #1

Subdevice #2: subdevice #2

Subdevice #3: subdevice #3

Subdevice #4: subdevice #4

Subdevice #5: subdevice #5

Subdevice #6: subdevice #6

Subdevice #7: subdevice #7

card 1: PUC2 [YELLOWTEC PUC2], device 0: USB Audio [uSB Audio]

Subdevices: 0/1

Subdevice #0: subdevice #0

 

 

aplay –L

 

null

Discard all samples (playback) or generate zero samples (capture)

default:CARD=Dummy

Dummy, Dummy PCM

Default Audio Device

sysdefault:CARD=Dummy

Dummy, Dummy PCM

Default Audio Device

default:CARD=PUC2

YELLOWTEC PUC2, USB Audio

Default Audio Device

sysdefault:CARD=PUC2

YELLOWTEC PUC2, USB Audio

Default Audio Device

front:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

Front speakers

surround21:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

2.1 Surround output to Front and Subwoofer speakers

surround40:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

4.0 Surround output to Front and Rear speakers

surround41:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

4.1 Surround output to Front, Rear and Subwoofer speakers

surround50:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

5.0 Surround output to Front, Center and Rear speakers

surround51:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

5.1 Surround output to Front, Center, Rear and Subwoofer speakers

surround71:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

iec958:CARD=PUC2,DEV=0

YELLOWTEC PUC2, USB Audio

IEC958 (S/PDIF) Digital Audio Output

daphile ~ #

 

 

lsusb

 

Bus 003 Device 002: ID 058f:6254 Alcor Micro Corp. USB Hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 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 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 003: ID 0a4a:6a02 Ploytec GmbH

Bus 001 Device 002: ID 0424:2412 Standard Microsystems Corp.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

aplay -D hw:CARD=PUC2 --dump-hw-params /dev/zero

aplay: main:722: audio open error: Device or resource busy

Link to comment
Well, for the first time, I've been able to ssh into Daphile.

 

While I'll show what got in the reports below, the bottom line seems to be this:

 

aplay -D hw:CARD=PUC2 --dump-hw-params /dev/zero

aplay: main:722: audio open error: Device or resource busy

 

Was my command incorrect?

 

That means some process has the sound device open which prevents aplay accessing it.

 

lsusb

 

Bus 003 Device 002: ID 058f:6254 Alcor Micro Corp. USB Hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 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 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 003: ID 0a4a:6a02 Ploytec GmbH

Bus 001 Device 002: ID 0424:2412 Standard Microsystems Corp.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

Try "lsusb -v -s 1:3"

Link to comment

Thanks so much for the very quick reply mansr.

 

Here's what I got in response to your suggested command:

 

daphile ~ # lsusb -v -s 1:3

 

Bus 001 Device 003: ID 0a4a:6a02 Ploytec GmbH

Device Descriptor:

bLength 18

bDescriptorType 1

bcdUSB 2.00

bDeviceClass 239 Miscellaneous Device

bDeviceSubClass 2

bDeviceProtocol 1 Interface Association

bMaxPacketSize0 64

idVendor 0x0a4a Ploytec GmbH

idProduct 0x6a02

bcdDevice 2.00

iManufacturer 1 Yellowtec

iProduct 2 YELLOWTEC PUC2

iSerial 3 no serial number

bNumConfigurations 1

Configuration Descriptor:

bLength 9

bDescriptorType 2

wTotalLength 294

bNumInterfaces 4

bConfigurationValue 1

iConfiguration 0

bmAttributes 0x80

(Bus Powered)

MaxPower 498mA

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 11

bDescriptorType 36

bDescriptorSubtype 1 (HEADER)

bcdADC 1.00

wTotalLength 53

bInCollection 3

baInterfaceNr( 0) 1

baInterfaceNr( 1) 2

baInterfaceNr( 2) 3

AudioControl Interface Descriptor:

bLength 12

bDescriptorType 36

bDescriptorSubtype 2 (INPUT_TERMINAL)

bTerminalID 1

wTerminalType 0x0101 USB Streaming

bAssocTerminal 0

bNrChannels 2

wChannelConfig 0x0003

Left Front (L)

Right Front ®

iChannelNames 0

iTerminal 0

AudioControl Interface Descriptor:

bLength 9

bDescriptorType 36

bDescriptorSubtype 3 (OUTPUT_TERMINAL)

bTerminalID 2

wTerminalType 0x0602 Digital Audio Interface

bAssocTerminal 0

bSourceID 1

iTerminal 0

AudioControl Interface Descriptor:

bLength 12

bDescriptorType 36

bDescriptorSubtype 2 (INPUT_TERMINAL)

bTerminalID 3

wTerminalType 0x0602 Digital Audio Interface

bAssocTerminal 0

bNrChannels 2

wChannelConfig 0x0003

Left Front (L)

Right Front ®

iChannelNames 0

iTerminal 0

AudioControl Interface Descriptor:

bLength 9

bDescriptorType 36

bDescriptorSubtype 3 (OUTPUT_TERMINAL)

bTerminalID 4

wTerminalType 0x0101 USB Streaming

bAssocTerminal 0

bSourceID 3

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 2

bInterfaceClass 1 Audio

bInterfaceSubClass 2 Streaming

bInterfaceProtocol 0

iInterface 0

AudioStreaming Interface Descriptor:

bLength 7

bDescriptorType 36

bDescriptorSubtype 1 (AS_GENERAL)

bTerminalLink 1

bDelay 1 frames

wFormatTag 1 PCM

AudioStreaming Interface Descriptor:

bLength 11

bDescriptorType 36

bDescriptorSubtype 2 (FORMAT_TYPE)

bFormatType 1 (FORMAT_TYPE_I)

bNrChannels 2

bSubframeSize 3

bBitResolution 24

bSamFreqType 1 Discrete

tSamFreq[ 0] 48000

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x02 EP 2 OUT

bmAttributes 5

Transfer Type Isochronous

Synch Type Asynchronous

Usage Type Data

wMaxPacketSize 0x0126 1x 294 bytes

bInterval 4

bRefresh 0

bSynchAddress 133

AudioControl Endpoint Descriptor:

bLength 7

bDescriptorType 37

bDescriptorSubtype 1 (EP_GENERAL)

bmAttributes 0x01

Sampling Frequency

bLockDelayUnits 2 Decoded PCM samples

wLockDelay 0 Decoded PCM samples

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x85 EP 5 IN

bmAttributes 1

Transfer Type Isochronous

Synch Type None

Usage Type Data

wMaxPacketSize 0x0003 1x 3 bytes

bInterval 4

bRefresh 5

bSynchAddress 0

Interface Descriptor:

bLength 9

bDescriptorType 4

bInterfaceNumber 1

bAlternateSetting 2

bNumEndpoints 1

bInterfaceClass 255 Vendor Specific Class

bInterfaceSubClass 0

bInterfaceProtocol 0

iInterface 0

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x02 EP 2 OUT

bmAttributes 5

Transfer Type Isochronous

Synch Type Asynchronous

Usage Type Data

wMaxPacketSize 0x0200 1x 512 bytes

bInterval 1

bRefresh 0

bSynchAddress 0

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 4

bDelay 1 frames

wFormatTag 1 PCM

AudioStreaming Interface Descriptor:

bLength 11

bDescriptorType 36

bDescriptorSubtype 2 (FORMAT_TYPE)

bFormatType 1 (FORMAT_TYPE_I)

bNrChannels 2

bSubframeSize 3

bBitResolution 24

bSamFreqType 1 Discrete

tSamFreq[ 0] 48000

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x81 EP 1 IN

bmAttributes 5

Transfer Type Isochronous

Synch Type Asynchronous

Usage Type Data

wMaxPacketSize 0x0126 1x 294 bytes

bInterval 4

bRefresh 0

bSynchAddress 0

AudioControl Endpoint Descriptor:

bLength 7

bDescriptorType 37

bDescriptorSubtype 1 (EP_GENERAL)

bmAttributes 0x01

Sampling Frequency

bLockDelayUnits 2 Decoded PCM samples

wLockDelay 0 Decoded PCM samples

Interface Descriptor:

bLength 9

bDescriptorType 4

bInterfaceNumber 2

bAlternateSetting 2

bNumEndpoints 1

bInterfaceClass 255 Vendor Specific Class

bInterfaceSubClass 0

bInterfaceProtocol 0

iInterface 0

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x81 EP 1 IN

bmAttributes 5

Transfer Type Isochronous

Synch Type Asynchronous

Usage Type Data

wMaxPacketSize 0x0200 1x 512 bytes

bInterval 1

bRefresh 0

bSynchAddress 0

Interface Descriptor:

bLength 9

bDescriptorType 4

bInterfaceNumber 3

bAlternateSetting 0

bNumEndpoints 2

bInterfaceClass 1 Audio

bInterfaceSubClass 3 MIDI Streaming

bInterfaceProtocol 0

iInterface 0

MIDIStreaming Interface Descriptor:

bLength 7

bDescriptorType 36

bDescriptorSubtype 1 (HEADER)

bcdADC 1.00

wTotalLength 65

MIDIStreaming Interface Descriptor:

bLength 6

bDescriptorType 36

bDescriptorSubtype 2 (MIDI_IN_JACK)

bJackType 1 Embedded

bJackID 1

iJack 0

MIDIStreaming Interface Descriptor:

bLength 6

bDescriptorType 36

bDescriptorSubtype 2 (MIDI_IN_JACK)

bJackType 2 External

bJackID 2

iJack 0

MIDIStreaming Interface Descriptor:

bLength 9

bDescriptorType 36

bDescriptorSubtype 3 (MIDI_OUT_JACK)

bJackType 1 Embedded

bJackID 3

bNrInputPins 1

baSourceID( 0) 2

BaSourcePin( 0) 1

iJack 0

MIDIStreaming Interface Descriptor:

bLength 9

bDescriptorType 36

bDescriptorSubtype 3 (MIDI_OUT_JACK)

bJackType 2 External

bJackID 4

bNrInputPins 1

baSourceID( 0) 1

BaSourcePin( 0) 1

iJack 0

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x83 EP 3 IN

bmAttributes 2

Transfer Type Bulk

Synch Type None

Usage Type Data

wMaxPacketSize 0x0200 1x 512 bytes

bInterval 1

bRefresh 0

bSynchAddress 0

MIDIStreaming Endpoint Descriptor:

bLength 5

bDescriptorType 37

bDescriptorSubtype 1 (GENERAL)

bNumEmbMIDIJack 1

baAssocJackID( 0) 3

Endpoint Descriptor:

bLength 9

bDescriptorType 5

bEndpointAddress 0x04 EP 4 OUT

bmAttributes 3

Transfer Type Interrupt

Synch Type None

Usage Type Data

wMaxPacketSize 0x0010 1x 16 bytes

bInterval 4

bRefresh 0

bSynchAddress 0

MIDIStreaming Endpoint Descriptor:

bLength 5

bDescriptorType 37

bDescriptorSubtype 1 (GENERAL)

bNumEmbMIDIJack 1

baAssocJackID( 0) 1

Device Qualifier (for other device speed):

bLength 10

bDescriptorType 6

bcdUSB 2.00

bDeviceClass 0

bDeviceSubClass 0

bDeviceProtocol 0

bMaxPacketSize0 64

bNumConfigurations 1

can't get debug descriptor: Resource temporarily unavailable

Device Status: 0x0000

(Bus Powered)

Link to comment
Thanks so much for the very quick reply mansr.

 

Here's what I got in response to your suggested command:

 

daphile ~ # lsusb -v -s 1:3

 

OK, let's see what we've got here:

 

Bus 001 Device 003: ID 0a4a:6a02 Ploytec GmbH
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass          239 Miscellaneous Device
 bDeviceSubClass         2
 bDeviceProtocol         1 Interface Association
 bMaxPacketSize0        64
 idVendor           0x0a4a Ploytec GmbH
 idProduct          0x6a02
 bcdDevice            2.00
 iManufacturer           1 Yellowtec
 iProduct                2 YELLOWTEC PUC2
 iSerial                 3 no serial number
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength          294
   bNumInterfaces          4
   bConfigurationValue     1
   iConfiguration          0
   bmAttributes         0x80
     (Bus Powered)
   MaxPower              498mA
   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                11
       bDescriptorType        36
       bDescriptorSubtype      1 (HEADER)
       bcdADC               1.00
       wTotalLength           53
       bInCollection           3
       baInterfaceNr( 0)       1
       baInterfaceNr( 1)       2
       baInterfaceNr( 2)       3
     AudioControl Interface Descriptor:
       bLength                12
       bDescriptorType        36
       bDescriptorSubtype      2 (INPUT_TERMINAL)
       bTerminalID             1
       wTerminalType      0x0101 USB Streaming
       bAssocTerminal          0
       bNrChannels             2
       wChannelConfig     0x0003
         Left Front (L)
         Right Front (R)
       iChannelNames           0
       iTerminal               0
     AudioControl Interface Descriptor:
       bLength                 9
       bDescriptorType        36
       bDescriptorSubtype      3 (OUTPUT_TERMINAL)
       bTerminalID             2
       wTerminalType      0x0602 Digital Audio Interface
       bAssocTerminal          0
       bSourceID               1
       iTerminal               0
     AudioControl Interface Descriptor:
       bLength                12
       bDescriptorType        36
       bDescriptorSubtype      2 (INPUT_TERMINAL)
       bTerminalID             3
       wTerminalType      0x0602 Digital Audio Interface
       bAssocTerminal          0
       bNrChannels             2
       wChannelConfig     0x0003
         Left Front (L)
         Right Front (R)
       iChannelNames           0
       iTerminal               0
     AudioControl Interface Descriptor:
       bLength                 9
       bDescriptorType        36
       bDescriptorSubtype      3 (OUTPUT_TERMINAL)
       bTerminalID             4
       wTerminalType      0x0101 USB Streaming
       bAssocTerminal          0
       bSourceID               3
       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           2
     bInterfaceClass         1 Audio
     bInterfaceSubClass      2 Streaming
     bInterfaceProtocol      0
     iInterface              0
     AudioStreaming Interface Descriptor:
       bLength                 7
       bDescriptorType        36
       bDescriptorSubtype      1 (AS_GENERAL)
       bTerminalLink           1
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           3
       bBitResolution         24
       bSamFreqType            1 Discrete
       tSamFreq[ 0]        48000
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            5
         Transfer Type            Isochronous
         Synch Type               Asynchronous
         Usage Type               Data
       wMaxPacketSize     0x0126  1x 294 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress         133
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x01
           Sampling Frequency
         bLockDelayUnits         2 Decoded PCM samples
         wLockDelay              0 Decoded PCM samples
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x85  EP 5 IN
       bmAttributes            1
         Transfer Type            Isochronous
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0003  1x 3 bytes
       bInterval               4
       bRefresh                5
       bSynchAddress           0

 

This part defines a USB Audio 1.0 output device with 2 channels, 24-bit, 48 kHz. That's what the --dump-hw-params output you posted earlier said as well.

 

   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        1
     bAlternateSetting       2
     bNumEndpoints           1
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0
     bInterfaceProtocol      0
     iInterface              0
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            5
         Transfer Type            Isochronous
         Synch Type               Asynchronous
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               1
       bRefresh                0
       bSynchAddress           0

 

This defines a vendor-specific (non-standard) interface with the same endpoint but a higher data rate. My guess is this is where support for higher sample rates is hiding, and you need a special driver to access it.

 

   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           4
       bDelay                  1 frames
       wFormatTag              1 PCM
     AudioStreaming Interface Descriptor:
       bLength                11
       bDescriptorType        36
       bDescriptorSubtype      2 (FORMAT_TYPE)
       bFormatType             1 (FORMAT_TYPE_I)
       bNrChannels             2
       bSubframeSize           3
       bBitResolution         24
       bSamFreqType            1 Discrete
       tSamFreq[ 0]        48000
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            5
         Transfer Type            Isochronous
         Synch Type               Asynchronous
         Usage Type               Data
       wMaxPacketSize     0x0126  1x 294 bytes
       bInterval               4
       bRefresh                0
       bSynchAddress           0
       AudioControl Endpoint Descriptor:
         bLength                 7
         bDescriptorType        37
         bDescriptorSubtype      1 (EP_GENERAL)
         bmAttributes         0x01
           Sampling Frequency
         bLockDelayUnits         2 Decoded PCM samples
         wLockDelay              0 Decoded PCM samples

 

This is a standard USB Audio 1.0 input.

 

   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       2
     bNumEndpoints           1
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass      0
     bInterfaceProtocol      0
     iInterface              0
     Endpoint Descriptor:
       bLength                 9
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            5
         Transfer Type            Isochronous
         Synch Type               Asynchronous
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               1
       bRefresh                0
       bSynchAddress           0

 

Again a non-standard interface, probably high sample rate input.

 

To get a proper driver for this, you'd either need to convince them to hand over the specs or reverse engineer the Windows/Mac drivers.

Link to comment

I'm doubting they're going to give me the specs, mansr, although I could ask.

 

What do you think it would take in money and/or in time to get the driver I needed if they handed over the specs?

 

And what do you think it would take in money and/or in time to reverse engineer the driver from the Windows/Mac driver?

 

Thanks so much for all your help.

 

Joel

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...