CANVASOS · ANDROID TV LAUNCHER

Your TV home screen, worth opening again.

Turn the Android TV you already own into something closer to tvOS: a sunken liquid-glass dock, a Top Shelf that actually plays something, and Apple TV aerial films drifting across the screen when the room goes quiet.

  • Android TV 9+
  • No root
  • Some features vary by brand

Real recording · Sony BRAVIA XR-55A80J · Android TV 12 1280 × 720

An independent open-source project, not affiliated with Apple. “Apple TV” is a trademark of Apple Inc.

Verified on Sony BRAVIAApple TV aerial screensaverStandard and guard APKsNo root, fully reversible

FILM

canvasOS in 42 seconds.

See how canvasOS gives your TV home screen a fresh start. Press play with sound on.

Music by Bensound.com/royalty-free-music
Artist: Marcus P.
License code: 55KIM7QUNXBISK9H

AERIAL SCREENSAVER

Apple TV aerials, as your screensaver.

When the TV goes quiet it drifts over the planet instead: coastlines, glaciers and city lights unfold with the location name following each shot. Use the arrow keys to change scene; offline it falls back to photos, and it never interrupts something already playing.

ICELAND · 64°N 05:42 Motion illustration

Aerial screensaver (motion illustration, not a capture)

  • Choose aerial films as the screensaver content; they stream from Apple's servers at roughly 15–20 Mbps
  • Offline or on a failed buffer it falls back to the photo frame, without blocking the next idle transition
  • After 1–30 minutes of idle time the photo frame appears, with the clock and caption moving periodically to protect OLED panels

Aerial films stream from Apple's servers; canvasOS ships none of them. “Apple TV” is a trademark of Apple Inc. This project is not affiliated with Apple.

FEATURES

Designed for ten feet, not for a phone.

Bigger focus, fewer layers, quieter glass — laid out again for the room instead of scaled up from a handset.

01LIQUID GLASS DOCK

A dock that sinks into the picture

The first row sits on a sunken glass plate; the next row shows only its top edge. Press Down to reveal every app, or leave the screen to the wallpaper.

  • Five 16:9 rounded tiles that scale and tilt with a soft shadow on focus
  • Long-press to edit, then move tiles into the dock with the D-pad; Recents or Fixed, your choice
  • Blur, edge refraction and highlights are precomputed per wallpaper on the CPU
Liquid-glass dock with five app tiles on a Sony BRAVIA.
Home screen · Sony BRAVIA capture

02TOP SHELF

Focus an app and the top half starts living

When the focus lands on a dock app, the upper half cycles through its content, one picture every 8 seconds; OK opens the app. What the app publishes itself comes first, then what is popular right now.

  • The “Continue watching” row that Netflix, YouTube, Prime… publish for the Android TV home screen, read on the TV (READ_TV_LISTINGS grant)
  • Otherwise, this week's popular titles in France from TMDB for Netflix, Prime Video, Disney+, Apple TV, Max, Paramount+, Canal+ and Crunchyroll, with your own free API key
  • Last, Bilibili trending videos and Douyu live rooms (public web endpoints, no account)
Top Shelf showing a Bilibili video above the dock.
Top Shelf · real capture, Bilibili source

03CONTROL CENTER

One Back press away

No enclosing panel — just floating liquid-glass controls over a live blur of the wallpaper.

  • Network (with the IP address), standby with a timer, power, restart, memory, photo frame, settings
  • Five-day weather, Bluetooth and, if you turn it on, Now playing
  • Brightness and HDMI input appear only where the TV exposes them
  • Android 12+ reuses a shared GPU blur layer; older systems sample the wallpaper
Frosted Control Center with power, network and brightness controls.
Control Center · floating glass controls

04WALLPAPER & FRAME

When the TV is quiet, make it a window

Bing daily photos, landscapes from Wikimedia Commons and NASA, cute animals, masterpieces from the Met and the Art Institute of Chicago, anime, your own photos sent from a phone, your own image links, or a colour gradient — rotating every 15 minutes to once a day.

  • Every choice is shown as a picture and picked with one press; the Met and Art Institute works are public domain
  • The frame pans and zooms slowly, moving the clock to protect OLED panels; it can also show Apple TV aerial films (see above)
  • Set it as the system screensaver after 1–30 minutes of idle time
