Когда в системе много DVB-адаптеров — может возникнуть ситуация с изменением их номеров после каждой перезагрузки. Иногда проблему можно решить с помощью правил для udev, привязав адаптеры к постоянным номерам на основании, например, номера PCI-слота куда вставлена DVB-карта. Но это не работает в том случае, если на DVB-карте больше одного тюнера.

В случае DVB-карты с несколькими тюнерами — работает привязка по MAC-адресам. Это реализовано в замечательной софтине под названием Астра и активно мной используется для нормальной работы с 4-тюнерными картами от TBS. Но, к сожалению, Астра не умеет работать с CAM-модулями. Для работы с ними у меня используется DVBlast, который не умеет привязку по MAC-адресу. Это легко исправляется с помощью небольшого скрипта на bash.

Принцип действия скрипта очень простой:

1) C помощью утилиты dvbls получаем список всех DVB-адаптеров, после чего определяем какому MAC-адресу какой номер адаптера соответствует.

2) Проверяем наличие уже запущенного процесса, если он есть — то значит DVBlast уже работает и нет нужды запускать еще один экземпляр. Если же процесс не найдет — переходим к запуску.

3) Запускаем DVBlast в screen’е.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
LOG=/root/.sh/dvblast_check/log
 
ADAPTER=`/usr/bin/dvbls | grep XX:XX:XX:XX:XX:XX (укажите MAC вашего адаптера) -B 2 | grep adapter | awk '{print $1}' | sed -e 's/^.\{8\}//'`
 
PID=`ps aux | grep dvblast | grep "\-a "$ADAPTER" \-r" | grep -v SCREEN | awk '{print $2}'`
 
if [ $PID ]
then
sleep 1
else
screen -L -d -m -S stream /usr/bin/dvblast -f 12579000 -s 22000000 -c /etc/dvblast/config.conf -a $ADAPTER -r /tmp/dvblast.sock
echo "$DATE - DVBlast on card $ADAPTER not worked, run it..." >> $LOG
fi

Адаптеров больше чем 1? Копируем код несколько раз, не забывая менять в нем MAC-адреса и пути до конфигов.

Скрипт запуска DVBlast с привязкой к MAC-адресу DVB-адаптера
Метки:        

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *