The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
А синхронность устройств в ядре и их нумерация, !*! Аноним, 18-Ноя-19, 10:37  [смотреть все]
Несколько звуковых карт в системе. Ядро в sys им каждый раз при загрузки присваивает разные номера: input{N}.

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

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

    man udev

  • А синхронность устройств в ядре и их нумерация, !*! Licha Morada, 23:25 , 18-Ноя-19 (3)
    > Несколько звуковых карт в системе.

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

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

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

    • А синхронность устройств в ядре и их нумерация, !*! Аноним, 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 для предсказуемой нумерации устройств ввода при загрузке?




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

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