If you are a Linux user and have a Robotics Invention System (RIS) version 1.0 or 1.5, you have a serial infrared (IR) tower, which is fairly easy to set up. RIS version 2.0 came with a USB tower however, and getting that to work isn’t as straightforward. Some of these steps might seem daunting to a novice, but if you follow them correctly you should be OK.
Current versions of the Linux kernel (2.6.*) include support for the LEGO USB Tower by default. There are many Linux distributions, and they’re not all configured the same way. Below instructions were created for Ubuntu version 12.04 TLS 32-bit, one of the most popular distributions at this time.
Step 1 – enable the LEGO USB IR Tower module (¨driver¨)
First make sure the USB IR Tower is connected to your computer. Now open a terminal window to determine if the module actually exists on your system, by running this command:
find /lib/modules -name *lego*
The output will show you one or more file names with long paths in front of them. Just as long as at least one of them ends with legousbtower.ko, you’re OK to continue. If not, this means your distribution doesn’t have this driver available as a module and you may need to actually recompile your kernel. This article does not cover that.
Now we need to make sure the module gets loaded at boot time. Open the file /etc/modules in an editor, for example with the command:
sudo gedit /etc/modules
Add a new line to the end of this file with just the name of the module: legousbtower (without the .ko suffix). My /etc/modules file looks like this.
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. lp legousbtower
Save the file and exit the editor. Now reboot the system.
After the reboot, open a terminal window again, and run the command:
ls -l /dev/usb
You should see output similar to this:
total 0 crw------- 1 root root 180, 0 Oct 2 18:39 hiddev0 crw------- 1 root root 180, 1 Oct 2 18:39 legousbtower1
It came up with number 1 for mine, it could have a different number for you, usually legousbtower0. We need to change the permissions on it, run this command:
sudo chmod 666 /dev/usb/legousbtower1EDIT: the chmod command only changes the permissions temporarily. I found a more permanent solution.
All done! The USB Tower is ready to be used… But now what?
Step 2 – adding USB support to NQC.
The LEGO brick programming language of choice on Linux is NQC (at least with the standard LEGO firmware). It has support for the RCX, Scout and Spybotics pbricks. The latest official release doesn’t have USB support for Linux, but thankfully somebody has already made a patch for this, so we can simply get the source code, patch it and then compile it ourselves. This sounds harder then it is, really. I didn’t run into any errors at all (not even on the first attempt!), which probably says a lot about the quality of the code (kudos to David Baum and John Hansen).
Go back to the terminal and create a directory in which you’ll build NQC. For example, I named mine /develop/nqc. Make sure this is your current directory and it is empty. Then run the below commands, in that order. They will download and extract the sources and patch:
mkdir nqc-3.1.r6 && cd nqc-3.1.r6 wget http://bricxcc.sourceforge.net/nqc/release/nqc-3.1.r6.tgz tar xfz nqc-3.1.r6.tgz cd .. wget http://sourceforge.net/p/bricxcc/patches/_discuss/thread/00b427dc/b84b/attachment/nqc-01-Linux_usb_and_tcp.diff ls -l
The output of that last command should look like:
-rw-rw-r-- 1 michiel michiel 13912 Jan 2 2013 nqc-01-Linux_usb_and_tcp.diff drwxrwxr-x 9 michiel michiel 4096 Oct 2 21:52 nqc-3.1.r6
So now you have a directory containing the source code of NQC, and the patch to enable USB support on Linux. Now apply the patch like this:
patch -p0 < nqc-01-Linux_usb_and_tcp.diff
This should tell you it patched 9 files. Now on to compile NQC!
cd nqc-3.1.r6 make
This will start scrolling a huge list of scary-looking output. Just sit back and relax. When it’s all done, check if the binary files have been produced.
Run “ls -l bin/” as shown below, and the output should look very similar:
michiel@Ubuntu13:~/develop/nqc/nqc-3.1.r6$ ls -l bin total 636 -rwxrwxr-x 1 michiel michiel 12812 Oct 2 21:57 mkdata -rwxrwxr-x 1 michiel michiel 618233 Oct 2 21:58 nqc
Now to install NQC, simply run:
sudo make install
This will install NQC, so afterwards you will be able to run the command “nqc” from any directory.
To compile and download an nqc program you wrote yourself and send it to the RCX using the USB tower, run:
nqc -Susb:/dev/usb/legousbtower1 -d helloworld.nqc