ToyTool Firmware

How to install custom firmware on SmallTV-Ultra

Put ToyTool Firmware on a GeekMagic SmallTV-Ultra from your browser with a small installer, what the screen shows, and what to do when it stops.

10 min read

The ToyTool mascot, a SmallTV-Ultra, showing its activation code

You don’t need to open a GeekMagic SmallTV-Ultra or plug it into a computer to change its firmware. The stock firmware has an update page at http://<screen-ip>/update that takes a firmware file over Wi‑Fi, from any browser. ToyTool Firmware goes on through that page in one upload: a small installer, which then downloads the full firmware by itself, checks it and restarts into it.

Written for ToyTool Firmware 1.18.0, its installer 1.0.0 and GeekMagic’s stock firmware V9.0.50.

Before you start

  • Check that it’s an Ultra. ToyTool runs on the GeekMagic SmallTV-Ultra (ESP8266) only — not the SmallTV Pro or ESP32-based “smart weather clock” lookalikes. GeekMagic’s own update page warns about this in capitals. If you’re not sure, see which SmallTV you have.
  • Note your stock version. It’s on the stock Settings page next to “Model” and “Ver”. The installer was made for V9.0.50.
  • Have it on Wi‑Fi with internet. The installer downloads the firmware from toytool.work over the network the screen already uses. The phone or computer you upload from must be on the same network.
  • Keep it on stable power. GeekMagic’s manual asks for 5 V and at least 1 A, and says USB-C-to-USB-C cables aren’t supported — use the cable that came with it.
  • Get a licence. ToyTool is paid — Basic is $3.99 per screen, once. The installer is in your ToyTool account under Firmware, and the screen works once it’s linked to your licence (until then it only shows its activation code).

There is no USB data connection on this screen: its USB-C port only powers it, and the board has no USB-to-serial chip. Everything below happens over Wi‑Fi.

Why an installer and not the firmware file

The stock update page writes the new file into the free flash between the running firmware and the screen’s file storage, and only switches over once the whole file has arrived. On V9.0.50 that leaves room for about half a megabyte; a bigger file stops with Not Enough Space (that exact text is in the V9.0.50 firmware). ToyTool Firmware is bigger than that, and even packed it is close to the limit. The installer is small enough to leave plenty of room:

FileSizeOn stock V9.0.50
ToyTool installer toytool-installer.bin381 KBfits
ToyTool Firmware 1.18.0 .bin.gz500 KBclose to the limit
ToyTool Firmware 1.18.0 .bin724 KBrefused: too big
GeekMagic FW-Smalltv-Ultra-V9.0.50.bin493 KB—

What it does once it runs: it reads the Wi‑Fi network the stock firmware saved, downloads ToyTool Firmware from toytool.work, and checks it against the size and MD5 that your account wrote into the installer when you downloaded it. Only a complete file that matches replaces the installer. Other projects for this screen hit the same wall; smalltv-mod, for example, also installs through a small loader first.

Install it from your browser, step by step

  1. Download the installer. In your account, open Firmware and click Download the installer. You get toytool-installer.bin, about 381 KB. Each download carries the firmware version that’s current that day; an older download still installs the version it was made for, as long as we keep that version.

    The Firmware page in a ToyTool account: ToyTool Firmware 1.18.0 with a “Download the installer” button and smaller .bin.gz and .bin buttons
    Your account’s Firmware page. For a first install from stock, take the installer.
  2. Find the screen’s address. The stock firmware shows its IP address on the screen right after it connects to Wi‑Fi, every time it starts. Your router’s list of connected devices shows it too.
  3. Open the update page. In a browser, go to http://<screen-ip>/update — for example http://192.168.1.50/update. The stock Settings page links to the same page from 7. Firmware update → UPLOAD.

    GeekMagic’s stock update page: “PLEASE CHECK PRODUCT MODEL BEFORE UPDATE!!!”, three numbered steps, a file chooser labelled Firmware and an Update button
    The stock V9.0.50 update page, rendered from the page inside the V9.0.50 firmware file.
  4. Upload the installer. Click Choose File, pick toytool-installer.bin, click Update — then, as the page itself says, wait and do nothing. When it’s done the page shows “Update Success! Rebooting...” and the screen restarts into the installer.
  5. Let the screen install ToyTool. It shows “Installing ToyTool” while it reads the saved Wi‑Fi, “Connecting to …” with your network’s name, then Installing ToyTool… with a ring that fills up as the firmware downloads. When the file has arrived and checks out, it shows Done, restarting. Keep it plugged in the whole time.

    Two screens rendered by the installer’s own drawing code: a progress ring at 42% with “Installing ToyTool…, keep the power on”, and a full ring with a check mark and “Done, restarting”
    While it downloads, and once the firmware has checked out.
  6. Activate. After the restart, ToyTool joins the same Wi‑Fi and shows a QR code and a six-character code. Scan the QR code with your phone: your account opens with the code already filled in. Name the screen if you like and click Link screen. No phone camera? Open your account, click Add screen and type the code.

    Two screens rendered by the firmware: a QR code with “Scan to activate, or enter K7P3XM, toytool.work/smalltv”, and a second QR code with “Pick your faces, scan with your phone”
    Left: the activation screen after the install. Right: once linked, a QR code to pick faces.
    The “Add a screen” dialog in a ToyTool account with the six-character code VCG9U5 filled in, a name field and a Link screen button
    Scanning the QR code fills the code in for you.
  7. Pick your faces. Your account offers a few faces to start with. Until you choose, the screen shows a second QR code that leads to the same place.

