El menú de canales de la Wii como pantalla de inicio de tu Android TV.
wii-tv cambia la pantalla de inicio de un Android TV por un menú al estilo del Menú Wii: doce canales por página, el reloj de segmentos, la fecha, los botones redondos, la manito que sigue a lo que elegís y sonidos al moverte. Cada canal es una de tus apps, con su propio banner. Al prender la TV aparece una pantalla de aviso blanca, como en la consola, y con OK pasás al menú.
Lo mostré en X: Le puse la interfaz de la Wii a mi TV.
English: README.en.md
wii-tv es un proyecto de fans. No está afiliado a Nintendo ni tiene su aprobación. "Wii" es una marca de Nintendo.
El repositorio no incluye archivos extraídos de Nintendo. La interfaz se dibuja por código (WiiMenuView, WiiBase, WiiPalette). Los 7 efectos y las 3 músicas que trae son remakes que hizo Soffizlly para este proyecto: ver audios y créditos.
- Canales: 4 columnas por 3 filas por página. La primera columna de la página siguiente asoma a la derecha y las flechas cambian de página. Tus apps llenan los canales y los que sobran quedan vacíos. Al abrir un canal, la app crece desde su cuadro, como en la consola. Para cambiar un canal de lugar, mantené OK sobre él y movelo con las flechas; OK lo suelta y el orden queda guardado en la TV.
- Reloj y fecha: reloj de segmentos, de 12 horas con AM/PM o de 24 horas según el formato de hora de la TV, y la fecha corta en el idioma de la TV.
- Botones de abajo:
- wiiOS (izquierda) abre los Ajustes de Android TV.
- SD abre el reproductor multimedia de la TV (pendrive o disco USB).
- Sobre (derecha) abre la lista de entradas HDMI y la TV en vivo.
- Manito que sigue al canal o botón elegido. Al volver de una app está donde la dejaste, aunque Android haya cerrado el menú para liberar memoria.
- Canal Mii: el primer canal. La plaza con tus Miis paseando sobre el piso de cuadrados, los botones de los costados (editar, crear, borrar, ayuda, desfile, mensajes), el silbato que los ordena por nombre, favoritos, color o género, y el editor para crearlos y cambiarlos. Los Miis se guardan en la TV. Sin nada más, todo se dibuja por código; con el paquete del canal usa las caras, los pelos, los íconos y los sonidos originales. El repositorio no trae esos archivos:
tools/miipacklos toma de sus páginas públicas y arma el paquete en tu computadora. - Canal Juegos: al lado del Canal Mii. Su cartel es una pradera pixelada con un personajito azul que salta piedras y junta gemas. Adentro, tus juegos son cartuchos en un estante: elegís uno, apretás Jugar y arranca en RetroArch (Game Boy, Game Boy Color, Game Boy Advance, NES, Super Nintendo y Neo Geo). El botón RetroArch abre sus ajustes. Los juegos no vienen con el repositorio: ver Juegos.
- Sonidos al moverte, al abrir algo, al cambiar de página, al abrir las entradas y al continuar desde el aviso. Usan el volumen de la TV.
- Audio incluido: 7 efectos y 3 músicas, para el menú, la Plaza Mii y el editor. Primero suena el arranque y la música del menú entra un segundo después. No hay que instalar nada aparte.
- Pantalla de aviso al prender la TV. La cierran OK o las flechas, o se va sola a los 12 segundos. No vuelve a aparecer cuando salís de una app.
- Siempre arranca en el menú: al prender la TV vuelve al menú aunque hayas dejado otra app abierta.
- Protector de pantalla con reloj (opcional).
Probado en una Philips 65PUD7906/77 (Android TV 11, 1920 x 1080). Debería andar en cualquier Android TV 8.0 o posterior con pantalla 16:9.
- Una computadora con macOS o Linux en la misma red que la TV. En Windows también se puede instalar (ver el paso 5).
- Python 3.10 o posterior.
- JDK 17 y el Android SDK con
platforms;android-34ybuild-tools;34.0.0. Android Studio trae los dos. En macOS también sirvebrew install openjdk@17 android-commandlinetools. - La depuración activada en la TV (paso 1).
Corré todos los comandos desde la carpeta del repositorio. Cambiá 192.168.1.50 por la IP de tu TV.
- Ajustes → Preferencias del dispositivo → Información: tocá Compilación siete veces, hasta que diga que ya sos desarrollador.
- Ajustes → Preferencias del dispositivo → Opciones para desarrolladores: activá Depuración por USB, y también Depuración por red o ADB por red si tu TV lo muestra.
- Anotá la IP de la TV: Ajustes → Red e Internet → tu red.
git clone https://github.com/MauroProto/wii-tv.git
cd wii-tv
python3 -m venv tools/venv
tools/venv/bin/pip install -r tools/requirements.txt
TV_HOST=192.168.1.50 tools/venv/bin/python tools/tv.py --probeLa primera vez la TV pregunta si permitís la depuración. Marcá "Permitir siempre desde esta computadora" y aceptá. --probe muestra el modelo y la versión de Android.
La clave que autoriza a tu computadora queda en tools/adbkey/. Git la ignora; no la compartas, porque da acceso a la TV.
TV_HOST=192.168.1.50 tools/backup.shGuarda en backups/<modelo>/<fecha>/ la lista de apps (activas, desactivadas, de sistema y las que instalaste vos), cuál es la pantalla de inicio, los ajustes y una captura de pantalla. Git ignora esa carpeta: tiene el número de serie y los nombres de red de tu TV.
Las apps se desactivan, no se desinstalan, y se pueden volver a activar (ver "Deshacer todo").
TV_HOST=192.168.1.50 tools/disable.sh examples/philips-65pud7906/debloat.txtexamples/philips-65pud7906/debloat.txtes la lista que se usó en la Philips 65PUD7906. Revisala y poné#adelante de lo que quieras conservar.- Para otras marcas y modelos, cleanyourtv tiene más de cien listas probadas. Copiá la de tu TV a
examples/<tu-tv>/debloat.txt. disable.shguarda lo necesario para deshacer en~/.cleanyourtv/, y no desactiva la app dueña de tu red Wi-Fi.
TV_HOST=192.168.1.50 launcher/build-and-install.shEl script:
- compila la app de
launcher/, - la instala y comprueba que abre,
- desactiva el launcher original (
com.google.android.tvlauncheren Android TV,com.google.android.apps.tv.launcherxen Google TV), - deja wiiOS como pantalla de inicio y verifica que Home lo abra. Si algo sale mal, vuelve a activar el launcher original.
Apretá Home en el control para verlo. Si preferís no desactivar el launcher original, usá STOCK_LAUNCHER=none. Ojo: en muchas TVs el launcher original tiene prioridad, y mientras siga activo Home lo va a seguir abriendo.
En Windows, con PowerShell:
python -m venv tools\venv
tools\venv\Scripts\pip install -r tools\requirements.txt
powershell -ExecutionPolicy Bypass -File launcher\build-and-install.ps1 -TvHost 192.168.1.50Mientras la depuración esté activada, cualquier computadora que ya autorizaste puede manejar la TV por la red. Cuando termines:
- Ajustes → Opciones para desarrolladores: desactivá la depuración por USB y por red. Si querés, tocá también "Revocar autorizaciones de depuración".
- Reiniciá la TV.
- Comprobá que quedó cerrada:
tools/venv/bin/python tools/adb-closed.py 192.168.1.50
| Tecla | Qué hace |
|---|---|
| Flechas | Mueven la manito. Desde la última columna, la flecha derecha pasa de página. Desde la fila de abajo, la flecha abajo baja a los botones. |
| CH+ / CH- | Pasan de página (también avance y retroceso rápido). |
| OK | Abre el canal o el botón elegido. |
| Mantener OK | Agarra el canal para moverlo: las flechas lo cambian de lugar con el de al lado, y OK o Atrás lo sueltan. |
| Atrás | Cierra la lista de entradas o la pantalla de aviso. |
| Home | Vuelve al menú. Si ya estás en el menú, vuelve a la primera página. |
El canal Juegos arranca tus juegos en RetroArch. Usá solo juegos tuyos: copiá tus propios cartuchos con un lector de cartuchos (por ejemplo GB Operator, GBxCart RW o el Open Source Cartridge Reader).
| Consola | Archivos | Núcleo de RetroArch |
|---|---|---|
| Game Boy, Game Boy Color y Game Boy Advance | .gb, .gbc, .gba |
Nintendo - Game Boy Advance (mGBA) |
| NES | .nes |
Nintendo - NES / Famicom (FCEUmm) |
| Super Nintendo | .sfc, .smc |
Nintendo - SNES / SFC (Snes9x 2010) |
| Neo Geo | .zip |
Arcade (FinalBurn Neo) |
- Instalá RetroArch en la TV. La mayoría de los Android TV son de 32 bits y necesitan
RetroArch_ra32.apk, de la página de descargas de RetroArch. Abrilo una vez y bajá los núcleos de tus consolas en Actualizador en línea → Descargar núcleos. Salí con Home. - Preparalo para el control de la TV (una sola vez):
Agrega el mapa de botones de
TV_HOST=192.168.1.50 tools/venv/bin/python tools/games/add.py --setup
tools/games/retroarch/y cambia algunos ajustes de RetroArch: OK elige y Atrás vuelve, mantener el botón rojo abre su menú y el juego se guarda cada 10 segundos. Antes guarda una copia de los ajustes enretroarch.cfg.before-wii-tv, en la carpeta de RetroArch de la TV. Si usás un joystick Bluetooth, en RetroArch elegí además Actualizador en línea → Actualizar perfiles de controles. Si ya lo habías preparado con una versión anterior de wii-tv, corrélo otra vez: cambió el mapa de botones. - Sumá tus juegos:
Copia el archivo a
TV_HOST=192.168.1.50 tools/venv/bin/python tools/games/add.py "Mi juego.gba" --title "Mi juego"
RetroArch/roms/en la TV y lo pone en el estante.--color "#E8432E"elige el color de la etiqueta.--listmuestra los juegos, y--remove "Mi juego"saca uno (con--deletetambién borra el archivo de la TV).
Neo Geo. Cada juego es un set .zip de FinalBurn Neo (por ejemplo mslug.zip) y necesita el BIOS de la Neo Geo, neogeo.zip, que wii-tv no trae. Los sets tienen que ser de la versión de FinalBurn Neo que tenés en RetroArch; si no, el juego no arranca.
TV_HOST=192.168.1.50 tools/venv/bin/python tools/games/add.py --bios neogeo.zip
TV_HOST=192.168.1.50 tools/venv/bin/python tools/games/add.py mslug.zip --system neogeo --title "Metal Slug"Con el control de la TV, durante el juego:
| Tecla | Botón |
|---|---|
| Flechas | Cruz |
| OK | A |
| Atrás | B |
| Rojo | Start. Mantenelo 2 segundos para el menú de RetroArch (guardar, cargar o cerrar el juego). |
| Verde | Select. En Neo Geo, moneda. |
| Amarillo y azul | Y y X. En Game Boy Advance son L y R; en Neo Geo, C y D. |
| Home | Vuelve al Menú Wii. El juego queda en pausa y sigue si lo elegís otra vez. |
Los juegos de Super Nintendo que usan L y R necesitan un joystick. Si elegís otro juego, o el botón RetroArch del canal, RetroArch cierra el juego que estaba abierto. Lo que guardaste dentro del juego llega al archivo en 10 segundos como mucho, así que esperá un momento antes de cambiar de juego. El mapa de botones es para los controles de las TVs Philips (receptor "MStar Smart TV IR Receiver"); con otro control, configuralo en RetroArch → Ajustes → Entrada.
El APK trae los remakes de Soffizlly: 7 efectos y 3 músicas. Suenan apenas lo instalás, sin bajar nada más.
Al cerrar el aviso suena el arranque, y la música del menú entra un segundo después, en bucle. La Plaza Mii y el editor tienen su propia música. La música se pausa cuando salís de cada pantalla, y espera si otra app está reproduciendo algo.
Los botones wiiOS, SD y el sobre, y los paneles del Canal Mii, usan wii_big_buttons.ogg. wii_woop.ogg suena una sola vez cuando dejás la manito medio segundo sobre un canal; si antes te movés, abrís un panel o salís del menú, no suena. wii_hover_delay_ms en config.xml cambia la demora, y 0 lo apaga.
Los archivos están en launcher/app/src/main/res/raw/: los efectos y la música del menú en OGG Vorbis, y las de la Plaza y el editor en Opus. Mirá el mapa de audios y créditos. Para usar tu propia música, mirá Tu propia música.
En lugar de la música incluida, el menú puede tocar la tuya. Cargala con tools/music/add.py, que necesita ffmpeg en la computadora:
TV_HOST=192.168.1.50 tools/venv/bin/python tools/music/add.py musica.flac --start arranque.flac --loop 12.5 48--loop INICIO FIN, en segundos: la música suena hasta FIN y sigue desde INICIO, una y otra vez. El último segundo y medio antes de FIN se funde con lo que suena justo antes de INICIO, así no se nota el salto (--crossfadecambia cuánto dura). Sin--loopse repite el archivo entero.--startes opcional: un sonido de arranque que reemplaza al del menú. La música entra un segundo después, como con la incluida.- Lee los formatos que lee ffmpeg (mp3, flac, ogg, m4a, wav) y los guarda en la TV como WAV, en la carpeta de wiiOS. Con
adbinstalado (oADB=/ruta/a/adb), la copia tarda un segundo. --removesaca tu música y vuelve la incluida, y--out carpetasolo arma los archivos, sin tocar la TV.
Cambiá lo que quieras y volvé a correr launcher/build-and-install.sh para aplicarlo.
| Qué | Dónde |
|---|---|
| Qué apps van primero y en qué orden | dock_apps en launcher/app/src/main/res/values/config.xml. Son nombres de paquete; las demás apps siguen en orden alfabético. |
| Apps que no aparecen como canal | hidden_apps, en el mismo archivo. |
| Texto del botón izquierdo | wii_settings_label (por defecto wiiOS). |
| Sonidos sí o no | wii_sounds. |
| Música sí o no (menú, Plaza Mii y editor) | wii_music. |
| Volumen de la música | wii_music_volume, en porcentaje del volumen del archivo (100 por defecto). La Plaza y el editor suenan al 40 % de eso. |
| App de TV en vivo de la lista de entradas | live_tv_package. |
| Textos de la pantalla de aviso | wii_intro_title, wii_intro_body y wii_intro_continue en res/values*/strings.xml. values-es-rAR usa voseo. |
| Archivos de audio incluidos | launcher/app/src/main/res/raw/; ver tools/sounds/README.md. El generador antiguo escribe alternativas en tools/sounds/build/. |
| Colores, tamaños y posiciones | Constantes al principio de WiiMenuView.java. El fondo y los paneles están en WiiBase.java y WiiPalette.java. |
| App del botón SD | MEDIA_PLAYER en WiiMenuActivity.java. |
| Canal Juegos sí o no | games_channel en config.xml. Con el canal, RetroArch no aparece como canal aparte. |
Para ver los nombres de paquete de tus apps:
TV_HOST=192.168.1.50 tools/venv/bin/python tools/tv.py 'pm list packages -3'Protector de pantalla con reloj:
TV_HOST=192.168.1.50 tools/venv/bin/python tools/tv.py 'settings put secure screensaver_components com.gathin.tvhome/.ClockDream'Para reactivar las apps que desactivaste y volver al launcher original, pasá la misma lista que usaste:
TV_HOST=192.168.1.50 tools/restore.sh examples/philips-65pud7906/debloat.txt com.google.android.tvlauncherEn Google TV el último argumento es com.google.android.apps.tv.launcherx. Después podés desinstalar wiiOS:
TV_HOST=192.168.1.50 tools/venv/bin/python tools/tv.py 'pm uninstall com.gathin.tvhome'Si solo querés volver al launcher original, sin tocar las demás apps:
TV_HOST=192.168.1.50 tools/venv/bin/python tools/tv.py 'pm enable --user 0 com.google.android.tvlauncher'
TV_HOST=192.168.1.50 tools/venv/bin/python tools/tv.py 'cmd package set-home-activity --user 0 com.google.android.tvlauncher/.MainActivity'- Home sigue abriendo el launcher viejo. En Google TV, el asistente de configuración (
com.google.android.tungsten.setupwraith) también puede reclamar Home. Mirá la guía de problemas de cleanyourtv antes de desactivarlo: en algunas TVs es el dueño del Wi-Fi. - Falta una app. El menú muestra las apps hechas para TV. Fijate que no esté en
hidden_apps. - El botón SD dice "No disponible". Tu TV no tiene el reproductor de MediaTek; poné el de tu TV en
MEDIA_PLAYER. - Un juego no arranca. Fijate que RetroArch tenga el núcleo de esa consola (paso 1 de Juegos) y que el juego aparezca en
tools/games/add.py --list. En Neo Geo, queneogeo.zipesté en la TV y que el set sea de tu versión de FinalBurn Neo. - No se escuchan los sonidos. Suben y bajan con el volumen de la TV. Fijate que
wii_soundsseatrue. - No suena la música del menú. Fijate que
wii_musicseatrue, quewii_music_volumesea mayor que cero y que el volumen de la TV no esté en cero. La música ya viene en el APK. Si otra app está reproduciendo algo en segundo plano, el menú espera a que termine. tv.pyno conecta. La TV y la computadora tienen que estar en la misma red, con la depuración activada, y tenés que aceptar el aviso en la pantalla de la TV.
launcher/es una app Android en Java.WiiMenuActivityes la pantalla de inicio yWiiMenuViewdibuja todo: canales, reloj, botones, manito, aviso y la lista de entradas.WiiBaseyWiiPalettecalculan el fondo rayado y los paneles píxel por píxel, en un hilo aparte.WiiSoundsreproduce los efectos,WiiMusiclas pistas incluidas yMenuMusiclos reemplazos opcionales del menú.GamesActivityyGamesViewson el canal Juegos;PixelScenedibuja la pradera del cartel yPixelArtlos cartuchos y las letras.GameListleegames.txtyRetroArcharma el pedido para abrir cada juego.- La app también trae el launcher de cleanyourtv (
MainActivity). Ya no es la pantalla de inicio, pero sigue en el código. tools/tiene un cliente ADB por red en Python (tv.py, no hace falta instalaradb), los scripts para desactivar y restaurar apps, el respaldo, el generador de sonidos,games/add.pypara los juegos ymusic/add.pypara la música del menú.tests/prueba los scripts contra una TV simulada:python3 -m unittest discover -s tests.
- Basado en cleanyourtv de Gathin (licencia MIT): las herramientas ADB, los scripts para desactivar y restaurar apps y la base del launcher.
- Tipografía Outfit, con licencia SIL Open Font License 1.1 (
launcher/FONT-LICENSE-OFL.txt). - Remakes de audio: Soffizlly (2026), incluidos con autorización bajo la licencia MIT del repositorio.
- Licencia MIT: ver LICENSE.

