LEGO official docs — Tower Interface + Scout SDK
Two primary LEGO documents (plus a printable card). These are authoritative, period-correct specs: they match the community-documented VLL protocol and establish the USB tower's VLL mode as officially documented.
1. LEGO USB Tower Interface Reference (LEGO Technology Center, 1999–2000)
LEGO USB Tower Interface Reference.pdf — the USB-level spec for the 9783 USB tower. Key facts:
- Vendor-specific USB device, two interrupt endpoints: EP1 = device→host, EP2 = host→device. Controlled by USB vendor control requests (bmRequest / wValue / wIndex / wLength).
- The tower can send IR, receive IR, and send VLL. "VLL is fixed" speed.
SET_PARM(0x02) setsLTW_PARM_MODE(0x01) →LTW_MODE_VLL(0x01) /LTW_MODE_IR(0x02) /LTW_MODE_IRC(0x04). SowValue = (VLL<<8)|MODE = 0x0101puts the tower in VLL mode.- VLL goes out on
LTW_LED_VLL(0x02) = "the red led, normally used to carry out VLL communications" — i.e. visible red light, not the IR channel.LTW_LED_ID(the green LED) just indicates IR transmission. GET_CAPS(0xFC) withLTW_CAPS_VLLqueries VLL support. Full request codes: GET_PARM 0x01, SET_PARM 0x02, FLUSH 0x03, RESET 0x04, SET_LED 0x09, GET_CAPS 0xFC, GET_VERSION 0xFD…- Implication: emitting VLL via the tower needs no Windows reverse — open the tower over pyusb/libusb (VID 0x0694),
SET_PARM→VLL, then write the 7-bit code byte to EP2. The tower clocks the waveform. → see LEGO USB IR tower (RIS 2.0).
2. LEGO MindStorms Scout SDK (User Guide & Reference, Nov 1999)
ScoutSDK.pdf — the Scout LASM (byte-code assembly) reference. Relevance to optical work:
- The Scout has a VLL output (
vll source, numberopcode sends a 7-bit VLL command; Motor "C" is routed to the VLL output). VLL is "visible red light through an optical fiber." - VLL Command Set table (pp. 66–68) — the canonical code list, side-by-side Code Pilot vs MicroScout. Matches the VLL opcode table and adds MicroScout codes 70 = Next, 71 = Reset and 10 = Motor Stop (Direct); Code Pilot tones/numbers/speed/tacho live at 96–127.
- Confirms the Scout↔MicroScout relationship: "The MicroScout has VLL-input… a program can be scripted into the MicroScout through the VLL link" — from the Scout, an app, the remote, or another P-Brick.
- The LEGO Remote's C ▲/▼ buttons send Forward/Backward on the VLL output (red LED / Motor C).
3. MicroScout VLL barcode card
MicroScoutVLL.pdf — a printable card of VLL waveform "barcodes": each command drawn as a 1-D spatial pulse train (black/white bars, width ∝ duration). 10 pages, grouped Direct (Forward/Reverse/Stop, Beep 1–5, Reset, Run, Next, Delete) then Script (Forward/Reverse 0.5–5.0, Beep 1–5, Code, Wait for Light, Seek Light, Keep Alive) — beeps appear in both groups (Direct 4–8 vs Script 24–28), exactly as the SDK encodes them. Independent third confirmation of the same command set, and notable that Stop/Reset/Next are printed as real cards (so they're genuine LEGO codes — see the device-non-response caveat in VLL opcode table).
⚠️ Intended use (swipe past the sensor) is a Code Pilot technique and most likely won't work on a Micro Scout (plain VLL sensor, not a barcode reader); provenance of this PDF is unknown (it looks hobby-made) and it is untested. Full write-up + caveat in Barcodes (Code Pilot).
Bottom line
All three agree with VLL opcode table / VLL checksum / Flash Force. The big update: the tower's VLL path is officially documented and visible-red — see the corrected LEGO USB IR tower (RIS 2.0) and VLL emitters — options & status.