Как заставить скрипт возобновить ожидание инициализации ivtv
У меня есть ТВ-тюнер с инфракрасным датчиком. Я сделал скрипт для удаления / запуска модуля ядра ivtv и выключения / перезапуска службы lirc при приостановке / возобновлении.
Проблема в том, что команда запуска службы lirc запускается до того, как ivtv обнаружит и инициализирует оборудование, поэтому она не будет выполнена.
Есть ли способ отложить запуск службы lirc до тех пор, пока оборудование не будет инициализировано?
Файл сценария:
/etc/pm/sleep.d/30_ivtv
и его содержание:
#!/bin/sh
#
# Hauppauge PVR250 TV-card and TBS6680 DVB-card are dead after resume, fix it
. /usr/lib/pm-utils/functions
case "$1" in
hibernate|suspend)
# VLC prevents sleep
killall vlc
# LIRC...
service lirc stop
# Disable ivtv to prevent Hauppauge from being dead on resume
rmmod ivtv
# Disable TBS6680 dvb card to prevent it from being dead on resume
rmmod saa716x_tbs_dvb
;;
thaw|resume)
modprobe saa716x_tbs_dvb
modprobe ivtv
# Here we need to wait until IR sensor device initialization is done!
service lirc start
;;
*)
;;
esac
exit
Фрагмент из системного журнала после резюме:
lircd-0.9.0[13717]: lircd(devinput) ready, using /var/run/lirc/lircd
lircd-0.9.0[13717]: accepted new client on /var/run/lirc/lircd
lircd-0.9.0[13717]: initializing '/dev/input/event'
lircd-0.9.0[13717]: unable to open '/dev/input/event'
lircd-0.9.0[13717]: Failed to initialize hardware
kernel: [34425.580877] init: Handling lirc-device-added event
...
kernel: [34426.032906] ivtv: Start initialization, version 1.4.3
...
kernel: [34426.093966] ivtv0: Autodetected Hauppauge WinTV PVR-250
...
kernel: [34426.273807] init: Handling i2c-device-added event
kernel: [34426.274758] Registered IR keymap rc-hauppauge
kernel: [34426.274801] input: i2c IR (Hauppauge) as /devices/virtual/rc/rc13/input71
kernel: [34426.274854] rc13: i2c IR (Hauppauge) as /devices/virtual/rc/rc13
kernel: [34426.274856] ir-kbd-i2c: i2c IR (Hauppauge) detected at i2c-2/2-0018/ir0 [ivtv i2c driver #0]
kernel: [34426.275080] init: Handling i2c-device-added event
kernel: [34426.275135] init: Handling rc-device-added event
...
1 ответ
Вы можете добавить sleep
Вот:
thaw|resume)
modprobe saa716x_tbs_dvb
modprobe ivtv
# Here we need to wait until IR sensor device initialization is done!
sleep 20
service lirc start
Теперь, если вы хотите сделать что-то действительно умное, вы можете использовать выскочку.