Powered Up hub (Pybricks VLL)
Confirmed on a City Hub against a real Micro Scout, 2026.
A Powered Up hub running Pybricks blinks VLL with its own LED. The timing engine runs on the hub, so Bluetooth jitter never enters the picture — which is the one thing a phone torch cannot fix.
This is the Micro Scout Pybricks page on the site.
What was tried, and what happened
88005 Light on Port.A — rock solid from scale 0.9 to 1.4, no repeats needed. Brighter and easier to aim. The best of the three.
The hub's own status LED, red, pressed close, in a dark room — works down to scale 0.5. Nothing to plug in. White does not work: the sensor is red-biased.
The Colour and Distance sensor's LED would not toggle. Dropped.
Confirmed on City (88009) and Technic (88012). The listener is written to run on every hub Pybricks supports, which needs 3.3.0 or later and one import, ThisHub. Not yet tried on a Move or an Essential.
The Move hub dictates how the program is written
One firmware flag on the Move and BOOST hub, PYBRICKS_OPT_EXTRA_LEVEL1 = 0, removes usys, uselect, io, set, slice, bytearray, enumerate and gc. It is also the only hub built with no floating point at all.
That last one is cruel. A float literal anywhere in the file kills the program at load time, before line one runs, even inside a function nobody calls — and the Move hub reports it as a bare ValueError with no message. So: stdin through read_input_byte(), integers only, // and never /.
Two more limits. On a Move hub the 88005 Light is unreachable, because ports A and B are its built-in motors, so it falls back to its own LED and says so. And byte 3 never reaches a program on any hub: the firmware claims it as Ctrl-C. That rules out VLL code 3 over Bluetooth for good.
Control
- Standalone: flash a Pybricks program (
pybricks-flash-force-led.py), press the hub button to run it; it idles soft-green and emits VLL. - Remote: the Micro Scout Pybricks page (
hub-led.html) connects over the Pybricks BLE protocol (servicec5f50001-…, charc5f50002-…; write[0x06, code]= write-stdin) and sends command bytes; the hub does the VLL. Press-and-hold drive = the hub repeats the motor frame (with a keep-alive safety timeout). Web Bluetooth = Chrome desktop/Android only (no iOS Safari).- Reached from Flash Force via the Phone torch and Hub + LED mode switch at the top of the page. The LED page carries a one-time "Flash the hub" how-to with the full Pybricks firmware in a copy-to-clipboard code block.
Files (in the repo)
web/pybricks-flash-force-led.py (hub listener), web/hub-led.html (remote). Flash via code.pybricks.com (Python program; Chrome/Android — not iOS).
This is the simplest working path today. See the full matrix in VLL emitters — options & status.