The installer speaks the language your account was in when you downloaded it, and ToyTool starts in that language too.

If something stops

The installer never leaves the screen without a way back: on any error it says what happened in a few words, and the screen’s address keeps two pages open — http://<screen-ip>/log (what it did, step by step) and http://<screen-ip>/update (to upload a file by hand). When you write to us, the log is the most useful thing to send.

Two installer screens: a red ring with “Download broke off, again in 30 s”, and the Wi‑Fi setup screen asking to join ToyTool-Setup and open 192.168.4.1, with “Home — wrong password” at the bottom
Left: it tries again by itself. Right: it couldn’t join your Wi‑Fi and asks for it.
  • The stock page says “Not Enough Space”. You picked the firmware file (.bin or .bin.gz) instead of the installer. Choose toytool-installer.bin, about 381 KB. If the installer itself is refused, your stock version leaves less room than V9.0.50 — write to us with the version from the Settings page.
  • The screen shows “Wi-Fi setup” and ToyTool-Setup. It found no saved network, or couldn’t join it; the bottom line says why (for example “wrong password”). Join the open network ToyTool-Setup from your phone, open http://192.168.4.1, pick your Wi‑Fi and type its password. The Wi‑Fi guide goes through every reason.
  • “No internet”, “Server is busy”, “Download broke off” or “Download damaged”. It tries again by itself: after 10 seconds, then 30, then every minute, with the countdown on the screen. Nothing changes on the screen until a complete file has arrived and its MD5 matches, so you can leave it. If it keeps saying “No internet”, check that the router itself is online.
  • It sits at the same percentage. If no data arrives for 20 seconds, the installer calls the download broken off and starts it again from 0%.
  • The power went off during the install. While the ring is filling, that’s safe: the installer stays in place, starts again with the next power-on, and finds the same Wi‑Fi. The risky moment is the few seconds after Done, restarting, when the chip copies the new firmware into place — the same as any firmware update on this screen. Don’t unplug it then.
  • “Installer out of date”. The firmware version this installer was made for is no longer on our server. Download a new installer from your account and upload it at the address shown on the screen (it ends in /update).
  • “File arrived damaged”. The installer checks itself before anything else, and this copy is broken. Upload it again at the address shown on the screen.
  • “Installer incomplete”. The file didn’t come from your account’s download, which is what writes the firmware version and its checksum into it. Download it from Firmware in your account and upload it at the address shown.

What carries over, and what doesn’t

After the install
Your Wi‑Fi network and passwordKept — read from the stock firmware’s storage or the chip’s own saved network
Stock settings (city, theme, brightness, night mode)Not kept — set them again in your account
GIFs and photos uploaded to the stock firmwareNot kept — ToyTool uses that storage for its own files; upload GIFs again in your account
The stock web consoleReplaced by the screen’s own page and your account

Already on ToyTool

You don’t need the installer to update: from firmware 1.14 on, the screen’s card in your account shows Update when a new version is out, and the screen downloads it itself, checks it against the expected size and MD5, and restarts. Faces and settings stay.

The “How to install” steps in a ToyTool account with the Update tab selected: one-tap update from 1.14 on, or download the .bin.gz and flash it from the screen’s page
Updating later: one tap from 1.14 on; the manual way still works.

The manual way still works too: download the .bin.gz (the regular .bin is fine as well once ToyTool is installed), open the screen’s page, choose the file under Firmware and click Flash. The installer also works from that page — it leaves the faces, settings and the link to your account as they are and puts the firmware back on — but it’s only needed when a screen can’t update any other way.

Going back to the stock firmware

  1. Download the stock firmware from GeekMagic’s GitHub repository (V9.0.50 is the newest folder there). Their README suggests checking the file’s MD5 if an update complains.
  2. Open the screen’s own page: in your account, open the screen’s Settings → Screen’s page on your home network, or type its address into a browser.
  3. In Firmware, choose the .bin file and click Flash. The screen restarts into the stock firmware.

The stock settings, photos and GIFs won’t come back: they lived in the screen’s file storage, which ToyTool reuses. The stock web console also loads its scripts and styles from that storage rather than from the firmware file, so we can’t promise it comes back complete. If you plan to go back, ask us first.

Is it safe?

  • Faces can’t run code. A watch face is a short description of shapes, text and data, not a program.
  • Downloads are checked. The installer and the one-tap update both compare the firmware with the size and MD5 they expect before the screen switches to it; a cut or damaged download leaves the screen as it was.
  • Safe mode catches a firmware that keeps crashing on start, so the screen stays reachable over Wi‑Fi. See reset and recovery.
  • What we can’t fix remotely: with no USB data port, a screen that loses power while it copies new firmware into place can only be recovered by opening it and flashing it over serial — the method the ESPHome device page lists as the alternative to installing over the air.

Quick answers

Can I upload the firmware file from stock instead? The plain .bin is too big for stock V9.0.50. The .bin.gz of 1.18.0 is just under its limit, but later versions may not be; the installer stays well under it.

Do I need a computer? No. A phone browser works for every step, including choosing the file on the stock update page.

Does the installer need the internet? Yes: it downloads the firmware from toytool.work over the screen’s own Wi‑Fi.

Can I use one installer for several screens? Yes. Each screen still needs its own licence to activate.

Will it work on a SmallTV Pro? No. ToyTool is built for the Ultra’s ESP8266 and its screen wiring only.

Sources: the firmware’s and the installer’s source code, the stock V9.0.50 firmware file, GeekMagic’s manual and public GitHub issues.