Oi Geektimes.
A transmissão digital está sendo introduzida gradualmente em vários países. Na Europa e na Austrália, é o padrão
DAB / DAB + , nos EUA
HD Radio , na China
CDR (China Digital Radio). Das vantagens para o usuário, o som é mais limpo devido ao fluxo digital, serviços adicionais (por exemplo, o nome da música e o nome do artista na tela do receptor) e, no caso de DAB, um número maior de estações em comparação com FM. Os receptores de rádio digital agora são relativamente baratos, com preços a partir de US $ 40.
A Rússia ainda não aderiu oficialmente a nenhum dos padrões, mas se isso acontecer, provavelmente será o DAB. Sua operação de teste já foi realizada em Moscou, e os receptores de mercado europeus para a Federação Russa são geograficamente mais acessíveis que os americanos. Os carros europeus novos (dos quais, novamente, mais do que os americanos) já estão frequentemente equipados com um receptor DAB. Enquanto isso, para fins de teste, qualquer pessoa pode iniciar o DAB em casa, com um transceptor SDR.

(Fonte da imagem / Getty)
Detalhes sob o corte (com cuidado, muitas configurações longas e chatas).
Como isso funciona
Infelizmente, diferentes padrões são incompatíveis entre si.
O
DAB europeu é um fluxo MP2 ou AAC transmitido usando ODFM em canais com frequências de 174 a 239 MHz. Tanto
quanto possível,
mais de 30 canais , cada um com cerca de 1,5 MHz de largura, várias estações podem ser transmitidas simultaneamente em um canal. Segundo a
Wikipedia , o uso de DAB ao usar uma taxa de bits de 192kbps é 3 vezes mais eficaz em termos de número de estações que o FM convencional.
O espectro de um canal DAB na tela SDR é assim:

Para comparação, na mesma escala, as estações FM se parecem com:

No
HD Radio americano
, eles seguiram um caminho diferente - canais digitais adicionados "ao lado" às estações de FM existentes. Isso nos permitiu não alocar novas frequências e deixar compatibilidade com receptores antigos. A desvantagem é que, nas grandes cidades, a transmissão FM já está tomada. Por outro lado, até o número máximo de 50 estações para FM é bastante bom, provavelmente os ouvintes não precisam.
O espectro do HD Radio é semelhante a este (captura de tela do youtube):

O
CDR chinês decidiu copiar a
abordagem americana , infelizmente, meu conhecimento zero de chinês não é suficiente para encontrar informações mais detalhadas sobre ela.
Quanto aos receptores, o preço na Amazon varia de US $ 30 para os modelos mais simples, até US $ 100 para os mais avançados com tela sensível ao toque, Wifi ou tela colorida.

Mas “Chukchi não é um leitor”, então lançaremos o rádio de teste no formato DAB / DAB +. Infelizmente, o HD Radio não funciona, o formato está fechado e não há codificadores disponíveis.
Execute DAB / DAB +
Na verdade, o processo não é complicado, mas é muito trabalhoso em termos de criação das configurações necessárias. Para o teste, precisamos do Linux e SDR com a capacidade de transferir, por exemplo, HackRF ou USRP.
1. Compilação do projeto
O Linux é necessário para compilar o codificador. Eu usei o Ubunty, a imagem final do VirtualBox foi baixada em
http://www.osboxes.org/ubuntu/ .
Compilando ODR-AudioEncPrimeiro, você precisa compilar o codificador de áudio DAB / DAB +, pode encontrá-lo na página
github.com/Opendigitalradio/ODR-AudioEnc .
git clone https://github.com/Opendigitalradio/ODR-AudioEnc.git cd ODR-AudioEnc/ ./bootstrap ./configure --enable-alsa --enable-vlc make sudo make install
Compilando ODR-DabMuxODR-DabMux combina fluxos digitais em um multiplex. Saiba mais em
github.com/Opendigitalradio/ODR-DabMux .
git clone https://github.com/Opendigitalradio/ODR-DabMux.git cd ODR-DabMux/ ./bootstrap.sh ./configure make sudo make install
Compilando ODR-DabModEste é um modulador que realmente envia dados para o transmissor. O princípio de montagem é o mesmo, o comando para fazer o download:
git clone https://github.com/Opendigitalradio/ODR-DabMod.git
Se durante a montagem alguma biblioteca não for suficiente, ela deverá ser instalada usando o apt-get.
Agora todas as partes do projeto estão montadas
e ,
com tudo isso, tentaremos decolar .
2. Configuração
Infelizmente, o USRP não funcionou em uma máquina virtual e colocar o Linux completo no disco foi muito preguiçoso. Portanto, não considerei o modo de transmissão por streaming - o multiplex foi compilado a partir de arquivos mp3 pré-preparados e o arquivo IQ resultante foi iniciado no Windows. Sim, em geral, a transmissão de streaming não é necessária para a casa, não havia a tarefa de criar uma "estação pirata".
Várias configurações são descritas em mais detalhes aqui:
http://opendigitalradio.imtqy.com/mmbtools-doc/mmbtools.pdf .
Preparação de dadosHaverá 2 canais em nosso multiplex, para os quais baixei 2 arquivos mp3 do youtube e os nomeei (quem diria) sound01.mp3 e sound02.mp3, respectivamente.
Converta arquivos para WAV com uma taxa de bits de 48000:
ffmpeg -i sound01.mp3 -ar 48000 sound01.wav
ffmpeg -i sound02.mp3 -ar 48000 sound02.wav
Converta-os para o formato DAB:
odr-audioenc --dab -b 128 -i sound01.wav -o prog1.mp2
odr-audioenc --dab -b 128 -i sound02.wav -o prog2.mp2
A saída deve ser 2 arquivos prog1.mp2 e prog2.mp2.
Criação MultiplexPrimeiro você precisa criar um arquivo que descreva a configuração da nossa "estação de rádio". Deixe-me lembrá-lo de que em um canal DAB pode haver muitas estações, cada uma com seus próprios parâmetros.
Crie o arquivo "config.mux" com o seguinte texto:
general { dabmode 1 nbframes 2000 ; Set to true to enable logging to syslog syslog false ; Enable timestamp definition necessary for SFN ; This also enables time encoding using the MNSC. tist false } remotecontrol { telnetport 0 } ensemble { id 0x4fff ecc 0xec ; Extended Country Code local-time-offset auto international-table 1 label "mmbtools" shortlabel "mmbtools" } services { srv-p1 { label "Station1" } srv-p2 { label "Station2" } } subchannels { sub-p1 { type audio inputfile "prog1.mp2" bitrate 128 id 10 protection 4 } sub-p2 { type audio inputfile "prog2.mp2" bitrate 128 id 11 protection 4 } } components { comp-p1 { service srv-p1 subchannel sub-p1 } comp-p2 { service srv-p2 subchannel sub-p2 } } outputs { output1 "file://output.eti?type=raw" }
A configuração descreve os canais que estarão no multiplex e suas fontes de dados. O parâmetro nbframes especifica quantos quadros criar; 2000 quadros correspondem a aproximadamente um minuto de reprodução.
Quando o arquivo é salvo, crie um multiplex:
odr-dabmux config.mux
A saída deve ser o arquivo
output.eti , no meu caso, seu tamanho era de 12MB.
TransferirExistem duas possibilidades. No Linux "real", o odr-dabmod pode transmitir dados diretamente para o transceptor, mas não funcionou na VM. Portanto, como parâmetro de saída, especifiquei um arquivo bruto que conterá dados compatíveis com o Gnu Radio.
Crie o arquivo config.ini:
[input] transport = file source = output.eti loop=0 [modulator] digital_gain=0.9 rate=2048000 [output] output = file [fileoutput] format = complexf_normalised ;format = s8 filename = output.iq
Aqui, o ponto principal é o formato de saída e seu tipo. Para USRP, eu uso o formato complexf_normalized, para HackRF, em teoria, um s8 de 8 bits é adequado.
Salve a configuração, inicie a conversão:
odr-dabmod config1.ini
Isso é tudo! A saída deve ser config.iq, no meu caso, com cerca de 700 MB de tamanho por um minuto de gravação (formato flutuante IQ). Nós o copiamos para o computador "principal" e o Linux pode ser fechado.
3. Teste
Como disse anteriormente, não tenho receptor DAB, não ouço Chukchi, não ouço rádio :) Para testar, usei o apito RTL-SDR e o programa gratuito
Welle.io .
Primeiro, conecte o receptor, execute o Welle.io e encontre um canal gratuito. No meu caso, 12B os afetou:

Lembramos a frequência e criamos o gráfico mais simples para transmissão ao Gnu Radio:

Começamos, esperamos alguns segundos e ... ouvimos a música gravada através do welle.io.

Garantimos que o número de canais e seus nomes correspondam aos especificados na configuração.
Sim, todo o "complexo de transmissão" fica assim:

Conclusão
Não são os deuses que queimam os potes, e é possível tocar em tecnologias modernas em casa sem sair da área de trabalho.
A antena, é claro, não foi sintonizada na frequência desejada (e eu não tenho um analisador de antenas), a potência máxima do USB3 provavelmente não passa de 1W e, mesmo assim, é distribuída por uma banda de 1,5 MHz. Portanto, o alcance máximo de transmissão é de cerca de 0,5 m.
Se alguém quiser repetir os experimentos com maior potência, uma pesquisa no ebay pela palavra "RF Power Amplifier" fornece muitos links úteis (oficialmente, você precisa de uma licença para transmitir, é claro, certifique-se de que outros serviços não sejam interferidos).