Wiki / Protocols
RCX IR protocol
Unlike VLL (baseband on/off light), the RCX uses modulated infrared for a full two-way link via the IR tower. This is a real serial computer link, not just one-way command flashing.
Link layer
- Near-IR (≈940 nm) serial link, 2400 baud (8 data bits, odd parity, 1 stop); some custom firmware runs a 4800 baud "fast" mode. It's a low-level data link — not a 38/76 kHz remote-style carrier like PF / 76 kHz IR family (which is why it's prone to ambient-IR interference). Low-level details: RCX Internals (Kekoa Proudfoot).
- The tower echoes what it sends (IR is reflected back), so software discards the echo.
Packet format
0x55 0xFF 0x00 header
then, for every data byte: <byte> <~byte> (byte followed by its bitwise complement)
payload = opcode, args...
trailer = checksum, ~checksum (checksum = sum of payload bytes, low 8 bits)
The reply uses the same framing. Opcodes have a toggle bit that flips between consecutive commands so the RCX can ignore duplicates.
What you can send
- Direct/immediate commands (motor on/off/dir, play sound, poll a sensor/variable).
- Program download (5 program slots) and firmware download (
nqc -firmware firm0332.lgo). - Messages (1 byte) for RCX-to-RCX or PC coordination.
Authoritative references
- Kekoa Proudfoot, RCX Internals — the canonical opcode list and packet spec.
- Full command list: RCX opcode table.
- Tooling: NQC · BrickCC, LegoRcxPy, BrickLogo.
The RCX also has a light sensor input (reads reflected/ambient brightness) — same physics VLL exploits, but here it's used for sensing, not comms.