Как узнать, когда устройство готово

Как узнать, когда устройство готово

У меня есть микшерный пульт FireWire, и я написал правило udev, которое вызывает скрипт для настройки всей звуковой цепочки (alsa -> pulseaudio -> jackd -> firewire) сразу после включения пульта.

Теперь я заметил, что при jackdзапуске он через несколько секунд умирает. Я захватил его вывод, и он содержал сообщение об ошибке. Для тестирования я подделал событие udev через udevadm triggerи все заработало нормально.

Это заставило меня поверить, что просто проходит некоторое время между моментом срабатывания (реального) события udev и моментом, когда устройство действительно готово. Мое поддельное событие udev не страдало от этой проблемы, потому что консоль была включена, а /dev/fw1 присутствовал и был готов все время.

Действительно, добавление sleep 2в мой скрипт решило проблему, но я не доволен этим решением. Оно выглядит хрупким, потому что при большой нагрузке мне может понадобиться три или четыре секунды. А будучи слишком щедрым, я sleepнагромождаю много ненужных задержек.

Итак, есть ли способ узнать, когда устройство действительно готово?

Связанный контент