Ben NanoNote Software Status

From Qi-Hardware
Jump to: navigation, search

Note: this development-related page is pretty outdated. If you're looking for up-to-date information on Ben Nanonote Software status, have a look at the Applications page and the software image changelog.

This page is intended for writing down thoughts about how some layers of the software part can be realized; for sharing, creating, adding and dropping ideas, commenting and spinning on them...

For having issues with already integrated software, please take a look at the issue tracker.


[edit] Bootloader

  • Currently we're using uboot. We would like to switch to something lighter, ideally the "qi-bootloader", but that needs some work.
  • It should support setting values to distinguish different hw platforms if these aren't distinguishable by sw (ben & ya)
  • It should support setting of the usb-mac address to uniquely identify the device
  • For the last 2 points an identity partition in nand would be nice that's not overwritten by flashing a new bootloader
  • The boot loader could sport a menu to offer booting OpenWRT from /dev/mmcblk0p1 or Debian/other from /dev/mmcblk0p2. The menu could boot the default item after 1 second. It could allow a selected item to be set as the default for next time. Then I wouldn't have to hold down M every single time I boot my NanoNote

[edit] Kernel

  • Currently having kernel 2.6.32 running, built within the OpenWrt framework

[edit] TODO

  • further cleanup of the whole code base for the jz-chip by ingenic
  • Add native i2s-support
  • Speed up NAND and MMC access using DMA
  • Write PWM driver
  • Sometimes [Unhandled kernel unaligned access] Process ksoftirqd/0 make kernel reboot. (Unconfirmed)

[edit] Core system

  • right now the base userspace system is based on busybox, as OpenWrt is using busybox as underlying userspace infrastructure. It's doing it's job for now on the NanoNote, so, in my view, right now no need for alternatives.
  • Write alsa config for softvol and dmix[1]

[edit] GUI?

  • core graphical system
    • Personally I see 3 options:
      • stick to console based software (ncurses) for now
      • using the abilitiy of applications / toolkits to draw to the framebuffer directly (e.g. gtk2, fltk, evas/edje)
        • <maemo>, the distrubition nokia is using on their n-series tables is using <Hildon> as default user interface, based on gtk+. It's optimized for the use on embedded devices - since it is based gtk+ it may be also possible drawing it directly on the framebuffer, without the need of an Xserver.
          • Unfortunately maemo seems to be not as "open" as Nokia is calling it. Lot's of core components seems to be closed, as summarized in [1] and [2]
      • having a real Xserver (propably Xorg) running - might be a bit hard with having just 32MB of RAM within the Ben NanoNote (xfdev used on Jlime seems beat this fact)

[edit] Key User-level Programs for Release Image

