В Linux починили 4K 60 FPS для USB-карт захвата
Григорьев Арсений АндреевичВ Linux исправили проблему, из-за которой часть USB-карт захвата не выходила на заявленную пропускную способность и вместо 4K 60 FPS ограничивалась 4K 30 FPS. Источник сбоя оказался неожиданным: устройства подвисали на запросе BOS-дескриптора при подключении к системе.
Проблему обнаружил разработчик Johannes Brüderl на нескольких моделях: Elgato 4K X, AVerMedia Live Gamer Ultra 2.1 и ASUS TUF 4K PRO. Во всех случаях карты работали как USB 3.0-устройства на 5 Гбит/с, хотя должны были подниматься до SuperSpeed Plus с 10 Гбит/с.
Что именно ломалось
BOS-дескриптор — стандартный элемент USB, который помогает системе узнать дополнительные возможности устройства. В случае этих карт захвата запрос BOS приводил к зависанию на этапе инициализации, поэтому Linux не переходил на более быстрый режим.
Следствие было прямым:
- •соединение оставалось на 5 Гбит/с
- •штатный драйвер uvcvideo продолжал работать, но с меньшей доступной полосой
- •захват 4K 60 FPS оказывался недоступен
- •максимумом становился режим 4K 30 FPS
Как это починили
Исправление реализовано через патч с USB_QUIRK_NO_BOS. Этот quirk заставляет систему пропускать проблемный запрос BOS-дескриптора для несовместимых устройств.
После этого карты захвата начинают нормально работать через штатный uvcvideo уже на скорости SuperSpeed Plus 10 Гбит/с. То есть для пользователя речь не о новом драйвере, а о корректной инициализации уже поддерживаемых устройств.









