# Making the hall TV mine

> Source: <https://xydac.com/blog/making-the-hall-tv-mine/>
> Published: 2026-10-22 00:00:00+00:00

# Making the hall TV mine

tldrStripping the ads and telemetry off a TCL Google TV, giving it a calm home screen whose wallpaper follows the clock, and building an AirPlay receiver that doesn't need opening first.

The living room TV is a TCL “Smart TV Pro” on Google TV, and its home screen had stopped being ours: mostly ads, plus rows of things nobody had asked for. One evening I took it back. It took about two hours, plus a little polish the next morning.

## The cleanup

If you’ve seen [CleanYourTV](https://github.com/Gathin23/cleanyourtv) go round this week, you know the recipe: turn on network debugging, let a coding assistant disable the manufacturer’s telemetry, ad rows and auto-installers over Wi-Fi, and swap the home screen for a small open-source launcher. I did exactly that with Claude Code, using the repo’s list for the TCL G03 board. It disabled 25 packages and uninstalled nothing.

We went slowly: a full backup first, then five small batches, checking the home screen, inputs and Settings after each one, with an undo record per batch. None was needed. The new launcher doesn’t even ask for internet access, so it can’t phone home.

Two TCL gotchas:

- **The setup wizard can own your Wi-Fi.** Disabling`setupwraith` deletes the network it saved during first setup and drops the TV off Wi-Fi. Forget and re-join the network in Settings first.
- **The remote’s app buttons only talk to Google’s home screen.** Read the codes with`getevent -lt` and map them in the launcher’s theme (`app_keys` , gear on`4077` ).

## The look

**Font.** Fonts aren’t themeable in the launcher, so I rendered a handful of open-licence faces from [Google Fonts](https://github.com/google/fonts) over the real wallpaper and picked by eye. Josefin Sans won, as a one-file swap of `res/font/outfit.ttf` and a rebuild.

**Wallpaper that follows the clock.** I wanted one scene in four lights that changes with the time of day: Lake Tahoe from Apple’s macOS Tahoe wallpaper, in the dawn, day, dusk and night frames [Basic Apple Guy](https://basicappleguy.com/basicappleblog/dynamic-tahoe-wallpapers) pulled out of it. The launcher could only shuffle or cycle wallpapers, so Claude Code added a `time_of_day` order. Each file name starts with the hour it takes over (`06-dawn`, `10-day`, `17-dusk`, `21-night`), and once a minute the launcher shows the latest one that has started, wrapping back to night before 6 a.m. Two new theme keys also made the focused app’s name bigger and lifted it into the sky above the mountains.

To test it, we set the TV’s clock to different times and checked the screen. Every slot came up right, greeting included.

## AirPlay

We’re an iPhone house, and the TV has no AirPlay. The free app we used only worked if someone found the remote and opened it first, and by then whoever had the phone had usually given up.

So I built [jqssun/android-airplay-server](https://github.com/jqssun/android-airplay-server), an open-source receiver on top of [UxPlay](https://github.com/FDH2/UxPlay), from source for the TV’s 32-bit ARM chip. It starts at boot and shows up on every phone as “Hall TV”. Out of the box it jumped to the front whenever any iPhone nearby so much as listed AirPlay screens, and then stayed there. A 25-line patch makes it come forward only when something actually plays, and step back when the stream ends.

Built with [CleanYourTV](https://github.com/Gathin23/cleanyourtv), [android-airplay-server](https://github.com/jqssun/android-airplay-server) and Claude Code.
