В общем, после приобретения Focusrite Scarlett 18i20 gen3 уже некоторое время плотно занимаюсь написанием драйвера микшера для Scarlett 18i20. Изначально драйвер разрабатывал Geoffrey Bennet, и вот его github-репозиторий: https://github.com/geoffreybennett/scarlett-gen2 Я, купив девайс, пропатчил своё штатное linux-ядро, идущее с дистрибутивом openSUSE Leap, и обнаружил драйвер полностью непригодным к gen3-устройствам. Мало того, он ещё и заставлял alsamixer впадать в «вечные циклы» (наперёд: ошибка была простая, но коварная). В итоге, на данный момент мы имеем драйвер, который почти полностью (а местами даже и больше) поддерживает карту на частотах дискретизации 44.1 и 48 кГц. Для этого пришлось провести достаточно основательный реверс-инжиниринг протокола взаимодействия драйвера и звуковой карты. В итоге, имеем следующий репозиторий: https://github.com/sadko4u/focusrite-scarlett-backports Здесь опубликованы патчи для RT-ядра и Default-ядра openSUSE Linux, а также патч для ванильного ядра 5.9.0 (по просьбе трудящихся). Также в репозитории присутствуют: исходные коды драйверов для отладки (debug-drv) исходные коды драйверов для публикации (prod-drv) сопутствующая информация по реверс-инжинирингу (reverse-eng): описание конфигурационного пространства звуковой карты; PCAP-дампы обмена данных по USB-шине для разных устройств; утилита для автоматической дешифровки PCAP-дампов и упрощения процесса реверс-инжиниринга. В итоге, сейчас имеем: Возможность воспроизводить и захватывать звук на устройствах 18i20 и 18i8 (спасибо Dirk Lattermann за соучастие). Полноценно работающий роутинг с сохранением состояния в конфигурационном пространстве устройства, совместимый с оригинальным Focusrite Control (ну почти). Работающий микшер (полная корректность пока не проверялась, для 18i8 заявлено, что работает не всё). Работа кнопок INST/PAD/DIM/MUTE/Talkback. Переключение мониторинга между режимами Off/Main/Alt monitoring control. Включение/выключение кнопок фантомного питания программно (чего нет в Focusrite Control) и возможность сохранения состояния фантомного питания после выключения/включения устройства. Управление мониторинг-секцией. Поддержка Mute для всех физических выходов (как в FC). Ну и скриншот с замером roundtrip latency между 7-ым аналоговым выходом и первым аналоговым входом на моём ноутбуке ASUS TUF Gaming: В ближайшее время ко мне должна ещё подъехать карта Scarlett 2i2, так что для неё драйвер также будет протестирован.
Эмм, не понял, у меня Scarlett Solo вроде Gen2, так я просто подключал ее к компу по USB и нормально писал и воспроизводил с нее, Linux без проблем ее определял и использовал.
Использовать-то использовал, да вот в alsamixer ручек никаких нет. А тут я в alsamixer добавил возможность управлять этим устройством. Но это доступно только для gen3, где хардварные push/push кнопки были заменены на софтварные.
SadKo, а как ты смотришь на перспективу создания вайна для драйверов и какие возможные решения по-твоему наиболее лучшие?
Самые лучшие решения - это нативные. Wine для драйверов - это костыли. Сейчас под Wine, судя по отзывам, даже не все VST-плагины вендовые заводятся. Что уж о драйверах говорить. Ну и, к тому же, что такое драйвер под Linux и под Windows. Совсем разные вещи. В моём понимании компании типа Focusrite уже давно должны задуматься о том, чтобы если не писать дрова под Linux, то хотя бы спеки на устройства и протоколы взаимодействия открывать. А то всё пришлось наработками коллег и протокол-дампами решать.
VST3 у меня ни один не завелся, VST2 почти все. Не заводятся те, что требуют каких то дополнительных софтов для установки (типа менеджеры лицензий и тд, как во всяких продуктах IKMultimedia, Native Instruments и других аналогичных контор).
В миллионный раз сказка про белого бычка, но для конторы такая задумка сулит переквалифицироваться в техподдержку гориллиарда разных линуксовых дистрибутивов. Где у многих пользователей обязательно где-то что-нибудь будет не работать и они станут требовать решить им эту проблему. А описание протокола имело смысл попросить, может быть не отказали бы.
так и есть, но наши реалии далеки от разумности разумно бы было б, если бы весь софт шёл бы опенсорцом + оси строились бы с жёсткими инженерными стандартами.. Но.. мда.. Диавольская иЗЪt€№@ одна сборка ядра чего стоит == надо кучу хрени выбросить, чтобы ОНО просто собралось
Сори за оффтоп, но в чем нужна кастомного драйвера вообще? У меня стоит 2i2 и все заработало со стандартными средствами с драйвером на сайте вендора.
Тут, по сути, нужен только kernel-драйвер. Никто их морду разрабатывать для Linux не просит. Alsamixer'у все параметры драйвер отдаёт, а желающие написать свой гуй всегда найдутся. Я писал в поддержку, ответа не последовало. Видимо, не так настойчиво писал. --- Сообщение объединено, 18 янв 2021 --- Ввести три команды в консоли и подождать их выполнения - это теперь непосильная задача?
Я много лет назад пробовал собрать ядро 2.4 из дистрибутива ASP Linux. Это были три команды и много часов исполнения танца дождя, чтобы они завершились успешно. С получившимся ядром кстати паника случилась при загрузке.
Не знаю, что много лет назад было. Сейчас по моей документации даже совсем незнакомые с программированием linux-пользователи могут собрать своё кастомное ядро с накинутым патчем: https://github.com/sadko4u/focusrite-scarlett-backports/blob/master/README.md
линь ядро может быть собрано с самыми разными опциями и далеко не все варианты рабочие.. тут не надо путать кастомные билды и дефолтные
SadKo, немного оффтопа: как считаешь имеет смысл накатывать риалтайм ядро? Я вообще всегда жил и писал аудио без него.
Вся пляска вокруг RT основывается на том, чтобы получить минимальный размер буфера, который будет прилетать от звуковой карты. Например, 32 или даже 16 семплов. Понятное дело, что для обработки всего этого нужно совсем другое планирование задач. Просто для задач обработки/сведения, где можно поставить большие буферы (от 512 семплов и более) RT, в принципе, не особо нужно.
Минимальный лаг важен, если есть обратная связь. Например когда эмулируешь стек для электрогитары на ПК. Если задача тупо записать аудио, то какая разница?
Ну я запускал гитарриг и хеликс нейтив через вайн и линвст внутри рипера без риалтайм ядра, задержка была ощутима на слух, для живых выступлений это возможно не годится, но для записи можно и такой обойтись.