Skip to content

The website for the BrickBot organization, which provides a collection of software, firmware, tools, and utilities for the LEGO® MindStorms RCX. https://brickbot.github.io/

License

Notifications You must be signed in to change notification settings

BrickBot/BrickBot.github.io

Repository files navigation

Welcome to BrickBot!

The page provides an index to the repositories comprising the BrickBot organization, as well as links to related resources.

All projects imported to this GitHub organization have been curated to varying degrees as part of the import process. Please feel free to join and contribute in whatever way you can, whether that might be cleaning up or updating documenation, converting text files to Markdown, setting up wikis, or updating code to work with the latest host platforms.

The initial seventy-plus (70+) projects gathered under this BrickBot organization on GitHub were largely collected by Matthew Sheets.

Disclaimer

Neither this organization nor any of its included projects are associated in any way with Lego or any other companies. Follow this link to access the official Lego MindStorms Website.

Some sites referenced only by link do not have a repository setup to due to identified redistribution restrictions.

Notes

No version of the Lego USB tower driver for 64-bit Windows is known to exist. Conversely, there is not currenly a version of GitHub Desktop for 32-bit Windows. For those wanting an alternative to GitHub Desktop that also provides a 32-bit distribution, the open source GitAhead project is suggested.

Quick Start

For just those interested in a "quick start" that works reasonably well on current computer setups, I would suggest the following combination:

  • NQC: Base programming tool
    • Uses the original Lego firmware
    • Executables available for Windows, Mac, and Linux
  • VisualNQC: An iconic programming tool similar to—and potentially replacing—Lego’s original Robotics Invention System software
    • Generates NQC code as output, so can be used to transition from iconic program to text-based programming
    • Uses NQC to compile and deploy, which must also be installed
    • Written in Java, so runs on multiple platforms
    • Formerly known as fUNSoftware, it has been updated to better work with larger screen sizes
  • IR Tower
    • Linux: Lego USB tower drivers have been included, so either the serial or USB IR tower may be used, regardless of CPU architecture or bitness
      • A Raspberry PI can be used, which educational scenarios in particular might find advantageous
    • Windows: The short and simple—
      • 32-bit: Either the serial IR tower or—after installing the drivers—the USB IR tower may be used
      • 64-bit: Only works with the serial IR tower; if your computer does not have a serial port, you will need to use a USB-to-serial adapter

For the more technically inclined, or for more advanced educational scenarios, we strongly encourage reviewing the numerous other options available across this organization’s repositories.


Index of Resources

Available

Missing/Wanted

For a few projects known to exist, the source no longer seems to be available. Might you have a copy? If so, please let us know by posting a new issue here!

  • Pocket Programmer
    • Greatly advanced the concept of OnScreenProgramming
    • Firmware is available but not the source code
  • MindStorms Tools, which included the following individual tools:
    • Together MindstormsTool (TMT): module for the Together ControlCenter 4.0 or higher
    • BlueJ MindstormsTool (BJMT): extension for the BlueJ integrated environment 1.3 or higher
    • Java MindstormsTool (JMT): the MindstormsTool with an own source code editor
    • Small MindstormsTool (SMT): the stand alone version of the tool
  • Phantom: An alterative to Spirit.ocx
  • RCXSimulator
    • A Java-based emulator of the Lego MindStorms RCX, including support for GDB and for IR via pseudo-terminals or UDP

Help Needed

Interested in helping out? Below are a few of the many ways that you can contribute.

  1. Packaging: Looking to be able to support a reasonable cross-section of systems, including openSUSE Tumbleweed (rolling), Debian/Ubuntu, Windows (via Windows Subsystem for Linux), and Raspberry Pi. Some specific projects to package include the following:
    1. NQC
    2. VisualNQC
    3. binutils-cil for h8300-hitachi-hms
    4. gcc-cil for h8300-hitachi-hms, with g++
    5. brickOS-bibo
    6. brickEmu
    7. gdb for h8300-hitachi-hms
    8. gdb-dev for h8300-hitachi-hms
    9. leJOS-RCX
  2. Intellejos
  3. ReadMe/documentation cleanup and formatting: The vast majority of these projects were developed before Markdown and GitHub conventions were developed
  4. Testing/validation of projects on current platforms
  5. Issues that have been filed within individual projects

Index of Repositories