All-apps grid capture over the wallpaper.
All apps · grid layout

And everything version 1.1 adds.

Content

Top Shelf fed by Android TV The “Continue watching” row that Netflix, YouTube, Prime… publish for the Android TV home screen: canvasOS reads it on the TV (READ_TV_LISTINGS grant) and shows it above the dock, nothing else; the apps’ personalised recommendations are not used. Without the grant, nothing is read. Can be switched off in the settings.
Popular titles from TMDB For Netflix, Prime Video, Disney+, Apple TV, Max, Paramount+, Canal+ and Crunchyroll: this week's popular titles in France according to TMDB. TMDB asks each user for a free API key, which you paste from the phone page; it stays on the TV.
Weather The temperature next to the clock and a five-day forecast in the Control Center, from Open-Meteo (no key). On by default; until you pick a city, the TV guesses the place once from its public IP address. Can be turned off.

Control Center

Now playing On by default. Under “Source”, the title, artist and cover of what an app is playing, with play/pause, skip and a timeline; a long press on OK opens the large player. Only media-session metadata is read, no notification.
Notification banners On by default. Notifications from your apps (doorbell, smart home, messages…) show for 6 seconds at the top right, on the home screen and over the app you are watching; exclude any app you like. Title and text are read for that, nothing is stored.
Bluetooth A button under Weather: it shows the connected device, with its battery when it reports one, and lists the devices already paired. One press connects or disconnects a headset or speaker; pairing happens in the TV's own Bluetooth settings.
Sleep timer From the standby button: now, or in 15 min, 30 min, 1 h, 1 h 30, with a warning a minute before if the home screen is showing. It needs on-device debugging and does not survive a restart.
Smarter memory cleanup Apps in use are spared: those playing audio or video, those running a foreground service (screen casting, Plex, Jellyfin, VPN), and active accessibility services and keyboards. Settings → Dernier nettoyage lists what was closed.

Phone page

A page that is always there Scan the QR code in Home settings → Phone page with a phone on the same Wi-Fi: nothing to install. It picks the wallpaper, the screensaver, the boot animation and the weather city, and takes the TMDB key.
Remote control and keyboard The phone becomes a remote with a keyboard. It goes through the TV's on-device debugging, which you must have allowed once.
Install APKs Send an APK from the phone to the TV. It is never the first install of canvasOS. On TCL, the system verifier may refuse this method.
Tile pictures and names For each home app: change the name, pick a picture (up to 20 MB, cropped to 16:9), go back to the original picture, hide or show it. A long press on a tile also offers Rename, on the TV itself.
A code in the address That code is the page's only protection: Regenerate the code makes old addresses unusable (lost phone), and the Phone page line turns the page off entirely.

Personalisation

Profiles and a child profile Each profile has its own home: app order, hidden apps, folders, names and wallpaper. A child profile asks for a PIN to switch profile, open the home settings or delete an app. The PIN itself is not stored, only a salted hash.
Folders, tvOS style Long-press an app: “Nouveau dossier…”. OK opens the folder over the home screen, Back closes it. A folder can be renamed, moved like an app (dock included) and deleted without losing its apps.
Dock: Recents or Fixed Recents: the app you just opened moves to the front of the home screen. Fixed: the order you chose with “Modifier l'accueil” is kept.
Wallpaper sources from everywhere Bing, Wikimedia Commons, NASA, the Met and the Art Institute of Chicago, on top of your own photos and links. The defaults are tuned for Europe: Bing daily photos in French, TMDB titles for France, the clock in the TV's own format.

Install

In-place updates The APKs are signed with a stable key: adb install -r updates canvasOS and keeps its settings and grants. Only 1.0.0, signed with a throwaway key, needs one last uninstall.
Update from the TV Home settings → System → Mise à jour: the first press looks for the latest Release, the second downloads and installs it in place. canvasOS also checks once a day and announces it under the Control Center; nothing is downloaded without your second press.
A simple first launch The TV offers to enable the features that need on-device debugging (standby, power, memory cleanup): press Commencer, tick “Always allow” once, and that is it.
The IP address on screen The TV's address and the ADB debugging state show in Home settings → System, and the address under “Network” in the Control Center: no more digging through the TV's own settings.

