flash force Wiki
Interactive browser →
Wiki / LEGO hardware
#emitter#vll#rcx#tower#lego-native

LEGO USB IR tower (RIS 2.0)

Protocol documented, never tested here.

LEGO's own sanctioned way to fill a Micro Scout's P slot, and the standard link for an RCX. It carries two channels on two LEDs: a visible red one for VLL and a 940 nm one for the RCX serial link.

LEGO customer service put it plainly: filling the P program over VLL "requires Robotic Invention System 2.0 with the USB IR tower" — see LEGO FAQ — P program & IR tower.

What it proves

It is the precedent that proves VLL works, and it proves nothing about infrared. The tower sent VLL on visible red, per LEGO's own specification. That the Micro Scout sensor also reads infrared was established separately, on hardware — see IR LED (invisible VLL).

For an RCX the same tower is a full two-way serial link: How the links work.

Two variants

The serial tower on a DB9 at 2400 baud, which LegoRcxPy drives. The USB tower is the RIS 2.0 one LEGO named, and it works with NQC · BrickCC or the legousbtower drivers.

Sending VLL, documented

The whole VLL protocol sits in the official LEGO USB Tower Interface Reference (1999–2000): no reverse-engineering needed, and no Windows either.

So on macOS / Linux / any desktop via pyusb / libusb: open the tower (VID 0x0694), send the SET_PARM→VLL control transfer, write the code byte. The only physical extra is a clear optical tube (tapered hollow LEGO pegs) to funnel the output into the Micro Scout's sensor.

WinVLL is the Windows app that does this (WinVLL); it also offers a no-tower "WinVLL Probe" LED driven from the sound-card output. The open Linux legousbtower driver is raw read/write (RCX-oriented), so a Mac route uses pyusb + the documented vendor requests directly.

Best for

Period-correct programming, from any desktop rather than from Windows alone. The LED routes (lego-blockly, IR LED (invisible VLL), Powered Up hub (Pybricks VLL)) need neither tower nor tube — see VLL emitters — options & status.

Modern replacements and browser tooling (2024–2026)

The tower is scarce, but it no longer has to be bought:

Emulate the serial tower, not the USB one. WebPBrick's WebUSB path is a proof-of-concept with its button commented out: the maintainer stated in August 2024 that it is "not fully supported and only in an experimental state" with data lost between RCX and browser, still true at v0.2.0 in August 2026. The serial tower is a transparent UART↔IR converter (2400 8-O-1, or 4800 8-N-1 in firmdl3 fast mode) with no host-side command protocol at all: bidirectional, tunnellable, and nothing on the host to reimplement.