Od kernel verzie 2.6.1 je podpora Lego USB veže priamo v kerneli. Podľa distribúcie OS GNU/Linux môže byť realizovaná nasledovne:
Pripojíme Lego USB vežu a pozrieme sa, čo hovoria logy (vežička na nás možno pri zasúvaní do USB portu aj žmurkne zeleným očičkom :-)) a mali by sme vidieť niečo podobné ako na výpise nižšie, po pripojení Lego USB veže sa teda zaviedol kernel modul legousbtower a vytvoril sa device-nod /dev/legousbtower0
$ sudo tail -f /var/log/messages Feb 27 18:23:04 edubuntu kernel: [17180439.876000] \ \ usb 1-2: new low speed USB device using uhci_hcd and address 4 Feb 27 18:23:04 edubuntu kernel: [17180440.084000] \ \ usb 1-2: configuration #1 chosen from 4 choices Feb 27 18:23:05 edubuntu kernel: [17180440.532000] \ \ drivers/usb/misc/legousbtower.c: LEGO USB Tower #0 now attached \ \ to major 180 minor 160 Feb 27 18:23:05 edubuntu kernel: [17180440.536000] \ \ drivers/usb/misc/legousbtower.c: LEGO USB Tower firmware version \ \ is 1.0 build 134 Feb 27 18:23:05 edubuntu kernel: [17180440.536000] \ \ usbcore: registered new driver legousbtower Feb 27 18:23:05 edubuntu kernel: [17180440.536000] \ \ drivers/usb/misc/legousbtower.c: LEGO USB Tower Driver v0.96
Zistíme podrobné (naozaj podrobné) informácie o Lego USB veži, kompletný výpis $ sudo lsusb -v je tuto
$ sudo lsusb -v
Zistíme, či je kernel modul zavedený
$ sudo lsmod | grep lego legousbtower 16772 0 usbcore 130304 5 legousbtower,usbhid,ehci_hcd,uhci_hcd
Ak by sa stalo, že kernel modul legousbtower nie je zavedený, ručne ho zavedieme
$ sudo modprobe legousbtower
Nastavíme práva prístupu k Lego USB veži aj bežným useríkom
$ sudo chmod 666 /dev/legousbtower0
Ak by sa stalo, že súbor /dev/legousbtower0 neexistuje, vytvoríme ho
$ sudo mknod /dev/usb/legousbtower0 c 180 160 $ sudo chmod 666 /dev/legousbtower0
Otestujeme Lego USB vežu (mala by opäť žmurknúť zeleným očičkom)
$ echo doublethink > /dev/legousbtower0
V prípade, že kernel modul legousbtower nemáme, tak odpojíme USB vežu a prekompilujeme kernel
$ sudo cd /usr/src/linux $ sudo make menuconfig ------------------------------------------------------------------------------- Device-Drivers --> USB support --> [M] USB Lego Infrared Tower support ------------------------------------------------------------------------------- $ sudo make && make modules_install
Skopírujeme nový kernel do boot adresára, reštartujeme, ručne zavedieme kernel modul legousbtower a pripojíme Lego USB vežu
$ sudo modprobe legousbtower
Buďto sa uspokojíme s predvareným paklíkom nqc pre našu distribúciu (deb, rpm, ...) a jednoducho si ho doinštalujeme (pre OS GNU/Linux Edubuntu 6.10 je vo verzii nqc-2.5.r3-5)
$ sudo apt-get update $ sudo apt-get install nqc
Alebo si zo stránky http://bricxcc.sourceforge.net/nqc/ stiahneme zdrojový paklík najnovšieho kompilátora (nqc-3.1.r4.tgz) a nainšalujeme ho ručne
$ tar -xzf nqc-3.1.r4.tgz $ cd nqc-3.1.r4 $ make $ sudo make install
Tak, či onak, nastavíme ešte premennú RCX_PORT (aby sme ju nemuseli zakaždým písať s prepínačom -S)
$ export RCX_PORT=/dev/legousbtower0
A je čas preštudovať si manuálové stránky nqc (príklady sú uvedené na výpise)
$ man nqc EXAMPLES To compile foo.nqc, download the bytecode to program slot three, and make the RCX start executing it immediately: nqc -d -pgm 3 foo.nqc -run To just compile bar.nqc, resulting in bar.rcx: nqc bar.nqc To download bar.rcx to the RCX: nqc -d bar.rcx To set the IR tower to short-range mode and download the firmware at high speed: nqc -near -firmfast firm0328.lgo To compile /usr/doc/nqc/test.nqc and print the resulting bytecode listing to the screen in human-readable format: nqc -L /usr/doc/nqc/test.nqc (This should result in the following output under nqc 2.1.0: *** Task 0 = main 000 pwr ABC, 7 13 07 02 07 004 dir ABC, Fwd e1 87 006 InType 0, Switch 32 00 01 009 InMode 0, Boolean 42 00 20 012 out A, On 21 81 014 chkl 1 != Input(0), 14 95 82 09 01 00 00 fa ff 022 plays 0 51 00 024 out A, Off 21 41 )
Alebo aspoň help
$ nqc -help nqc version 3.1 r4 (built Feb 28 2007, 13:08:21) Copyright (C) 2005 John Hansen. All Rights Reserved. Usage: nqc [options] [actions] [ - | filename ] [actions] - : read from stdin instead of a source_file Options: -T<target>: target can be RCX, CM, Scout, RCX2, Spy, or Swan -d: download program -n: prevent the system file (rcx.nqh) from being included -b: treat input file as a binary file (don't compile it) -D<sym>[=<value>] : define macro <sym> -E[<filename>] : write compiler errors to <filename> (or stdout) -R<filename> : redirect text output (datalog, etc) to <filename> -I<path>: search <path> for include files -L[<filename>] : generate code listing to <filename> (or stdout) -s: include source code in listings if possible -c: generate LASM compatible listings -v: verbose -q: quiet -x: omit packet header (RCX only) -f<size>: set firmware chunk size -w<ms>: set the download wait timeout -O<outfile>: specify output file -S<portname>: specify serial port -U<sym>: undefine macro <sym> Actions: -run: run current program -pgm <number>: select program number -datalog | -datalog_full: upload datalog -near: set IR to near mode -far: set IR to far mode -watch <time> | now: set RCX time -firmware <filename>: download firmware -firmfast <filename>: download firmware at quad speed -sleep <timeout>: set RCX sleep timeout -msg <number>: send IR message to RCX -raw <data>: format data as a packet and send to RCX -remote <value> <repeat>: send a remote command to the RCX -clear: erase all programs and datalog in RCX -api: dump the standard api file (e.g. rcx.nqh) to stdout -help: display command line options
28.2.2007 - Nastáva čas pozvať na pivo toho, kto vyrieši nasledujúcu galibu, čokoľvek chcem poslať do RCX kocky, Lego USB veža iba žmurkne (zeleným očičkom) a z konzoly sa vyškiera Could not open serial port or USB device
$ nqc -near Could not open serial port or USB device $ echo teraz_ho_otvori > NXT_PORT $ sudo nqc -S/dev/legousbtower0 -far Could not open serial port or USB device $ sudo echo aj_teraz_ho_otvori > /dev/legousbtower0
Ak na /dev/legousbtower0 vyšlem niečo príkazom echo, tak blikne aj zelené očičko aj IR dióda (overené na detektore IR žiarenia), v prípade príkazu nqc blikne iba zelené očičko :-(
3.3.2007 - No asi na to pivo predsa len pôjdem :-)
Zo stránky http://bricxcc.sourceforge.net/nqc/ stiahneme zdrojový paklík najnovšieho kompilátora (nqc-3.1.r4.tgz) a rozbalíme ho
$ tar -xzf nqc-3.1.r4.tgz
Vhupneme do adresára nqc-3.1.r4/ a editujeme súbor Makefile (alebo ho nahradíme súborom Makefile stadiaľto)
$ cd nqc-3.1.r4 $ gedit Makefile
Vhupneme do adresára nqc-3.1.r4/rcxlib/ a editujeme súbor RCX_USBTowerPipe_linux.cpp (alebo ho nahradíme súborom RCX_USBTowerPipe_linux.cpp stadiaľto)
$ cd rcxlib $ gedit RCX_USBTowerPipe_linux.cpp
Ešte treba fyzicky umistniť súbor legousbtower.h do adresára nqc-3.1.r4/rcxlib/ (napríklad stadiaľto) a môžeme inštalovať
$ cd .. $ make $ sudo make install
Nastavíme práva pre súbor -dev-legousbtower0 (aby sme sa nezosudovateli) a premennú RCX_PORT (aby sme museli zadávať parameter nqc -Susb)
$ sudo chmod 666 /dev/legousbtower0 $ export RCX_PORT=usb
Zo stránky http://bricxcc.sourceforge.net/nqc/ stiahneme:
Zo stránky http://www.sweb.cz/seifrob/lego_robotika/nqctutor.zip stiahneme:
Zo stránky http://lego.zschlebnice.sk/sw.php stiahneme firmware RCX kocky:
Zo stránky http://vim.sourceforge.net/scripts/script.php?script_id=67 stiahneme plugin nqc.vim pre textový editor gvim:
Zo stránky http://www.solinfpc.net/index.php?2006/04/14/16-nqc-gui stiahneme francúzsky hovoriaci skript pre Kommander:
Zo stránky http://bricxcc.sourceforge.net/ stiahneme IDE BricxCC (pobeží s wine):
$ tar -xzf nqcgui.tar.gz $ kmdr-executor nqcgui.kmdr
$ cd $ mkdir .vim $ mv nqcvim.zip .vim $ cd .vim $ unzip nqcvim.zip $ cd $ gedit .vim/plugin/nqc.vim ------------------------------------------------------------------------------- let s:NQC_RCX_Firmware = $HOME.'/nqc/firm0328.lgo' " kde je RCX firmware let s:NQC_Target = 'RCX2' " typ kocky let s:NQC_Portname = 'usb' ------------------------------------------------------------------------------- $ gvim
Yes -> Next -> Next -> ...
Poznámka:OS GNU/Linux Edubuntu 6.10, kernel 2.6.17, verzie jednotlivých SW paklíkov sú k 28.2.2007.