BEFORE / AFTER

Drag to reveal the difference.

The left side is an illustration of the before state, not a capture of the same TV. The right side is a real capture from canvasOS on a Sony BRAVIA. Drag the divider.

canvasOS home screen, real capture.
Illustration of a generic Android TV grid, not a real screenshot.
BeforeIllustration · not the same TV
AftercanvasOS · real capture
Drag, click, or focus the handle and use ← →. Hold Shift for larger steps; double-click to reset. The before image is an illustration of a generic launcher, not a capture of the same TV.

INSTALL

A better home screen, step by step.

You need a computer on the same Wi-Fi as the TV, the TV's IP address and ADB debugging enabled — the first time only. Android 9+, no root. After that, canvasOS updates from the TV.

Before you start: the TV is on the same network as the computer, ADB debugging is enabled, and the first connection shows “Allow USB debugging?” — tick “Always allow”. The computer needs Android SDK Platform-Tools. The APKs are signed with a stable key: from 1.1 on, an update installs in place and loses nothing.

Let an AI agent do it (recommended)

Send this message with the repository link to an agent that can run commands (Codex, Claude Code and similar). It confirms your brand and IP, installs, verifies and keeps a way back to the stock home screen.

Follow https://github.com/getisolated/canvasOS/blob/main/AGENTS.md and install canvasOS on my Android TV. First confirm my TV brand and IP address, then install and verify step by step, and keep a documented way to restore the original home screen. Do not disable the system launcher without my confirmation.

The TV shows two or three permission dialogs; choose “Allow” with the remote. On TCL, choose “同意” when the T-Cast push prompt appears.

Enabling ADB debugging by brand
TVHow to enable ADB
Xiaomi / Redmi Settings → About → Product model: press OK until developer mode is on. Then Settings → Accounts & security: enable ADB debugging and Install unknown apps.
TCL / FFalcon Settings → About → Device info: press Up, Down, Left, Right within one second. A More group appears; enable ADB.
Sony BRAVIA Settings → System → About → press OK on Build seven times. Then Settings → System → Developer options → USB debugging.
Stock Android TV / Google TV, Google-certified boxes Settings → Device Preferences → About → press Build seven times. Then enable USB debugging (sometimes “Network debugging”).

Every snippet has two forms — pick your system above. Windows PowerShell uses curl.exe instead of the curl alias and python instead of python3; macOS / Linux use the system curl and python3. No snippet relies on a shell variable and the package name is always written as com.getisolated.canvasos in full, so a partial copy still runs.

192.168.x.x is a placeholder for your TV's IP address. In the BRAVIA step, PIN is the four-digit code shown on the TV; type it in place of the placeholder.

Sony BRAVIA

The fully verified path, including brightness, TV volume and HDMI input status. Replace 192.168.x.x with the TV's IP.

  1. Connect

    Accept “Allow USB debugging?” on the TV and tick “Always allow”.

    adb connect 192.168.x.x:5555
    adb -s 192.168.x.x:5555 get-state
  2. Record the original home, screensaver and accessibility services

    You need them if you ever uninstall; save the output somewhere safe.

    adb -s 192.168.x.x:5555 shell cmd package resolve-activity -a android.intent.action.MAIN -c android.intent.category.HOME
    adb -s 192.168.x.x:5555 shell settings get secure screensaver_components
    adb -s 192.168.x.x:5555 shell settings get secure enabled_accessibility_services
  3. If 1.0.0 is already installed: uninstall it, once

    Only 1.0.0, signed with a throwaway key, is concerned: every later release shares one key and updates in place with adb install -r, keeping settings and grants. An APK you built on another computer is the same case. This uninstall erases the app's settings and grants: skip the step if nothing is installed, and redo the following steps afterwards. The guard is switched off first so the accessibility list goes back to its recorded value.

    adb -s 192.168.x.x:5555 shell am broadcast -a com.getisolated.canvasos.CONFIG -n com.getisolated.canvasos/.ConfigReceiver --ez guard false --ez keep_adb false
    adb -s 192.168.x.x:5555 uninstall com.getisolated.canvasos
  4. Download and install the standard build

    curl.exe -L -o canvasOS.apk https://github.com/getisolated/canvasOS/releases/latest/download/canvasOS.apk
    adb -s 192.168.x.x:5555 install -r canvasOS.apk

    Windows PowerShell: use `curl.exe -L -o canvasOS.apk …`. Later releases install over it with the same command.

  5. Make it the home screen and grant permissions

    The five grants cover the guard and screensaver, Control Center Bluetooth (Android 12+), reviving after the system kills the app, opening the home screen from the background after boot, and the Top Shelf. On Android 11 and older, BLUETOOTH_CONNECT answers “unknown permission”: ignore it; READ_TV_LISTINGS is refused harmlessly where the TV has no TvProvider.

    adb -s 192.168.x.x:5555 shell cmd package set-home-activity com.getisolated.canvasos/.HomeActivity
    adb -s 192.168.x.x:5555 shell input keyevent KEYCODE_HOME
    adb -s 192.168.x.x:5555 shell pm grant com.getisolated.canvasos android.permission.WRITE_SECURE_SETTINGS
    adb -s 192.168.x.x:5555 shell pm grant com.getisolated.canvasos android.permission.BLUETOOTH_CONNECT
    adb -s 192.168.x.x:5555 shell cmd notification allow_listener com.getisolated.canvasos/com.getisolated.canvasos.RevivalListener
    adb -s 192.168.x.x:5555 shell appops set com.getisolated.canvasos SYSTEM_ALERT_WINDOW allow
    adb -s 192.168.x.x:5555 shell pm grant com.getisolated.canvasos android.permission.READ_TV_LISTINGS
  6. Optional: register BRAVIA IP control

    Needed for brightness, TV volume and HDMI input status. The TV shows a four-digit PIN after the first command; use it in the second.

    $body = '{"method":"actRegister","id":1,"version":"1.0","params":[{"clientid":"tvhome:1","nickname":"TVHome","level":"private"},[{"value":"yes","function":"WOL"}]]}'
    curl.exe -s http://192.168.x.x/sony/accessControl -d $body
    # The TV now shows a 4-digit PIN. Replace PIN with it and run:
    curl.exe -s -u ":PIN" http://192.168.x.x/sony/accessControl -d $body

    This step uses a shell variable, so it only works in the macOS / Linux terminal.

  7. First launch: allow on-device debugging on the TV

    On first launch the TV offers to enable the features that need on-device debugging: standby, power and deep memory cleanup. Press “Commencer”: the TV shows “Allow debugging?”, this time from the TV to itself; tick “Always allow”, then Allow. If you choose “Plus tard”, the request comes back in the home settings, under System → Débogage local.

    On first launch the app downloads its background photos: a gradient may show for the first minute.

  8. Verify

    adb -s 192.168.x.x:5555 exec-out screencap -p > tv.png

    You should see a compact clock, two round controls and the glass dock.

  9. Afterwards, without a computer: phone page and updates

    Home settings → Page téléphone → Afficher le QR code: scan it with a phone on the same Wi-Fi to change the wallpaper, import photos, rename apps, or use the phone as a remote with a keyboard (which needs on-device debugging). Later updates run from Home settings → System → Mise à jour: the first press checks, the second downloads and installs in place.

Advanced: what those permissions do

The grants in the commands are not available to ordinary apps. They work locally on the device.

GrantPurpose
WRITE_SECURE_SETTINGSSwitch the guard back on after the system turns it off, keep the photo frame as screensaver, keep ADB on after Xiaomi wake
BLUETOOTH_CONNECTControl Center Bluetooth on Android 12+: list the already-paired devices and connect one. Without it, the app asks on screen the first time you press the button
Notification listener (RevivalListener)Restart canvasOS about half a second after the system kills it and at boot, and let memory cleanup spare apps that are playing something (package name and playback state only). It reads no notification unless you turn on the banners, which are off by default
SYSTEM_ALERT_WINDOWOpen the home screen from the background after boot; if you turn on notification banners, show them over the app you are watching. No ads or other overlays
READ_TV_LISTINGSTop Shelf: read the “Continue watching” and recommendation rows that apps publish for the Android TV home screen, shown above the dock, nothing else; without it, nothing is read
TCL APP_AUTO_START / APP_ASSOC_STARTTCL only; allows third-party apps to start at boot
Never power off or restart the TV remotely without asking. A TV that is off can only be turned back on with its remote. Nothing in this install disables or uninstalls a system app.

