On 3/11/25 4:38 PM, Jan Stary wrote:
On Mar 11 14:41:32,g...@oat.com wrote:
I have 2 USB DACs. One uses a Burr-Brown chip and the other
one is a Modi 3+ (custom circuit) from Schiit Audio.
Both work under Linux.
The Schiit seems to accept playback data but no analog output appears.
Both are claimed by uaudio(4).

Note the lack of a outputs.dac= line for the unhappy unit.
There are quite a few differences in the USB interface information
especially V1 vs V2 format.

Is this problem discussed in an online thread somewhere or would
tech@ be interested? I'm not familiar with the details of USB audio (yet).
Would defining UAUDIO_DEBUG help?

Attaching:
uaudio0 at uhub3 port 3 configuration 1 interface 1
       "Schiit Audio Schiit Modi 3+" rev 2.00/1.00 addr 5
uaudio0: class v2, high-speed, async, channels: 2 play, 0 rec, 1 ctls
audio1 at uaudio0

uaudio1 at uhub3 port 4 configuration 1 interface 1
       "Burr-Brown from TI USB Audio CODEC" rev 1.10/1.00 addr 6
uaudio1: class v1, full-speed, sync, channels: 2 play, 2 rec, 3 ctls
audio2 at uaudio1
uhidev3 at uhub3 port 4 configuration 1 interface 3
       "Burr-Brown from TI USB Audio CODEC" rev 1.10/1.00 addr 6
uhidev3: iclass 3/0
ucc0 at uhidev3: 3 usages, 3 keys, enum
wskbd2 at ucc0 mux 1
wskbd2: connecting to wsdisplay0
How exactly are you running sndiod?
(Does it even know to use these devices?)

How exactly are you playing audio,
i.e. what is the command line?

        Jan
(using sox)
AUDIODEVICE=rsnd/1 play <file>.flac

sox appears to have been fully ported to OpenBSD and uses
the OpenBSD native audio interface.
I can try ffmpeg or any other program you recommend.

I'm quite sure the devices are used.
Unplugging the USB cable stops the program sending data usually
 with an OS error about a truncated audio block.
The Burr-Brown DAC works well - it has worked for years.
The Schiit DAC seems to accept the data at the correct rate
but the analog output is 0.
That puzzles me a great deal.
That DAC works on a Linux system
 (admittedly, Linux could be sending it almost anything)

sndiod isn't running.
If it processes the audio data it adds significant IM distortion.
I'll send the diffs Real Soon Now.

My hope was that this had been seen before or that there was something obvious to check. I haven't decoded the USB packet describing the misbehaving DAC's capabilities yet. I got the usb audio v.2 spec today. My hope is that the capability packet is unusual and the uaudio code for v.2 gets confused.
record.enable=sysctl         |
                              |
mixerctl -f /dev/audioctl2   |
outputs.dac=255,255 <--------|
outputs.dac_mute=off
record.enable=sysctl

Linux usbdevs output:

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12   MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=08bb ProdID=2902 Rev=01.00
S:  Manufacturer=Burr-Brown from TI
S:  Product=USB Audio CODEC
C:  #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 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=02(O) Atr=09(Isoc) MxPS= 192 Ivl=1ms
I:  If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
E:  Ad=84(I) Atr=05(Isoc) MxPS= 196 Ivl=1ms
I:  If#= 3 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=85(I) Atr=03(Int.) MxPS=   1 Ivl=10ms

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  7 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=30be ProdID=1014 Rev=01.00
S:  Manufacturer=Schiit Audio
S:  Product=Schiit Modi 3+
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
I:  If#= 1 Alt= 3 #EPs= 2 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
E:  Ad=01(O) Atr=05(Isoc) MxPS=1024 Ivl=125us
E:  Ad=81(I) Atr=11(Isoc) MxPS=   4 Ivl=1ms


Reply via email to