WiFi, wireless upload & over-the-air updates for the TinyMaker resin printer
TinyMakerWifi is a modified firmware for the open-source TinyMaker MSLA (resin) 3D printer. It keeps everything the original firmware does and adds a wireless layer on top — so you can send models straight from your slicer and update the printer without ever touching the SD card or a USB cable.
.sl1/.zip from the SD card — no network needed.Everything wireless can be switched off right on the printer (System → Advanced), so you can always fall back to plain, offline SD-card printing.
TinyMaker-Setup WiFi hotspot.tinymaker.local)..sl1/.zip onto the SD card.This one-time step is done over USB. After it, every future update is wireless (see Updating the firmware). If your printer already runs TinyMakerWifi, skip this section.
connect.tinymakerwifi.com/flash.php flashes the latest release straight from your browser — nothing to download or install:
CH341SER.EXE, in the repo’s Driver folder), then try again.Then you don’t need USB at all: update over WiFi from System → Update on the printer, or from the dashboard’s Update tab — see Updating the firmware.
Download the latest firmware-full.bin from the project’s Releases page. Releases contain two files — they are not interchangeable:
| File | Used for | How |
|---|---|---|
firmware-full.bin | First-time USB flashing | flash at address 0x0 |
firmware.bin | Wireless updates only, later | browser, http://tinymaker.local/update |
firmware-full.bin. Flashing firmware.bin over USB leaves the printer unable to boot — it has no bootloader or partition table.firmware-full.bin, and set its address to 0.0x0).The first boot after flashing takes a few extra seconds and starts the TinyMaker-Setup hotspot. Printer settings (exposure, layer height…) return to factory defaults — unless a settings backup is on the SD card: the printer then offers to restore everything on first boot (see Backup & restore).
TinyMaker-Setup access point.http://192.168.4.1).
On every later boot the printer shows animated signal bars while connecting — they turn green when it’s on the network, and the printer goes straight to the main menu (the IP address is only shown after the first-time portal setup). Need the address later? WiFi status, signal strength and IP are always under System → WiFi Info.
If the saved network can’t be reached, the printer simply boots offline after 15 s — printing from the SD card works as always.
To move the printer to another network, erase the stored credentials:
TinyMaker-Setup portal.The small status display drives the whole on-printer interface — WiFi setup, upload progress, the resin estimate, the device toggles and self-update. Three buttons: Back, Up and OK. A green (connected) or grey (offline) dot on the main menu shows WiFi status.
The System menu is where the new features live: WiFi Info, Advanced (device toggles), Update (firmware) and About (version and lifetime print hours).
The printer emulates the Prusa SL1 network protocol, so PrusaSlicer’s “Send to printer” works out of the box.
TinyMaker.ini, in the repo) via File → Import → Import Config.tinymaker.local (or the IP from System → WiFi Info); the API key can be any text.
No WiFi? Copy an .sl1 or .zip (exported by PrusaSlicer or UVtools) into the root of the SD card. It appears in the Print menu in blue, among the models.
In the Print menu:
The printer has no resin sensor — instead it keeps count. Every printed layer’s cured volume is subtracted from the VAT level, and the estimate survives reboots and firmware updates.
On a model’s print preview, press Up to estimate the resin it needs. It is shown in ml and in vat fills — e.g. 12.4 ml = 0.8 VAT. Your VAT size is adjustable (10–40 ml, default 15) in Settings. Live ml is shown while printing.
Open the printer’s IP address in any browser for the full dashboard: live print status and controls, SD-card management with one-click start/import, device settings and firmware updates — in tabs styled to match the printer. The ◐ crescent next to the Manual link switches between the light and dark theme (your choice sticks per browser), and small ? marks next to the tricky settings open short explanations.
On a larger screen it spreads into two columns:
New to the printer? A dismissible Getting Started checklist on the dashboard walks you through the first steps (WiFi → slicer → first model → first print → exposure calibration → integrations) — the printer ticks steps off by itself where it can.
Put it on your phone's home screen: open the dashboard in the phone browser and pick Add to Home screen (Chrome: the ⋮ menu; iPhone Safari: Share → Add to Home Screen). You get the printer's icon on the home screen, and on iPhone it opens fullscreen like an app. (A browser "install" banner won't appear — the printer serves plain HTTP on your LAN — but the shortcut works the same.)
Uploads are safe: a model unpacks into a temporary folder and replaces the old one only after unpacking succeeds, and uploading a name that already exists asks Replace / Rename / Cancel (a PrusaSlicer re-upload simply replaces, as you’d expect while iterating).
Every model row in the SD manager has three buttons: Preview | Start | Delete. Press Preview and the browser rebuilds the shape from the sliced layers and renders it into the Model preview card, with a live percentage and progress bar while it loads, then a compact info line — layers · height · print time · resin — and a Share model button (when TinyMaker Connect is registered).
The card itself is always on the dashboard, like the SD manager: before anything is previewed it shows a Pick a model and press Preview hint, and the last previewed model is remembered — a page reload brings it straight back from the saved preview (no re-render, nothing to redo).
Resin on the info line: when the exact amount is known it is shown outright; otherwise a quick ~X ml (quick) estimate appears with the preview, free of charge. Clicking the ~ value runs the exact scan on the printer — it decodes every layer, so expect roughly a minute per 100 layers.
Start a print (from the row’s Start or on the printer) and the same card takes over automatically as a live progress render: the printed part fills in with color, the rest stays a ghost outline. It costs the printer nothing (the browser renders from a few prefetched layers).
Settings is split into five sections, switched by underline tabs — Print / Network / Notifications / Boot animation / Backup — shown one at a time, each with its own Save config button (saving from any section preserves the other sections’ values):
The Connect tab (shown once TinyMaker Connect is registered) is loaded from the Connect server and uses the same underline sub-tabs; its registration status is shown at the bottom.
System → Advanced on the printer holds the device toggles — OK changes a value, Back returns:
| Item | What it does |
|---|---|
| Screen timeout | Blank the status screen after 30 s…10 min of inactivity (Off = never). |
| Dry run | Test prints without UV — motion and display only. Great for checking mechanics or a new model without wasting resin. Note: while Dry run is on, the UV LED stays off everywhere, including the exposure test below. |
| VAT refilled | Press after refilling — restarts the level estimate from a full VAT. |
| Low resin pause | On = the print pauses for a refill when the estimate runs low. |
| Low resin warn | The warning/pause threshold, 1–3 ml (OK cycles). |
| Ask refill | On = every print starts with a “VAT refilled?” question. |
| WiFi | On/Off — the whole network (web, PrusaSlicer upload, MQTT, self-update). |
| Boot update | On = the printer checks for new firmware right after WiFi connects at boot and offers Install / Later on the screen. |
| Exposure test | Cures an 8-bar calibration strip straight from the printer — each bar gets a different exposure time around your Regular setting. Pick the crispest bar and set its time in Settings. Resin in the vat, no build plate. |
| Boot animation | Which animation plays at power-on — OK cycles Default, Shuffle (with two or more installed) and every animation on the SD card (see Boot animations below). |
| Web control | On/Off — browser actions. Off = the dashboard turns view-only; slicer upload and MQTT keep working. |
| MQTT | On/Off (shown once MQTT is configured in the dashboard). |
Both switches default to On and stay On after upgrading from an older version — nothing changes until you change it.
Exposure time is the single most important resin parameter — and every resin (even every color) cures differently. The test finds your resin’s time in one go: the printer cures an 8-bar strip straight from its masking LCD, each bar with a different exposure. No slicer, no SD file.
The bar times are proportional to your current Regular exposure (R) — from 40 % to 160 % of it, so the spread is meaningful for fast and slow resins alike. Bar 5 (100 %) is always your current setting:
| Bar (dots) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| % of R | 40 | 55 | 70 | 85 | 100 | 115 | 135 | 160 |
| R = 14 s | 6 | 8 | 10 | 12 | 14 | 16 | 19 | 22 |
The ladder follows your setting automatically. To test shorter (or longer) times, just change Regular exposure in one place — dashboard → Settings → Regular exposure → Save, or the printer’s Settings menu — and the test range recalculates itself; the Advanced menu row shows the current range (e.g. “2-16s strip”). After the test, set the winning bar’s time as your final value.
The test strip holds more data than “which bar looks best”. Cure depth grows with the logarithm of exposure time — that’s why doubling the time doesn’t double the thickness, and why you judge bars by edges and holes, not by how thick they feel. If you want numbers:
ln(seconds) (any spreadsheet; use the bar times from the table above). The points form a straight line — that’s the resin’s working curve.depth = Dp · ln(t / Ec).The printer can play a short animation on its screen at power-on — and you can swap it. Installed animations live on the SD card and are picked in two places:
Shuffle (offered once two or more animations are installed) plays a random installed animation on every boot.
Getting new animations onto the printer:
.tmb animation file into the /bootanim folder on the SD card.Boot animations were contributed by Tanner Steorts (@Tann2019); Shuffle by Brian Karmelk (@Briadark).
Three ways to update:
firmware.bin.tinymaker-ota environment (open System → Update on the printer first — that path keeps the strict gate).
Two comforts while updating: the printer also checks by itself — shortly after WiFi connects at boot it looks for a newer version and shows “Update available — Install / Later” on the screen (choosing Later offers to turn the check off; the switch lives in System → Advanced → Boot update and in dashboard Settings). And when you start an install from the browser, the dashboard locks under an “Updating firmware” overlay and reloads itself when the printer is back — no guessing whether it finished.
Everything you have configured — print settings, device toggles, MQTT, even the lifetime print and UV LED counters — fits in one backup file. In the dashboard’s Settings → Backup tab:
tinymaker-backup.json to your computer.Auto backup to TinyMaker Connect (optional, for registered Connect users): a checkbox under Settings → Network → TinyMaker Connect keeps a backup on the Connect server after settings changes and after prints; the Backup tab then offers Download from Connect and Restore from Connect. Connect backups do not include the stored MQTT, notification or Connect secrets. When you register, save the recovery code (Retrieve / Copy buttons in the Connect section) — it restores your Connect profile if you ever reset the printer without a backup.
Optional ways for the printer to reach you, all configured in the dashboard’s Settings tab (MQTT in the Network section, the messaging channels in Notifications).
Configure an MQTT broker and the printer publishes itself to Home Assistant with auto-discovery: print state, current layer, resin used, resin left + a low-resin alert, and run/remaining time — all as HA sensors you can put on dashboards or automate notifications on.
No Home Assistant? The printer can message you directly when a print finishes (with the print time and resin used), pauses for a low-resin refill, or is canceled. In Settings → Notifications there is one choice — Off / Telegram / WhatsApp / Discord — each channel with its own ? setup help and a Send test message button.
Setup takes two minutes — the same steps are shown inline in the dashboard (the ? help next to the Telegram choice):
/newbot and follow the prompts. BotFather replies with a bot token.WhatsApp messages go through the free CallMeBot gateway — a one-time activation from your phone:
Discord needs no bot at all — just a channel webhook:
After 15 s it boots offline — SD printing still works. To retry, reset WiFi (System → WiFi Info → OK, or hold Back while powering on) and set it up again.
System → WiFi Info on the printer — it always shows the connected network, signal strength and IP. (The boot screen only shows the IP after the first-time portal setup; on routine boots the signal bars just turn green.) On most networks tinymaker.local works instead of the IP.
Check the printer is on and shows a green dot / an IP under System → WiFi Info. Use that IP if tinymaker.local doesn’t resolve on your network. The API key value doesn’t matter.
Web control is off. Turn it back on on the printer: System → Advanced → Web control. (Slicer upload and MQTT are unaffected by this switch.)
Slice with the 0.05 mm profile. At a 0.10 mm setting the printer uses every other image by design.
It’s an estimate that only counts confirmed refills. Press VAT refilled after topping up, and keep Ask refill on so it stays honest.
The dual OTA partition keeps the previous firmware, so the printer should still boot. Try again from System → Update, or upload a firmware.bin from the dashboard’s Update tab.
Before flashing: dashboard → Settings → Backup to SD. After the reflash the printer finds the backup on the SD card and offers to restore it on first boot. Only WiFi needs to be set up again.
System → Advanced → WiFi → Off. The printer behaves like the original firmware; turn WiFi back on in the same place whenever you like.
Once per firmware version — on the first boot after a flash — the printer sends three things: a one-way hash of its factory MAC address (so each printer is counted once, without being identifiable), the firmware version, and the lifetime print hours. Nothing else, ever — no models, no settings, no network details. It feeds the “N printers running TinyMakerWifi” counter. To opt out, untick Settings → Network → Anonymous usage ping.
TinyMakerWifi — the WiFi, wireless-upload and over-the-air-update firmware described in this manual — is created and maintained by Viktoras Sidlauskas (@slibbinas): the WiFi stack, wireless upload, OTA self-update, the 3D model preview & live print progress, and the resin estimation & VAT tracking.
The firmware is MIT-licensed; the TinyMaker hardware is CC BY-NC-SA 4.0. If TinyMakerWifi is useful to you, you can buy me a coffee — thank you!