COMPATIBILITY

What your TV can actually do.

canvasOS tries the brand API first and falls back to standard Android. This is the current boundary, not marketing.

Android TV 9+ · standard and guard builds behave identically apart from the home declaration
FeatureAny Android TVOn-device debuggingSony BRAVIA only
Home screen, dock, glass, shadows, folders, profiles Yes — —
Top Shelf: the apps’ “Continue watching” row Yes, with the READ_TV_LISTINGS grant (given through adb) and a TvProvider on the TV — —
Top Shelf: TMDB titles, Bilibili, Douyu Yes, needs internet; TMDB needs your free API key — —
Wallpapers (Bing, Wikimedia, NASA, the Met…), photo frame Yes — —
Weather Yes, needs internet (Open-Meteo) — —
Apple TV aerial screensaver Yes, needs internet — —
Control Center, clock, IP address on screen Yes — —
Bluetooth If the TV has Bluetooth; Android 12+: BLUETOOTH_CONNECT grant — —
Now playing, notification banners (off by default) With the notification listener, if you turn them on — —
Phone page: wallpaper, photos, app names and tile pictures Yes, from a phone on the same Wi-Fi — —
Phone page: remote, keyboard, install APKs — Yes —
Memory cleanup Cache only Kills background apps, except those playing or casting —
Remove preinstalled apps — Yes —
Standby, sleep timer, power off, restart — Yes —
Updating canvasOS Yes, with adb install -r from a computer Yes, from the TV (Settings → System → Mise à jour) —
Frame as system screensaver, idle time — Yes —
HDMI input switching Most TVs — Plus input status
Brightness slider Xiaomi, after ADB grant — Yes
Home guard, revival after kill One-time ADB grant Yes —
Google-certified Android TV boxes (Thomson 240G type) The most direct path: standard build, set-home-activity and the step-4 grants, no home guard since the system accepts a replacement launcher. Volume and HDMI inputs use standard Android, with no brightness slider. The project has not verified that exact model.
On-device debugging canvasOS talks to the TV's own 127.0.0.1:5555 to run system commands. The TV asks “Allow debugging?”; tick “Always allow”. The same mechanism works on every brand, and it covers standby, the sleep timer, deep memory cleanup, the phone remote and updates from the TV.
Sony BRAVIA After IP-control registration, brightness, volume and inputs use the TV's own API and the input row can show the current source.
TCL / FFalcon China firmware No standard input registration, so the input row opens TCL's picker; no usable backlight interface, so the brightness slider hides; needs the guard build.
Xiaomi / Redmi China firmware Backlight through picture_backlight and inputs through Xiaomi's player; never disable the stock launcher, use the home guard.
Coocaa / Skyworth When no standard inputs are registered, the input row opens the Coocaa launcher's own source picker; brightness and settings stay on standard Android. Not yet verified on a real TV.
Other brands Volume through AudioManager and inputs through TvInputManager. Android has no standard backlight API, so the brightness slider hides. Each brand is one adapter file in tv/; pull requests for your TV are welcome.
Receivers / ARC · eARC Standard volume may control the TV rather than the receiver; CEC volume behaviour depends on the TV and receiver firmware.
Verified scope: fully tested only on a Sony BRAVIA XR-55A80J (Android TV 12), and every capture and recording on this site comes from that TV; some 1.1 additions are not in them yet. TCL / FFalcon and Xiaomi support is ported from community device notes, and Google-certified Android TV boxes have not been tried model by model: none of that has been verified one by one by the project.

FAQ

Before you install.

Does it need root? Will it void my warranty?

No root and no system partition changes. The standard build only sets itself as the default home screen through ADB and requests a few permissions an ordinary app cannot get.

Warranty terms are up to the manufacturer. The real risk comes from misusing ADB commands, such as disabling the Xiaomi stock launcher.

Is my Google-certified Android TV box (Thomson 240G type) supported?

It is the most direct path: canvasOS.apk (the standard build), set-home-activity and the step-4 grants, as in the “Stock Android TV / Google box” tab. There is no home guard to enable, because the system accepts a replacement launcher.

