On Mon, May 26, 2025 at 03:23:09PM +0200, Jan Stary wrote: > This is just to say that with M-Audio Fast Track Ultra > (i.e. not Fast Track Ultra 8R), it is mostly the same story. > > The device attaches as > > umidi0 at uhub1 port 1 configuration 1 interface 3 "M-Audio Fast Track Ultra" > rev 2.00/1.51 addr 2 > umidi0: (genuine USB-MIDI) > umidi0: out=1, in=1 > midi0 at umidi0: <USB MIDI I/F> > ugen0 at uhub1 port 1 configuration 1 "M-Audio Fast Track Ultra" rev > 2.00/1.51 addr 2 > > i.e. ugen, not uaudio. It is not a class-compliant USB audio device. > usbdevs -vv says > > addr 02: 0763:2080 M-Audio, Fast Track Ultra > high speed, power 498 mA, config 1, rev 1.51 > driver: umidi0 > driver: ugen0 > > I can make it attach as uaudio with the diff below (by ratchov@) > which made it work for the Fast Track Ultra 8R, > replacing 0x2081 with 0x2080 as seen in usbdevs. > > uaudio0 at uhub1 port 1 configuration 1 interface 0 "M-Audio Fast Track > Ultra" rev 2.00/1.51 addr 2 > uaudio0: class v1, high-speed, async, channels: 8 play, 8 rec, 0 ctls > audio1 at uaudio0 > umidi0 at uhub1 port 1 configuration 1 interface 3 "M-Audio Fast Track Ultra" > rev 2.00/1.51 addr 2 > umidi0: (genuine USB-MIDI) > umidi0: out=1, in=1 > midi0 at umidi0: <USB MIDI I/F> > ugen0 at uhub1 port 1 configuration 1 "M-Audio Fast Track Ultra" rev > 2.00/1.51 addr 2 > > It has _four_ channels, not _eight_, > and I don't know how to fix that. > > It plays a stereo file, sending the output to the [1] headphones, > reporting the following error. > > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 > uaudio0: sync play xfer, err = 6 >
Is this continuous or does it happen only once, when playback stops? > It never outputs to the [2] headphones, > wven with a four channel audio, such as > $ play -n synth 10 sin 100 sin 200 sin 300 sin 400 gain -6 > > I will try again with UAUDIO_DEBUG, but are there any hints do far please? > Is anyone using this device successfully? > my guess would be that the 8-channel mode correspond to the 6 line outputs plus 2 headphone channels. But they might be the spdiff channels. If you test with sndiod, I'd suggest using "-j off" to make sure that sndiod doesn't mess with the channels routing. Then, possibly use 8-channel files for testing. The aucat's -m option could work as well, ex. to test channels 4:5, do: aucat -m 0:1/4:5 -i stereo.wav Alternatively, you could define one logical device per channel pair and test using stereo, ex: -C0:1 -c0:1 -s a -C2:3 -c2:3 -s b ... and test using: aucat -f snd/a -i file.wav aucat -f snd/b -i file.wav ... > Neither MacOS nor Windows detect the device, > and I couldn't find any working drivers for the device. > (See the previous posts: much like woth the Ultra 8R, > M-Audui/Avid just left the users out in the cold.) > > > Jan > > > Index: uaudio.c > =================================================================== > RCS file: /cvs/src/sys/dev/usb/uaudio.c,v > retrieving revision 1.178 > diff -u -p -r1.178 uaudio.c > --- uaudio.c 7 Jan 2025 12:49:40 -0000 1.178 > +++ uaudio.c 7 Feb 2025 14:10:16 -0000 > @@ -2790,8 +2790,8 @@ uaudio_process_conf(struct uaudio_softc > return 0; > if (!uaudio_getnum(&dp, 1, &subclass)) > return 0; > - if (class != UICLASS_AUDIO) { > - DPRINTF("%s: skipped iface\n", __func__); > + if (class != UICLASS_AUDIO && class != 0xff) { > + DPRINTF("%s: 0x%x: skipped iface\n", __func__, class); > continue; > } > > @@ -3842,6 +3842,14 @@ uaudio_match(struct device *parent, void > DPRINTF("%s: couldn't get idesc\n", __func__); > return UMATCH_NONE; > } > + > + /* > + * M-Audio Fast Track Ultra > + */ > + if (arg->vendor == 0x0763 && arg->product == 0x2081 && > + idesc->bInterfaceClass == 0xff && > + idesc->bInterfaceSubClass != UISUBCLASS_AUDIOSTREAM) > + return UMATCH_VENDOR_PRODUCT_CONF_IFACE; > > if (idesc->bInterfaceClass != UICLASS_AUDIO || > idesc->bInterfaceSubClass != UISUBCLASS_AUDIOSTREAM) > >