Cómo controlo mi televisor Sony desde Claude Code

Mi televisor Sony creía que vivía en Estados Unidos. Yo quería los menús en inglés, pero también quería que la tele supiera que está en Japón, porque la app japonesa de streaming que buscaba no aparecía. El menú de idioma ofrece inglés (Estados Unidos) o japonés, y nada en medio.

Así que le pedí a Claude Code que lo arreglara desde mi Mac, por la wifi. Encontró la tele, leyó su configuración, cambió la región, la reinició y después instaló la app que la Play Store me había negado. Solo agarré el mando para activar un ajuste y aprobar un diálogo.

Puedes hacer lo mismo con cualquier Sony BRAVIA con Google TV o Android TV, y con la mayoría de televisores basados en Android.

Lo que Claude puede ver sin tocar nada

Empieza pidiéndole a Claude que encuentre la tele. No necesitas su dirección IP. Basta con algo así:

Encuentra mi televisor en la red local. Revisa mDNS y SSDP, dime la
marca, el modelo y la IP, y qué interfaces de control expone.

Una BRAVIA se anuncia de varias formas a la vez: como destino de Chromecast, como receptor AirPlay, como mando de Android TV y a través del descubrimiento propio de Sony. Claude recorre esos servicios con herramientas que ya trae el Mac, como dns-sd, y en unos segundos vuelve con el modelo y la dirección.

Las teles Sony también tienen una pequeña API web dentro del propio televisor. Sin emparejar nada responde a unas pocas preguntas inofensivas: el modelo, si la pantalla está encendida, la hora. Todo lo que cambia algo necesita un PIN o una clave que configuras en la tele. La parte de Chromecast dice una cosa más que sirve: en qué idioma y país cree estar la tele. La mía decía en-US y US.

Hasta ahí llegas sin cambiar nada en el televisor. Para manejarlo hace falta un interruptor.

Activa la depuración ADB

ADB es el puente de depuración de Android, la misma herramienta que usan los desarrolladores para hablar con un teléfono. Google TV es Android por debajo, así que la tele también lo entiende. Activarlo lleva un minuto con el mando:

  1. En los ajustes del sistema, abre la pantalla de información y selecciona siete veces la línea de la compilación de Android TV OS, hasta que la tele diga que eres desarrollador.
  2. En las opciones de desarrollador, activa la depuración USB. En una Sony esto también abre la depuración por red.
  3. Avisa a Claude. Ejecuta adb connect con la dirección de la tele y la tele muestra un diálogo preguntando si permite este ordenador. Marca permitir siempre y pulsa OK.

Ese diálogo es lo que hace esto seguro. Nada en tu red puede controlar la tele hasta que apruebas ese ordenador concreto en la pantalla.

Una vez aprobado, Claude tiene lo que necesita para trabajar como una persona con el mando, con la diferencia de que además puede leer la pantalla:

  • adb exec-out screencap -p hace una captura, así Claude ve lo que hay en la tele antes y después de cada paso.
  • uiautomator dump lista cada texto y botón de la pantalla con su posición, así no tiene que adivinar dónde está cada cosa.
  • input keyevent pulsa botones del mando: arriba, abajo, OK, atrás, inicio.
  • am start abre cualquier pantalla o app directamente, incluida una página de la Play Store.

Menús en inglés, región Japón

Android guarda idioma y región juntos en un solo locale, como en-US o ja-JP. La lista de idiomas de la tele solo ofrece las combinaciones que Sony decidió incluir. El sistema, en cambio, acepta cualquier locale válido, incluido en-JP: textos en inglés y Japón como país.

En Android 12 no hay un comando para eso, así que Claude escribió uno. Es un programa Java mínimo, compilado en el Mac con el Android SDK, enviado a la tele y ejecutado con app_process. Así corre como el usuario shell, que tiene permiso para cambiar la configuración del sistema:

Object am = Class.forName("android.app.ActivityManager")
    .getMethod("getService").invoke(null);
Configuration c = (Configuration) am.getClass()
    .getMethod("getConfiguration").invoke(am);
c.setLocales(LocaleList.forLanguageTags("en-JP"));
Configuration.class.getField("userSetLocale").setBoolean(c, true);
am.getClass().getMethod("updatePersistentConfiguration",
    Configuration.class).invoke(am, c);

Claude lo ejecutó primero en modo solo lectura para ver el locale actual, luego de verdad, y después reinició la tele y comprobó que en-JP seguía ahí tras el reinicio. Los menús siguieron en inglés. Ejecutarlo otra vez con en-US lo deja todo como estaba.

No tienes que escribirlo tú. Pide el resultado:

La tele está conectada por ADB. Pon el locale del sistema en inglés con
Japón como región, sin cambiar el idioma de los menús. Enséñame el locale
antes y después, reinicia y confirma que se mantiene.

Instalar una app que la tienda dice que no puedes tener

La app que quería era la de streaming de SKY PerfecTV. La nueva región no la desbloqueó por sí sola. Claude abrió su página de la Play Store en la tele e hizo una captura: este artículo no está disponible en tu país.

Ese mensaje no tiene nada que ver con la tele. El país de la Play Store pertenece a tu cuenta de Google y no sigue la región del televisor ni tu dirección IP. Claude revisó los sitios donde uno esperaría cambiarlo. La web de la Play Store no tiene ajuste de país, y la Play Store de la tele tampoco.

El único sitio donde se puede cambiar es la app de la Play Store en un teléfono Android con la misma cuenta: en los ajustes, dentro de las preferencias de cuenta y dispositivo, en la sección de país y perfiles. Solo muestra países donde tienes un perfil de pagos de Google, y Google deja cambiarlo más o menos una vez al año, así que conviene hacerlo a propósito.

Inicié sesión en un teléfono Android viejo, lo conecté al Mac y Claude manejó el teléfono por ADB igual que la tele. El teléfono tenía dos cuentas de Google y la Play Store se abrió en la otra, así que Claude cambió de cuenta antes de tocar el país. Yo no me habría dado cuenta. Después del cambio cerró la Play Store de la tele para que cargara el país nuevo, volvió a abrir la página de la app y esta vez había un botón de instalar. Lo pulsó, esperó, y el botón pasó a decir abrir.

Dónde se paró a preguntar

Lo que más me gustó fue cuándo Claude no siguió sin más.

Nunca activó por su cuenta nada que reduzca la seguridad. Me dio los pasos para el mando en lugar de buscar un atajo. Antes del cambio de país de la Play Store me avisó de que queda bloqueado durante un año y esperó mi sí. Y cuando la app nueva se abrió en una política de privacidad con un botón de aceptar, se paró y me preguntó, porque aceptar unas condiciones es decisión mía, no un paso de un script.

Si montas esto, mantén los mismos límites. Déjale leer, mirar y navegar libremente. Haz que pregunte antes de cualquier cosa que acepte, compre, borre o no se pueda deshacer.

Recoge al terminar

ADB da a un ordenador aprobado el control total de la tele. Esa es la idea, pero seguramente no lo quieres activado para siempre. Cuando termines, desactiva la depuración USB en las opciones de desarrollador, o pídele a Claude que lo haga como último paso. El cambio de locale se queda igual.

Lo que me sorprendió es lo normal que fue todo. No instalé ninguna app especial ni compré ningún hub domótico. La tele ya hablaba tres o cuatro protocolos en mi red, y Claude simplemente los fue leyendo uno a uno hasta que uno le dejó entrar.

← Todos los artículos