
En primero lugar habría que definir que es dvbapi,estariamos hablando de la interfaz a nivel de software de nuestros receptores linux enigma2 que controla el hardware encargado de recibir el flujo de datos que proviene de nuestra antena satelite y permitir que a traves de este flujo podamos visionar el audio y video en nuestra TV.
Antes de proseguir, es recomendable leer el articulo de tipos de lnb para en un primer momento entender como llega el flujo de datos a nuestro receptor:
1. Esquema de elementos basicos que componen dvbapi
Un esquema basico de los componentes de DVBapi
- Frontend: Esta compuesto por el sintonizador satelite (tuner satelite con su demulador), La señal proveniente del transponedor satelite del canal que hemos seleccionado en nuestro receptor llega al tuner – Demulador y aqui se convierte en flujo de transporte MPEG (TS).
- CAS: Acceso condicional donde se ubica el acceso a nuestra tarjeta de abonado, el flujo proveniente del frontend, en el caso que sea de una plataforma de pago, el video y audio viene cifrado, estos datos son descifrados por la tarjeta de abonado y se reinsertan ya descifrados en el flujo ts.
- Demuxer: El flujo de datos del ts descifrado proveniente de CAS en enviado al Demuxer donde divide el auido y video y enviando a nuestra tv para el visionado.
2. API Enigma2
La API de DVB de enigma2 nos permite controlar los componentes del hardware del esquema anterior, todos estos dispositivos los podemos encontrar en el directorio /dev de nuestro receptor:
- /dev/sci0 acceso al sistema CAS tarjeta de abonado, por ejemplo si usaramos una emuladora tipo oscam y quisieramos leer tarjeta de abonado introducido en el receptor se deberia por lo tanto relacionar con este device:
protocol = internal
device = /dev/sci0
-
/dev/dvb nos da acceso al sistema tuner del receptor, dependiendo el numero de entradas tuner nos apareceran adapterxx por cada uno de ellos:
-
/dev/dvb/adapter0 nos apareceran los elementos frontend y demuladores
2. Flujo datos Transporte stream (TS)
El flujo de un TS consta de pequeños paquetes, para identificar cada uno de estos paquetes si usa identificador de paquete (PID), los siguientes serian los mas comunes que se hallan dentro del flujo TS:
0x0000 Program Association Table (PAT)
0x0001 Conditional Access Table (CAT)
0x0002 Transport Stream Description Table (TSDT)
0x0003-0x000F Valores Reservados
0x0010 Network Information Table (NIT)
0x0011 Service Description Table (SDT) / Bouquet Association Table (BAT)
0x0012 Event Information Table (EIT)
0x0013 Running Status Table (RST)
0x0014 Time and Date Table (TDT) / Time Offset Table (TOT)
0x0015 Network Synchronization
- En el caso de loguear el pid 0 (decimal) nos da información sobre todos los programas presentes en un Transport Stream
- En el caso de loguear el pid 1 nos daria acceso los paquetes relacionados con el sistema de cifrado del ts
La funcion basica del sistema de acceso condicional es que en el ts viaja los que se denomina control words lo que se conoce con CW las cuales son las encargadas de descifrar el video y audio, evidentemente para que estas CW no viajen en texto plano, estas se encapsulan dentro de lo que se denomina ecm, estas ecm son descifradas para obtener las cw en la CA que vimos en el esquema usando la tarjeta de abonado.
- En referencia al sharing esto que hemos comentado es su clave, la tarjeta de abonado descifra la ecm obteniendo las cw para el visionado, pues las emuladoras en ese momento capturan la CW y la pueden enviar a otros receptores que no tienen tarjeta de abonado.
Podemos ver logueando el pid del canal el transito de paquetes ecm dentro del flujo ts, donde los paquetes ecm normalmente comienzan por 80 y 81: