- А синхронность устройств в ядре и их нумерация, Ann None, 13:17 , 18-Ноя-19 (1)
> Несколько звуковых карт в системе. Ядро в sys им каждый раз при > загрузки присваивает разные номера: input{N}. > Хочу чтобы номера были всегда теже.man udev
- А синхронность устройств в ядре и их нумерация, Аноним, 16:03 , 18-Ноя-19 (2)
> man udev Я гляну и отпишу, но кажется нето... В /dev все sym линки eudev сделал как надо. Проблема в самом ядре Linux. В зависимости от того какая звуковая карта первой появляется в dmseg зависит нумерация ее микрофона в /sys. udev/eudev они в /dev/ работают и в /sys ничего не меняют. /sys это только ядро и оно присваивает номера устройствам ввода в порядке инициализации звуковой карты: /sys/*/input/input{N}
- А синхронность устройств в ядре и их нумерация, Licha Morada, 23:25 , 18-Ноя-19 (3)
- А синхронность устройств в ядре и их нумерация, Аноним, 17:58 , 19-Ноя-19 (4)
Спасибоoptions snd-usb-audio index=1,2 vid=0x0ccd,0x0d8c pid=0x0028,0x000c Может поможет. У меня все звуковые в само ядро Linux вкомпилены. И в рандомном порядке определяются ядром еще до загрузки инитрд. Посмотрю, отпишу.
- А синхронность устройств в ядре и их нумерация, Licha Morada, 18:59 , 19-Ноя-19 (5)
> У меня все звуковые в само ядро Linux вкомпилены. И > в рандомном порядке определяются ядром еще до загрузки инитрд. Посмотрю, отпишу. Драйверам вкомпиленным в ядро, в принципе, по фигу что там в конфигурации модулей написанно. Хотя должна быть возможность задать в параметрах ядра, при запуске, то-же самое что и в параметрах модуля. Рекомендую пересмотреть решение вкомпиливать всё в ядро. Возможно, контроль над порядком определения устройств окажется решающим фактором в пользу использования модулей. Ну, и апгречдить/разворачивать систему проще.
- А синхронность устройств в ядре и их нумерация, Аноним, 10:43 , 20-Ноя-19 (6)
> Рекомендую пересмотреть решение вкомпиливать всё в ядро. Возможно, контроль над порядком > определения устройств окажется решающим фактором в пользу использования модулей. Ну, и > апгречдить/разворачивать систему проще.Монолитное ядро, без поддержки модулей, обязательное требование. Попробую через параметры загрузки ядра разрулить.
- А синхронность устройств в ядре и их нумерация, Аноним, 13:19 , 22-Ноя-19 (9)
Пробую параметры загрузки ядра:snd-usb-audio.index=1,2 snd-usb-audio.vid=0x0ccd,0x0d8c snd-usb-audio.pid=0x0028,0x000c У меня на одном драйвере 3 звуковухи! Причем 2 одинаковые таки дальше продолжают инициализировать асинхронно.
- А синхронность устройств в ядре и их нумерация, Licha Morada, 19:19 , 22-Ноя-19 (10)
> Монолитное ядро, без поддержки модулей, обязательное требование. > У меня на одном драйвере 3 звуковухи! Причем 2 одинаковые таки дальше > продолжают инициализировать асинхронно.У вас семь красных линий получается, сочувствую. Надо что-то делать с требованиями. Или приступать к грязным и странным методам: скриптом предёргивать порты в определённом порядке, использовать в качестве путей к устройствам собсвенную систему символических ссылок в место системных, докупить звуковых карт поразнообразнее, ставить в разрыв кабеля USB устройство задержки инициализации, забашлить ядерному хакеру (kernel hacker) чтоб починил...
- А синхронность устройств в ядре и их нумерация, Аноним, 08:39 , 04-Дек-19 (11)
Как проиндексировать устройства «input»? Список устройств можно просмотреть выполнив команду:dmesg |grep -E ‘^input’ Ядро при каждой загрузки устройства «input» определяет в асинхронным порядке и присваивает им рандомный номер. К input устройствам относятся микрофоны на звуковых картах.
- А синхронность устройств в ядре и их нумерация, Licha Morada, 09:49 , 04-Дек-19 (12)
> Как проиндексировать устройства «input»? > Список устройств можно просмотреть Вы тот-же Аноним что и топикстартер? Задача, как я понял, не в том чтобы помотреть какие индексы каким устройствам присвоены, а в том чтобы заставить их индексироваться каждый раз в одинаковом порядке. Задача со звёздочкой, т.к. устройства одной и той-же модели, монолитное ядро без поддержки модулей и т.д. > выполнив команду: > dmesg |grep -E ‘^input’ Тогда уж dmesg | grep '] input' или dmesg -t | grep '^input' По дефолту в начале строки идёт таймстамп. У меня, по крайней мере.
- А синхронность устройств в ядре и их нумерация, Аноним, 10:02 , 04-Дек-19 (13)
> Вы тот-же Аноним что и топикстартер?Это не принципиально. > Задача, как я понял, не в том чтобы помотреть какие индексы каким устройствам присвоены, а в том чтобы заставить их индексироваться каждый раз в одинаковом порядке. Да, задача заставить ядро Linux индексировать устройства input всегда в одном и том же порядке. > Задача со звёздочкой, т.к. устройства одной и той-же модели, монолитное ядро без поддержки модулей и т.д. Давай сначала решим в упрощенном варианте: как ядру Linux указать индексы устройств "input", когда все устройства разные, а ядро поддерживает модули. >> выполнив команду: >> dmesg |grep -E ‘^input’ > Тогда уж > dmesg | grep '] input' > или > dmesg -t | grep '^input' > По дефолту в начале строки идёт таймстамп. У меня, по крайней мере. Отметте, что в списке не только устройства микрофона от звуковых карт, но и кнопки питания, клавиатуры, мыши и все надо индексировать в одном и том же порядке.
- А синхронность устройств в ядре и их нумерация, Licha Morada, 23:48 , 04-Дек-19 (14)
>> Вы тот-же Аноним что и топикстартер? > Это не принципиально.Не соглашусь. С топикстартером мы вопрос, вроде, исчерпали. К сожалению, без конкретных выводов. На второй круг я идти не готов. Если вы тот-же самый, то можете сказать: "мы тут среди меня обсудили, и решили что монолитное ядро это стильно, но проблему как-то решать всё-же надо, и готовы вернуться к дефолтам нашего любимого дистрибутива". А если вы другой, и у вас условия другие, то имет смысл их озвучить. И расказать что именно не получилось из того что было предложено, раз уж вы пытаетесь украсть нить. >> Задача со звёздочкой, т.к. устройства одной и той-же модели, монолитное ядро без поддержки модулей и т.д. > Давай сначала решим в упрощенном варианте: как ядру Linux указать индексы устройств > "input", когда все устройства разные, а ядро поддерживает модули. Конечно давай в упрощенном варианте. Я уже предложил https://wiki.debian.org/ALSA#Troubleshooting https://alsa.opensrc.org/MultipleCards#Reordering_the_driver... >>> выполнив команду: >>> dmesg |grep -E ‘^input’ >> Тогда уж >> ... > Отметте, что в списке не только устройства микрофона от звуковых карт, но > и кнопки питания, клавиатуры, мыши и все надо индексировать в одном > и том же порядке. Аноним (11), это вам.
- А синхронность устройств в ядре и их нумерация, Аноним, 16:27 , 05-Дек-19 (15)
> Конечно давай в упрощенном варианте. Я уже предложил > https://wiki.debian.org/ALSA#Troubleshooting > https://alsa.opensrc.org/MultipleCards#Reordering_the_driver...Спасибо! Обе ссылки, особо вторая, решают проблему с выводом звука. >>>> выполнив команду: >>>> dmesg |grep -E ‘^input’ >>> Тогда уж >>> ... >> Отметте, что в списке не только устройства микрофона от звуковых карт, но >> и кнопки питания, клавиатуры, мыши и все надо индексировать в одном >> и том же порядке. > Аноним (11), это вам. Вот теперь к теме. Надо чтобы вывод звука, микрофон, тоже был на своем месте. За сортировку отвечает драйвер "input"! Вывод: dmesg -t |grep ‘^input: ’ должен быть идентичен при каждой загрузке. Точно скажу что на индекс звуковой карты драйвер input внимание не обращает! Клавы, мышки, микрофоны, кнопки питания - все перемешивает. Про звук забудем, надо драйвер input заставить устройства индексировать синхронно, чтобы номера были всегда теже.
- А синхронность устройств в ядре и их нумерация, Licha Morada, 20:59 , 05-Дек-19 (16)
> Вот теперь к теме. Надо чтобы вывод звука, микрофон, тоже был на > своем месте. За сортировку отвечает драйвер "input"! Вывод: > dmesg -t |grep ‘^input: ’ > должен быть идентичен при каждой загрузке. Точно скажу что на индекс звуковой > карты драйвер input внимание не обращает! Клавы, мышки, микрофоны, кнопки питания > - все перемешивает. > Про звук забудем, надо драйвер input заставить устройства индексировать синхронно, чтобы > номера были всегда теже.Если не получилось установить порядок тем-же способом, как и среди разных звуковых контроллеров, то я пас. Можт быть ваше приложение, которое записывает звук, умеет находить правильный input не только по индексу но и как-то ещё? Например: /devices/pci0000:00/0000:00:14.2/sound/card1/input9. Может быть можно использовать какую-нибудь прослойку, типа pulseaudio, которая скроет от приложения истинный порядок устройств, и представит персистентные алиасы. В качестве костыля, можно попробовать запретить загружать модули звуковых контроллеров штатно, а вместо этого написать свой скрипт который будет вызывать modprobe в определённом порядке и с необходимыни паузами, в самом конце загрузки. И запускать его из rc.local, например.
- А синхронность устройств в ядре и их нумерация, Аноним, 16:35 , 07-Дек-19 (17) +1
Обратите все внимание что индексация inputN в dmesg -t |grep ‘^input: ’ совсем не совпадает с индексацией устройств eventN в ls -l /dev/input/ В общем случае inputN и eventN принадлежат разным устройствам! Для просмотра устройства eventN можно выполнить: udevadm udevadm info /dev/input/eventN В строках: P: E: DEVPATH= Видно несовпадение нумераций input от ядра Linux и event от eudev. Это меня повторно напрягает... Проблема в сложном, монструозном, комбайне - input. Мне в нем не хватает опции синхронной обработки устройств ввода, как в scsi драйвере: input.sync=sync Вот до чего довела погоня за скоростью загрузки и асинхронностью работы драйверов. Хочется обратить внимание и на вывод: ls -l /dev/disk Заметьте как все причесано eudev. Просто идеал. Даже: ls -s /dev/snd/by-path Для вывода звука добавили! Для дисков, вывода звука через колонки - проблему решили, а на микрофон всем просто на*рать! Я лично уже себе 3 файла с правилами eudev в /lib/udev/rules.d/ добавил. Придется добавлять еще одно. 60-persistent-input.rules если править перезапишется при обновлении! Костыльное решение через udev rules мне не нравится. Хочется найти правильное решение через ядро. Грузить модули по порядку, с задержками еще хуже чем писать правила для eudev. Может кто знает опции ядра для драйвера input типа sync и index для предсказуемой нумерации устройств ввода при загрузке?
- А синхронность устройств в ядре и их нумерация, Аноним, 15:46 , 09-Дек-19 (18)
В Documentation/kernel-parameters.txt есть упоминание как заставить любой модуль искать железо асинхронно:input.async_probe а о упорядоченном поиске железа не увидел. Есть что-то для RCU.
|