Hola geektimes
La transmisión digital se está introduciendo gradualmente en varios países. En Europa y Australia es el estándar
DAB / DAB + , en EE.UU.
HD Radio , en China
CDR (China Digital Radio). Una de las ventajas para el usuario es un sonido más limpio debido a la transmisión digital, servicios adicionales (por ejemplo, el nombre de la canción y el nombre del artista en la pantalla del receptor) y, en el caso de DAB, una mayor cantidad de estaciones en comparación con FM. Los receptores de radio digital ahora son relativamente económicos, con precios que comienzan en alrededor de $ 40.
Rusia aún no se ha unido oficialmente a ninguno de los estándares, pero si esto sucede, lo más probable es que sea DAB. Su operación de prueba ya se ha llevado a cabo en Moscú, y los receptores del mercado europeo para la Federación de Rusia son geográficamente más accesibles que los estadounidenses. Los nuevos automóviles europeos (de los cuales, nuevamente, más que los estadounidenses) a menudo ya están equipados con un receptor DAB. Mientras tanto, para fines de prueba, cualquiera puede iniciar DAB en casa, con un transceptor SDR.

(Fuente de la imagen / Getty)
Detalles debajo del corte (cuidadosamente, muchas configuraciones largas y aburridas).
Como funciona
Desafortunadamente, diferentes estándares son incompatibles entre sí.
European
DAB es una transmisión MP2 o AAC transmitida utilizando ODFM en canales con frecuencias de 174 a 239 MHz.
Tanto como sea posible
más de 30 canales , cada uno de aproximadamente 1,5 MHz de ancho, se pueden transmitir varias estaciones simultáneamente en un canal. Según
Wikipedia , el uso de DAB cuando se usa una velocidad de bits de 192 kbps es 3 veces más efectivo en términos de la cantidad de estaciones que el FM convencional.
El espectro de un canal DAB en la pantalla SDR se ve así:

A modo de comparación, a la misma escala, las estaciones de FM se ven así:

En American
HD Radio, tomaron un camino diferente: los canales digitales se agregaron "al costado" a las estaciones de FM existentes. Esto nos permitió no asignar nuevas frecuencias y dejar compatibilidad con receptores antiguos. La desventaja es que en las grandes ciudades, la transmisión de FM ya está en uso. Por otro lado, incluso el número máximo de 50 estaciones para FM es bastante bueno, lo más probable es que los oyentes no lo necesiten.
El espectro de HD Radio se ve así (captura de pantalla de youtube):

El
CDR chino decidió copiar el
enfoque estadounidense , por desgracia, mi conocimiento cero del chino no es suficiente para encontrar información más detallada al respecto.
En cuanto a los receptores, su precio en Amazon oscila entre $ 30 para los modelos más simples, hasta> $ 100 para los más avanzados con pantalla táctil, Wifi o pantalla a color.

