RG35XX H Radio
App nativa de radio por internet para la consola Anbernic RG35XX H con MuOS. Interfaz 640×480, playlist M3U, favoritos y listas propias.

Radio por internet en una consola retro
RG35XX H Radio es una aplicación nativa de radio por internet para la consola Anbernic RG35XX H con MuOS. La interfaz corre a 640×480 y se navega con los botones físicos de la consola: lista de emisoras, favoritos, recientes y ajustes guardados en la tarjeta SD.
Incluye una playlist M3U con emisoras MP3, AAC, streams HLS (.m3u8) y flujos Icecast genéricos. Desde Ajustes puedes añadir tus propias listas, locales o remotas, y la selección queda guardada en la configuración de la aplicación.
Instalación
Se copian los archivos en la tarjeta SD con esta estructura:
/mnt/mmc/Roms/APPS/Radio.sh
/mnt/mmc/Roms/APPS/radio/
Radio.sh va en Roms/APPS/ y el directorio radio/ completo en Roms/APPS/radio/. Para el icono del menú, se copia el PNG como Roms/APPS/Imgs/Radio.png y la aplicación se lanza desde el menú APPS de MuOS.
El paquete de instalación incluye también el motor de audio AArch64 en radio/engine/ffmpeg-aarch64. Ese binario no está en el repositorio: hay que obtenerlo por separado e incluirlo en el paquete.
Controles
- Pad — mover el cursor o la selección.
- A — abrir, seleccionar o reproducir; reintentar tras un error.
- B — volver; durante la reproducción, parar y volver.
- SELECT — volver a la pantalla de inicio.
- X — reproducir desde una lista; pausar o reanudar mientras suena.
- START — añadir o quitar de favoritos.
- L1 / R1 — categoría anterior / siguiente.
- VOL− / VOL+ — ajustar el volumen del mezclador ALSA.
- MENU — salir limpiamente.
Playlists propias
Listas locales (.m3u o .m3u8) en:
/mnt/mmc/Roms/APPS/radio/playlists/
Para listas remotas, una URL http:// o https:// completa por línea en playlists/playlist_urls.txt. Se permiten líneas en blanco y comentarios con #; otros esquemas se ignoran.
Las descargas remotas verifican el certificado HTTPS y se limitan a 2 MiB. Cada descarga válida se guarda en caché: si una actualización posterior falla, se usa esa copia. Sin caché válida, o si una playlist local no existe, está vacía o es inválida, la aplicación usa la playlist incluida.
Arquitectura
La interfaz está escrita en Python con SDL2 y Pillow sobre el dispositivo. El parser M3U, la gestión de playlists, el estado de la aplicación y la persistencia están separados de la capa de interfaz, de forma que se pueden probar en un sistema de escritorio.
La reproducción conecta un decodificador estático ffmpeg-aarch64 con /usr/bin/aplay: FFmpeg convierte el stream a PCM y aplay lo envía a ALSA. El bundle de certificados en radio/assets/cacert.pem se entrega al decodificador a través de SSL_CERT_FILE para verificar HTTPS sin depender del almacén TLS del firmware.
Seguridad
La aplicación solo acepta URLs de playlist HTTP(S), conserva la verificación HTTPS y no ejecuta playlists ni URLs a través de un shell. Las entradas M3U se tratan como datos no confiables y las malformadas se omiten. La caché y la persistencia quedan dentro del árbol de la aplicación en la tarjeta SD. Eso no hace fiables los streams de terceros: usa solo playlists y emisoras en las que confíes.
Licencia
Código abierto bajo licencia MIT. Repositorio en github.com/rafarq/rg35xxh-radio.