The project has only verified the whole thing on a Sony BRAVIA: on a box, volume and HDMI inputs go through standard Android and there is no brightness slider.

How do I restore the original launcher?

Everything here runs on your computer, in the same PowerShell or terminal you used to install. Replace the angle-bracket placeholders with the values you recorded in the install step “Record the original home, screensaver and accessibility services”.

1. Turn the home guard off, so the accessibility service list returns to what it was. 2. Restore the screensaver: if the recorded value was not empty, put it back; if it was empty (no screensaver was set), delete the setting rather than typing a placeholder. 3. Uninstall canvasOS. Afterwards press Home once; the stock launcher comes back, so if nothing happens, choose your launcher again in the TV system settings.

Never disable or uninstall a vendor launcher on Xiaomi / Redmi (com.mitv.tvhome): those TVs boot to a black screen. If you disabled a vendor launcher on another brand earlier, re-enable it with the last command and reboot the TV once.

adb -s 192.168.x.x:5555 shell am broadcast -a com.getisolated.canvasos.CONFIG -n com.getisolated.canvasos/.ConfigReceiver --ez guard false --ez keep_adb false
# Only if the recorded value was not empty (replace with your recorded value):
adb -s 192.168.x.x:5555 shell settings put secure screensaver_components <ORIGINAL_COMPONENT>
# If it was empty, remove the record instead so Android keeps its own default:
adb -s 192.168.x.x:5555 shell settings delete secure screensaver_components
adb -s 192.168.x.x:5555 uninstall com.getisolated.canvasos
adb -s 192.168.x.x:5555 shell pm enable <VENDOR_LAUNCHER_PACKAGE>
Why must I not disable the Xiaomi stock launcher?

PatchWall (com.mitv.tvhome) is enforced by a system whitelist, and the fallback home also refuses third-party launchers, so disabling it leaves a black screen.

canvasOS uses a home guard instead: when the stock launcher comes to the front, canvasOS returns within about half a second. No system app is disabled or removed.

TCL says INSTALL_FAILED_VERIFICATION_FAILURE

TCL's verifier rejects every adb install. Use canvasOS-guard.apk and push it through the TV's own T-Cast (多屏互动) service; the commands are in the TCL tab above.

If the script cannot reach port 6553, that model has no T-Cast service. Push the APK to /sdcard/Download/ and install it with a file manager on the TV.

adb install says INSTALL_FAILED_UPDATE_INCOMPATIBLE

Since 1.1 every Release is signed with the same key: adb install -r updates canvasOS in place and keeps settings and grants. The error only appears now if the installed version is 1.0.0 (signed with a throwaway key) or an APK built on another computer.

Uninstall it once, after switching the guard off. That erases the app's settings and grants: redo the install grants afterwards and allow on-device debugging again on the TV.

adb -s 192.168.x.x:5555 shell am broadcast -a com.getisolated.canvasos.CONFIG -n com.getisolated.canvasos/.ConfigReceiver --ez guard false --ez keep_adb false
adb -s 192.168.x.x:5555 uninstall com.getisolated.canvasos
Why is there no brightness slider?

Android has no standard backlight API. Sony BRAVIA exposes brightness through its own IP-control API, and Xiaomi China firmware through picture_backlight (needs the ADB grant). On other brands the slider hides instead of showing a control that does nothing.

Why is the volume wrong with a receiver on ARC / eARC?

The standard Android volume stream may control the TV rather than the receiver. Sony can use the TV-side volume API instead; CEC behaviour ultimately depends on the TV and receiver firmware.

How do I get the TMDB key for the Top Shelf?

For Netflix, Prime Video, Disney+, Apple TV, Max, Paramount+, Canal+ and Crunchyroll, the Top Shelf can show this week's popular titles in France from TMDB (The Movie Database). TMDB asks every user for a free API key: create an account on themoviedb.org, then request the key at https://www.themoviedb.org/settings/api (a v3 API key or a v4 read access token).

Paste it on the phone page (QR code in Home settings → Page téléphone), Settings tab, “Top Shelf (TMDB)” section. It stays on the TV. Without a key, the Top Shelf shows what apps publish themselves, then the Bilibili and Douyu sources. From a computer the same key can be set through adb; the command with `''` instead of the key clears it.

