The sound card advertises an explicit feedback endpoint and never sends anything on it (AUDIO_FEEDBACK_METHOD_DISABLED, see the comment in src/usbif_uac.c). So the host sends at its own nominal rate, and the board plays at its codec's. Nothing reconciles the two clocks.
Measured on the P4 panel from Windows over WASAPI exclusive, 2026-09-24 (the #37 work):
| host rate |
host actually sent |
board's I2S consumed |
what happens |
| 48 kHz |
48,012–48,014 frames/s |
24,012 Hz × 2 = 48,024 |
board slightly faster: now and then it runs dry and plays a short silence |
| 44.1 kHz |
44,129 frames/s |
22,050 Hz × 2 ≈ 44,100 |
host faster: the pump's I2S write times out 7–8 times per 10 s, and each timeout drops samples |
The ratio is a few hundredths of a percent, so it doesn't change pitch. You'd hear it as an occasional tiny click, at 44.1 kHz about once a second.
The comment in usbif_uac.c records why FIFO-count feedback was switched off: the pump drains the FIFO the instant a packet lands, so the level it regulates is meaningless. What's left is feedback computed from the I2S side, from DMA bytes consumed against the SOF clock, averaged slowly. uac_pump_clock() now counts the DMA bytes this would need.
The sound card advertises an explicit feedback endpoint and never sends anything on it (
AUDIO_FEEDBACK_METHOD_DISABLED, see the comment insrc/usbif_uac.c). So the host sends at its own nominal rate, and the board plays at its codec's. Nothing reconciles the two clocks.Measured on the P4 panel from Windows over WASAPI exclusive, 2026-09-24 (the #37 work):
The ratio is a few hundredths of a percent, so it doesn't change pitch. You'd hear it as an occasional tiny click, at 44.1 kHz about once a second.
The comment in
usbif_uac.crecords why FIFO-count feedback was switched off: the pump drains the FIFO the instant a packet lands, so the level it regulates is meaningless. What's left is feedback computed from the I2S side, from DMA bytes consumed against the SOF clock, averaged slowly.uac_pump_clock()now counts the DMA bytes this would need.