Update doc

This commit is contained in:
Pali Rohár committed 2012-11-25 22:57:04 +01:00
1 parent e205b47789
commit 1e84b07b39
7 files changed
+134 -203

No files matched your search

-60
View File
@@ -1,60 +0,0 @@
Bug#: 1584
Opened: 2007-06-25 23:06 GMT+3
Reporter: Robert Schuster <thebohemian [at] gmx.net>
Summary: provide system management software under free software licenses
Several applications and libraries found on the N800 internet tablet/IT OS
2007.10 are distributed under restricted and non-free license terms according
to the Debian Free Software Guidelines, Open Source Definition and Free
Software definition.
I hereby politely ask for distributing those components under terms that are
acceptable to the above mentioned guidelines.
The applications of interest are:
from the initfs: activate_panel, bt-cal, cal-tool, fb-chaimage, text2screen,
wlan-cal, wlan-fw-update, retu-time, show_image, dsme, battest, bootstate,
dsmetool, dspctl, waitfordsme and the script linuxrc
the libraries of interest are:
libbmeic.so, libcal.so, libdsme.so, libppu.so, libactivitymonitor.so,
libcalmodule.so, libhwwd.so, libinactivity-blank.so, liblifeguard.so,
libperipheral.so, libprocesswd.so, libstartup.so, libstate.so,
libtemperature.so
There may be other software artifacts which are of interest for which I will
file separate bugreports if there is a need for them.
Rationale:
When Nokia/Maemo decided to use a variant of the GNU operating system and Linux
as its kernel for implementing the Internet Tablet OS they profited from a
wealth of knowledge and work invested in various software projects. With the
help of free software licensing they were allowed to create a unique software
environment which exactly implements the Maemo projects' goals. Maemo has
gained and still gains from those software projects because they are
independently developed further giving Maemo more possibilities in the future.
One of the key goals of the GNU project is to give its user's the freedom to
implement their own ideas. This goal is to be reached by writing free software
and sometimes (in the early days often) replacing proprietary software.
The non-free bits in the core infrastructure of the IT OS 2007 are a road block
for efforts to create free operating systems/distributions besides IT OS on the
770/N800.
The reason for why it is helpful to have other operating system/distribution on
the N800 is simple: There are hundreds of GNU/Linux distributions out there.
Each one exists because there is a userbase that exactly likes their flavor of
GNU/Linux.
For the 770/N800 Internet Tablets there exists only one such distribution: The
Internet Tablet OS. With the sheer amount of GNU/Linux distributions for
desktops/workstations/servers/routers/PDAs on the one hand and the single OS
solution for the Internet Tablets on the other I doubt that it can handle all
the possible uses people have.
By releasing the above mentioned programs/libraries under free software
licenses people will be given the same possibilities the Maemo project had in
the first place.
Let us be free.
+3 -5
View File
@@ -1,16 +1,14 @@
<b>Dumping the firmware</b>
Dumping the firmware:
This technique consists on reconstructing a firmware image dumping
pieces at certains offsets of the device internal memory.
<b></b>
<b>Technical details:</b>
Technical details:
* The internal flash memory is exposed to the system as MTD devices.
* Is possible to dump the individual sections of a flashed firmware.
*
* READ src/dump.c for detailed information.
* READ src/local.c for detailed information.
mtd0 - contains xloader and sencodary pieces of the bootloaders
0x00000 - xloader.bin (size is 0x03600)
+13 -27
View File
@@ -1,38 +1,28 @@
<h2>FAQ</h2>
FAQ:
<b>*) How can I set my Internet Tablet into RD mode with 0xFFFF?</b>
*) How can I set my Internet Tablet into RD mode with 0xFFFF?
Just type '0xFFFF -r 1' as root
Just type '0xFFFF -R 1' as root
<b>*) How can I unpack a FIASCO firmware?
*) How can I unpack a FIASCO firmware?
Just type '0xFFFF -r 1' as root
Just type '0xFFFF -M FiascoFirmware.bin -u'
<b>*) How can I unpack a FIASCO firmware?</b>
*) How can I flash a new rootfs?
Just type '0xFFFF -u FiascoFirmware.bin -e /tmp' as root
# 0xFFFF -m rootfs.jffs2 -f
<b>*) How can I flash a new rootfs?
*) How can I flash a full FIASCO image?
Unpack the pieces from the fiasco firmware (the one distributed by Nokia for example) and then type:
# 0xFFFF -R -p rootfs.jffs
# 0xFFFF -M FiascoFirmware.fiasco -f
<b>*) How can I flash a full FIASCO image?</b>
Advanced commands:
It is not recommended to use, it needs more testing, and is more secure to unpack them first manually
and flash the pieces manually with multiple '-p' flags. If you are brave try:
# 0xFFFF -F FiascoFirmware.fiasco
<h2>Advanced commands</h2>
<b>*) How to extract the firmware pieces from a running device?</b>
*) How to extract the firmware pieces from a running device?
It is possible to dump the firmware pieces from the internal MTD to reconstruct a FIASCO image.
To do this recompile the flasher for ARM and run this command in the device:
@@ -40,10 +30,6 @@
# mkdir /media/mmc1/backup
# 0xFFFF -e /media/mmc1/backup
To dump directly into FIASCO image run:
<b>*) Dumping configuration region</b>
There's a hidden mtd partition containing undocumented configuration information. This one can be
dumped from the device using the following command:
# 0xFFFF -x
# 0xFFFF -E /media/mmc1/backup.fiasco
+18 -18
View File
@@ -1,9 +1,9 @@
<b>FAQ</b>
FAQ2:
This file tries to collect a bunch of common questions/answers about flashing
<b>*) Why implement a free software flasher?</b>
*) Why implement a free software flasher?
The Nokia Internet Tablets are based on Free Software (software libre), but
not everything included *is* free software, for instance, the firmware flasher
@@ -18,7 +18,7 @@ This file tries to collect a bunch of common questions/answers about flashing
powerpc, x86, mips, etc...
<b>*) Can I brick my device?</b>
*) Can I brick my device?
Of course! You're free to do what you want with your device :)
@@ -30,20 +30,24 @@ This file tries to collect a bunch of common questions/answers about flashing
use the flasher provided by Nokia, it's better for your heart's health.
<b>*) What can I do with 0xFFFF?</b>
*) What can I do with 0xFFFF?
Actually 0xFFFF allows you to:
- flash separated pieces of the firmware.
- flash separated pieces of the firmware
- flash full FIASCO image
- load kernel & initfs without flashing
- cold-flash bricked device (without NOLO)
- retrieve information about the device
- reboot de mother board
- extract the current firmware pieces from the device (reverse flash)
- extract the current firmware pieces from the device (dump)
- set the USB host/slave mode
- set the R&R mode
- identify firmware pieces
- set the R&R mode and flags
- pack/unpack FIASCO firmwares
- automatic piece identifier
<b>*) What is NOLO?</b>
*) What is NOLO?
NOLO is the 'server-side' part of the flasher from Nokia. NOLO means
NOkia LOader and it's composed by two pieces of the firmware that are
@@ -59,10 +63,10 @@ This file tries to collect a bunch of common questions/answers about flashing
actions on the device.
<b>*) How can I identify my device?</b>
*) How can I identify my device?
Theorically 770 and n800 have different USB device ID, but this is not
true at all. The first series of the n800 comes with the same usb-id
true at all. The first series of the n800 comes with the same usb-id
than 770. That's weird!
So, the only way to identify the device is by asking nolo for the version
@@ -71,10 +75,6 @@ This file tries to collect a bunch of common questions/answers about flashing
because it wouldn't work :)
<b>*) Can I unpack fiasco blobs?</b>
*) Can I unpack FIASCO blobs?
Actually the fiasco format is not yet supported and not planned in
short term. There is no real need for supporting a proprietary
format image containing a proprietary system.
We can just use tarballs containing the desired pieces.
Yes, last version of 0xFFFF has full support of FIASCO images.
+9 -16
View File
@@ -1,4 +1,4 @@
<b>Nokia tips</b>
Nokia tips:
When developing this tool I've found some bugs and misfeatures that
should be fixed to make flashing safer and cleaner.
@@ -9,7 +9,7 @@ it's really hard to break the device and it works pretty nice. BTW I
think that there are some things that should be fixed.
<b>*) Flashing at low battery level</b>
*) Flashing at low battery level
When the device is under a certain limit of battery it will not start,
this is done by initfs, without any warning message or so, this really
@@ -20,7 +20,7 @@ think that there are some things that should be fixed.
This is *really* dangerous and not very user friendly.
<b>*) Internal nolo state not reset'd</b>
*) Internal nolo state not reset'd
It's possible to get nolo on a strange state that always returns error
when flashing pieces, it's mandatory to reboot the device to recover
@@ -29,7 +29,7 @@ think that there are some things that should be fixed.
This is an strange and not very clear to me.
<b>*) Buffer overflows</b>
*) Buffer overflows
The original nokia flasher has some buffer overflow bugs that should
be fixed. They're safe for 99.9% of cases, but bofs on critical programs
@@ -40,14 +40,7 @@ think that there are some things that should be fixed.
than this one.
<b>*) Missing stuff</b>
There are some flashing options that are not working like passing arguments
to the kernel, set the hw revision or do a cold flash (the most critical
part is undocumented).
<b>*) Weird firmware format</b>
*) Weird firmware format
The (new and old) FIASCO firmware format is not a very clean format, it
doesn't provide any checksumming facility to ensure that the contents of
@@ -64,7 +57,7 @@ think that there are some things that should be fixed.
code could be revised and enhaced by zillions of eyes.
<b>*) Poor checksumming</b>
*) Poor checksumming
The only checksum is a 16 bit xor of the whole firmware piece and it's only
checked after sending the piece to the device.
@@ -73,7 +66,7 @@ think that there are some things that should be fixed.
algorithm. It currently performs a unique check at the end, it could be
better to check each data block to avoid errors or invalid flashing, isn't it ?
<b>*) No validation of pieces before flashing</b>
*) No validation of pieces before flashing
I've implemented a minimal check of the pieces to avoid flashing invalid
pieces on the wrong place. This is done in fpid.c (firmware piece identifier).
@@ -82,7 +75,7 @@ think that there are some things that should be fixed.
that can (pseudo)brick the device.
<b>*) Reverse flashing</b>
*) Reverse flashing
If you want to test a new firmware, but you don't want to loose all the
contents of your device. The only way to do that (afaik) is from the
@@ -94,7 +87,7 @@ think that there are some things that should be fixed.
case of a wrong checksumming (for example)
<b>*) Documentation</b>
*) Documentation
The nokia flasher comes as is, without documentation. This is not good
to anybody, because the lack of information is always the root of problems,
+5 -11
View File
@@ -8,7 +8,7 @@ defined by NOLO on the internal flash memory.
Nokia provides a blob packed with a proprietary format called 'FIASCO'. This
blob contains the following pieces:
- omap-nand - only flashable via serial jtag
- 2nd - for Cold Flashing
- xloader - first part of nolo
- secondary - second part of nolo (usb support and launches kernel)
- kernel - the kernel
@@ -18,21 +18,15 @@ blob contains the following pieces:
Some of these pieces are versioned to match board specific features
(mostly xloader and secondary ones).
This format is not supported by 0xFFFF at this moment, but there are no
plans for doing it in short term. This is because we only need to flash
separated pieces. We can just distribute tarballs containing the pieces
and meta information with a whole Free OS for the internet tablets.
To flash an initfs partition and reboot:
$ 0xFFFF -p initfs%initfs.jffs2 -R
$ 0xFFFF -m initfs:initfs.jffs2 -f -r
The format of the argument is [piece-type] % [file-name] (% [version-string]).
The format of the argument is [[[device:[hw-revision:]]verion:]piece-type:]file-name[%layout-file-name]
Pieces can be automatically identified by using the '-I' flag:
Pieces can be automatically identified by using the '-i' flag:
$ 0xFFFF -I initfs.jffs2
initfs.jffs2: initfs
$ 0xFFFF -m initfs.jffs2 -i
You can dump these pieces from the internal memory of the internet
tablet by using the mtd-utils over /dev/mtd* or just running:
+86 -66
View File
@@ -1,68 +1,88 @@
<b>Usage guide</b>
0xFFFF v0.6 // The Free Fiasco Firmware Flasher
0xFFFF is a free software implementation of the flasher for the Nokia Internet
Tablets (770 and n800).
<pre>
- flash separated pieces of the firmware.
- retrieve information about the device
- reboot de mother board
- extract the current firmware pieces from the device (dump)
- set the USB host/slave mode
- pack/unpack fiasco firmwares
- fine grained R&D flags support
- identify firmware pieces
- dump mtd partitions (embedded mtd-utils source code)
- reconstruct initfs from a dump
- dump config partition
- automatic piece identifier
- console mode (shell like)
</pre>
This is the help message of the tool:
<pre>
<b>~$ 0xFFFF -h</b>
0xFFFF v0.3 // The Free Fiasco Firmware Flasher
-b [arg] boots the kernel with arguments
-c console prompt mode
-C [/dev/mtd] check bad blocks on mtd
-d [vid:pid] injects a usb device into the supported list
-D [0|1|2] sets the root device to flash (0), mmc (1) or usb (2)
-e [path] dump and extract pieces to path
-f <flags> set the given RD flags (see '-f help')
-F [fiasco] flash a fiasco firmware image
-h show this help message
-H [file] calculate hash for file
-i show device information (let standby mode)
-I [piece] identify a firmware piece
-l, -L list supported usb device ids
-p [[p%]file] piece-of-firmware % file-where-this-piece-is
-r [0|1] disable/enable R&D mode
-R reboot the omap board
-s [serial] serial port console (minicom like terminal)
-u [fiasco] unpack target fiasco image
-U [0|1] disable/enable the usb host mode
-v be verbose and noisy
-V show 0xFFFF version information
-x extract configuration entries from /dev/mtd1
Pieces are: xloader secondary kernel initfs rootfs omap-nand
</pre>
Operations:
-b [cmdline] boot default or loaded kernel (default: no cmdline)
-b update boot default or loaded kernel to Update mode
-r reboot device
-l load kernel and initfs images to RAM
-f flash all specified images
-c cold flash 2nd and secondary image
-x [/dev/mtd] check for bad blocks on mtd device (default: all)
-E file dump all device images to one fiasco image, see -t
-e [dir] dump all device images to directory, see -t (default: current)
Before anything we can execute failsafe queries like getting device information:
<pre> <b>~$ 0xFFFF -i</b></pre>
This command will put the bootloader in standby mode, so you can now send other
commands without having to reboot the tablet manually. To reboot the mother
board via USB type:
<pre> <b>~$ 0xFFFF -R</b></pre>
You can run 'offline' commands to identify the type of the firmware pieces:
<pre> <b>~$ 0xFFFF -I zImage -I xloader.bin -I initfs.jffs2.orig</b>
kernel: zImage
xloader: xloader.bin
initfs: initfs.jffs2.orig</pre>
If you want to backup your device firmware you can crosscompile the 0xFFFF
utility and type this on the terminal:
<pre> <b>~$ sudo gainroot</b>
~# mkdir /media/mmc1/firmware
~# ./0xFFFF -e /media/mmc1/firmware</pre>
Now is time to flash something :) By default the flasher identifies the type
of the piece automatically, but you can force't prefixing the filename with
the piece-type name. To do this is just as simple as typing:
<pre> <b>~$ 0xFFFF -p zImage</b></pre>
Device configuration:
-I identify, show all information about device
-D 0|1|2 change root device: 0 - flash, 1 - mmc, 2 - usb
-U 0|1 disable/enable USB host mode
-R 0|1 disable/enable R&D mode
-F flags change R&D flags, flags are comma separated list, can be empty
-H rev change HW revision
-N ver change NOLO version string
-K ver change kernel version string
-T ver change initfs version string
-S ver change SW release version string
-C ver change content eMMC version string
Input image specification:
-M file specify fiasco image
-m arg specify normal image
arg is [[[dev:[hw:]]ver:]type:]file[%lay]
dev is device name string (default: emtpy)
hw are comma separated list of HW revisions (default: empty)
ver is image version string (default: empty)
type is image type (default: autodetect)
file is image file name
lay is layout file name (default: none)
Image filters:
-t types filter images by type
-d dev filter images by device
-w hw filter images by HW revision
Fiasco image:
-u [dir] unpack fiasco image to directory (default: current)
-g file[%sw] generate fiasco image with SW rel version (default: no version)
Other options:
-i identify images
-s simulate, do not flash or write on disk
-n disable hash, checksum and image type checking
-v be verbose and noisy
-h show this help message
R&D flags:
no-omap-wd disable auto reboot by OMAP watchdog
no-ext-wd disable auto reboot by external watchdog
no-lifeguard-reset disable auto reboot by software lifeguard
serial-console enable serial console
no-usb-timeout disable usb timeout for flashing
sti-console enable sti console
no-charging disable battery charging
force-power-key force omap boot reason to power key
Supported devices:
SU-18 Nokia 770
RX-34 Nokia N800
RX-44 Nokia N810
RX-48 Nokia N810 Wimax
RX-51 Nokia N900
Supported image types:
xloader
2nd
secondary
kernel
initfs
rootfs
mmc
cmt-2nd
cmt-algo
cmt-mcusw
Supported connection protocols:
Local on device
NOLO via USB
Cold flashing via USB
Mk II protocol via USB
RAW disk via USB