adb -s 192.168.x.x:5555 shell am broadcast -a com.getisolated.canvasos.CONFIG -n com.getisolated.canvasos/.ConfigReceiver --es tmdb_key <TMDB_KEY>
How do profiles and the child profile work?

Home settings → Profils. Each profile has its own home: app order, hidden apps, folders, app names, pinned HDMI inputs and wallpaper; every other setting applies to the whole TV. The main profile is the home screen from before profiles and cannot be deleted. The profile picture at the top right shows the profile's initial; OK opens the list to switch.

A child profile asks for a PIN (4 to 6 digits) to switch to another profile, open the home settings and delete an app; three wrong codes close the prompt. The PIN is not stored, only its salted SHA-256 hash.

It does not protect the TV's own settings: hide their tile in the child profile (Home settings → Apps masquées, opened from that profile). Forgotten PIN: this adb command removes it, since adb never asks for a code.

adb -s 192.168.x.x:5555 shell am broadcast -a com.getisolated.canvasos.CONFIG -n com.getisolated.canvasos/.ConfigReceiver --es profile_pin "''"
How do I use my phone as a remote?

With a phone on the same Wi-Fi, scan the QR code in Home settings → Page téléphone → Afficher le QR code (or the one on the Fond d'écran tile). The page stays available at any time: wallpaper, screensaver, photos, weather city, app names and tile pictures, a remote with a keyboard, and APK install.

The remote, the keyboard and the APK install go through on-device debugging: you must have allowed it on the TV. The code in the address is the page's only protection: Régénérer le code makes old addresses unusable (lost phone), and the Page téléphone line turns the page off entirely.

ADB keeps saying unauthorized

The TV has not accepted this computer yet. On the TV, tick “Always allow from this computer” and press Allow. Xiaomi turns ADB off on every wake; canvasOS's “keep ADB on” option switches it back on (Xiaomi only).

Does canvasOS read my screen or my notifications?

Not by default. The home guard watches window changes only, to notice when the stock launcher comes forward, and never reads the screen. With READ_TV_LISTINGS, the Top Shelf only reads the rows that apps publish for the Android TV home screen.

The notification listener restarts canvasOS after it is killed and at boot, and lets memory cleanup spare apps that are playing something: only the package name and playback state are read for that.

Two options, on by default and switchable off in Home settings → Lecture et notifications, widen what is read. “Lecture en cours” reads media-session metadata: title, artist, cover, position. The banners read the title and text of notifications from every app except the ones you exclude, to show them for 6 seconds; nothing is stored or sent anywhere.

How do I update?

From the TV: Home settings → System → Mise à jour. The first press looks for the latest Release on GitHub, the second downloads and installs it in place, keeping settings and grants. It needs on-device debugging. canvasOS also checks once a day that a version exists and announces it under the Control Center; nothing is downloaded without your second press.

From a computer, adb install -r with the latest APK always works, and the command below asks the TV whether a newer version exists (update=<version|none|unavailable>). Every download link on this site points at GitHub releases/latest, never a pinned version.

adb -s 192.168.x.x:5555 shell am broadcast -a com.getisolated.canvasos.CONFIG -n com.getisolated.canvasos/.ConfigReceiver --ez check_update true
Does the site or the app collect data?

The website is static: no cookies, no third-party analytics, no ad scripts, and system fonts only.

The app needs the network for wallpapers (Bing, Wikimedia Commons, NASA, the Met, the Art Institute of Chicago, Wallhaven), weather (Open-Meteo), Top Shelf content (TMDB with your key, public Bilibili and Douyu web endpoints) and a once-a-day update check on GitHub. Until you pick a city, the TV guesses the weather location once from its public IP address (ip-api.com). Aerial films stream from Apple's servers. There is no account system.

Is this affiliated with Apple?

No. canvasOS is an independent open-source project, not affiliated with or endorsed by Apple, Sony, Xiaomi, TCL, Bilibili or Douyu. The design language is inspired by tvOS but includes no Apple code, fonts or assets.

GET CANVASOS

Make every TV moment feel new.

Download the APK, enable ADB, and follow the guide or hand it to an agent. Android 9+, no root, reversible.