OpenWrt Software Image

From Qi-Hardware
Jump to: navigation, search

On the Ben NanoNotes currently sold you will find an image based on the OpenWrt embedded linux distribution.

We opted for OpenWrt as we needed a highly adaptable and configurable build environment which is reliable and doesn't make us spend too much time on fixing the system itself.

To build your very own custom image, please refer to Building Software Image


[edit] How to flash the most recent version to my device

Before Starting, please ensure:

  • Backup your 1.5GB data partition
  • The xburst-tools are installed and working properly
  • You have a working internet connection (for downloading the latest version of the image)
  • You're running the script as user "root" (e.g. < sudo ./ >)
  • Your device is connected with a decent USB-cable (this sometimes resulted in problems in the past)
  • You booted your device in usbboot-mode
  • If you have questions, please consult Updating Ben NanoNote software.

To flash the most recent official image, just download and run the following script without any arguments:

The script requires a usual linux/unix system environment and having the xburst-tools installed.

It will download and flash the latest images to your device.

The actual images and its configurations are located here

[edit] Software

We try to keep all of the included software up-to-date - that way there'll be always be the most recent versions of software within the image.

[edit] Bootloader

The bootloader is based on U-Boot

[edit] Kernel

As kernel we basically use the linux-2.6 kernel with a few patches to make it run smoothly on our hardware.

There's always the latest stable kernel version in use (currently 2.6.32).

[edit] Userland / RootFS

[edit] Core utils

The core applications are based on busybox, a minimal Unix userland.

[edit] Graphics system

To not waste system resources the default image does not come with a usual XServer like Xorg, but uses the DirectFB engine.

All of the major toolkits provide support for DirectFB, that way the software within the default image supports graphical applications based on the following toolkits out-of-the-box:

Currently supported and installed in the image by default are:

[edit] Applications

see Applications

[edit] Which Release Are You Using?

in your 本NanoNote run:

cat  /etc/VERSION

[edit] Change Log

[edit] Next


  • U-boot code went to OpenWrt upstream. Thanks a lot to Mirko
  • Rebase Ben Nanonote code on upstream svn://
  • Update packages with OpenWrt r34901(w3m, sdcv, qstardict, jfbterm, mpg123, centerim5, directvnc)
  • Update cgminer to 2.10.4
  • fpgatools: split to 2 packages(mini-jtag + fp2bit/bit2fp)


libctl Control UBB signals libubb Helper functions for the Universal Breakout Board

