Difference between revisions of "Ångström"

From Pandora Wiki
Jump to: navigation, search
(merged running linux from sd card)
(merged introduction to firmware)
Line 1: Line 1:
== The following is the firmware page ==
+
== THE FOLLOWING IS THE FIRMWARE PAGE ==
  
 
== Official firmware ==
 
== Official firmware ==
Line 62: Line 62:
  
  
== The Following is the old angstrom page ==
+
== THE FOLLOWING IS THE ANGSTROM PAGE ==
  
 
{{FIXME|How do I know what hotfix I have? (spiralofhope has notes somewhere)}}
 
{{FIXME|How do I know what hotfix I have? (spiralofhope has notes somewhere)}}
Line 501: Line 501:
 
[[Category:Operating system]]
 
[[Category:Operating system]]
  
 +
== THE FOLLOWING IS THE INTRODUCTION TO FIRMWARE PAGE ==
 +
{{introNote|This page is an extension to the un-official [[User manual|users guide]], and discusses the system software which comes pre-loaded with the Pandora}}
 +
 +
==Pandora Firmware Governance==
 +
 +
The Pandora device is an open ecology -- only some of the [[hardware]] designs and occasional binary blobs like the [[WiFi driver]] are currently not open source; the rest of the firmware stack is open source (predominantly GPL with some LGPL). Not only can you rebuild your own firmware, altering it as you see fit .. you can fork it or run another firmware entirely! This is a device that was made for tinkering!
 +
 +
The official [[firmware]] is open source and open to patches from the public; to maintain high quality firmware releases a process needs to exist -- audit trails need to be kept to ensure licensing is clear, testing has to be ensured to keep quality high, and our standard practice for submission made clear so it is easy and swift to submit your work.
 +
 +
This process itself is open source -- as the ecosystem expands our model will change with it; if you are seeing problems, then contact one of the [[maintainers]], leadership team, mailing list, or the [[community]] at large and help us sort it out :)
 +
 +
 +
