This is an old revision of the document!
Table of Contents
Build environment
0. Work in Progress
After all it's r0ket science. If you actually start developing something for the r0ket now, we'd recommend to join our Mailing List and IRC channel - see contact.
This article explains the setup on a Linux machine. Instructions for Mac OS X are available here.
1. Compiler
- Run installer
chmod +x arm-2011.03-42-arm-none-eabi.bin ./arm-2011.03-42-arm-none-eabi.bin
- On ubuntu, the installer complains that /bin/sh points to /bin/dash and not /bin/bash. Change it like proposed (with 'sudo dpkg-reconfigure -plow dash', “Install as /bin/sh?” → No). You can change it back to dash later, if you like.
- “Minimal” is the appropriate install option, if you don't want to use the CodeSourcery IDE.
- add compiler to your path (eg. ~/.bashrc)
export PATH=$PATH:<pathtocodesourcery>/Sourcery_G++_Lite/bin/
- restart console
Complete console commands for Ubuntu: When installing CordeSourcery chose the proposed Paths. Replace <USERNAME> with your username.
mkdir r0ket cd r0ket wget http://www.codesourcery.com/sgpp/lite/arm/portal/package8736/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi.bin sudo dpkg-reconfigure -plow dash chmod +x arm-2011.03-42-arm-none-eabi.bin ./arm-2011.03-42-arm-none-eabi.bin echo 'export PATH=$PATH:/home/<USERNAME>/CodeSourcery/Sourcery_G++_Lite/bin' >> ~/.bashrc bash
2. Source
- Install git
sudo apt-get install git-core
- Clone git repository
git clone git://github.com/r0ket/r0ket.git
3. Build
cd firmware vi applications/hello.c
#include <sysinit.h> #include "basic/basic.h" #include "lcd/render.h" void main_hello(void) { DoString(10,20,"Hello World"); lcdDisplay(); while (1) {} }
make APP=hello
4. Deploy
- Install udev rule
sudo cp tools/bootloader/42-nxp-flash.rules /etc/udev/rules.d/ sudo /etc/init.d/udev restart
- start autoflasher
cd firmware make flash APP=hello
gconf-editor apps > nautilus > preferences Uncheck the "media_automount" option
- (re)start r0ket in ISP-mode
- Method 1 (up to 30 seconds, but works always)
- Power off r0ket
- Press and hold button “Left”, power r0ket on
- Connect r0ket via USB
- Method 2 (fast, works always when a firmware is installed that uses [default])
- Power off r0ket
- Press and hold button “Enter”
- Connect r0ket via USB
- Method 3 (fast, works if installed firmware provides the functionality)
- Connect r0ket via USB
- Select menu option “Invoke ISP” (or similar)
5. Building the original Firmware
To rebuild the original firmware you can use the release-all script in firmware/. It will build the firmware and all additional programs and put them into /release. You have to copy SECRETS to SECRETS.release first.
Note: the SECRETS in the git contain different keys like you had on your badge originally. That way the original firmware can only execute l0dables signed by the vendor (us!!), which makes it at least as cool as an iBadge. So if you reflash your badge you will lose this “feature” forever. Also you will leave the mesh of sheeps and enter the mesh of hackers, as the keys are different. Don't trust the INVADERS highscore on the hackers mesh though. Finally openAMD will stop encrypting messages - so if you have tracking enabled people can sniff and fake your ID. And of course you can always try to break the read protection of a working badge and extract it's crypto keys and release them on wikileaks. We'd love to see that. But wait for day 2 with that so we can see the mesh working before for some time…
After running the release-all script, copy the release/final.bin to firmware/firmware.bin and flash it like written above. Then start your badge, start the USB massstorage and mount it. Erase all files (except your own ones, like received stuff from others) and/or copy the files from /release/files/ onto the bage. The new .c0d files are now signed with the git-“SECRETS” and therefore will run again on your firmware, as well as you'll be able to run l0dables others built using the same keys.
