flash force Wiki
Interactive browser →
Wiki / References
#reference#index#emitter#vll

VLL emitters — options & status

A Micro Scout has no radio. Something has to physically blink light at its sensor, and this is every way anyone has found to do it, marked by whether it was tried on real hardware or only reasoned about.

Two facts shape all of it. The sensor is biased to red and near-infrared, so white light comes out weak and red or infrared is what you want. And VLL tells bits apart by the ratio between light and dark, not by absolute times, so the whole thing tolerates a scale of about 0.5 to 1.4. That tolerance is why a phone works at all.

Build detail lives in each emitter's own note. Parts: VLL emitters — options & status.

Compatibility = which platform can drive the emitter: yes, partial, no, or n/a.

EmitterWorks?iOSAndroidWindowsmacOSNotes
Phone torch (Flash Force)confirmedSafariChromephone-only (no torch on a PC); timer jitter → scale 1.05–1.35
Powered Up hub (Pybricks) (Powered Up hub (Pybricks VLL))confirmedno, no Web BluetoothChromeyescontrol = Web Bluetooth; standalone via the hub button = any platform. Red LED / 88005, scale 0.5–1.4
A serial control line + LED (lego-blockly)provenno(Web-Serial / OTG)yesa Python library on the desktop, or Web Serial from Chrome. Needs an adapter whose chip can bit-bang the line: not every USB-serial chip can
The bridge + LED (IR LED (invisible VLL))yesno, flashpartial flashflashflashflashing needs a computer; once flashed, control over its own Wi-Fi works on ANY device incl. iOS. M5 = compact, web-flashable
LEGO 9V light brick via RCX (LEGO 9V Light brick (via RCX))confirmed (rcxvll.nqh)nonoyesNQC/BricxCC + tower; needs an RCX
LEGO USB IR tower 9783 (LEGO USB IR tower (RIS 2.0))documented protocolnonoyesVLL mode = a USB vendor request (official spec) + optical tube; pyusb on any desktop, WinVLL on Windows. VLL is visible red, not IR
A smartwatch flashlightfailsthe toggle call carries too much latency for 20 to 40 ms pulses
Computer screen / baked video (VLL emitters — options & status)~ marginalyesyesany screen; poor contrast/refresh

Pick by platform

See Link directory for the tools (JorgePe mindstorms-vll, WinVLL, lego-blockly, Pybricks, ESP Web Tools).

Others got here first

Three published projects send the same 7-bit command and 3-bit checksum frame:

ProjectEmitterYear
JorgePe/mindstorms-vllfour Python transmitters — FTDI bit-bang, an EV3 output port, even the EV3 status LED2019
automagically-de/spycmdserial-port VLL dongle2017
willihghd-ui/willihghd-ui.github.io"VLL LINK — MicroScout Transmitter" — a mobile web page driving the phone camera torch through the MediaStream torch constraint, same 20/40/400 ms bit timingsJuly 2026

The last one drives the phone camera torch, the same emitter as Phone torch (Flash Force), and reached it independently. Flash Force also sends baseband infrared and drives a hub LED through Pybricks, covers the whole 0 to 127 command range, and queues a program rather than sending one code.

A screen, and why it disappoints

Flashing a black and white patch of a monitor or tablet in the VLL timing, with the sensor against the glass, needs no hardware at all. It works badly enough that you will blame the brick.

Two things fight it. Contrast is worse than a torch, and the refresh rate quantises the timing: 60 Hz gives 16.7 ms a frame against bits of 20 and 40 ms, which leaves no room. A 120 Hz screen halves that quantum to 8.3 ms. A pre-baked video helps a little, because the on and off times live in the frames and there is no runtime jitter, but the refresh ceiling stays.

It was never a period method either. LEGO filled a Micro Scout through a Scout, an RCX or the tower, never a screen.

A wire holds steadier than a torch

Measured, and the reason is latency rather than light: a wired path carries the 20 ms unit with margin to spare over the quantisation a USB link adds, where a phone torch has the camera stack between the code and the lamp.

What to shine, by what you want to drive

GoalWhat it takes
nothing to buya phone, and the torch page
light you cannot seean 850 nm or 940 nm diode, baseband — IR LED (invisible VLL)
all LEGOa 9V light brick and an RCXLEGO 9V Light brick (via RCX)
a hub you already ownPowered Up hub (Pybricks VLL)
Power Functions (IR)an infrared diode modulated at 38 kHz, not a bare one
Spybotics, Manas, early RCthe same, modulated at 76 kHz — 76 kHz IR family
an RCXthe LEGO infrared tower, serial 9713 or USB 9783 — see Sets & bricks index