Descobrir os módulos de kernel do sintonizador / frontends necessários para um dispositivo DVB

1

Eu estou tentando compilar módulos do kernel carregáveis (arquivos .ko) para suportar diferentes sintonizadores USB DVB em um sistema embarcado Linux (um QNAP NAS especificamente) com kernel 4.2.8 . Este sistema não tem o udev (ou melhor, ele tem, mas basicamente você não pode tocá-lo) então eu preciso construir os módulos do kernel e então insmod eles um após o outro.

Eu consegui construir os arquivos .ko que carregam corretamente, mas eu preciso saber quais módulos são necessários para um sintonizador de DVB específico sem ter em mãos.

Com alguns dispositivos é fácil, por exemplo, Hauppauge 2040:7070 , que usa dvb-usb-dib0700.ko , posso examinar as dependências do módulo:

[~] # modinfo dvb-usb-dib0700.ko | grep depends
depends:        dib7000m,dib9000,dibx000_common,dvb-usb,dib0090,dib0070,dib3000mc,rc-core

e eu posso insmod todos os diferentes frontends como dib7000m.ko , etc. e o sintonizador é perfeitamente detectado (reportado por dmesg ) com o nó / dev / dvb criado em conformidade.

Alguns outros dispositivos, ao contrário, são mais difíceis e isso levanta minha dúvida. Considere por exemplo o Pinnacle PCTV DVB-S2 2013:024c : o log dmesg relatado em sua página LinuxTV sugere que pode usar em28xx , a8293 e TDA10071 mas modinfo não ajuda neste caso:

# modinfo em28xx-dvb.ko | grep depends
depends:        em28xx 
# modinfo em28xx.ko | grep depends
depends:

Como você pode ver, não há referências aqui para os frontends a8293 e TDA10071 (que existem no kernel 4.2.8 como módulos carregáveis do kernel), então como posso saber sem ter o dispositivo phisical quais sintonizadores e frontends do kernel ele necessidades?

Estou perguntando porque um amigo com aquele sintonizador tentou insmod dvb-frontends/a8293.ko e dvb-frontends/tda10071.ko mas ainda o dmesg não diz Carregado com sucesso em28xx-dvb e nenhum / dev / O dvb é criado, então acho que outro módulo do kernel está faltando. Mas qual módulo? Os módulos do kernel também mudam com as versões do kernel, então a página do LinuxTV pode não estar correta para o nosso kernel 4.2.8.

Ao conectar um sintonizador USB a uma máquina virtual Debian, o sistema carrega automaticamente os módulos do kernel necessários para sintonizadores e frontends usando udev . Onde o sistema operacional encontra essas informações sobre o sintonizador? Se for codificado em algum lugar, posso extraí-lo para entender quais são os módulos de kernel corretos para um sintonizador por sua ID de lsusb? Eu gostaria de replicar no sistema embarcado o procedimento exato que o Debian faz.

EDITAR:

Ao continuar a pesquisar na net, descobri que udev pode usar modalias para corresponder aos módulos do kernel disponíveis e ver se são necessários. Mas mesmo se eu tiver o sintonizador anexado no sistema embarcado (que não usa o udev) como posso "inspecionar" os diferentes aliases do i2c?

    
por virtualdj 30.10.2017 / 10:03

0 respostas