Несколько DVB карт в Linux

Столкнулся с проблемой тут недавно. Несколько DVB карт при перезагрузке менялись местами в произвольном порядке. Весьма неприятное явление, если у Вас каналы идут с разных спутников. Они отваливаются напрочь.

Перерыл кучу всего и только в одном месте смог найти внятное объяснение. Через udev нужно было «зафиксировать» эти карты на своих местах. Проблема была в том, что у меня 4 карты из 5 одного производителя, что влечет за собой невозможность привязки по производителю.

Из положения вышел привязкой по другому параметру. Итак, смотрим параметры карт:

# udevinfo -a -n /dev/dvb/adapter0/frontend0

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/class/dvb/dvb0.frontend0':
    KERNEL=="dvb0.frontend0"
    SUBSYSTEM=="dvb"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:02:00.0':
    KERNELS=="0000:02:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="b2c2_flexcop_pci"
    ATTRS{vendor}=="0x13d0"
    ATTRS{device}=="0x2103"
    ATTRS{subsystem_vendor}=="0x13d0"
    ATTRS{subsystem_device}=="0x2103"
    ATTRS{class}=="0x028000"
    ATTRS{irq}=="21"
    ATTRS{local_cpus}=="00000000"
    ATTRS{local_cpulist}==""
    ATTRS{modalias}=="pci:v000013D0d00002103sv000013D0sd00002103bc02sc80i00"
    ATTRS{numa_node}=="-1"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00/0000:00:1e.0':
    KERNELS=="0000:00:1e.0"
    SUBSYSTEMS=="pci"
    DRIVERS==""
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x244e"
    ATTRS{subsystem_vendor}=="0x0000"
    ATTRS{subsystem_device}=="0x0000"
    ATTRS{class}=="0x060400"
    ATTRS{irq}=="0"
    ATTRS{local_cpus}=="00000000"
    ATTRS{local_cpulist}==""
    ATTRS{modalias}=="pci:v00008086d0000244Esv00000000sd00000000bc06sc04i00"
    ATTRS{numa_node}=="-1"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

Соответственно, для других карт смотрим тоже-самое. Дальше «прибиваем» карту к устройству в dev. Создаем файл /etc/udev/rules.d/10-local.rules с содержимым:

SUBSYSTEM=="dvb", KERNELS=="0000:02:00.0", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter0/%%s $${K#*.}'", NAME="%c", GROUP="video"
SUBSYSTEM=="dvb", KERNELS=="0000:02:02.0", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter1/%%s $${K#*.}'", NAME="%c", GROUP="video"

Это для двух DVB-карт. Если надо больше — значит добавляем больше строк. После перезагрузки карты не перемешаются, а останутся зафиксированными.

Постовые: valet parking heathrow, гостиницы болгарии, наращивание ногтей спб

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

1 комментарий

(Обязательно)
(Обязательно, не публикуется)

Я пришел к тебе с дискетой - рассказать, что сеть упала
Яндекс.Метрика beget