Development Suites

  • Text-Based Programming
    • RobotC
      • A powerful C-based programming language with a Windows environment for writing and debugging programs, and the only programming language at this level that offers a comprehensive, real-time debugger.
      • Includes its own version of firmware for the RCX
    • BricxCC
      • An IDE for the Lego MindStorms RCX, as well as the NXT, EV3, and HiTechnic SuperPro
    • MacNQC
      • A stand-alone version of the NQC compiler for the Macintosh OS
    • Interactive C
      • Uses a modified version of ANSI C with several libraries and features that allow hobbyists to program small robotics platforms
      • Able to compile on the fly (c.f. Wikipedia)
    • PRO-BOT Tethered Only; No Stand-Alone Capabilities
      • A program editor for the Lego MindStorms RCX programmable brick aimed at keeping a constant link between the PC and the brick
      • Bundles Phantom.dll with the installer
  • Iconic/Visual Programming
    • VisualNQC
      • An iconic language tool for the Lego MindStorms RCX, which generates NQC code.
    • actor-lab Tethered Only; No Stand-Alone Capabilities
      • A parallel, object-orientated, iconic control language designed to introduce the ideas of control technology and robotics
  • Modeling and Implementation
    • Times Tool
      • A tool set for modelling, schedulability analysis, synthesis of (optimal) schedules and executable code, supporting system specification, system analysis and code generation for the LegoOS (now BrickOS-Bibo) platform
  • Historical Reference Only / Superceded or No Longer Available
    • RCX Command Center
      • The predecessor to Bricx Command Center
    • BrickCommand2
      • A programming tool for Lego MindStorms RCX and Lego Cybermaster systems, offering more control over the brick than the software that comes with each system.
      • The setup installer was broken up into 3 separate zip file downloads, plus an additional update download; unfortunately, only 2 of the 3 setup zip files appear to have survived.
    • PBrickDev
      • A complete programming environment for the RCX that used a graphical interface for programming, instead of writing code
      • The latest version used the Phantom.dll COM component by "Fenestra Software" instead of Lego's Spirit.ocx
    • MindControl
      • A Visual Basic program for controlling a Lego MindStorms RCX or Cybermaster unit
    • NQCEdit
      • Little is currently known about this software; not even a website archive appears to have survived.

Tools and Utilities

  • lvi: leJOS Visual Interface
    • The leJOS Visual Interface is a skin over the command-line commands for the leJOS firmware. It also is a simple editor that can have many files open at once.
  • RCXDatalog
    • A GUI-based Unix tool to interact with the Lego Mindstorms RCX brick. Using RCXDatalog, you can upload the datalog of the RCX and display it on your screen or print it to a PostScript printer. Plus, there are additional widgets to show light and touch sensor readings of the RCX.
  • Bound-T for the H8/300
    • A software tool that uses static analysis of machine code to compute upper bounds on the execution time (WCET) and stack usage of embedded programs

Remote Control

  • Windows
    • JoyBricx
      • An application for remotely controlling Lego IR-controllable devices such as the RCX, Spybots, and Bionicle RC Fighter via a Lego IR tower using a joystick or game pad
    • Dr. Vegetable’s Virtual Remote
      • A Windows program that emulates the LEGO MindStorms infrared remote control using your existing USB or RS-232 infrared tower
  • Gnome
    • BrickRC
      • A simple Gnome application to remotely control the LEGO MindStorms RCX brick
  • PalmOS
    • PBrickLib
      • A shared library providing access to the Lego Mindstorms RCX controller brick (pbrick) using the Palm’s IrDA interface, allowing for applications from simple remote controls to complex applications using the Palm as a robot’s main processor and the RCX as an intelligent IO controller.
      • While not associated with this project, information has also been included about another PalmOS app for the RCX, Ellams Software’s Robotic Mover.
  • Windows CE / Pocket PC
    • WinCE-Cybercontrol
      • Control and manipulate the Lego MindStorms RCX and Lego Cybermaster from a Palm-size PC, Handheld PC, or Pocket PC system
  • Web

