I have this USB device called TC-Helicon Blender which provides 12 input streams, 8 output streams (6/4 stereo plugs), in addition to some midi interface and internal playback and record channel.
Bus 005 Device 016: ID 1220:8fe1 TC Electronic Blender
If I power the device on while connected to a windows machine with its driver installed, then plug it into my linux machine, it appears to work correctly:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12
46080044 blender.wav
However if I have it on my linux machine while powering it on, I only get timeouts and no samples from arecord:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12 arecord: pcm_read:2221: read error: Input/output error
44 blender.wav
What can I do to try and get this device to init correctly under linux? I have captured USB packets of the init phase using wireshark on both windows and linux but comparing them is tedious if I don't know what to look for. Are there quirks flags I can play around with? This is my first time looking at a linux device driver issue like this.
Would it be ok to attach the usb captures on this mailing list?
thanks
Florian
I found a tool [1] written for a device by the same vendor, so likely to share hardware/firmware and it sends a single packet to make the device work.
It sort of works for me, except I have to unplug and re-plug the device to make it work.
My question now is, is there a quirks flag and configuration that allows me to do the same thing on plug-in?
Florian
[1]: https://github.com/GoXLR-on-Linux/goxlr-utility/blob/main/initialiser/src/ma...
On 13.02.23 08:57, Florian Hänel wrote:
I have this USB device called TC-Helicon Blender which provides 12 input streams, 8 output streams (6/4 stereo plugs), in addition to some midi interface and internal playback and record channel.
Bus 005 Device 016: ID 1220:8fe1 TC Electronic Blender
If I power the device on while connected to a windows machine with its driver installed, then plug it into my linux machine, it appears to work correctly:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12
46080044 blender.wav
However if I have it on my linux machine while powering it on, I only get timeouts and no samples from arecord:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12 arecord: pcm_read:2221: read error: Input/output error
44 blender.wav
What can I do to try and get this device to init correctly under linux? I have captured USB packets of the init phase using wireshark on both windows and linux but comparing them is tedious if I don't know what to look for. Are there quirks flags I can play around with? This is my first time looking at a linux device driver issue like this.
Would it be ok to attach the usb captures on this mailing list?
thanks
Florian
On Mon, 13 Feb 2023 08:57:19 +0100, Florian Hänel wrote:
I have this USB device called TC-Helicon Blender which provides 12 input streams, 8 output streams (6/4 stereo plugs), in addition to some midi interface and internal playback and record channel.
Bus 005 Device 016: ID 1220:8fe1 TC Electronic Blender
If I power the device on while connected to a windows machine with its driver installed, then plug it into my linux machine, it appears to work correctly:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12
46080044 blender.wav
However if I have it on my linux machine while powering it on, I only get timeouts and no samples from arecord:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12 arecord: pcm_read:2221: read error: Input/output error
44 blender.wav
So the device didn't give any data.
What can I do to try and get this device to init correctly under linux? I have captured USB packets of the init phase using wireshark on both windows and linux but comparing them is tedious if I don't know what to look for. Are there quirks flags I can play around with? This is my first time looking at a linux device driver issue like this.
Is it only about capture, i.e. playback works? Also, which kernel version are you testing?
There are lots of quirks in USB-audio driver, take a look at sound/usb/quirks.c. You can apply the existing quirk for your device with quirk_alias module option.
Would it be ok to attach the usb captures on this mailing list?
The size matters, so no big data please.
Takashi
On 08.03.23 06:54, Takashi Iwai wrote:
On Mon, 13 Feb 2023 08:57:19 +0100, Florian Hänel wrote:
I have this USB device called TC-Helicon Blender which provides 12 input streams, 8 output streams (6/4 stereo plugs), in addition to some midi interface and internal playback and record channel.
Bus 005 Device 016: ID 1220:8fe1 TC Electronic Blender
If I power the device on while connected to a windows machine with its driver installed, then plug it into my linux machine, it appears to work correctly:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12
46080044 blender.wav
However if I have it on my linux machine while powering it on, I only get timeouts and no samples from arecord:
arecord -D front:CARD=Blender -r48000 -fS32_LE -c 12 blender.wav -d 20 Recording WAVE 'blender.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 12 arecord: pcm_read:2221: read error: Input/output error
44 blender.wav
So the device didn't give any data.
The maintainer of the userland utility that makes a device of the same manufacturer work on osx and linux has provided this experimental patch.
Could you provide some feedback if this approach would be welcomed into alsa?
As I understand it it requires sending some vendor configuration packets.
- Florian
participants (2)
-
Florian Hänel
-
Takashi Iwai