[edit] Image_2012-10-24


  • Update U-Boot to v2012.10-rc2
  • Fix boot from memcard
  • Update U-Boot ENV address to 0xC0000/0x140000
  • Rebase Ben Nanonote code on upstream svn://
  • Fix openwrt-packages dl url and deps, big thanks to kyak(#qi-hardware
  • Add 6x10 font for setfont
  • 4th update to 3.61.5
  • avrdude: update to 5.11.1, new avrdude support reflash ledtoy
  • centerim5: update to latest git
  • libpurple: update to 2.10.6
  • ne: bump version
  • quickcalc: update to version 1.28
  • qball: update to version 1.4
  • gmu: update to 0.8.0
  • gmenu2x: update to latest version


  • Failed build packages
  • qemu-host failed to build. which make all emacs* failed to build. I have to run './scripts/feeds uninstall qemu-host' and './scripts/feeds uninstall emacs' for make the build ignore them.
  • freedroid: it will give segmentation fault unless you enable swap
  • gforth give:
$771F6FF4 throw 
$772039F0 no.extensions 
$771F71B4 interpreter-notfound1

[edit] Image_2012-07-11


  • Bard now supports the EPUB format
  • Update wpan.nn, make the parameters more clear
  • Make nanonote inittab work with minimal, it will try to load gmen2x or sh
  • Include IPv6 kernel module
  • Kernel update to Linux-3.3.8
  • uClibc update to uClibc-
  • Rebase our code on upstream svn://
  • More codes merged to upstream


  • Boot from SD card doesn't work. keep reset U-Boot when press [M]. This is because of the toolchain update, which will be fixed soon. you can revert to the old U-Boot. They are the same other than different toolchains.
wget -l . -b
  • Failed build packages, GTK/QT failed to compile again.
  • Freedroid: it will give segmentation fault unless you enable swap
  • Mediatomb gives segmentation fault
  • Octave give
warning: timestamp on file /usr/lib/octave/3.2.4/oct/mipsel-openwrt-linux-gnu/find.oct is in the future
terminate called after throwing an instance of 'std::bad_alloc'
 what():  std::bad_alloc
panic: Aborted -- stopping myself...
attempting to save variables to `octave-core'...
save to `octave-core' complete


libzip libzip is a C library for reading, creating, and modifying zip archives
guile2 GNU Guile is an interpreter for Scheme
xburst-tools Tools for Ingenic XBurst CPU USB boot and NAND flash access
urjtag Universal JTAG library, server and tools

[edit] Image_2012-04-09


  • Big thanks to David, Kyak, Mirko for fix/update packages, bring the packages back
  • New entry on NuPDF and MPlayer
  • Liballegro: add png, jpeg image and ogg/vorbis audio file addons
  • MPlayer fixed
  • Fix libncursesw bug
  • Update Ben Nanonote kernel config file
  • Remove useless option -t on


  • Boot from SD card doesn't work. keep reset U-Boot when press [M]. this is because the toolchain update. will fix soon. you can revert to the old U-Boot. they are same only toolchain changed.
wget -l . -b
  • Freedroid: it will give segmentation fault unless you enable swap
  • Mediatomb gives segmentation fault
  • Bard does not support EPUB. please use this 0.7-2 version with EPUB support:
opkg install
opkg install


alfilelsel graphical file selector dialog for scripts and gmenu2x, there are NuPDF and MPlayer icon included
alpy Python bindings for the Allegro Game and Graphics Library



[edit] Image_2012-03-18



  • work around on missing libncursesw: cd /usr/lib/ && ln -s
  • boot from SD card doesn't work. keep reset U-Boot when press [M]. this is because the toolchain update. will fix soon


bard Bard Storyteller is a text reader.
hp48cc hp48cc is a C-like compiler that translates the input code into the HP48 RPN language.
pick-pdf a script file that find out pdf find in ~/ and display with a dialog. open it with nupdf. thanks jiri.brozovsky
wav2png a script file that convert wav file to png
guile2 GNU Guile is an interpreter for Scheme



[edit] Image_2011-11-13

  • update Linux kernel to 3.0
  • boot time ~13 seconds(boot to gmen2x)
  • add WPAN(atBen) support. checkout /usr/bin/wpan.nn
  • nanonote-files update, include WPAN tools, one small script file for setup WPAN between two Ben Nanonotes
  • build Toolchain tar ball. much small then the SDK
  • build both 32bit and 64bit SDK and Toolchain
  • disable both u-boot and kernel boot message, new boot slash screen.
  • fixed mediatomb problem
  • update
  • change bootloader to read 2.5M kernel partition data
  • new icons : gtkguitune, mediatomb, lingot, gjay, listener
  • include two wallpapers by Jane, w1 w2


  • rebase openwrt-xburst.git on top of r28464
  • zimread update to r362.
  • now we have 2900+ packages


tig Command line launcher for search engines and other Internet services.
Txt2tags Txt2tags text to LaTeX/HTML/Lout/Man/Wiki/.. converter.
frotz games frotz: add 1 zcode games
Taskwarrior Taskwarrior is a command-line todo list manager
listener listener automatically records when sound is detected
ben-wpan-doc ben WPAN setup USAGE file


  • make oldconfig not working as expect.
  • ldd /usr/lib/libreadline Segmentation fault
  • [FIXED] mediatomb not working, hang when start, someone can look into this will be great.
  • [FIXED] some packages miss icons in gmenu2x
  • [FIXED] 'wpa-supplicant' miss depends package 'libnl-tiny', needs manually install by 'opkg install libnl-tiny' after install wpa-supplicant, fixed by we include libnl-tiny. needs fix in upstream

[edit] Image_2011-08-27


  • remove powerup delay, thanks Bas Wijnen
  • update, add -d for dailybuild -t for testing, see --help for more info
  • update xburst-tools, ChangeLog
  • more icons in gmenu2x, immediate kill gmenu2x.bin when poweroff, gmenu2x update a lot.
  • timeout working in gmenu2x. setup to 60 seconds by default
  • disable kernel log when boot. change console blank time to 30 seconds, thanks kyak
  • busybox: backport reverse history search patch
  • fix rootfs.tar.gz not boot. (which only under Image_2011-05-28)
  • set Date Time to the day of building after reflash
  • some small improve,
  • there are 2600+ packages


  • rebase on top of trunk upstream r27328 date: 2011-07-01
  • now we have new kernel and toolchain: gcc-linaro uClibc-0.9.32 linux-
  • qball, 4th, octave, plplot, gcc-mips updated
  • mc enable wide char support
  • include svn client
  • emacs update a lot, bootup very fast


cscope Cscope source code browser -initial port to OpenWRT.
ben-wpan tools initial port
lowpan-tools initial port
libnl-1 initial port
pem tool to help you keep track of your personal income and expenses
Tempest for Eliza it is a Program that uses your computer monitor to send out AM radio signals.
vitetris terminal-based Tetris clone
ASE allegro sprite editor, a generic drawing and animation program
alex4 Alex the Allegator v4: Game-Boy style jump&n&run game
libdumb mod/xm player (dumbplay) plus player library for games
lingot not only guitar tuner using GTK
gtkguitune for tuning guitars and other instruments by using the method of Schmitt-triggering
liballegro-digmid package 'freepats' samples for midi synthesizer
crashmail CrashMail II is basically a more portable version of CrashMail, a FidoNet tosser for Amiga computers.
binkd Fidonet mailer
husky a bunch of tools for Fidonet


  • This a major update of uClibc, therefore this release is not binary compatible with older ones.
  • mediatomb not working, hang when start, someone can look into this will be great.
  • stardict Segmentation fault when start, since Qstardict work better, maybe stardict useless for now.
  • workaround on python, more info
  • ldd /usr/lib/libreadline Segmentation fault
  • some packages miss icons in gmenu2x
  • 'wpa-supplicant' miss depends package 'libnl-tiny', needs manually install by 'opkg install libnl-tiny' after install wpa-supplicant

[edit] Image 2011-05-28



  • rebase on top of backfire r26851 date: 2011-05-08
  • move data/, ks7010 from openwrt-xburst.git to openwrt-package.git


avrdude Atmel AVR Microcontrollers
kinyin Chinese notepad
stardict dictionary English <-> Spanish
tic-tac-toe game
kexecboot a nice Linux-As-a-Bootloader
curveship interactive fiction + interactive narrating
flite (1.4 for overwrite the upstream version)
4th 4th forth compiler
man-tiny simple man program
libsdl-doc-man libsdl man pages

[edit] Image 2011-02-23


  • fixed /bin/ash : can't access tty; job control is turned off when start 'ash' 'bash'
  • a wiki page for how to using SDK
  • removed gcc-mips, samples, demos, for saving more space
  • we have mtd.nn now, it's have command:
flash kernel|rootfs|data image_file
mount rootfs|data    mount_point
  • u-boot support F1/2/3/4 when poweron.
F1/2/3 will load kernel from sdcard partition 1/2/3
F4 will load kernel inside the ubi rootfs of nand.(we need put kernel at /boot/uImage)
those kernel command line. boot kernel command can be changed by 'fw_setenv'
  • fixed WIFI (ks7010) not working in 2012-12-14, thanks Lars
  • gfortran support in cross toolchain
  • add vm.overcommit_memory = 1 to sysctl.conf
  • by talking in IRC. now we will only release SDK, remove IB and ToolChain
  • fixed 'BenNanoNote' DNS problem
  • fixed opkg.conf URL not correct
  • | packages update
  • | mirror-openwrt-sources update.
  • Kernel update to
  • automatic write u-boot default env to nand when first boot
  • gmu update to 0.7.2
  • gmenu2x updated, theme, new icons
  • fixed emacs not start in gmenu2x.
  • add parameter '-q' to freedroid, for enable sound you needs setup swap manually


  • rebase on top of backfire r25455
  • using new nls and cmake strategy
  • remove not overwirte files to one package named nanonote-files
  • using revision in feeds.conf file
  • merge config.all_packages and config.full_system to one
  • using 'strip' not 'sstrip'
  • cross compiler now support gfortran, thanks dvdk (#qi-hardware @freenode)


  • flite have noise when direct speak, [flite -t "hello world" hello.wav && aplay hello.wav] is better then just [flite -t "hello world"]


gottet Tetris clone, written in Qt
qball simple breakout style game
ikog ikog
octave GNU Octave (executable)
mediatomb mediatomb
tunec A command line guitar tuner for linux
flite Text-to-speech for embedded systems
qstardict Qt clone of stardict
MPlayer MPlayer, the movie player
offrss Offrss
Tile 15 Puzzle game, written in Qt
pmars Pmars
mandoc Manual pages formatter.
robots An robots application
bwbasic An bwbasic application
pyclock a binary clock for programmer
links GUI version Links
sokoban game
supertux supertux
zgv Picture Viewer featuring Thumbnails
brainless Brainless (a chess playing program)
plplot PLplot plotting library
gnuplot A portable command-line driven graphing utility
dunnet an emacs game
terminus-font Monospaced fonts

[edit] Image 2010-12-14


  • moved the gmenu2x to /etc/inittab
  • disabled atd, telnet, led
  • automatic creating /dev/rtc
  • added some default configure files, see ls -a /root/
  • using triggerhappy for closing the powerof, remove fn-handle and cmdpad
  • added a lot of icons to gmenu2x
  • added reflash progress indicator in it will try to download ubi.bz2 first
  • added fw_setenv_default. if we want to change the kernel command line: 1. run fw_setenv_default 2. fw_setenv bootargs KERNEL_CMD_LINE_CONTENT
NOTICE by default the u-boot envs doesn't write to nand. the "fw_setenv_default" will write default to nand, so we only need to run fw_setenv_default once before we start to set u-boot env. 


  • moved files/* to its own package. not in openwrt-xburst.git


  • /bin/ash : can't access tty; job control is turned off when start 'ash' 'bash'
  • there are some ALSA LIB error messages, when system boots. it is because the gmenu2x tries to access the sound system before sound module is loaded
  • gmenu2x doesn't dim the screen. but works fine in 'ash' 'gmu'
  • when exit nanomap, there is one segment fault sometimes
  • when exit stardict, then go back to gmen2x, starting another terminal program system doesn't go to tty1, need to manually go to tty1 by pressing "ctrl + alt + F1"


abook address book
aewan Ascii Art Editor
ctronome console metronome software
dosfsck dosfsck
dosfslabel dosfslabel
libncursesw Terminal handling library (Unicode)
elinks A text based web browser
Emacs Emacs
links Text and graphics WWW browser
moc Music On Console
msmtp Simple sendmail SMTP forwarding (with SSL support)
NanoMap-maps Qt4-based map viewer (Sample Maps)
nanonote-example-files nanonote-example-files
netcat A feature-rich network debugging and exploration tool.
nethack single player dungeon exploration game
netsurf another web browser
nfs-utils updated mount utility (includes nfs4)
qstardict Qt clone of stardict
qt4-demos qt4 (demos)
qt4-examples qt4 (examples)
qt4-svg qt4 (svg)
resize2fs resize2fs
sshfs SSHFS
stardict-dic-en-cn International Dictionary Software (dictionary: oxfordjm English <-> Chinses)
tcl TCL Lang
triggersad handle input events and run configured programs
wget Non-interactive network downloader (with SSL support)
wtime WTime time tracker

[edit] Image 2010-11-17

  • heavily restructured git repository to make it more easy to track changes with upstream
  • change rootfs size from 256MB to 512MB
  • switch back to uclibc, since we experienced issues with 0.9.32 which are going to be investigated
  • all used toolkits (sdl, gtk2, qt4) are working again
  • lot's of packages - within the openwrt-packages as well as in the qi-packages repository - have been updated to fit more the needs of NanoNote users
  • lot's of new and fixed packages have been added to the default config (more below) and therewith image
  • the toolchain and SDK are now built by default to simplify development and cross-compiling / -linking of software

changes to busybox:

  • STAT added
  • HOSTNAME added

packages added:

  • gforth added
  • kexec-tools added
  • picoc added
  • jbig2dec added
  • openjpeg added
  • unifont added
  • cmdpad added
  • ghostscript added
  • hwclock added
  • io added
  • mupdf-tools added
  • binutils added
  • libbfd added
  • objdump added
  • erlang added
  • jbofihe added
  • lojban-wordlists added
  • makfa added
  • fbgs added
  • fbi added

[edit] Image 2010-06-15

  • enable kernel FPU support as fallback => debian-userspace compatible
  • lot's of kernel fixes
  • new packages ported and added:
  • image viewer "imgv"
  • console calendar "gcal"
  • screenshot "fbgrab"
  • math suite "mathomatic"
  • "sdcv" - console frontend for stardict
  • unit converter "units"
  • GNU Chess
  • u-boot: when boot from flash memory card, u-boot will load ext2-first-partition:/boot/uImage. update to version 2010.03

[edit] Image 2010-05-07

  • added access to binary feed (qipackages, packages)
  • rebased to new release "backfire" of OpenWrt
  • gmenu2x improvements, removed unused sections and starters for currently broken applications
  • various cleanups and bugfixes
  • package htop added
  • inotify support added and enabled

[edit] Image 2010-04-09

  • music player GMU added
  • gmenu2x default application launched
  • use fb-support instead of directfb-support for sdl-applications, as the latter once behaves unexpected
  • faster boottime due to rootfs split
  • adding linuxfb-support to Qt an addition to DirectFB
  • using block-hotplug and block-mount for automatically mounting block devices such as sd cards (untested)
  • officially being part and project of the OpenWrt distribution now
  • sound module loading sequence changed to avoid unresolved symbols
  • package diffutils added
  • package disktype added
  • package dosfsck added
  • package dosfslabel added
  • package gnupg added
  • package graphicsmagick added
  • package guile added
  • package jow added
  • package make added
  • package mkdosfs added
  • package mtd-utils added
  • package nanobadblocks added
  • package openvpn added
  • package patch added
  • package php5 added
  • package python added
  • package resize2fs added
  • package rsync added
  • package sox added
  • package strace added
  • package sysfsutils added
  • package tcpdump added
  • package ubi-utils added

[edit] Image 2010-03-22

  • screen now _really_ gets blanked when device is in idle
  • sound issues got fixed
  • fixed unreliable I/O in mmc driver
  • qt4 is now built in including some examples and demos

When launching qt4-applications "-qws -display directfb" need to be passed for now, e.g. for the coverflow like fluidlauncher:

( cd /usr/share/Qt/demos/embedded/fluidlauncher/ ; ./fluidlauncher -qws -display directfb )

[edit] Test Plan

  1. create the release branch in both openwrt-xburst and openwrt-packages
  2. test boot time
  3. test all application in gmenu2x, make sure everyone can start and exit correct
  4. test the KS7010 802.11 wifi driver
  5. the AtBen 802.15.4 driver
  6. test record and play sound by 'arecord' 'aplay'
  7. test play ogg in GMU, check is there some noise
  8. test mplayer works fine.
  9. test openwrt-xburst-qi_lb60-rootfs.tar.gz in boot from memcard
  10. test RTC works fine. more info
  11. octave (the problem with first plot not showing correctly is a known bug)
start octave from the menu
enter 'plot(sin(1:10))'
press Ctrl+C to get back
enter 'plot(sin(1:10))' again, should plot correctly now

[edit] Tutorials

[edit] Other Distributions

Personal tools