Everything lives on an SD card, and a card that loses power mid-write can corrupt. It rarely dies on the spot — it dies three shows later, in a hall, with no way to recover it.
Leave it running for the whole show. Shut down at the end, not every night.
There is one power cable, and one thing you do have to press. Plug it in and the case builds its own network — nothing is configured on site — but the three hotspots each need a manual power cycle.
Before you walk away, open the case and confirm four things on its Overview tab: every access point you plugged in is online; at least one internet connection has a green dot; every network has a green dot beside its name; and Test now returns a real speed.
A network missing from the WiFi list is usually one of two things, both deliberate: it is Hidden, or it has show hours that have not started yet.
Every case at a glance. Colour means online, grey means it is not answering — either it is unplugged or its internet is down.
Configure opens that case's own dashboard, where the networks, limits, devices and diagnostics live.
The ⟳ button re-scans WiFi channels on that case, and ⏻ shuts it down safely.
Each network chip has an eye to show the password, a QR a phone can scan, and a printer icon that opens a sheet for the booth counter.
"What's the WiFi password?" — eye button on the network chip. For a booth, print the sheet and leave it on the counter.
"The internet is slow." — open the case, press Test now. It takes up to two minutes and measures the connection the case is really using.
"My printer won't connect." — it needs its own network with IoT devices (printers) ticked. Printers cannot join a modern WiFi network at all.
"A case shows offline." — it has lost power or lost its internet. The WiFi at the booth may still be working perfectly; this page only knows what can reach it.
| User? | Role? | Last sign-in? | |
|---|---|---|---|
| {{ u.name || u.email }} {{ u.email }} |
{{ u.role }}
{{ (u.boxes && u.boxes.length)
? u.boxes.join(', ')
: 'no cases assigned' }}
all cases |
{{ u.last_login ? new Date(u.last_login*1000).toLocaleDateString() : 'Never' }} | {{ whyNot(u) }} |
| Box? | Address? | |
|---|---|---|
| {{ b.label }} {{ b.location }} |
{{ b.host }} |
| When? | Who? | What happened? |
|---|---|---|
| {{ auditWhen(a.ts) }} | {{ a.actor || '—' }} | {{ auditText(a) }} |