Extensions Built on the Lego Firmware

  • NQC (Not Quite C): A programming language for several Lego MindStorms products, including the RCX, CyberMaster, and Scout
    • Text-Based Programming
      • NQC-libs
        • A collection of NQC libraries from various sources, plus some programs as well as full NQC tutorial with accompanying code samples.
      • Ada-MindStorms
        • An Ada to NQC translator for the Lego Mindstorms RCX
    • Iconic/Visual Programming
      • VisualNQC (formerly fUNSoftWare)
        • An iconic language tool for the Lego MindStorms RCX, which generates NQC code and can facilitate handling the NQC compilation and deployment processes, too.
      • etURP
        • A program to create NQC (Not Quite C) files for LEGO Mindstorms robots, using a powerful language and interface to access the full potential of the Lego MindStorms RCX.
      • QtNQC
        • Appears to be a UI for NQC (no project description provided)
      • Tern
        • A tangible computer language designed to provide a painless introduction to computer programming, creating programs for robots like the Lego MindStorms RCX (also supports NXT).
    • Add-Ins Supporting NQC
      • nqc.vim
        • gVim Menus for NQC (Not Quite C, version 2.3 r1 and newer) for the Lego MindStorms RCX
  • Visual Storms / Sharp Storms
    • About
      • A system capable of translate .NET executables in programs that can be executed on the Lego Mindstorms RCX without having to change its firmware
      • Additional known information in this LUGNET post
    • Toolchain
      • CLIFileRW
        • A .NET library developed for the CodeBricks research project that is specifically designed to read and rewrite .NET binaries and was used in conjuction with the Visual Storms / Sharp Storms projects
    • UI Library
  • ASML: Asynchronous State Machine Language
    • Execute Asynchronous State Machine (ASM) charts as RCX programs
  • Legolog
    • A Prolog-based system developed to allow experimentation with and demonstration of Cognitive Robotics research on the Lego MindStorms RCX
  • Lego/Scheme
    • An implementation of Scheme for the Lego MindStorms RCX
  • Mind Control
    • A Visual Basic program for controlling a Lego MindStorms RCX or Cybermaster unit
  • MostlyC
    • A C-style language that includes a number of features not present in NQC: true subroutines, functions w/parameters, bool/float types, large const arrays, math library
  • SqLego
    • A little package for controling a Lego MindStorms RCX system directly from Squeak, inspired by the BotKit interface.
  • TclRCX
    • An extension to the Tcl interpreter to let you issue commands to the RCX interactively or compile bytecode programs, download, and run them
  • pyRCX
    • A collection of Python scripts and components for the Lego MindStorms RCX
  • Ghost.NET Tethered Only; No Stand-Alone Capabilities
    • A .NET wrapper for Lego’s Ghost library, supporting tethered interaction with the RCX
    • Was originally part of AForge.NET, before being obsoleted and deprecated there
  • InteractiveVB Tethered Only; No Stand-Alone Capabilities
    • Interactive control of a Lego Mindstorm RCX with Visual Basic
  • RCX Java API Tethered Only; No Stand-Alone Capabilities
    • A platform-independent Java library used to develop RCX applications
  • RCX.NET Tethered Only; No Stand-Alone Capabilities
    • Lets you use your favorite development environment (.NET) to send commands to your Lego MindStorms® RCX
  • RCXPort Tethered Only; No Stand-Alone Capabilities
    • A Java interface to the Lego MindStorms RCX
  • VC++ Interface Tethered Only; No Stand-Alone Capabilities
    • A small direct interface that remote controls the RCX from within a Windows C program on the host computer
    • Extensions
      • MSWBrick
        • Using the Lego MindStorms RCX with MSW Logo
        • Depends on and requires the Visual C++ interface provided by the VC++ Interface project

