Re: Periodically silence when listening through uaudio

Alexandre Ratchov <[email protected]>
Newsgroups gmane.os.openbsd.bugs
Message-ID <[email protected]>
On Wed, Apr 22, 2026 at 02:07:35PM +0300, Artem Sheldyaev wrote:
> I also dumped usb packets on linux and situation the same, no
> communication on 0x84 endpoint.
> 
> > Could you confirm that on Windows/macOS you're using the standard
> > class driver (i.e. no vendor specific driver)?
> 
> On windows I have vendor driver installed, but there is no driver for macos and linux. I
> Also tried dump on linux and there is also no specific drivers.
> 
> > With your modification, is the sound stable on OpenBSD? I'd expect a
> > periodic glitch. Note that the glitch period is related to the
> > difference between the audio and bus clocks, so it may be long, it
> > could be several minutes, which is difficult to observe on OpenBSD.
> 
> On 300s sample there is only one silence in the begginging and then
> everything is ok.
> 
> > Last question: how did you capture the USB packets?
> 
> tcpdump -i usb0 -w dump_file on openbsd, using wireshark on
> XHC20 iface on macos, wireshark on usbmon on linux and on windows.
> 
> 
> If I understand correctly, host make psync_xfer to device and presumably
> polling device to get response and call psync_intr with xfer?

The usbd_open_pipe() call is responsible for starting the sync
xfers. The uaudio_psync_xfer() calls only submit buffers to the host
controller where the data is stored.

> Then why
> If I comment psync_xfer (and there is no more responses from device) calls the problem persist?
>

I guess that opening the pipe does something on the device side that
breaks audio.

> I watch deeper on packets notices some things:
> 
> 1. Other systems send clock validity request, but I tried to do it and
> nothing changed.
> 
> 2. I found it strange that clock source descriptor have "synchronization:
> free running" attribute value. Maybe it related with synchronization
> endpoint?
> 
> 3. On the OpenBSD dump there is so much communications on 0x84 between
> real data transfers on 0x08, but I think it must be 8 times less often
> than data transfer (1 << (ival - 1))?
>

That's what I thought in first place, but the polling interval is not
set by the uaudio(4) driver. It is setup directly by the usb stack
which doesn't make any difference between data and sync pipes or even
between device types. So the interval handling is likely to be
correct.

ival = 4, means we poll the device every (1 << (4 - 1)) = 8 frames.

usb 2.0 schedules 8000 frame/second, so this corresponds to one sync
frame every millisecond. IIUC, this seems to match the dump below:

I don't understand the data packets of the dump though.

> Different between calls:
> 
> 89	0.027691	0.5.8	host	USB	519						0x08	URB_ISOCHRONOUS out[Packet size limited during capture]
> 90	0.027813	host	0.5.8	USB	8199						0x08	URB_ISOCHRONOUS out[Packet size limited during capture]
> 91	0.027848	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 92	0.027848	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 95	0.028758	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 96	0.028759	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 97	0.029756	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 98	0.029757	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 99	0.030757	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 100	0.030758	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 101	0.031756	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 102	0.031758	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 103	0.032756	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 104	0.032757	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 105	0.033756	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 106	0.033757	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 107	0.034756	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 108	0.034757	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 109	0.035756	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 110	0.035757	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 111	0.036758	0.5.4	host	USB	51						0x84	URB_ISOCHRONOUS in
> 112	0.036759	host	0.5.4	USB	51						0x84	URB_ISOCHRONOUS in
> 113	0.037693	0.5.8	host	USB	519						0x08	URB_ISOCHRONOUS out[Packet size limited during capture]
> 114	0.037813	host	0.5.8	USB	8199						0x08	URB_ISOCHRONOUS out[Packet size limited during capture]
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.