The firmware is all of the software that is supplied with a device, so does include the applications which are provided as standard. The vast majority of the [[firmware]] is open source (meaning that OpenPandora provides the source code, often as a requirement of the [http://www.gnu.org/licenses/gpl.html GNU GPL]). A small quantity of the firmware is provided as binary files, which OpenPandora may not be at liberty to disclose the full details of. An example of closed source firmware is for the analogue nubs, which are shipped with small micro-controllers pre-programmed by the nub manufacturer.
 +
 +
== Updating The Firmware ==
 +
Official updates to the firmware are currently provided as full reflash images for installation to the internal NAND flash (where the default firmware is installed).  Images for installation to an SD card are also supplied.  Both types of images can be found on the [http://openpandora.org/firmware/ official firmware website/folder].  Also note the [http://openpandora.org/firmware/README.txt README.txt file] in that folder which contains further instructions.
 +
 +
 +
=== Installing Angstrom packages ===
 +
It is possible to install applications from the [http://www.angstrom-distribution.org/repo Angstrom distribution repository] using the following commands
 +
<source lang="bash">
 +
opkg list
 +
opkg install <name of package>
 +
</source>
 +
from the terminal as super-user. Note that by default, this will install to the [[NAND]], and there is not much free space to install more than a few small packages. Filling up the NAND is bad, since it will prevent the system from working properly. Also note that there is no guarantee that packages from the angstrom repository will be compatible with the versions of other software included in the firmware. See [[Introduction to apps]] for more details about installing applications. These update processes should work equally well if you have booted from a copy of the Pandora OS on SD card.
 +
 +
== Replacing the Firmware (Un-bricking) ==
 +
 +
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware. This ought to be regarded as a last resort in the case of problems, there is almost certainly a simpler way to fix most problems.
 +
 +
The process for reinstalling the firmware is as follows: [http://www.gp32x.com/board/index.php?/topic/53637-first-boot-its-asking-for-a-login-and-password/page__view__findpost__p__858053]
 +
# Extract the contents of the zip to root (main) directory (folder) of your SD card. Fat32 and ext2 filesystems are supported.
 +
# Make sure the pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).
 +
# Insert that SD card into pandora's left slot (it's the first one, closer to headphone jack).
 +
# Press and hold the right trigger ('R'), then turn the power on (if you have battery removed, insert it while holding R).
 +
# A menu should appear on screen. Select "boot from SD1" using the d-pad by pressing B or X.
 +
# Wait for flash process to finish. Connect the charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.
 +
# The device should turn off, press power (without holding R) to turn it back on.
 +
# It should then start it's first boot process which might take up to 15 minutes, be sure to wait for it to finish, otherwise firmware corruption might happen again.
 +
 +
The latest firmware release can be found on the OpenPandora support [http://www.openpandora.org/ page]. Look for Support (11/2012 Community & Support) and Firmware (11/2012 Updates & Firmware).
 +
 +
In case of emergency, there is an older version
 +
[http://notaz.gp2x.de/releases/pandora/pandora-firmware-2010-05-01-Zaxxon.zip here] (Version: 2010-05-01-[[Zaxxon]])
 +
 +
Remember that you will need to re-install the codec pack after replacing the firmware.
 +
 +
== Booting the Pandora OS from SD ==
 +
 +
The hardware is capable of booting entirely from SD (as is used for the section above); if the device is bricked or otherwise has a blank [[NAND]], this could be an option. Furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system and boot your system regularly from one of the SD cards.
 +
 +
There are several possible approaches:
 +
 +
* Boot entirely from SD card, with a single [[partition]] (which must support linux permissions, [[ext2]], [[ext3]] etc)
 +
* Boot from SD, but with multiple partitions for boot, root and even swap. It used to be the case that this was necessary, to permit a [[FAT32]] boot partition to exist.
 +
* Setting things up to boot from [[NAND]], but use the SD as a root partition
 +
* More complex mounting strategies, extending a single [[filesystem]] across SD and NAND.
 +
 +
Some strategies will require that you keep one SD permanently mounted, and could result in a non-functioning setup if that card is lost. [[PND]] files make it easier to swap in and out applications, but any permanent storage required by the application will generally be kept in a separate location.
 +
 +
See [[Running Linux from an SD card]] for some basic instructions.
 +
 +
== Debugging broken firmware ==
 +
If you have a problem booting the firmware, and want to investigate before just replacing (or need to try and rescue some data from the [[NAND]]) you can boot into a console by doing the following: Make a file named [[boot.txt]] in root of SD with this[http://www.gp32x.com/board/index.php?/topic/54918-unbricking-my-pandora/page__view__findpost__p__885362]:
 +
<pre>
 +
setenv bootargs ubi.mtd=4 ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs rw rootflags=bulk_read console=tty0 vram=6272K omapfb.vram=0:3000K init=/bin/bash
 +
ubi part boot && ubifsmount boot && ubifsload 0x80300000 uImage && bootm 0x80300000 && boot
 +
</pre>
 +
then holding down the right shoulder button on boot and booting from the SD card. (It doesn't require an operating system on the SD card, but it will use the boot configuration specified there). This is a text mode boot to the shell, using the [[kernel]] from the [[NAND]].
 +
This should provide a way of bypassing any broken startup scripts, adding in logging for a normal boot, etc. It does not start the full OS, just a basic shell.
 +
 +
==Submission Workflow==
 +
 +
The general workflow for submitting a [[patch]] is something like this:
 +
 +
# Clone the appropriate section of the GIT repository - GIT is http://git.openpandora.org/cgi-bin/gitweb.cgi
 +
# Apply changes and have fun
 +
# Document and pass test cases
 +
# Contact the maintainer of the subdomain the patch falls within - by mailing list above, or perhaps by PM in the forums, or email; for example, post first to the mailing list. In a pinch for libpnd submissions talk to skeezix, or notaz regarding kernel changes. But talk to the mailing list first, to keep discussion logged and centralized; if a backup neds to step up, the post history will already be there, right?
 +
# If the maintainer is unavailable, contact the backups as listed above; they will know how to contact the champion, or can make the submission call themselves.
 +
# If the maintainer and backups are not available, contact EvilDragon as release maintainer
 +
 +
==Submission Standards==
 +
 +
Submission are welcome! Historically the firmware has been built by a very small team, but that [[team]] size limits the number of changes that can be managed and developed simultaneously. If you've the skills and motivation to help, feel free to join the fray!
 +
 +
Patches have a few requirements; failing these requirements will cause your patch to be overlooked!
 +
 +
* '''Clearly documented''' -- what is this patch for?
 +
* '''Clearly tested''' -- a list of test cases and test results -- the onus is on the submitter to test and prove testing; the committers have limited time and many people talking to them
 +
* '''Proper format''' -- unix line ending, not dos line endings :)
 +
 +
[[Category:Documentation]]
 +
[[Category:Operating system]]
  
  
 
[[Category:Software]]
 
[[Category:Software]]

Revision as of 16:32, 13 September 2013

Contents

THE FOLLOWING IS THE FIRMWARE PAGE

Official firmware

General Notes

  • When the firmware is reinstalled, all personal files and settings stored on internal flash are DELETED (your PND applications and all data on your SD cards will not be touched).
    Your Pandora will revert to it's default settings and show the first boot wizard on bootup.
  • Remember that your Pandora will turn on as soon as a charger is connected. It's also not possible to completely power down a Pandora that's connected to an external power supply.
  • Even while charging, a Pandora can be rebooted, either by software (for example, during the installation process below), or with the reboot hotkey: Hold the Pandora button on the keyboard, and flick the power switch to the right.
  • Do not connect an external power supply while the battery is removed.

Firmware Download

You can download the latest version of the official firmware here:

Download firmware image of SuperZaxxon 1.55 (2013-07)

In case you need them, you can download older firmware relases here.

This package includes all the files required for a full reflash. Please only use it if you really need to. Reflashing CAN solve some problems, but it's not the magical tool that can fix everything. Before reflashing, you should always try to find another solution. You can get help at the Support Section at the boards.

Flash Process

If you ever need to reflash the firmware: it's not a hard thing to do. Just be sure to follow the instructions carefully.

  1. You need an SD card formatted with the FAT32 filesystem (default on Windows). Extract the contents of the firmware .zip file to the root (top level) directory of that card.
  2. Make sure your Pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).
  3. Insert the SD card into your Pandora's first slot (the one on the left, closer to headphone jack).
  4. Press and hold the right shoulder button ('R'), then turn the power on (if you removed the battery, insert it while holding 'R').
  5. A text menu should appear on screen. Switch to "boot from SD1" using the d-pad, and select this entry with either the 'B' or 'X' controller button.
  6. Wait for the flash process to finish. Connect a charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.
  7. If you use an external power supply, the device will reboot. Othwerwise, it should turn off - in this case press power (without holding 'R') to turn it back on.
  8. It should then start it's first boot process which might take up to 15 minutes. Be sure to wait for it to finish, otherwise firmware corruption might happen. The installation process will show some warnings, which can be safely ignored.
  9. When everything is set up, you will be guided through the first boot wizard.

All the firmwares can be found here.

Advanced users can get raw firmware images and rootfs (for SD Card bootup) as well as older versions here.

Updating SuperZaxxon

For an overview of new features since the previous "final" SuperZaxxon 1.50 (2012-06), have a look at the SuperZaxxon 1.52 release announcement thread.

SuperZaxxon 1.50 can be upgraded to 1.52 without reinstallation by downloading and running the Pandora SuperZaxxon updater PND.

Versions after SuperZaxxon 1.52 come with an online firmware update utility: Just select System -> Upgrade Pandora OS from the Pandora menu to download the latest system packages (needs working internet connection).

Community Codec Package - for Pandora OS, Release 2010-05

Due to licensing issues, the Pandora does not have any licensed codecs like MP3 or MPEG-Video installed on the default OS. You can install them using this Codec Package. This package will install Gnome-MPlayer as well as a lot of audio / video-plugins and enables NTFS-support. To install it, simply download the .PND-Package and place it into either the /pandora/menu or /pandora/desktop - Folder on your SD-Card. Simply start it and follow the on-screen instructions. You can remove the .PND-Package from the card once it has been installed.

Legal Notice

Patent and copyright laws operate differently depending on which country you are in. Please obtain legal advice if you are unsure whether a particular patent or restriction applies to a media format you wish to use in your country.

Click here to download Community Codec Pack

The Codec Package enables NTFS-Support and installs the following packages

boost-date-time_1.41.0-r8.1.5, boost-thread_1.41.0-r8.1.5, directfb_1.4.2-r0.5, gnash_0.8.5-r6.5, gnome-mplayer_0.9.9.2-r10.0.5, gst-plugin-alaw_0.10.13-r1.1, gst-plugin-alpha_0.10.13-r1.1, gst-plugin-alphacolor_0.10.13-r1.1, gst-plugin-alsaspdif_0.10.6-r2.1, gst-plugin-annodex_0.10.13-r1.1, gst-plugin-apetag_0.10.13-r1.1, gst-plugin-audiofx_0.10.13-r1.1, gst-plugin-auparse_0.10.13-r1.1, gst-plugin-autodetect_0.10.13-r1.1, gst-plugin-avi_0.10.13-r1.1, gst-plugin-bayer_0.10.6-r2.1, gst-plugin-bz2_0.10.6-r2.1, gst-plugin-cairo_0.10.13-r1.1, gst-plugin-cdxaparse_0.10.6-r2.1, gst-plugin-cutter_0.10.13-r1.1, gst-plugin-debug_0.10.13-r1.1, gst-plugin-deinterlace_0.10.6-r2.1, gst-plugin-dfbvideosink_0.10.6-r2.1, gst-plugin-dvb_0.10.6-r2.1, gst-plugin-dvdspu_0.10.6-r2.1, gst-plugin-efence_0.10.13-r1.1, gst-plugin-effectv_0.10.13-r1.1, gst-plugin-equalizer_0.10.13-r1.1, gst-plugin-esd_0.10.13-r1.1, gst-plugin-faac_0.10.6-r2.1, gst-plugin-faad_0.10.6-r2.1, gst-plugin-festival_0.10.6-r2.1, gst-plugin-filter_0.10.6-r2.1, gst-plugin-flvdemux_0.10.6-r2.1, gst-plugin-flxdec_0.10.13-r1.1, gst-plugin-freeze_0.10.6-r2.1, gst-plugin-gamma_0.10.13-r1.1, gst-plugin-gdkpixbuf_0.10.13-r1.1, gst-plugin-goom_0.10.13-r1.1, gst-plugin-goom2k1_0.10.13-r1.1, gst-plugin-gsm_0.10.6-r2.1, gst-plugin-h264parse_0.10.6-r2.1, gst-plugin-halelements_0.10.13-r1.1, gst-plugin-icydemux_0.10.13-r1.1, gst-plugin-id3demux_0.10.13-r1.1, gst-plugin-interleave_0.10.13-r1.1, gst-plugin-ivorbis_0.10.6-r2.1, gst-plugin-jack_0.10.6-r2.1, gst-plugin-jpeg_0.10.13-r1.1, gst-plugin-level_0.10.13-r1.1, gst-plugin-matroska_0.10.13-r1.1, gst-plugin-metadata_0.10.6-r2.1, gst-plugin-modplug_0.10.6-r2.1, gst-plugin-monoscope_0.10.13-r1.1, gst-plugin-mpeg4videoparse_0.10.6-r2.1, gst-plugin-mpegtsparse_0.10.6-r2.1, gst-plugin-mpegvideoparse_0.10.6-r2.1, gst-plugin-mulaw_0.10.13-r1.1, gst-plugin-multifile_0.10.13-r1.1, gst-plugin-multipart_0.10.13-r1.1, gst-plugin-mve_0.10.6-r2.1, gst-plugin-navigationtest_0.10.13-r1.1, gst-plugin-nsf_0.10.6-r2.1, gst-plugin-nuvdemux_0.10.6-r2.1, gst-plugin-ossaudio_0.10.13-r1.1, gst-plugin-png_0.10.13-r1.1, gst-plugin-pulse_0.10.13-r1.1, gst-plugin-qtdemux_0.10.13-r1.1, gst-plugin-rawparse_0.10.6-r2.1, gst-plugin-replaygain_0.10.13-r1.1, gst-plugin-rfbsrc_0.10.6-r2.1, gst-plugin-rtp_0.10.13-r1.1, gst-plugin-rtpmanager_0.10.6-r2.1, gst-plugin-rtsp_0.10.13-r1.1, gst-plugins-bad_0.10.6-r2.1, gst-plugins-bad-apps_0.10.6-r2.1, gst-plugins-bad-meta_0.10.6-r2.1, gst-plugin-sdpelem_0.10.6-r2.1, gst-plugin-selector_0.10.6-r2.1, gst-plugins-good_0.10.13-r1.1, gst-plugins-good-apps_0.10.13-r1.1, gst-plugins-good-meta_0.10.13-r1.1, gst-plugin-smpte_0.10.13-r1.1, gst-plugin-sndfile_0.10.6-r2.1, gst-plugin-souphttpsrc_0.10.13-r1.1, gst-plugin-spectrum_0.10.13-r1.1, gst-plugin-speed_0.10.6-r2.1, gst-plugin-speexresample_0.10.6-r2.1, gst-plugin-stereo_0.10.6-r2.1, gst-plugin-tta_0.10.6-r2.1, gst-plugin-udp_0.10.13-r1.1, gst-plugin-vcdsrc_0.10.6-r2.1, gst-plugin-video4linux2_0.10.13-r1.1, gst-plugin-videobalance_0.10.13-r1.1, gst-plugin-videobox_0.10.13-r1.1, gst-plugin-videocrop_0.10.13-r1.1, gst-plugin-videoflip_0.10.13-r1.1, gst-plugin-videomixer_0.10.13-r1.1, gst-plugin-videosignal_0.10.6-r2.1, gst-plugin-vmnc_0.10.6-r2.1, gst-plugin-wavenc_0.10.13-r1.1, gst-plugin-wavparse_0.10.13-r1.1, gst-plugin-y4menc_0.10.6-r2.1, libaudiofile0_0.2.6-r8.5, libdiscid0_0.2.2-r0.5, libdvdcss2_1.2.10-r1.5, libdvdread3_0.9.7-r1.5, libesd0_0.2.36-r3.5, libfaad0_2.0-r2.5, libgdbm3_1.8.3-r3.5, libgif4_4.1.6-r2.5, libgnashamf_0.8.5-r6.5, libgnashbase_0.8.5-r6.5, libgpod_0.7.92-r0.5, libldap-2.4-2_2.4.21-r0.5, libmusicbrainz3-6_3.0.2-r1.5, libneon25_0.25.5-r4.5, libpulse0_0.9.15-r9.6.5, libpulsecommon_0.9.15-r9.6.5, libsamplerate0_0.1.7-r1.5, libxss1_1.2.0-r1.5, mplayer_0.0+1.0rc3+svnr30165-r20.5, mplayer-common_0.0.1-r1.5.


THE FOLLOWING IS THE ANGSTROM PAGE

Note

In general it's possible to apply hotfixes to any lower firmware versions without installing all previous hotfixes.

For the easy and up-to-date firmware install, go to the OpenPandora website under Community and Support, and choose Official Updates and Firmware. Here's a link as of Oct 2012.

SuperZaxxon Final

Jun 28 2012 SuperZaxxon final released CHECK ON BOARDS FOR LATEST

Repositories

FIRMWARE BUILD INSTRUCTIONS

openembedded.git

This the the OpenEmbedded repository containing recipes for all kinds of stuff.

Head Content
op.openembedded.next .next with Pandora specific changes
org.openembedded.dev .dev without any changes
op.openembedded.dev .dev with Pandora specific changes
op_unstable Something unstable I'm guessing

openpandora.oe.git

This is a Pandora specific OpenEmbedded overlay containing recipes only used on the Pandora.

Head Content
master
overlay.next
overlay.stable

pandora-oe-environment.git

This contains scripts to set up bitbake, and the above OpenEmbedded repositories.


Setting up environment

git clone git://git.openpandora.org/pandora-oe-environment.git pandora-firmware
cd pandora-firmware
source ./op-env-oe.sh
./initial-setup.sh

Building Yars' Revenge W.I.P.

Query aTc or DJWillis until you get a response.

The following instructions will allow you to build the current .next image. remember that your building the tip of the expermental tree and not everything even remotely works. Best for people who want to hack and help get it into shape. Do not expect anything remotely good enough to run on your Pandora for real

It is suggested that you use debian or a debian chroot. In addidtion to the base debian install you will need autoconf automake build-essential coreutils diffstat diffstat texi2html gawk chrpath docbook-utils fdisk gawk gcc git git-core gnome-doc-utils groff help2man libc6-dev-i386 libsdl1.2-dev liburi-perl make mercurial python-pysqlite2 qemu-arm-static scrollkeeper subversion texi2html texinfo unzip util-linux x11-xserver-utils

cd <INSTALLDIR>
git clone git://github.com/openpandora/openpandora-oe-environment.git
cd openpandora-oe-environment
./openpandora-setup.sh config

This will install a number of git reposiries containing the build tools and recipes bitbake openembedded-core meta-openembedded meta-angstrom meta-texasinstruments meta-openpandora

  • the basic hardware layer that works with OpenEmbedded and can be used in most OpenEmbedded distributions (Angstrom, Yocto, SHR etc.). That hardware layer also needs meta-texasinstruments (the scripts will bring that in, the Angstrom ones or ours).

meta-openpandora-vendor

  • the vendor (i.e. openpandora) specific stuff, scripts, tweaks, image files, task files (i.e. what to install and order) and some recipes for things like libpnd.

From time to time you will want to update and fetch the changes to the base and openpandora recipes. e.g. those report on #openpandora by CIA-57

. ~/.oe/environment-openpandora
cd <INSTALLDIR>/openpandora-oe-environment
./openpandora-setup.sh update

There are a number of recipes for build images in openpandora-oe-environment/metadata/meta-openpandora-vendor/recipes-core/images pandora-core-image no desktop or X11 pandora-xfce-image XFCE desktop environment systemd-pndwip-image

. ~/.oe/environment-openpandora
cd <INSTALLDIR>/openpandora-oe-environment/build
bitbake systemd-core-image

This will download required sources and package dependancies, depending on the state of updatesm, build packages and produc an image.

The preferred method for sending patches for meta-openpandora and meta-openpandora-vendor is to create a fork in github apply you changes and send pull requests to OpenPandora Firmware mailing list: firmware-dev@openpandora.org Subscribe at: http://openpandora.org/cgi-bin/mailman/listinfo/firmware-dev


Zaxxon Hotfixes

The original Zaxxon firmware has been updated with a number of Hotfixes. Since then, a newer firmware called SuperZaxxon has been released.

Warning: If you do not have Zaxxon installed (boot screen says SuperZaxxon or something else), do not attempt to install any of these hofixes, doing so will break the system.

Hotfix 6

Bugs and solutions

In general, the latest information about bugs will be on the official bugtracker; that is also the best place to go report a bug.

PNDs won't run

So you can start Xfce, but you can no longer run any programs or switch to Minimenu since you upgraded to HF6?

This can easily be solved without a reflash.

valhalla This problem is because of version 1.0-r58.5 of the pandora-scripts package that includes some files that it should not have included and conflicts with the new version of pandora-libpnd. That version is installed at least in HF5rc2.
  1. Open a terminal in the location where you put your HF6 update PND. In the default file browser, you can do this by right-clicking in the folder where the PND is, and selecting "open terminal here". For example, if you put it on your desktop (/pandora/desktop), the text in the terminal to the left of your cursor should look something like username-openpandora:/media/pandora/mmcblk0p1/pandora/desktop$
  2. Type in sudo mkdir /mnt/pnd and press "enter". If it asks you for your password, type in what you use to log in to your Pandora, then press "enter".
  3. Type in sudo mount -o loop HF6-Updater.pnd /mnt/pnd and press "enter"
  4. Now we'll go to the packages directory in the PND and reinstall a couple of packages. Type in cd /mnt/pnd/packages/other/ and press "enter"
  5. Type in sudo opkg install pandora-libpnd_1.0-r56.5_armv7a.ipk and press "enter"
  6. Type in sudo opkg install pandora-skel_1.0-r9.5_omap3-pandora.ipk and press "enter"
  7. To unmount the PND, type in sudo umount /mnt/pnd and press "enter". If it says it can't unmount it, just restart your Pandora.
  8. That's it, your Pandora should work again!

Beta versions

Hotfix 5

  • Information and discussion: OP GP32X (2011-03-04)

Beta versions

Hotfix 4

  • Information and discussion: OP GP32X (2010-08-31)

Beta versions

Hotfix 3

Beta versions

Hotfix 2

Beta versions

Hotfix 1

Original firmware

  • You can download the very first release of the Pandora's Zaxxon firmware from here (2010-05-01)

THE FOLLOWING IS THE RUNNING LINUX FROM SD CARD PAGE

Introduction

As described in the Introduction to firmware page, the Pandora is able to boot from an SD card. This tutorial explains the steps necessary to create an SD card with a copy of the Angstrom operating system which you can boot. If you do not want to run these steps manually, there also exists a utility (as a standard PND package) which can guide you through that process: Pandora SD installer


Get a copy of the firmware

There are methods you can use to get the data off your Pandora's NAND, this topic discusses them. It is easier, however, to just extract a tar file.

  • Take a look here (pandora-rootfs.tar.bz2 is what you want) and get the latest version from the official Open Pandora site. Note that this firmware version may be unstable and comes untested!
  • You can also copy your running firmware on the NAND to the SD partition. This is shown in its own section below.


Option 1: Use the GUI-driven SD installer tool

Instead of installing the firmware manually on the SD card (as described further below under "Option 2"), you may use the GUI-driven tool sd_installer.pnd by David Boucher, which automates the entire process. http://repo.openpandora.org/?page=detail&app=sd-install-2011-03-10

You only need the downloaded firmware tarball, the sd_installer.pnd and a suitable SD card.


Option 2: Manually install the OS on the SD card

Partition your SD card

This is an optional step.

If you want to slice your SD card into several partitions (see Setting up mutliple-partition SD cards), you can use the cfdisk command-line tool on the Pandora to create a partition table. Note that - as of Zaxxon HF5 - the Pandora firmware doesn't have a command to format FAT partitions, so if you want to use the FAT/ext2/swap - scheme, you'll have to format the first partition on another system later on (under Windows, use the Disk Management tool).

Assuming your card is in the left slot:

sudo cfdisk -z /dev/mmcblk0

WARNING: mmcblk0 will not necessarily be the left slot. It's the first card that the system recognizes, which is usually the left slot (but not if you inserted an SD into the left slot after you had one in the right slot, for example). Please make sure before you do anything dangerous.

cfdisk -z starts off with a clean partition table - if you want to see what's set up currently, use cfdisk /dev/mmcblk0.

Use only primary partitions (so you're limited to four slices).

Format SD card to ext2

You need to format your SD card to have a single ext2 partition; ext3 also works[1] and is more reliable[2]. You can have a second, swap partition, as well if you like. There are command line tools you can use as well as GUI tools.

Using the command line

Take care with using these command line tools, to be certain you are accessing the correct device. They will not ask you and will DESTROY any data on the device. This command will replace an existing partition with an empty EXT2 formatted filesystem (this includes the single FAT partition most SD cards come shipped with). Assuming /dev/mmcblk0p1 for your SD device (left slot, first partition), LABELNAME for the partition:

mkfs.ext2 -L LABELNAME /dev/mmcblk0p1

If you run into problems with formatting the SD card, try unmounting it first:

sudo umount /media/[LABELNAME of SD card]

Using a GUI tool

The GUI tools are simple enough that you shouldn't need someone to tell you how to use them. For now this is left as an exercise left for the reader (until someone wants to write up how to do it).

Copy and boot

Copy the files to your SD card

Navigate (cd) to the directory with the .tar.bz2 file you just downloaded (or made) and do:

sudo tar -xvjf <tarfile>.tar.bz2 -C <SD card>

If you're doing this on your Pandora, <SD card> is something like /media/mmcblk0p1 (first SD card slot on Pandora). On Ubuntu it would be something like /media/disk if it has no label. You can also try using GUI tools for this, but I didn't have very good luck with them.

OR copy your firmware from the NAND to the SD card

The following will ask for your password. All the operations need root permissions so I thought it would be wasteful to sprinkle sudo to everything. We will bind mount the root fs to an alternative location ("/mp"), under which other filesystems mounted under root (like the kernel virtual filesystems /proc and /sys, and your SD card.) wont be visible. This allows us to take a live copy of the NAND contents to the SD filesystem.

sudo su
mkdir /mp
mount --bind / /mp
cp -va /mp/* /media/<SD card>
umount /mp
rmdir /mp
exit

Set up your boot.txt

Create a new file called boot.txt (or autoboot.txt if you want to boot automatically) and copy and paste the text below. Copy that file to the root of the root of the SD card.



boot.txt (from the official firmware site)

setenv bootargs root=/dev/mmcblk0p1 rw rootwait vram=6272K omapfb.vram=0:3000K mmc_core.removable=0
ext2load mmc 0 0x80300000 /boot/uImage-3
bootm 0x80300000

Note: depending on firmware version kernels might be at several, sometimes multiple locations, so you have to choose one:

  • /boot/uImage-3 - the default 3.2 kernel (recommended)
  • /lib/boot/uImage - alternative location of 3.2 kernel on certain older firmwares
  • /boot/uImage - the old 2.6 kernel

Be aware though that this boot.txt assumes you have formatted your card with ext2 and loads the kernel off the SD card. It is possible to boot the kernel from NAND with following boot.txt

setenv bootargs root=/dev/mmcblk0p1 rw rootwait vram=6272K omapfb.vram=0:3000K mmc_core.removable=0
ubi part boot && ubifsmount boot && ubifsload ${loadaddr} uImage && bootm ${loadaddr} && boot

However this is not recommended because kernel modules on SD card will likely be not compatible with kernel on NAND.

Both boot.txt's assume you are booting from the left SD card slot, first partition. You can change "mmcblk0p1" to "mmcblk1p1" if you want to boot from the right slot (but boot.txt must still be on a card on the left slot). Note: If you chose ext3 instead of ext2, the second line still starts with ext2load. There is no ext3load.

Setting up mutliple-partition SD cards for booting

It is possible to have several partitions on the SD card and boot from one of them. E.g. if you have three partitions on the card like this:

  • Partition 1: FAT
  • Partition 2: ext2 (where the rootfs should be placed)
  • Partition 3: swap


How it's done:

1. Put uBoot's boot control files "boot.txt" and/or "autoboot.txt" into the root of the first partition of the card (FAT partition in this example)

2. Make "boot.txt" and "autoboot.txt" point U-Boot to the partition, which holds the root file system of your Linux system. This would be parition 2 in this example (ext2 FS). This is done using the "root" parameter of setenv.

3. Make "boot.txt" and "autoboot.txt" point U-Boot to the correct location to boot your kernel from. This kernel location can be any FAT or ext2/3/4 partition on the SD card. The uBoot commands "fatload" and "ext2load" with their parameter "mmc x:y" are repsonsible for loading the kernel. Choose the command, which addresses the file system the kernel is located on and make sure to correctly adapt the values x and y.

This common example boots the kernel from the FAT partition (then this is a "boot partition"), and uses the ext2 file system as root FS:

setenv bootargs root=/dev/mmcblk0p2 rw rootwait vram=6272K omapfb.vram=0:3000K mmc_core.removable=0
fatload mmc 0:1 0x80300000 uimage
bootm 0x80300000

If you put the kernel into the root file system's /boot directory, the second line would be different:

setenv bootargs root=/dev/mmcblk0p2 rw rootwait vram=6272K omapfb.vram=0:3000K mmc_core.removable=0
ext2load mmc 0:2 0x80300000 /boot/uImage
bootm 0x80300000

Note:

For "root=" kernel argument, slot numbering begins at 0 (0 is left SD slot, 1 is right SD slot) and partition numbering begins at 1!

For "mmc x:y" agrument of the fatload/ext2load commands, x is the card number (0 is left slot, 1 is right slot), y is the partition number, beginning at 1(!).


Recommendation:

Put the kernel into another partition than the root FS is located. Reason: In case the root FS partition is flagged "inconsistent" after a system crash or sudden SD card removal, uBoot won't be able to boot from that partition anymore. But the file system cleanup routines can only be run, once the kernel has been booted. Hence it's safer to put the kernel on a different partition.


Boot the system

As you power up the Pandora, hold the shoulder button R. A menu should appear, allowing you to boot from the SD card. (this step isn't necessary if you chose to create an autoboot.txt instead of boot.txt). Remember that this will be an un-configured image, taking a little while longer to boot, and giving the first-run dialogue.

Access the NAND

Once you're booted into the system from SD, you may want access to the NAND rootfs. The following will let you do that.

sudo mkdir /mnt/nand
sudo ubiattach /dev/ubi_ctrl -m 4
sudo mount -t ubifs ubi0:rootfs /mnt/nand

Other information

An alternative approach to using an SD card to increase the space accessible to the system is OS Extend. This allows the root filesystem to exist on more than one physical device.

References

THE FOLLOWING IS THE INTRODUCTION TO FIRMWARE PAGE

This page is an extension to the un-official users guide, and discusses the system software which comes pre-loaded with the Pandora

Pandora Firmware Governance

The Pandora device is an open ecology -- only some of the hardware designs and occasional binary blobs like the WiFi driver are currently not open source; the rest of the firmware stack is open source (predominantly GPL with some LGPL). Not only can you rebuild your own firmware, altering it as you see fit .. you can fork it or run another firmware entirely! This is a device that was made for tinkering!

The official firmware is open source and open to patches from the public; to maintain high quality firmware releases a process needs to exist -- audit trails need to be kept to ensure licensing is clear, testing has to be ensured to keep quality high, and our standard practice for submission made clear so it is easy and swift to submit your work.

This process itself is open source -- as the ecosystem expands our model will change with it; if you are seeing problems, then contact one of the maintainers, leadership team, mailing list, or the community at large and help us sort it out :)


The firmware is all of the software that is supplied with a device, so does include the applications which are provided as standard. The vast majority of the firmware is open source (meaning that OpenPandora provides the source code, often as a requirement of the GNU GPL). A small quantity of the firmware is provided as binary files, which OpenPandora may not be at liberty to disclose the full details of. An example of closed source firmware is for the analogue nubs, which are shipped with small micro-controllers pre-programmed by the nub manufacturer.

Updating The Firmware

Official updates to the firmware are currently provided as full reflash images for installation to the internal NAND flash (where the default firmware is installed). Images for installation to an SD card are also supplied. Both types of images can be found on the official firmware website/folder. Also note the README.txt file in that folder which contains further instructions.


Installing Angstrom packages

It is possible to install applications from the Angstrom distribution repository using the following commands

opkg list
opkg install <name of package>

from the terminal as super-user. Note that by default, this will install to the NAND, and there is not much free space to install more than a few small packages. Filling up the NAND is bad, since it will prevent the system from working properly. Also note that there is no guarantee that packages from the angstrom repository will be compatible with the versions of other software included in the firmware. See Introduction to apps for more details about installing applications. These update processes should work equally well if you have booted from a copy of the Pandora OS on SD card.

Replacing the Firmware (Un-bricking)

Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware. This ought to be regarded as a last resort in the case of problems, there is almost certainly a simpler way to fix most problems.

The process for reinstalling the firmware is as follows: [3]

  1. Extract the contents of the zip to root (main) directory (folder) of your SD card. Fat32 and ext2 filesystems are supported.
  2. Make sure the pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).
  3. Insert that SD card into pandora's left slot (it's the first one, closer to headphone jack).
  4. Press and hold the right trigger ('R'), then turn the power on (if you have battery removed, insert it while holding R).
  5. A menu should appear on screen. Select "boot from SD1" using the d-pad by pressing B or X.
  6. Wait for flash process to finish. Connect the charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.
  7. The device should turn off, press power (without holding R) to turn it back on.
  8. It should then start it's first boot process which might take up to 15 minutes, be sure to wait for it to finish, otherwise firmware corruption might happen again.

The latest firmware release can be found on the OpenPandora support page. Look for Support (11/2012 Community & Support) and Firmware (11/2012 Updates & Firmware).

In case of emergency, there is an older version here (Version: 2010-05-01-Zaxxon)

Remember that you will need to re-install the codec pack after replacing the firmware.

Booting the Pandora OS from SD

The hardware is capable of booting entirely from SD (as is used for the section above); if the device is bricked or otherwise has a blank NAND, this could be an option. Furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system and boot your system regularly from one of the SD cards.

There are several possible approaches:

  • Boot entirely from SD card, with a single partition (which must support linux permissions, ext2, ext3 etc)
  • Boot from SD, but with multiple partitions for boot, root and even swap. It used to be the case that this was necessary, to permit a FAT32 boot partition to exist.
  • Setting things up to boot from NAND, but use the SD as a root partition
  • More complex mounting strategies, extending a single filesystem across SD and NAND.

Some strategies will require that you keep one SD permanently mounted, and could result in a non-functioning setup if that card is lost. PND files make it easier to swap in and out applications, but any permanent storage required by the application will generally be kept in a separate location.

See Running Linux from an SD card for some basic instructions.

Debugging broken firmware

If you have a problem booting the firmware, and want to investigate before just replacing (or need to try and rescue some data from the NAND) you can boot into a console by doing the following: Make a file named boot.txt in root of SD with this[4]:

setenv bootargs ubi.mtd=4 ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs rw rootflags=bulk_read console=tty0 vram=6272K omapfb.vram=0:3000K init=/bin/bash
ubi part boot && ubifsmount boot && ubifsload 0x80300000 uImage && bootm 0x80300000 && boot

then holding down the right shoulder button on boot and booting from the SD card. (It doesn't require an operating system on the SD card, but it will use the boot configuration specified there). This is a text mode boot to the shell, using the kernel from the NAND. This should provide a way of bypassing any broken startup scripts, adding in logging for a normal boot, etc. It does not start the full OS, just a basic shell.

Submission Workflow

The general workflow for submitting a patch is something like this:

  1. Clone the appropriate section of the GIT repository - GIT is http://git.openpandora.org/cgi-bin/gitweb.cgi
  2. Apply changes and have fun
  3. Document and pass test cases
  4. Contact the maintainer of the subdomain the patch falls within - by mailing list above, or perhaps by PM in the forums, or email; for example, post first to the mailing list. In a pinch for libpnd submissions talk to skeezix, or notaz regarding kernel changes. But talk to the mailing list first, to keep discussion logged and centralized; if a backup neds to step up, the post history will already be there, right?
  5. If the maintainer is unavailable, contact the backups as listed above; they will know how to contact the champion, or can make the submission call themselves.
  6. If the maintainer and backups are not available, contact EvilDragon as release maintainer

Submission Standards

Submission are welcome! Historically the firmware has been built by a very small team, but that team size limits the number of changes that can be managed and developed simultaneously. If you've the skills and motivation to help, feel free to join the fray!

Patches have a few requirements; failing these requirements will cause your patch to be overlooked!

  • Clearly documented -- what is this patch for?
  • Clearly tested -- a list of test cases and test results -- the onus is on the submitter to test and prove testing; the committers have limited time and many people talking to them
  • Proper format -- unix line ending, not dos line endings :)