π€ VLL emitters β options & status
Every way to flash VLL at a Micro Scout (and Code Pilot / Scout), marking what is device-confirmed vs theory and how each fares per platform. The Micro Scout has no radio, so something must physically blink light at its sensor; these are the options.
Two facts shape everything: the sensor is red / near-IR biased (white is weak β use red or IR), and VLL bits are distinguished by the ON/OFF ratio, so timing is scale-tolerant (~0.5β1.4Γ of nominal). Each emitter's own note holds the build detail; parts to buy are in Hardware shopping list.
Compatibility = which platform can drive the emitter (β yes Β· β οΈ awkward/partial Β· β no Β· β n/a).
| Emitter | Works? | iOS | Android | Windows | macOS | Notes |
|---|---|---|---|---|---|---|
| Phone torch (Flash Force) | β confirmed | β Safari | β Chrome | β | β | phone-only (no torch on a PC); timer jitter β scale 1.05β1.35 |
| Powered Up hub (Pybricks) (Powered Up hub (Pybricks VLL)) | β confirmed | β (no Web BT) | β Chrome | β | β | control = Web Bluetooth; standalone via the hub button = any platform. Red LED / 88005, scale 0.5β1.4 |
| FTDI USB-serial + LED (FTDI DTR + LED) | β proven | β | β οΈ (Web-Serial / OTG) | β | β | pylibftdi (desktop) or Web-Serial DTR (Chrome). Needs genuine FT232 |
| Arduino / ESP32 + LED (Arduino Β· ESP32 + LED) | β | β flash | β οΈ flash | β flash | β flash | flashing 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)) | β (rcxvll.nqh) | β | β | β | β | NQC/BricxCC + tower; needs an RCX |
| LEGO USB IR tower 9783 (LEGO USB IR tower (RIS 2.0)) | β documented protocol | β | β | β | β | VLL mode = a USB vendor request (official spec) + optical tube; pyusb on any desktop, WinVLL on Windows. VLL is visible red, not IR |
| Garmin Fenix flashlight | β tested, fails | β | β | β | β | setFlashlightMode latency too high for 20β40 ms pulses |
| Computer screen / baked video (Computer screen) | ~ marginal | β | β | β | β | any screen; poor contrast/refresh |
Pick by platform
- iPhone / iOS: phone torch (Flash Force) works directly in Safari. For hardware, use an ESP32/M5 with its own Wi-Fi web pult β flash once from a computer, then control from Safari (no app, no Web Bluetooth). Pybricks/FTDI/tower can't be driven from iOS.
- Android: everything web-based works in Chrome β phone torch, Pybricks hub (Web Bluetooth), FTDI (Web Serial).
- Windows: Pybricks (Chrome), FTDI, RCX+light brick, and the USB IR tower via WinVLL (turnkey).
- macOS: Pybricks hub (Chrome) or FTDI + LED (
pylibftdi, ~$5) β both work today. M5/Arduino flash fine too. The USB IR tower also works here now that its VLL protocol is documented (pyusb + optical tube). - Dead end (all platforms): the Garmin Fenix watch flashlight β
setFlashlightModehas too much per-toggle latency for 20β40 ms VLL pulses.
Most compact overall: M5 StickS3 (ESP32 + IR LED) β emitter + its own Wi-Fi web remote (works from any phone incl. iPhone), web-flashable from Flash Force.
See Link directory for the tools (JorgePe mindstorms-vll, WinVLL, lego-blockly, Pybricks, ESP Web Tools).