LEGO RCX mit NQC auf Apple programmieren – USB Tower & Firmware
In dieser Anleitung zeige ich, wie man einen alten LEGO Mindstorms RCX
mit NQC auf einem Apple Mac programmieren kann.
Verwendet wird der originale LEGO USB IR Tower.
Getestet wurde das Ganze auf einem Apple-Silicon-Mac mit macOS. Die Anleitung ist besonders
hilfreich für M1-, M2- und M3-Macs, kann aber auch auf anderen Macs als Orientierung dienen.
Wir sind keine Programmierer und wir haben ChatGTP zur Hilfe genommen. Das ganze wird auf einem Arbeitsordner auf Terminal angelegt. So kann es wieder gelöscht werden und es kann nichts sicherheitsrelevantes passieren. Wir übernehmen aber keine Haftung für allfällige Fehler des Blog-Lesers!
Was wird benötigt?
- LEGO Mindstorms RCX 1.0 oder RCX 2.0
- LEGO USB IR Tower
- Apple Mac mit macOS
- Homebrew
- Homebrew Bison
- NQC-Quellcode
- RCX-Firmware-Datei, zum Beispiel
firm0332.lgo - frische Batterien für den RCX
Warum braucht man Bison um LEGO RCX auf Apple zu programmieren?
NQC ist ein älteres Programm und muss auf modernen Macs meist aus dem Quellcode gebaut werden.
Beim Kompilieren wird yacc beziehungsweise bison benötigt.
Auf macOS kann der Build sonst mit folgender Meldung abbrechen:
xcode-select: error: tool 'bison' requires XcodeDas lässt sich sauber lösen, indem man Bison über Homebrew installiert und
nur temporär für den Build aktiviert.
1. LEGO USB Tower prüfen
Zuerst sollte geprüft werden, ob macOS den LEGO USB IR Tower erkennt.
Den Tower einstecken und im Terminal ausführen:
ioreg -p IOUSB -l -w 0 | grep -i "lego\|tower\|mindstorms"Wenn der Tower erkannt wird, erscheint ungefähr:
LEGO USB Tower
USB Product Name = "LEGO USB Tower"
USB Vendor Name = "LEGO Group"Wenn hier nichts erscheint, sollte man einen anderen USB-C-Adapter oder einen aktiven USB-A-Hub testen.
Manche modernen Adapter haben Probleme mit alten USB-Geräten.
2. Arbeitsordner anlegen
Für diese Anleitung wird alles in einem eigenen Testordner gespeichert:
mkdir -p ~/rcx-test
cd ~/rcx-testDadurch bleibt die Installation übersichtlich und kann später einfach wieder entfernt werden.
3. Benötigte Homebrew-Pakete installieren
Zuerst prüfen, ob Homebrew vorhanden ist:
brew --versionDann die benötigten Pakete installieren:
brew install git cmake libusb bisonWichtig: Es wird kein sudo brew benötigt.
4. Homebrew Bison temporär aktivieren
Auf Apple-Silicon-Macs liegt Homebrew normalerweise unter /opt/homebrew.
Damit beim NQC-Build das richtige Bison verwendet wird, diesen Befehl ausführen:
export PATH="/opt/homebrew/opt/bison/bin:$PATH"Danach prüfen:
which bison
bison --version
which yaccDie Ausgabe sollte ungefähr so aussehen:
/opt/homebrew/opt/bison/bin/bison
/opt/homebrew/opt/bison/bin/yaccDieser Schritt ist nur für das aktuelle Terminalfenster aktiv. Für einen ersten Test ist das ideal,
weil das System nicht dauerhaft verändert wird.
5. NQC herunterladen
Jetzt wird der NQC-Quellcode geladen:
cd ~/rcx-test
git clone https://github.com/jverne/nqc.git
cd nqcAnschließend prüfen, ob ein Makefile vorhanden ist:
find . -maxdepth 3 -iname "Makefile"Erwartete Ausgabe:
./Makefile6. NQC bauen
Nun wird NQC kompiliert:
cd ~/rcx-test/nqc
make clean 2>/dev/null || true
makeWährend des Builds können viele Warnungen erscheinen, zum Beispiel wegen sprintf.
Das ist bei altem C/C++-Code normal und bedeutet nicht, dass der Build fehlgeschlagen ist.
Erfolgreich ist der Build, wenn am Ende eine Zeile ähnlich dieser erscheint:
c++ -o bin/nqc ...Danach NQC testen:
~/rcx-test/nqc/bin/nqc -helpWenn eine Hilfeausgabe erscheint, wurde NQC erfolgreich gebaut.
7. RCX-Firmware laden
Wenn der RCX längere Zeit ohne Batterien war, fehlt oft die Firmware.
Dann muss sie zuerst neu übertragen werden.
Firmware-Dateien im Downloads-Ordner suchen:
ls -lh ~/Downloads/*.lgoTypische Firmware-Dateien heißen zum Beispiel:
firm0309.lgo
firm0328.lgo
firm0332.lgoBeispiel mit firm0332.lgo:
~/rcx-test/nqc/bin/nqc -Susb -firmware ~/Downloads/firm0332.lgoWährend der Übertragung sollte der RCX eingeschaltet sein. Der USB IR Tower sollte etwa 5 bis 10 cm
vor dem schwarzen IR-Fenster des RCX stehen. Am besten nichts bewegen und direktes Sonnenlicht vermeiden.
Du findest weitere NQC Dateien auf https://bricxcc.sourceforge.net/nqc/
8. Erstes NQC-Testprogramm erstellen
Jetzt wird ein kleines Testprogramm erstellt. Es spielt einen Ton ab und lässt Motor A kurz laufen:
cat > ~/rcx-test/test.nqc <<'EOF'
task main()
{
PlaySound(SOUND_UP);
OnFwd(OUT_A);
Wait(100);
Off(OUT_A);
}
EOF9. Programm auf den LEGO RCX übertragen
Das Testprogramm wird mit folgendem Befehl auf den RCX geladen:
~/rcx-test/nqc/bin/nqc -Susb -d ~/rcx-test/test.nqcFalls -Susb nicht funktioniert, kann man alternativ testen:
~/rcx-test/nqc/bin/nqc -Susb: -d ~/rcx-test/test.nqcWenn alles funktioniert, wird das Programm übertragen und kann anschließend am RCX gestartet werden.
10. NQC später verwenden
Für spätere Programme reicht normalerweise:
~/rcx-test/nqc/bin/nqc -Susb -d deinprogramm.nqcBeispiel:
~/rcx-test/nqc/bin/nqc -Susb -d ~/rcx-test/test.nqcDen Bison-Pfad braucht man nur wieder, wenn NQC neu gebaut werden soll:
export PATH="/opt/homebrew/opt/bison/bin:$PATH"11. Aufräumen
Wenn der Testordner gelöscht werden soll:
rm -rf ~/rcx-testFalls die Homebrew-Pakete ebenfalls entfernt werden sollen:
brew uninstall bison libusb cmake git
brew autoremove
brew cleanupNicht nötig und nicht empfohlen:
sudo brew ...
brew link --force bisonHäufige Probleme
Der LEGO USB Tower wird nicht erkannt
Wenn der Tower bei ioreg nicht erscheint, liegt das Problem meist beim USB-C-Adapter
oder Hub. Ein aktiver USB-A-Hub kann helfen.
Der Build bricht bei Bison oder Yacc ab
Dann Homebrew-Bison installieren und den Pfad setzen:
brew install bison
export PATH="/opt/homebrew/opt/bison/bin:$PATH"NQC meldet keine Antwort vom RCX
Dann sollte man Abstand und Ausrichtung zwischen USB Tower und RCX prüfen. Außerdem sollte der RCX
eingeschaltet sein, frische Batterien haben und die Firmware muss geladen sein.
Die RCX-Firmware ist verschwunden
Das ist normal, wenn der RCX längere Zeit ohne Batterien war. Die Firmware muss dann erneut übertragen werden.
Kurzfassung
mkdir -p ~/rcx-test
cd ~/rcx-test
brew install git cmake libusb bison
export PATH="/opt/homebrew/opt/bison/bin:$PATH"
git clone https://github.com/jverne/nqc.git
cd nqc
make clean 2>/dev/null || true
make
~/rcx-test/nqc/bin/nqc -helpFirmware laden:
~/rcx-test/nqc/bin/nqc -Susb -firmware ~/Downloads/firm0332.lgoProgramm laden:
~/rcx-test/nqc/bin/nqc -Susb -d ~/rcx-test/test.nqcFazit vom LEGO RCX mit NQC auf Apple programmieren
Der LEGO RCX lässt sich auch heute noch mit NQC auf einem Apple Mac programmieren.
Entscheidend ist, dass macOS den LEGO USB IR Tower erkennt und NQC mit Homebrew-Bison sauber gebaut wird.
Damit funktioniert die Kombination aus klassischem LEGO Mindstorms RCX und moderner Apple-Hardware
erstaunlich gut.
Wenn du de kleinen RCX mit DC Power Stecker besitzt kannst du coole Funktionen programmieren.
Und kleiner KI Tipp: ChatGTP macht die Programmierung sehr gut.
Liebe Grüsse aus der Technic Stube
Pascal von gallusbrick