Pero "Chukchi no es un lector", por lo que lanzaremos nosotros mismos la radio de prueba en formato DAB / DAB +. HD Radio no funciona, por desgracia, el formato está cerrado y no hay codificadores disponibles para ello.
Ejecute DAB / DAB +
El proceso en realidad no es complicado, pero es muy laborioso en términos de creación de las configuraciones necesarias. Para la prueba, necesitamos Linux y SDR con la capacidad de transferir, por ejemplo, HackRF o USRP.
1. Compilación del proyecto.
Se necesita Linux para compilar el codificador. Usé Ubunty, la imagen final de VirtualBox se descargó de
http://www.osboxes.org/ubuntu/ .
Compilar ODR-AudioEncPrimero necesita compilar el codificador de audio DAB / DAB +, puede encontrarlo en la 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
Compilar ODR-DabMuxODR-DabMux combina flujos digitales en un multiplex. Obtenga más información en
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 es un modulador que realmente envía datos al transmisor. El principio de ensamblaje es el mismo, el comando para descargar:
git clone https://github.com/Opendigitalradio/ODR-DabMod.git
Si durante el ensamblaje alguna biblioteca no es suficiente, debe instalarse usando apt-get.
Ahora todas las partes del proyecto están ensambladas,
y con todo esto intentaremos despegar .
2. Configuración
Desafortunadamente, USRP no funcionaba en una máquina virtual, y poner Linux completo en el disco era demasiado vago. Por lo tanto, no consideré el modo de transmisión de transmisión: el múltiplex se compiló a partir de archivos mp3 preparados previamente y el archivo IQ resultante se lanzó en Windows. Sí, en general, la transmisión de transmisión no es necesaria para la casa, no hubo tarea de crear una "estación pirata".
Aquí se describen varias configuraciones con más detalle:
http://opendigitalradio.imtqy.com/mmbtools-doc/mmbtools.pdf .
Preparación de datosHabrá 2 canales en nuestro multiplex, para los cuales descargué 2 archivos mp3 de YouTube y los llamé (quién lo habría adivinado) sound01.mp3 y sound02.mp3, respectivamente.
Convierta archivos a WAV con una tasa de bits de 48000:
ffmpeg -i sound01.mp3 -ar 48000 sound01.wav
ffmpeg -i sound02.mp3 -ar 48000 sound02.wav
Conviértalos al formato DAB:
odr-audioenc --dab -b 128 -i sound01.wav -o prog1.mp2
odr-audioenc --dab -b 128 -i sound02.wav -o prog2.mp2
La salida debe ser 2 archivos prog1.mp2 y prog2.mp2.
Creación multiplexPrimero debe crear un archivo que describa la configuración de nuestra "estación de radio". Permítame recordarle que en un canal DAB puede haber muchas estaciones, cada una con sus propios parámetros.
Cree el archivo "config.mux" con el siguiente 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" }
La configuración describe los canales que estarán en el multiplex y sus fuentes de datos. El parámetro nbframes especifica cuántos cuadros crear; 2000 cuadros corresponden a aproximadamente un minuto de reproducción.
Cuando se guarde el archivo, cree un múltiplex:
odr-dabmux config.mux
La salida debería ser el archivo
output.eti , en mi caso, su tamaño era de 12 MB.
TransferenciaHay dos posibilidades En el Linux "real", odr-dabmod puede transmitir datos directamente al transceptor, pero no funcionaba bajo la VM. Por lo tanto, como parámetro de salida, especifiqué un archivo sin formato que contendrá datos compatibles con Gnu Radio.
Cree el archivo 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
Aquí el punto clave es el formato de salida y su tipo. Para USRP, utilizo el formato complexf_normalised, para HackRF, en teoría, un s8 de 8 bits es adecuado.
Guarde la configuración, inicie la conversión:
odr-dabmod config1.ini
Eso es todo! La salida debe ser config.iq, en mi caso, aproximadamente 700 MB de tamaño por un minuto de grabación (formato flotante IQ). Lo copiamos a la computadora "principal" y Linux puede cerrarse.
3. Prueba
Como dije antes, no tengo un receptor DAB, el Chukchi no es un lector, no escucho la radio en absoluto :) Para las pruebas, utilicé el "silbato" RTL-SDR y el programa gratuito
Welle.io .
En primer lugar, conecte el receptor, ejecute Welle.io y encuentre un canal libre. En mi caso, 12B los afectó:

Recordamos la frecuencia y creamos el gráfico más simple para la transmisión a Radio Gnu:

Comenzamos, esperamos unos segundos y ... escuchamos la música grabada a través de welle.io.

Nos aseguramos de que el número de canales y sus nombres correspondan a los especificados en la configuración.
Sí, todo el "complejo de transmisión" se ve así:

Conclusión
No son los dioses quienes queman las ollas, y es muy posible tocar las tecnologías modernas en casa sin salir del escritorio.
La antena, por supuesto, no se sintonizó a la frecuencia deseada (y no tengo un analizador de antena), la potencia máxima de USB3 probablemente no sea más de 1W, e incluso entonces se distribuye en una banda de 1.5 MHz. Por lo tanto, el rango máximo de transmisión es de aproximadamente 0,5 m.
Si alguien quiere repetir los experimentos con mayor potencia, una búsqueda en eBay de la palabra "Amplificador de potencia de RF" proporciona muchos enlaces útiles (oficialmente, necesita una licencia para la transmisión, por supuesto, debe asegurarse de que no interfieran otros servicios).