Extensions Built on Alternative Firmwares

  • librcx
    • It would be fair to say that this represents the work that started it all for the RCX!
    • Intended to be a lowest-level driver for the Lego RCX, providing an interface between your C code and the RCX ROM, allowing you to easily explore the ROM interface.
  • BrickOS-Bibo
    • About
      • An alternative RCX operating system and firmware cloning brickOS. The kernel was written from scratch for better performance, but to the average brickOS programmer, changes should be transparent. There is a lot of code borrowed from brickOS, and numerous patches originally targeted for brickOS have been conceptually incorporated. While this project is based on bibo, as brickOS still seems to be the more recognizable name, it has been retained as part of the name.
      • Additional projects have added support for other programming languages, including the following::
        • C / C++ (built-in)
        • XS:Lisp (mostly built-in; additional work is needed to better support user programs)
        • Esterel (installation of binary prerequisties is necessary in order to compile programs for the RCX)
        • Luster (currently a separate project)
        • SCADE (currently a separate project)
        • .NET (currently a separate project, Lego.NET)
    • Add-ons and Extensions
      • scLego
        • An Esterel back-end for Lego C with BrickOS-Bibo
        • Esterel demo programs are already included with BrickOS-Bibo; install the Esterel compiler and this back-end extension to be able to build and use them
    • Toolchain
      • binutils-cil
        • Used in conjunction with the gcc-cil project to add CIL capabilties, for use with brickOS-bibo and Lego.NET
      • gcc-cil
        • An "official" gcc branch that adds CIL capabilities to gcc, for use with brickOS-bibo and Lego.NET
  • leJOS
    • About
      • A tiny Java Virtual Machine for the Lego MindStorms RCX, containing a VM for Java bytecodes and additional software to load and run Java programs.
      • Grew out of the TinyVM project
    • APIs
      • leJOS-RCX-Alt-API
        • An alternative to part of the standard leJOS API designed to fit an objects-early approach to teaching programming
    • IDE Add-Ins
      • leJOS Development Toolset for Eclipse
        • Eclipse plug-ins that simplify developing Java code for the Lego MindStorms RCX using the leJOS JVM, offering easy configuration through a project wizard and a preference page, using Eclipse code building, and adding RCX-specific operations both for firmware and byte-code download.
    • Utilities
      • leJOS-RCX-Tools
        • A visual interface for leJOS. RCXDownload automatically sets the JDK-, leJOS- and ClassPaths, compiles the chosen Java-Source, shows the compiler messages and is able to link and load both the compiled classes and the leJOS-firmware.
      • leJOS-RCX-MindStormsTools
        • A small toolkit to aid in the uploading of Java programs to LEGO MindStorms RCX bricks, providing functionality of the leJOS library in the development environment for this purpose
      • leJOS-RCX-TextLCDApplet
        • Java Applet GUI for testing josx.platform.rcx.TextLCD
    • Support for More Current Java Versions
      • oversticht/lego-rcx-lejos (external)
        • Based on leJOS v2.1 instead of v3.0-RC2 that is in the repository in this BrickBot organization
      • HaikuVM (external)
        • A spinoff Java VM approach referenced by @oversticht
  • pbForth
    • An incarnation of Forth that is designed to work with the LEGO MindStorms RCX brick as an alternative firmware for the RCX.
  • Asterix
    • A graphical user interface with support for real-time applications, built on top of a small, fast, and efficient real-time microkernel (RTOS)
  • colibri
    • An Open Source RTOS Subset
  • ERIKA
    • E.R.I.K.A. Educational, an Embedded Real tIme Kernel Architecture for the Lego MindStorms RCX
  • LDCC
    • DCC capabilities for the Lego MindStorms RCX
  • OnScreenProgramming
    • Facilitates programming a Lego Mindstorms RCX on its LCD screen via its View/Prgm buttons, without use of a computer
  • Pocket Programmer
    • Greatly advanced the concept of OnScreenProgramming
    • Firmware is available but not the source code
  • Quite C
    • Quite C is intended to be a repackaging and reordering of a miniOS (no multitasking!) for the Lego RCX. It provides an interface between your C code and the ROM. The intent is to allow you to write very large programs in C language (neural and pathfinder programs like) with Microsoft Windows platform. LegOS is too Unixish ;)
    • Each program appears to be created as its own firmware (SREC) file
  • TinySoar
    • An implementation of the Soar artificial intelligence architecture that is intended to run on memory constrained devices.
  • TinyVM
    • A replacement firmware and VM that can execute Java programs in the Lego Mindstorms RCX, supporting several of the most useful features of the Java language.
    • Breaks the 32-variable limit imposed by the official Lego firmware (like other firmware replacements such as brickOS and pbForth also do)
    • No need to install a cross-compiler
    • The progenitor of leJOS
  • tvm-rcx
    • A Transterpreter Virtual Machine (TVM) wrapper for the Lego MindStorms RCX

Communication

  • RCX-IR
    • Communicate with the Lego RCX controller without the need of a Lego IR tower, converting between the IrDA and cIR protocols. Includes support for Java Native Interface (JNI).
  • perl-LEGO-RCX
    • Communicate with the Lego MindStorms RCX brick from a workstation through the IR tower.
  • LINX
    • Control a Lego robot via Perl scripts from a webserver or console
  • legoshrink
    • A program for communicating via the IR tower with your Lego Robot (RCX brick) using the legOS Network Protocol (LNP)
  • lnphost
    • A library supporting IR communication over the Lego MindStorms IR tower. It can be used from C programs on Posix compliant platforms, supports multiple protocols and is designed to be a replacement for lnpd.
  • lnpd
    • The LegOS Network Protocol Daemon, which allows for communication between brickOS-powered robots and host computers.
  • WinLNP-USB
    • LNP over USB for Windows devices
  • RCX LNP LIB
    • A DLL that ecapsulates LNP communication code, along with an example Visual Basic application
  • hubub
    • A simple TCP data reflector for quickly building distributed applications. It can broadcast data from one client to many (or many to many) with little system overhead. Written in heavily commented 'c', with example clients in TCL.

Emulators

A number of the emulators support TCP communication in place of the IR communication. While some tools have been updated to provide built-in support for TCP communication, if you are using a tool that supports serial IR communication but not TCP communication, it might be possible to use a null-modem or pseudo-terminal emulator

  • On Window, try the com0com project for Windows, which includes both a com2tcp component as well as hub4com component.
  • On Linux, try socat (e.g. sudo apt-get install socat on Debian/Ubuntu)
    • Start socat and leave it running
      • Serial-to-Serial exampple: socat -d -d PTY,raw,echo=0 PTY,raw,echo=0
      • Serial-to-TCP Listener example: socat -d -d PTY,raw,echo=0 TCP4-LISTEN:<port>
      • Serial-to-TCP Server exampple: socat -d -d PTY,raw,echo=0 TCP:<host>:<port>
    • In scenarios where the IR echo might be expected, echo might need to be set to 1
      • If setting echo to 1 on one side, you will need to test which device echos, as the created pseudo devices are not always initialized in command-line order

Note that the program ir-server is included with the BrickOS-Bibo project and includes “echoing” that is meant to mimic the behavior of IR communication. Additionally, there is also the hubub project that is included in this GitHub organization.

  • getROM
    • Tools and utilities from dumping the ROM from an RCX, which is often then used by RCX emulators.
  • BrickEmu
    • An emulator for LEGO MindStorms RCX bricks. It emulates processor and peripherals, so it runs the original ROM code, firmware, and programs.
  • RCXSimulator
    • A Java-based emulator of the Lego MindStorms RCX, including support for GDB and for IR via pseudo-terminals or UDP.
  • Intellejos
    • An RCX Simulator for LeJOS, based on the earlier Intellego project, for learning to program in Java using the LeJOS platform.
  • Intellego
    • A tool for experimenting with robotic control techniques, providing a framework which enables researchers to develop controller programs for the Lego MindStorms RCX in Java, and test them either in simulation or in a real RCX robot with no alteration to the controller code.
  • LegoSim
    • A UNIX-based Simulator for LegOS/BrickOS with an Applet-GUI
  • EmuLegOS
    • An emulator for the LegOS (BrickOS) operating system used on the Lego MindStorms RCX.

Projects for Interacting with Other Devices

These projects are currently hosted in external repositories but can be transferred or imported if there is interest

  • RCX-PI (leJOS-based): an experimental API to integrate a Raspberry PI with a Lego MindStorms RCX by using smartphone sensors and cameras to allow seamless remote control and further robotics related development
  • RoboRemote (leJOS-based): Remotely contol an RCX using an attached smartphone, light sensors, leJOS, WebSockets, and Go
  • RemoteMindStorm (NQC-based): Control an RCX via LeapMotion and voice, using a basic messaging scheme
    • Includes a number of binary *.jar and *.so files in version control

Host OS Setup Help

Overview of Using the RCX with More Recent Operating Systems

Windows

Linux

Debian / Ubuntu

Mac OS X

Raspberry Pi


RCX Links and Resources

The links below are a mostly uncurated collection of RCX-related websites and postings. To retrieve some links, it may be necessary to use archive.org.

Communities

Information and FAQs

Assorted RCX Info

Human Interest

Technical Resources

Additional list of RCX resources, some of which are no longer available without use of archive.org

Sensors and Multiplexors

Individual Sensors

Sensor Adapters

Custom Sensor Design

Hardware Hacks: General

Hardware Hacks: Communication

BrickOS-Bibo Patch # 33, incorporated by Matthew Sheets, included Bluetooth-facilitating capabilities

Hardware Hacks: Interfaces

Firmware/Languages Lists

General GitHub Tips


RCX Accessories

Power

For RCX bricks with a power port, the Lego recommendation was their 9V AC Adapter part # 9833.


Third-Party Vendors

This GitHub organization is not associated with any of these vendors in any way; links are provided as a reference. Note that the vendors might no longer be offering RCX-compatible components.

Hardware

Software

General Lego

Releases

No releases published

Packages

No packages published