The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"А синхронность устройств в ядре и их нумерация"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Драйверы, оборудование / Linux)
Изначальное сообщение [ Отслеживать ]

"А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (0), 18-Ноя-19, 10:37 
Несколько звуковых карт в системе. Ядро в sys им каждый раз при загрузки присваивает разные номера: input{N}.

Хочу чтобы номера были всегда теже.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Ann None (?), 18-Ноя-19, 13:17 
> Несколько звуковых карт в системе. Ядро в sys им каждый раз при
> загрузки присваивает разные номера: input{N}.
> Хочу чтобы номера были всегда теже.

man udev

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (2), 18-Ноя-19, 16:03 

> man udev

Я гляну и отпишу, но кажется нето... В /dev все sym линки eudev сделал как надо.

Проблема в самом ядре Linux. В зависимости от того какая звуковая карта первой появляется в dmseg зависит нумерация ее микрофона в /sys.

udev/eudev они в /dev/ работают и в /sys ничего не меняют.

/sys это только ядро и оно присваивает номера устройствам ввода в порядке инициализации звуковой карты:

/sys/*/input/input{N}


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Licha Morada (ok), 18-Ноя-19, 23:25 
> Несколько звуковых карт в системе.

Linux, наверное, да?

> Ядро в sys им каждый раз при загрузки присваивает разные номера: input{N}.
> Хочу чтобы номера были всегда теже.

Можно, например, жёстко назначить индексы в конфигурации модулей ядра:
https://wiki.debian.org/ALSA#Troubleshooting
https://alsa.opensrc.org/MultipleCards#Reordering_the_driver...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (4), 19-Ноя-19, 17:58 
Спасибо

options snd-usb-audio index=1,2 vid=0x0ccd,0x0d8c pid=0x0028,0x000c

Может поможет. У меня все звуковые в само ядро Linux вкомпилены. И в рандомном порядке определяются ядром еще до загрузки инитрд. Посмотрю, отпишу.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Licha Morada (ok), 19-Ноя-19, 18:59 
> У меня все звуковые в само ядро Linux вкомпилены. И
> в рандомном порядке определяются ядром еще до загрузки инитрд. Посмотрю, отпишу.

Драйверам вкомпиленным в ядро, в принципе, по фигу что там в конфигурации модулей написанно.
Хотя должна быть возможность задать в параметрах ядра, при запуске, то-же самое что и в параметрах модуля.

Рекомендую пересмотреть решение вкомпиливать всё в ядро. Возможно, контроль над порядком определения устройств окажется решающим фактором в пользу использования модулей. Ну, и апгречдить/разворачивать систему проще.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (6), 20-Ноя-19, 10:43 
> Рекомендую пересмотреть решение вкомпиливать всё в ядро. Возможно, контроль над порядком
> определения устройств окажется решающим фактором в пользу использования модулей. Ну, и
> апгречдить/разворачивать систему проще.

Монолитное ядро, без поддержки модулей, обязательное требование.

Попробую через параметры загрузки ядра разрулить.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от fx (ok), 22-Ноя-19, 10:37 
> нето

бруто?

> А синхронность

а что синхронность?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (8), 22-Ноя-19, 13:15 
Это ИИ спелчекера вредит.

Асинхронность инициализации звуковых при загрузки ядра Линукс.

scsi драйвер имеет опцию sync/async может и драйвер звуковой карты ее подхватит?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (8), 22-Ноя-19, 13:19 
Пробую параметры загрузки ядра:

snd-usb-audio.index=1,2 snd-usb-audio.vid=0x0ccd,0x0d8c snd-usb-audio.pid=0x0028,0x000c

У меня на одном драйвере 3 звуковухи! Причем 2 одинаковые таки дальше продолжают инициализировать асинхронно.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

10. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Licha Morada (ok), 22-Ноя-19, 19:19 

> Монолитное ядро, без поддержки модулей, обязательное требование.
> У меня на одном драйвере 3 звуковухи! Причем 2 одинаковые таки дальше
> продолжают инициализировать асинхронно.

У вас семь красных линий получается, сочувствую.
Надо что-то делать с требованиями. Или приступать к грязным и странным методам: скриптом предёргивать порты в определённом порядке, использовать в качестве путей к устройствам собсвенную систему символических ссылок в место системных, докупить звуковых карт поразнообразнее, ставить в разрыв кабеля USB устройство задержки инициализации, забашлить ядерному хакеру (kernel hacker) чтоб починил...

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (11), 04-Дек-19, 08:39 
Как проиндексировать устройства «input»? Список устройств можно просмотреть выполнив команду:

dmesg |grep -E ‘^input’

Ядро при каждой загрузки устройства «input» определяет в асинхронным порядке и присваивает им рандомный номер. К input устройствам относятся микрофоны на звуковых картах.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Licha Morada (ok), 04-Дек-19, 09:49 

> Как проиндексировать устройства «input»?
> Список устройств можно просмотреть

Вы тот-же Аноним что и топикстартер?
Задача, как я понял, не в том чтобы помотреть какие индексы каким устройствам присвоены, а в том чтобы заставить их индексироваться каждый раз в одинаковом порядке. Задача со звёздочкой, т.к. устройства одной и той-же модели, монолитное ядро без поддержки модулей и т.д.

> выполнив команду:
> dmesg |grep -E ‘^input’

Тогда уж
dmesg | grep '] input'
или
dmesg -t | grep '^input'
По дефолту в начале строки идёт таймстамп. У меня, по крайней мере.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (13), 04-Дек-19, 10:02 
> Вы тот-же Аноним что и топикстартер?

Это не принципиально.

> Задача, как я понял, не в том чтобы помотреть какие индексы каким устройствам присвоены, а в том чтобы заставить их индексироваться каждый раз в одинаковом порядке.

Да, задача заставить ядро Linux индексировать устройства input всегда в одном и том же порядке.

> Задача со звёздочкой, т.к. устройства одной и той-же модели, монолитное ядро без поддержки модулей и т.д.

Давай сначала решим в упрощенном варианте: как ядру Linux указать индексы устройств "input", когда все устройства разные, а ядро поддерживает модули.

>> выполнив команду:
>> dmesg |grep -E ‘^input’
> Тогда уж
> dmesg | grep '] input'
> или
> dmesg -t | grep '^input'
> По дефолту в начале строки идёт таймстамп. У меня, по крайней мере.

Отметте, что в списке не только устройства микрофона от звуковых карт, но и кнопки питания, клавиатуры, мыши и все надо индексировать в одном и том же порядке.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Licha Morada (ok), 04-Дек-19, 23:48 
>> Вы тот-же Аноним что и топикстартер?
> Это не принципиально.

Не соглашусь. С топикстартером мы вопрос, вроде, исчерпали. К сожалению, без конкретных выводов. На второй круг я идти не готов.
Если вы тот-же самый, то можете сказать: "мы тут среди меня обсудили, и решили что монолитное ядро это стильно, но проблему как-то решать всё-же надо, и готовы вернуться к дефолтам нашего любимого дистрибутива".
А если вы другой, и у вас условия другие, то имет смысл их озвучить. И расказать что именно не получилось из того что было предложено, раз уж вы пытаетесь украсть нить.

>> Задача со звёздочкой, т.к. устройства одной и той-же модели, монолитное ядро без поддержки модулей и т.д.
> Давай сначала решим в упрощенном варианте: как ядру Linux указать индексы устройств
> "input", когда все устройства разные, а ядро поддерживает модули.

Конечно давай в упрощенном варианте. Я уже предложил
https://wiki.debian.org/ALSA#Troubleshooting
https://alsa.opensrc.org/MultipleCards#Reordering_the_driver...

>>> выполнив команду:
>>> dmesg |grep -E ‘^input’
>> Тогда уж
>> ...
> Отметте, что в списке не только устройства микрофона от звуковых карт, но
> и кнопки питания, клавиатуры, мыши и все надо индексировать в одном
> и том же порядке.

Аноним (11), это вам.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (15), 05-Дек-19, 16:27 
> Конечно давай в упрощенном варианте. Я уже предложил
> 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 заставить устройства индексировать синхронно, чтобы номера были всегда теже.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Licha Morada (ok), 05-Дек-19, 20:59 
> Вот теперь к теме. Надо чтобы вывод звука, микрофон, тоже был на
> своем месте. За сортировку отвечает драйвер "input"! Вывод:
> dmesg -t |grep ‘^input: ’
> должен быть идентичен при каждой загрузке. Точно скажу что на индекс звуковой
> карты драйвер input внимание не обращает! Клавы, мышки, микрофоны, кнопки питания
> - все перемешивает.
> Про звук забудем, надо драйвер input заставить устройства индексировать синхронно, чтобы
> номера были всегда теже.

Если не получилось установить порядок тем-же способом, как и среди разных звуковых контроллеров, то я пас.

Можт быть ваше приложение, которое записывает звук, умеет находить правильный input не только по индексу но и как-то ещё? Например: /devices/pci0000:00/0000:00:14.2/sound/card1/input9.

Может быть можно использовать какую-нибудь прослойку, типа pulseaudio, которая скроет от приложения истинный порядок устройств, и представит персистентные алиасы.

В качестве костыля, можно попробовать запретить загружать модули звуковых контроллеров штатно, а вместо этого написать свой скрипт который будет вызывать modprobe в определённом порядке и с необходимыни паузами, в самом конце загрузки. И запускать его из rc.local, например.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "А синхронность устройств в ядре и их нумерация"  +1 +/
Сообщение от Аноним (17), 07-Дек-19, 16:35 
Обратите все внимание что индексация 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 для предсказуемой нумерации устройств ввода при загрузке?

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "А синхронность устройств в ядре и их нумерация"  +/
Сообщение от Аноним (18), 09-Дек-19, 15:46 
В Documentation/kernel-parameters.txt есть упоминание как заставить любой модуль искать железо асинхронно:

input.async_probe

а о упорядоченном поиске железа не увидел. Есть что-то для RCU.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру