Adaptadores DVB¶
Perfect Streamer suporta qualquer adaptador DVB instalado no sistema. Padrões suportados: DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, ATSC. Adicionalmente implementados: desencapsulamento T2-MI (ETSI TS 102 773) e descodificação BISS-1 / BISS-E.
A condição principal é um controlador de adaptador corretamente instalado e em funcionamento no sistema.
A secção DVB aparece apenas se o sistema possuir adaptadores DVB válidos. A reconfiguração em tempo de execução não é suportada; é necessário reiniciar o streamer.
Ligação do adaptador¶
Para adicionar um novo adaptador DVB, aceda à secção correspondente e adicione o adaptador:
Definir o nome do adaptador.
Selecionar um adaptador da lista dos disponíveis no sistema.
Selecionar o modo Stream.
Especificar o tipo de sistema de transmissão: DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C.
Especificar os parâmetros de receção: Frequência da portadora, Polarização, Taxa de símbolo, FEC, Modulação, ID do fluxo DVB, Frequência do oscilador, Oscilador da banda alta, Limite da banda alta, Modo DiSEqC 1.0 e outros parâmetros consoante o tipo.
Opcionalmente pode ativar-se o registo de EIT na base de dados EPG (Registar EIT na BD EPG).
Repetir a adição para cada adaptador presente no sistema.
Varredura DVB¶
Para evitar introduzir manualmente os parâmetros de receção (frequência, polarização, taxa de símbolo, FEC, modulação), o Perfect Streamer integra um scanner de transponders. O scanner percorre os transponders do satélite selecionado (DVB-S/S2) ou da banda regional (DVB-C, DVB-T/T2), efetua a sintonização e a captura de cada um, recolhe as tabelas PSI/SI (PAT, PMT, SDT) e constitui a lista final de multiplex com os respetivos programas. Qualquer multiplex encontrado pode ser adicionado à lista de adaptadores DVB com um único botão.
O scanner utiliza o adaptador físico na sua totalidade; para o iniciar é necessário um adaptador que não esteja a ser utilizado pelo kernel do sistema operativo nem por qualquer entrada de adaptador DVB ativa no Perfect Streamer.
Adaptadores disponíveis¶
Ao abrir o ecrã de varredura no painel de administração, é apresentada uma lista dos adaptadores DVB físicos do sistema com o respetivo estado de ocupação:
free — o adaptador está disponível para varredura.
kernel — o dispositivo está retido por outro processo do sistema operativo.
pss-id-N — o adaptador já está a ser utilizado por uma entrada de adaptador DVB no Perfect Streamer com o identificador indicado. Não é possível iniciar o scanner nele enquanto essa entrada estiver ativa. Para libertar o adaptador temporariamente, a entrada de adaptador DVB existente deve ser colocada em pausa (o indicador Pause nas suas definições).
Listas de transponders¶
O scanner baseia-se em listas de referência no formato Enigma2: a lista de satélites satellites.xml e as listas regionais cables.xml / terrestrial.xml. Cada ficheiro contém um conjunto de transponders para uma posição orbital conhecida ou para uma banda regional DVB-T/C (para mais detalhes, consulte o site do projeto oe-alliance-tuxbox-common).
Os ficheiros encontram-se no diretório sat/ relativo a pss.json (por predefinição /etc/pss/sat/). São fornecidos com a distribuição do Perfect Streamer e são carregados ao abrir o ecrã de varredura. Quando necessário, podem ser atualizados substituindo o ficheiro XML correspondente.
No painel de administração, as listas de referência são apresentadas em três listas:
Satélite — posições orbitais (por exemplo, Hot Bird 13.0°E, Astra 19.2°E).
Região cabo — país ou fornecedor DVB-C.
Região terrestre — região DVB-T/T2.
Se o satélite ou a região pretendidos não estiverem presentes nas listas de referência, é possível atualizar o XML ou utilizar em alternativa a varredura cega (ver abaixo).
Início¶
Na caixa de diálogo de varredura, definem-se sequencialmente os seguintes elementos:
Um adaptador físico livre.
Tipo de delivery system: DVB-S, DVB-S2, DVB-T, DVB-T2 ou DVB-C.
Fonte:
para DVB-S/S2 — uma posição orbital da lista de satélites e os parâmetros LNB (frequências do oscilador local LO1 e LO2, limite da banda superior, porta DiSEqC);
para DVB-C — uma região cabo;
para DVB-T/T2 — uma região terrestre.
Após premir Iniciar, a varredura é executada em segundo plano. O progresso é apresentado no painel de administração:
a percentagem de progresso baseada no número de transponders processados;
a frequência e a polarização atuais;
os contadores Multiplex encontrados e Programas encontrados;
uma árvore dos multiplex já encontrados, expansível até aos programas.
O scanner é um recurso partilhado em todo o streamer: executa-se no máximo uma varredura de cada vez. Se for iniciada uma nova varredura enquanto outra está em curso, a anterior é automaticamente cancelada. O botão Cancelar interrompe a varredura e limpa a lista acumulada.
A duração da varredura depende do número de transponders na lista de referência selecionada (tipicamente até 5 segundos por transponder: até 2 segundos para o bloqueio do sinal e até 5 segundos para a recolha das PSI). Valores típicos:
DVB-S Hot Bird 13.0°E — cerca de 2 minutos (44 transponders).
DVB-S Astra 19.2°E — cerca de 1,5 minutos.
DVB-T região europeia — menos de um minuto.
Resultado¶
O resultado da varredura é apresentado como uma árvore multiplex → programas.
Parâmetros do multiplex:
frequência, polarização, taxa de símbolo;
FEC, modulação, delivery system;
identificador do fluxo de transporte (TSID);
as leituras do frontend no momento em que termina a recolha das PSI — SNR, Signal, BER;
os contadores pmt-total / pmt-recv — quantas tabelas PMT foram anunciadas pela PAT e quantas foram efetivamente recolhidas dentro do tempo limite.
Parâmetros do serviço:
PNR (program_number) — o identificador do serviço dentro do multiplex;
Nome e Fornecedor — obtidos da tabela SDT, em UTF-8;
scrambled — o indicador de codificação. A sua origem é determinada pela seguinte ordem: o bit
free_CA_modeda SDT (declaração do broadcaster) → os indicadores de codificação de transporte da PMT. Se nem a SDT nem a PMT chegarem dentro do tempo limite, o valor predefinido é 0 («não codificado»); o estado real é apurado quando se tenta a receção;video-pid, audio-pid, pcr-pid — os principais fluxos elementares do serviço.
Aplicação do resultado¶
O multiplex selecionado na árvore é adicionado à lista de adaptadores DVB com um único botão. É criada uma nova entrada com os parâmetros do resultado da varredura (frequência, polarização, taxa de símbolo, FEC, modulação, delivery system) juntamente com os parâmetros LNB e o par adapter/device especificados no arranque da varredura. O nome do adaptador é definido pelo utilizador; os parâmetros adicionais (chaves BISS para canais codificados, T2-MI, LNB partilhado, etc.) são preenchidos após a criação da entrada, nas suas definições.
Os programas dos multiplex encontrados são aplicados em separado — criando um fluxo (Stream) com uma fonte de entrada demuxer endereçada pelo PNR (ver a secção Ligação de um fluxo SPTS a um serviço de multiplex DVB).
Varredura cega¶
O modo cego é utilizado quando:
o satélite pretendido não consta das listas de referência (posição orbital não normalizada, uplink local);
as listas de referência regionais DVB-T/C são insuficientes ou estão desatualizadas para uma localização específica;
é necessário reverificar um troço da banda independentemente da lista de transponders conhecidos.
Neste modo, o scanner não consulta as listas de referência; sintetiza uma lista de transponders a partir de uma grelha de frequências. Por predefinição, são utilizadas as seguintes gamas típicas:
DVB-S/S2 Ku — 10700..12750 MHz, passo de 4 MHz, ambas as polarizações (H e V), taxas de símbolo típicas 22000 / 27500 / 30000 ksym/s.
DVB-C — 47000..862000 kHz, passo de 8000 kHz, QAM-64 e QAM-256, taxas de símbolo típicas 6875 / 6900 / 6952 ksym/s.
DVB-T/T2 — 174000..862000 kHz, passo de 8000 kHz.
Uma varredura cega completa da banda Ku demora cerca de 100 minutos (vários milhares de pontos de sintonização). Na prática, o intervalo é restringido manualmente no painel de administração — frequência mínima/máxima e passo da grelha. Por exemplo, uma varredura de 11700..11800 MHz com passo de 4 MHz para uma única banda LNB demora cerca de 5 minutos.
O formato do resultado de uma varredura cega é idêntico ao de uma varredura normal. Particularidades:
os campos FEC e Modulação dos multiplex encontrados ficam fixados no valor AUTO — o scanner não determina os seus valores exatos;
o delivery system é igual ao solicitado (DVB-S, DVB-S2, …). Para redes mistas, recomenda-se efetuar duas passagens — DVB-S e DVB-S2 em separado.
A aplicação de um multiplex proveniente de uma varredura cega é efetuada da mesma forma que num caso normal — através do botão que o adiciona à lista de adaptadores DVB. Os campos FEC e Modulação são geralmente deixados em AUTO e, se necessário, afinados após um bloqueio estável do sinal no transponder em causa.
Tamanho do buffer de receção do kernel¶
O parâmetro buffer-size (inteiro, valor predefinido 512) define o tamanho do buffer circular DVB demux do kernel em blocos de 65536 bytes.
512(32 MB) — valor predefinido recomendado. Cobre cenários DVB-S/S2 de transponder completo (>= 33 Mbit/s) com um ou vários consumidores MPTS. Selecionado com base em testes de bancada com um adaptador TBS sob carga total do transponder.8..64(512 KB .. 4 MB) — aceitável para sistemas embarcados com RAM limitada ou para adaptadores nos modos Scanner / Femon onde o tráfego é baixo.0— manter o valor predefinido do controlador (normalmente 8…32 KB). Adequado apenas para cenários com muito pouca carga. Acima de 10 Mbit/s haverá perdas.
Quando uma mensagem da seguinte forma aparecer no registo:
DVB adapter X/Y dvr buffer overflow (NN so far, KK pids);
raise 'buffer-size' or reduce pid filter
aumentar buffer-size ou reduzir o número de PIDs que passam pelo filtro (por exemplo, eliminar a saída MPTS se não for necessária).
Custo de memória: o valor N consome N × 64 KB de memória do kernel por adaptador. Com muitos adaptadores (8 ou mais) convém tê-lo em conta (8 × 32 MB = 256 MB).
Ligação de um fluxo SPTS a um serviço de multiplex DVB¶
Ao adicionar um novo canal SPTS ao input do fluxo, selecionar:
Tipo: demuxer.
Fonte: adaptador DVB.
Multiplex criado no adaptador DVB, por nome do adaptador.
PNR — selecionado a partir da lista emergente de serviços detetados no multiplex ou introduzido manualmente.
Permissões de acesso aos dispositivos DVB¶
Se os adaptadores DVB não forem apresentados no Perfect Streamer, executar as seguintes ações:
sudo nano /etc/udev/rules.d/99-dvb-permissions.rules
SUBSYSTEM=="dvb", GROUP="video", MODE="0660"
sudo usermod -aG video pss
sudo chown -R root:video /dev/dvb/*
sudo reboot
Desencapsulamento T2-MI¶
T2-MI (T2-Modulator Interface, ETSI TS 102 773) é um formato para transportar fluxos DVB-T2 sobre DVB-S2 multistream. O transponder externo DVB-S/S2 transporta um ou mais T2-MI carrier-PIDs, cada um encapsulando BBFRAMEs com um ou mais PLPs (Physical Layer Pipe). Após o desencapsulamento, extrai-se do BBFRAME o MPEG-TS interno contendo os programas e as tabelas PSI/SI.
A implementação Perfect Streamer funciona no modo multi-carrier: um único adaptador físico entrega simultaneamente o multiplex DVB-S/S2 externo e todos os carriers T2-MI desencapsulados (um por cada carrier-PID encontrado no PMT do fluxo externo).
Parâmetros de configuração¶
t2mi-mode (Int, 0..2, valor predefinido 0) — modo de desencapsulamento:
0— Desativado. O MPEG-TS externo é transmitido sem processamento. Se for detetado um descritor T2-MI (tag 0x51) no PMT, é registada uma dica única.1— Manual. O desencapsulamento está sempre ativo. Set2mi-pidnão for 0, é pré-criado um carrier nesse PID no arranque. Os carriers adicionais continuam a ser detetados automaticamente a partir do PMT.2— Auto. Os carriers são detetados automaticamente a partir do PMT do multiplex externo para todos os ES que pareçam T2-MI (descritor 0x51 ou único ES com stream_type=0x06 num serviço sem outros ES A/V). Se não forem encontrados carriers, o adaptador funciona como um multiplex DVB normal.
t2mi-pid (Int, 0..8191, valor predefinido 0) — PID para pré-criar um carrier no arranque, antes da chegada do PMT:
0— sem pré-criação. Os carriers são detetados a partir do PMT (recomendado para o modo auto2).1..8191— pré-criar um carrier neste PID. Os T2-MI ES adicionais encontrados no PMT obtêm igualmente os seus próprios carriers.
No modo multi-carrier o parâmetro t2mi-pid não é um seletor de um único carrier — cada ES T2-MI detetado obtém o seu próprio carrier com o seu próprio desencapsulador. O parâmetro disponibiliza inicialização antecipada para um PID conhecido.
t2mi-plp (Int, 0..255, valor predefinido 0) — identificador do PLP extraído de cada carrier T2-MI no adaptador. Aplica-se a todos os carriers — a substituição por carrier não é suportada na versão atual. Se em produção diferentes carriers transportarem diferentes PLPs, convém:
especificar um PLP comum a todos os carriers, ou
configurar adaptadores separados para diferentes PLPs através de
lnb-sharing.
Este é o identificador do campo plp_id do BBFRAME, não o ISI multistream DVB-S2 (definido pelo parâmetro dvb-stream-id). São identificadores diferentes em camadas diferentes.
Diagnóstico de seleção PLP:
Cinco segundos depois do arranque de um carrier, se não tiver sido recebida nenhuma BBFrame para o PLP configurado mas se observarem outros PLPs, é registado um aviso com a lista dos
plp_idobservados.
t2mi-tsid (Int, -1..255, valor predefinido -1) — reservado para uso futuro. Seletor do identificador de fluxo T2-MI quando vários fluxos T2-MI partilham um mesmo carrier-PID. Ignorado na versão atual.
PNR composto — ligação SPTS a partir de T2-MI¶
Um adaptador pode expor vários multiplex lógicos:
carrier-id = 0— multiplex DVB-S/S2 externo (serviços A/V normais).carrier-id = 1..N— carriers T2-MI desencapsulados (um por cada ES T2-MI externo).
Descodificação BISS¶
É suportada a descodificação de fluxos DVB cifrados com BISS-1 (modo E1) e BISS-E (modo E2). Aplicável aos sistemas de transmissão DVB-S, DVB-S2, DVB-T, DVB-T2.
A implementação permite manter vários descodificadores ativos em simultâneo num mesmo adaptador:
Por PNR no multiplex externo (serviço normal).
Por
plp_idpara decifrar o carrier-PID T2-MI antes do desencapsulamento (necessário para fluxosmultistreamcifrados — caso contrário o desencapsulador descarta cada pacote cifrado, ver contador<t2mi scrambledDropped>).