New Linux kernel fixes USB bandwidth issue on 4K 60 FPS capture cards

4K USB capture cards stop falling back to 5 Gbps on newer Linux kernels

Linux users with modern USB capture cards should have an easier time recording 4K 60 FPS video on several affected devices. According to Phoronix, some 4K USB video capture cards were falling back from 10 Gbps to 5 Gbps operation on Linux. That link speed is enough for 4K 30 FPS capture, but not for 4K 60 FPS.

The issue was first addressed for the Elgato 4K X. Phoronix reader Johannes added a new USB_QUIRK_NO_BOS path after finding that the card could hang during the BOS descriptor request. When that happened, the device reattached at 5 Gbps and no longer exposed its 4K 60 FPS modes.

The link trains at 10Gbps, the kernel asks for the BOS descriptor, the device stops responding, and after a few seconds of retries it gives up and re-attaches as 009c at 5Gbps. The BOS read is the first transfer to fail; the config-descriptor and set-address errors after it are downstream of that, not separate problems.

— Johannes Brüderl

Elgato 4K X capture card, Source: Elgato

The workaround skips the BOS descriptor request for affected devices. This allows the capture card to remain at SuperSpeed Plus 10 Gbps and work through the in-kernel uvcvideo driver. Brüderl says the Elgato 4K X can then be used in OBS at 4K 60 FPS without extra vendor software.

The same quirk has since been added for more devices. The current list includes AVerMedia Live Gamer Ultra 2.1, ASUS TUF 4K PRO, UGREEN 35871 and EZXCAP401. I f another card fails in the same way, it still needs its device ID added to the kernel table.

The Elgato 4K X fix landed in Linux 6.19 and was also backported to maintained stable kernel branches. Phoronix reports that users of the newer affected cards should be covered by the latest upstream Linux 7.1 kernel.

Source: Phoronix , Johannes Blog