(# indicates that it's currently in there)

[edit] Applications

  • Gmenu2x (launcher)
  • # Vido (wikipedia offline reader)
  • Stardict (dictionary)
  • Music Player

[edit] Data

  • 1 million most common articles of en wikipedia
  • Dictionaries (which?)
  • Music (oggs off Jamendo, which? )

[edit] Language Support

  • # Lua
  • Python (in openwrt currently, works fine: opkg install python)
  • Perl
  • # Guile [Scheme variant]

[edit] Enormous app status/wish-list

[edit] In Release Image

Name Type Project Home Comment Status/Contact
Lynx browser Lynx simple, text-based browser
vim editor vim console editor
openZIM offline webcontent openZIM This is the openZIM project, a free and open source implementation of the ZIM file format. You will find here documentation about the ZIM file format, the openZIM software and the project management.

The ZIM file format was created to provide a standard way to make webcontent offline available. Its major usage is to provide Wikipedia content offline, like in Wikipedia DVDs.

Not release ready, work in progress.
Mutt email client
Lua scripting engine
irssi irc
bc calculator

[edit] In OpenWrt

Name Type Project Home Comment Status/Contact
Nano editor Nano Editor simple, easy-to-use console editor
elinks browser elinks is a web browser originally derived from Links.
sox audio recorder sox

[edit] Packaged but not in OpenWrt

Name Type Project Home Comment Status/Contact
Scheme interpreter guile guile Early user reported on list that guile works (package), the guile is already in openwrt-package
kbd console utilities, including fonts mailing list source for package and binary
Links2 browser Links2 Links is a web browser running in both graphics and text mode. (text mode is work now) (also on directfb)
sc ncurses-based spreadsheet binary

[edit] Runs but not yet packaged

Name Type Project Home Comment Status/Contact
nethack You can get the binary package at
any Dingoo A320 software See this mailing list post

[edit] Not yet working

Name Type Project Home Comment Status/Contact
StarDict dictionary StarDict issue tracker Xiangfu
Rockbox music player Rockbox open source firmware for music players, work done targeting jz chip and Onda player
Lout Typesetting system a la LaTeX Lout homepage Lightweight, full-featured document preparation system. See Lout.

[edit] Blue sky

Name Type Project Home Comment Status/Contact
LÖVE 2D game engine for games in Lua dependencies: Lua, SDL, libvorbis, libpng, PhysicsFS (libphysfs) bartbes and Textmode on freenode
man/info documentation OpenWRT program packages usually don't include man/info pages. At least there is available a "mandoc" utility to render manual pages.
GNU Octave numerical computations Experimental package available in openwrt-packages.git Uses experimental Fortran compiler support in toolchain; Needs vm/overcommit_memory setting; Needs proper gnuplot/plplot port; Dvdkhlng
PIM suite to sync with desktop There are calendars with plain-text data formats (Gcal, Calcurse, Remind).
moosic music jukebox
cgdb curses debugger
CenterIM jabber It's available but it requires smaller than default console font in order to be useable. Already done.
zsh shell
DirectVNC VNC client over DirectFB
Artha dictionary Artha homepage suggested by Ron on developer list
Netsurf Web Broswser Netsurf Homepage Self contained web browser, not reliant on other libraries like Dillo.
Dillo browser Dillo Dillo is a multi-platform graphical web browser known for its speed and small footprint In OpenWrt, but broken
stellarium planetarium

[edit] SAKC related

[edit] Audio

  • alsamixer
 need enable the [Output Mixer DAC] by press "m". "Esc" to exit.
  • ncmpc
 ncmpc is a curses client for the Music Player Daemon (MPD)
 "enter" is play, "P" is pause, "s" is stop, "tab" switch display
 "q" is exit, "1" is help information.
  • gmu

download gmu

install Libraries:




[edit] editor

  • vim
  • joe
  • zile like emacs.

[edit] browser

  • lynx
  • links
   "Alt + f" for the menu.

[edit] Misc

[edit] date

The date is not set at the beginning, but setting it manually seems to work OK.

$ date
Thu Jan  1 00:56:39 UTC 1970
$ date -s "2009-09-11 23:07:30"
$ date
Fri Sep 11 23:07:31 UTC 2009

[edit] hwclock

Works fine with newer kernel versions.

$ hwclock
Fri Sep 11 23:07:31 2009 0.000000 seconds

To set the RTC to the current date/time as returned by the date command use:

$ hwclock -w

[edit] SDIO communication protocol

This is the first attempt to an SDIO communication protocol. What this driver does so far is to send a character using the command 52 and the command line of the SD port.

You can find HERE (link to xilinx's project) the project that was used as the SDIO card. It was tested in an Spartan 3e FPGA; what this project does is to response to the different commands the Ben Nano-note sends to initialize and communicate with the device, most of these responses are the same as a WiFi SDIO-card would give.

The driver can be found HERE (link to driver). This driver registers the new device as a tty, it assigns an address to the port and the function the SDIO can implement; it also uses a character like device that you can use to access some of the SDIO functions such write and read. This driver uses the headers in ../drivers/mmc/core/

The next step with this project is to be able to use the four data lines the SD port has to send and receive information, in other words, to use the SD port as a parallel or serial port, for instance.

Personal tools