Archiv für die Kategorie ‘Openmoko FreeRunner’

Openmoko FreeRunner verkauft

Freitag, 04. September 2009

Mein FreeRunner hat bereits einen neuen Besitzer gefunden.

Ich überlege schon sehr lange hin und her, ob ich mein FreeRunner verkaufen soll oder nicht und bin jetzt soweit zu sagen, dass es keinen Sinn mehr für mich macht, es zu behalten. Nach wie vor bin ich von dem Konzept überzeugt und begeistert. Aber da ich die letzten Monate schon keine Zeit hatte, mich halbwegs intensiv damit zu beschäftigen und es während der Diplomarbeit bestimmt nicht besser wird, habe ich mich zu diesem Schritt entschlossen. Ich hoffe, dass ich einen Käufer finde, der Spaß an diesem Gerät hat.

Da jeder der Interesse hat eh weiß, um was es geht, erspare ich mir Beschreibungen, was es alles kann, etc.

Es handelt sich um ein GTAv06 mit Buzzfix, gekauft im August letzten Jahres bei Pulster. Der Zustand ist sehr gut, es wurde nur zum Rumspielen zu Hause benutzt. Das Display war die ganze Zeit durch Folien geschützt.

Wenn du Interesse hast, schicke mir dein Angebot einfach per E-Mail, Betreff FreeRunner.

FreeRunner_kleinEin Klick auf das Foto führt zu einer höheren Auflösung

Auf dem Display sind keine Kratzer. Es befindet sich eine Schutzfolie darauf.

Lieferumfang (alles original)

  • Neo FreeRunner
  • Ladegerät
  • USB-Kabel
  • In-Ear Headset
  • Tasche
  • Stylus
  • 512 MB Mico SD Card
  • 17 weitere Display Schutzfolien
  • Verpackung
  • Buzz fix documentation vom 10.05.2009
  • Rechnung vom 21.08.2008

Verschickt wird es als versichertes Paket mit DHL.

Unter Ausschluss jeglicher Gewährleistung.
Da ich es privat verkaufe, kann ich keine Garantie, Gewährleistung oder Rückgabe einräumen. Es besteht aber noch die Restgarantie über den Händler.

Ich hoffe es kommt in gute Hände und wünsche dem neuen Besitzer schon im Voraus viel Spaß! :)

NeoTool 1.2: .deb-Paket

Freitag, 12. Juni 2009

Ein praktisches Tool zum Flashen des Smartphones Openmoko FreeRunner hat Heikki Mäntysaari gebastelt: NeoTool. Es benutzt dfu-util, das mittlerweile auch in den Repositories von Ubuntu ist (ab Intrepid Ibex).
Leider hat es NeoTool noch nicht in die Repositories geschafft (Diskussion dazu). Deshalb biete ich hier ein Debian Paket zum Download an:

Gestartet wird das Tool über Entwicklung -> Openmoko NeoTool.

Den Quellcode gibt es auf dieser Webseite.

FR (fyp): SWAP-Partition – Update!

Freitag, 06. März 2009

Wie belbel im ursprünglichen Artikel richtig angemerkt hat, macht es wenig Sinn, eine SWAP-Datei auf einer normalen Partition zu benutzen. Sinnvoller ist eine SWAP-Partition.
Für diejenigen, die bereits den Weg mit der SWAP-Datei gegangen sind, beschreibe ich hier, wie man dies entsprechend ändert.

Nachdem man sich per SSH mit dem FR verbunden hat, wird fdisk gestartet: fdisk /dev/mmcblk0 und der Typ der bisherigen ersten Partition geändert. Mit dem Kommando t lässt sich die system id ändern, der hex code für Linux/SWAP ist 82 (die verfügbaren Codes lassen sich an dieser Stelle mit dem Kommando L anzeigen, im normalen fdisk-Modus mit dem Kommando l). Diese Änderung wird mit dem Kommando w gespeichert.

debian-gta02:/# fdisk /dev/mmcblk0
 
The number of cylinders for this disk is set to 17792.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
 
Command (m for help): p
 
Disk /dev/mmcblk0: 510 MB, 510132224 bytes
8 heads, 7 sectors/track, 17792 cylinders
Units = cylinders of 56 * 512 = 28672 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1        4465      125016+  83  Linux
/dev/mmcblk0p2            4466       17792      373156   83  Linux
 
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)
 
Command (m for help): p
 
Disk /dev/mmcblk0: 510 MB, 510132224 bytes
8 heads, 7 sectors/track, 17792 cylinders
Units = cylinders of 56 * 512 = 28672 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1        4465      125016+  82  Linux swap / Solaris
/dev/mmcblk0p2            4466       17792      373156   83  Linux
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Die Änderung steht allerdings erst nach einem Neustart zur Verfügung. Zuvor wird die SWAP-Partition aktiviert:
mkswap /dev/mmcblk0p1

Nun deaktiviert man noch die alte SWAP-Datei, indem man die Datei fstab editiert: nano /etc/fstab. Die beiden letzten Zeilen werden gelöscht und die neue SWAP-Partition wird eingetragen:

Alte fstab:

rootfs  /               auto    defaults,errors=remount-ro,noatime      0 1
/dev/mtdblock6  /mnt/flash      jffs2   defaults,noatime,noauto         0 2
proc    /proc           proc    defaults                                0 0
tmpfs   /tmp            tmpfs   defaults,noatime                        0 0
tmpfs   /var/lock       tmpfs   defaults,noatime                        0 0
tmpfs   /var/run        tmpfs   defaults,noatime                        0 0
tmpfs   /var/cache/apt  tmpfs   defaults,noatime                        0 0
/dev/mmcblk0p2 /home    ext2    defaults,noatime                        0 0
/dev/mmcblk0p1 /mnt/msd ext2    defaults,noatime                        0 0
/mnt/msd/swapfile       none    swap    sw                              0 0

Neue fstab:

rootfs  /               auto    defaults,errors=remount-ro,noatime      0 1
/dev/mtdblock6  /mnt/flash      jffs2   defaults,noatime,noauto         0 2
proc    /proc           proc    defaults                                0 0
tmpfs   /tmp            tmpfs   defaults,noatime                        0 0
tmpfs   /var/lock       tmpfs   defaults,noatime                        0 0
tmpfs   /var/run        tmpfs   defaults,noatime                        0 0
tmpfs   /var/cache/apt  tmpfs   defaults,noatime                        0 0
/dev/mmcblk0p2 /home    ext2    defaults,noatime                        0 0
/dev/mmcblk0p1 none     swap    sw                                      0 0

Jetzt erfolgt der reboot und im Anschluss überzeugt man sich mit dem Befehl free, dass alles geklappt hat:

debian-gta02:~# free
             total       used       free     shared    buffers     cached
Mem:        120808     118596       2212          0        396      45916
-/+ buffers/cache:      72284      48524
Swap:       125008          0     125008

Abschließend kann noch das Verzeichnis /mnt/msd gelöscht werden:
rm -R /mnt/msd

FR (fyp): tangoGPS

Montag, 02. März 2009

… und schon geht es weiter.

Im letzten Artikel habe ich beschrieben, wie /home auf die SD-Karte verschoben wird. Jetzt geht es weiter mit tangoGPS. Diese Anwendung benutzt das Kartenmaterial von OpenStreetMap und diese Karten benötigen natürlich einiges an Speicherplatz.
Aufgrund der tollen Vorarbeit in diesem Thread, wird dies ein sehr kurzer Eintrag. Dort befindet sich nämlich bereits ein Skript, das vollautomatisch die Pfade anlegt. Standardmäßig werden die Maps in /root/Maps gespeichert, was aufgrund des knappen Speichers natürlich keinen Sinn macht. In Zukunft werden die Maps in /home/TangoMaps/OSM gespeichert.
Dazu startet ihr nano und kopiert den Inhalt des Skripts in den Editor:

#!/bin/sh
OLD_MAPS_DIR=/root/Maps
NEW_MAPS_DIR=/home/TangoMaps/
# look if OLD_MAPS_DIR is a directory
if [ ! -e ${OLD_MAPS_DIR} ]
then
  # OLD_MAPS_DIR does not exist
  ln -s ${NEW_MAPS_DIR} ${OLD_MAPS_DIR}
else
  if [ ! -h ${OLD_MAPS_DIR} ] && [ -d ${OLD_MAPS_DIR} ]
  then
    # OLD_MAPS_DIR is a real directory
    mkdir -p ${NEW_MAPS_DIR}
    cp -r ${OLD_MAPS_DIR}/* ${NEW_MAPS_DIR}/
    rm -rf ${OLD_MAPS_DIR}
    ln -s ${NEW_MAPS_DIR} ${OLD_MAPS_DIR}
  else
    if [ -h ${OLD_MAPS_DIR} ]
    then
      # OLD_MAPS_DIR is a symbolic link
      echo "symbolic link already exists."
    else
      echo "unknown type of ${OLD_MAPS_DIR}."
    fi
  fi
fi

Nun wird das Skript gespeichert, z.B. /home/tangoGPSmapDL.sh und ausführbar gemacht: chmod +x /home/tangoGPSmapDL.sh
Einmal ausführen /home/tangoGPSmapDL.sh und das war’s. Das Skript könnt ihr danach wieder löschen.
Alle Maps, die tangoGPS herunterlädt werden nun auf der SD-Karte in /home/TangoMaps/OSM gespeichert.

FR (fyp): Anlegen der SWAP- und /home-Partition auf der SD-Karte

Montag, 02. März 2009

Update: Es ist sinnvoller, eine SWAP-Partition anzulegen! Ich habe diesen Artikel entsprechend geändert. Wenn ihr bereits diese Anleitung durchgeführt habt, schaut euch diesen Artikel an.

In diesem Artikel beschreibe ich, wie man die SWAP-Partition Datei unter fyp anlegt. Er unterteilt sich in zwei Schritte:

  • Vorbereitung der SD-Karte (Partitionierung, Formatierung)
  • Anlegen und Aktivierung der SWAP-Partition Datei

Bereits durchgeführte Schritte müssen natürlich nicht erneut durchgeführt werden. Diese Anleitung versteht sich als anfängerfreundliche, ausführliche Schritt-für-Schritt-Anleitung.

Schritt 1: SD-Karte vorbereiten

In diesem Schritt werden auf der SD-Karte zwei Partitionen angelegt – eine SWAP-Partition (ca. 128 MB) und eine Partition für /home (Rest der Speicherkarte) eine für die SWAP-Datei, eine für /home. Die SWAP-Datei wird ca. 120 MB groß sein, der Rest ist für /home.
Ich gehe davon aus, dass es sich um eine jungfräuliche Karte handelt, d.h. es existieren noch keine Partitionen. Bestehende Partitionen werden entfernt. Falls ihr bereits Daten in /home gespeichert habt, kopiert sie bitte an einen sicheren Ort und später nach /home zurück.

Hinweis: Alle Daten auf der SD-Karte werden gelöscht!

Zunächst muss man die Bezeichnung herausfinden, dies geschieht mit dem Befehl dmesg | grep 'mmc' mit folgender Ausgabe:

debian-gta02:~# dmesg | grep 'mmc'
[21474538.610000] mmc0: queuing CIS tuple 0x01 length 3
[21474538.630000] mmc0: queuing CIS tuple 0x1a length 5
[21474538.640000] mmc0: queuing CIS tuple 0x1b length 8
[21474538.660000] mmc0: queuing CIS tuple 0x80 length 1
[21474538.660000] mmc0: queuing CIS tuple 0x81 length 1
[21474538.665000] mmc0: queuing CIS tuple 0x82 length 1
[21474538.670000] mmc0: new SDIO card at address 0001
[21474578.510000] mmc1: new high speed SD card at address b368
[21474578.555000] mmcblk0: mmc1:b368 UD    486 MiB

In Zeile 10 steht der gesuchte Bezeichner: “mmcblk0″. Nun lässt sich die Karte partitionieren:
fdisk /dev/mmcblk0

Man kann sich jetzt jederzeit mit dem Kommando m die verfügbaren Kommandos anzeigen lassen. Abbrechen (ohne Änderungen) kann man jederzeit mit dem Kommando q.
Mit dem Kommando p werden alle existierenden Partitionen angezeigt. Falls Partitionen vorhanden sind, lassen sich diese mit dem Kommando d löschen. Jetzt wird die erste primäre Partition mit dem Kommando n angelegt. Als Partitionsnummer wird 1 gewählt und für den ersten Zylinder wird der Standardwert benutzt (mit Enter bestätigen). Die Größe soll 128 MB betragen: als Parameter wird +128M eingegeben. Mit dem Kommando t lässt sich die system id ändern, der hex code für Linux/SWAP ist 82 (die verfügbaren Codes lassen sich an dieser Stelle mit dem Kommando L anzeigen, im normalen fdisk-Modus mit dem Kommando l). Abschließend wird die angelegte Partition mit p angezeigt.

Command (m for help): p
 
Disk /dev/mmcblk0: 510 MB, 510132224 bytes
8 heads, 7 sectors/track, 17792 cylinders
Units = cylinders of 56 * 512 = 28672 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-17792, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-17792, default 17792): +128M
 
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)
 
Command (m for help): p
 
Disk /dev/mmcblk0: 510 MB, 510132224 bytes
8 heads, 7 sectors/track, 17792 cylinders
Units = cylinders of 56 * 512 = 28672 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1        4465      125016+  83  Linux

Jetzt wird die zweite Partition mit n angelegt. Außer der Partitionsnummer 2 werden die Standardwerte benutzt. Dadurch wird der restliche, unbenutzte Platz auf der Karte für die Partition benutzt. Zum Abschluss werden wieder die Partitionen mit p angezeigt:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (4466-17792, default 4466):
Using default value 4466
Last cylinder or +size or +sizeM or +sizeK (4466-17792, default 17792):
Using default value 17792
 
Command (m for help): p
 
Disk /dev/mmcblk0: 510 MB, 510132224 bytes
8 heads, 7 sectors/track, 17792 cylinders
Units = cylinders of 56 * 512 = 28672 bytes
Disk identifier: 0x00000000
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1        4465      125016+  83  Linux
/dev/mmcblk0p2            4466       17792      373156   83  Linux

Hier sind die beiden Partition zu sehen. Bis jetzt wurde noch nichts auf die SD-Karte geschrieben. Wer jetzt noch abbrechen will, kann dies mit dem Kommando q tun.
Die Änderungen an der Partitionstabelle werden erst durch das Kommando w gespeichert:

Command (m for help): w
The partition table has been altered!

Zum Schluss wird die zweite Partition werden die beiden Partitionen mit dem Dateisystem ext2 formatiert:

mkfs.ext2 /dev/mmcblk0p2

Schritt 2: SWAP-Partition SWAP-Datei

Zunächst wird das Verzeichnis /mnt/msd angelegt, falls es noch nicht existiert und die SWAP-Partition aus dem 1. Schritt gemountet:
mkdir /mnt/msd
mount /dev/mmcblk0p1 /mnt/msd

Der nächste Schritt dauert ein paar Minuten, also nicht ungeduldig werden – das Anlegen der SWAP-Datei:
dd if=/dev/zero of=/mnt/msd/swapfile bs=1024 count=128M

Da auf der Partition keine 128 MB frei sind (nur ca. 120 MB), bricht dd mit einer Warnung ab, das macht aber nichts.
Mit mkswap /mnt/msd/swapfile wird die Datei zur SWAP-Datei. Aktiviert wird sie mit
swapon /mnt/msd/swapfile
sync

Die Partition wird zur SWAP-Partition mit:
mkswap /dev/mmcblk0p1

Aktiviert wird sie mit
swapon /dev/mmcblk0p1
sync

Dies ist allerdings nur temporär. Um die SWAP-Datei beim Start automatisch zu mounten, muss die Datei /etc/fstab editiert werden, z.B. mit
nano /etc/fstab
und dann diese Zeilen unten anhängen:

/dev/mmcblk0p1 none     swap    sw                                      0 0
/dev/mmcblk0p2 /home    ext2    defaults,noatime                        0 0

Nach einem Neustart, kann man mit dem Befehl free testen, ob alles geklappt hat:

debian-gta02:~# free
             total       used       free     shared    buffers     cached
Mem:        120808     101640      19168          0         64      47896
-/+ buffers/cache:      53680      67128
Swap:       117568      66580      50988

Stehen nach “Swap:” nur Nullen, ist irgendetwas schief gelaufen. Ansonsten: herzlichen Glückwunsch zur SWAP-Partition Datei! ;-)
Das Home-Verzeichnis /home befindet sich nun auf der SD-Karte und wird bei einem eventuellen Distributionswechsel nicht gelöscht. Außerdem könnt ihr jetzt dazu übergehen, Maps für tangoGPS herunterzuladen. Dafür ist es nämlich sinnvoll, die Maps wegen der Dateigrößen auf der SD-Karte zu speichern. Dazu aber mehr im nächsten Artikel…

FR: fyp – FreeYourPhone Distribution

Montag, 02. März 2009

Nachdem ich nun schon einige Distributionen für das FreeRunner ausprobiert habe, bin ich bei FYP gelandet: die FreeYourPhone Distribution. Diese Distribution basiert auf Debian mit LXDE als Desktopumgebung und ist erst wenige Wochen alt. Und da Bilder mehr als Worte sagen:

FreeRunner Home Screen

FreeRunner Terminal

Einen Screenshot kann man mit dem Befehl scrot -d 5 erstellen, wobei die Zahl für die Anzahl der Sekunden steht, nach der der Screenshot ausgelöst wird (hier 5 Sekunden). Die Screenshots werden standardmäßig in /root erstellt, falls das Verzeichnis nicht gewechselt wurde. Um den Screenshot auf den PC zu übertragen, ist das Tool scp aus dem ssh-Paket nützlich:
scp root@openmoko:/root/2009-03-02-162606_480x640_scrot.png /home/florian/Desktop/

Damit ihr auf dem FreeRunner immer die richtige Zeit angezeigt bekommt, installiert einfach mal ntp:
apt-get install ntp ntpdate
Und schwupps habt ihr die ersten Pakete auf eurem FreeRunner installiert. :-) Danach ist zwar mein FreeRunner abgestürzt, aber nach einem Neustart wurde die korrekte Zeit angezeigt.

Im nächsten Artikel beschreibe ich das Einrichten einer SWAP-Datei auf der SD-Karte, damit fyp genug Speicher zur Verfügung steht.

Mein Dank gilt allen, die fyp entwickeln, allen voran neovento, der das Projekt ins Leben gerufen hat. Weiter so!

FR: USB-Verbindung zum PC per SSH + Internetzugang

Montag, 02. März 2009

Für die USB-Verbindung zum FreeRunner sind nur wenige Schritte notwendig. Zunächst wird die Datei /etc/network/interfaces (PC) mit Root-Rechten bearbeitet. Es müssen diese Zeilen hinzugefügt werden:

auto usb0
iface usb0 inet static
address 192.168.0.200
netmask 255.255.255.0

Damit ihr nicht jedes mal die IP eingeben müsst, kann ein Alias für das FreeRunner angelegt werden. Dazu die Datei /etc/hosts (PC) mit Root-Rechten bearbeiten:

192.168.0.202 openmoko

Nach einen Neustart von networking:
/etc/init.d/networking restart
lässt sich die SSH-Verbindung herstellen:
ssh root@openmoko

Die nächsten Schritte erläutern, wie man vom FreeRunner über die USB-Verbindung auf das Internet zugreifen kann.
Voraussetzung hierfür ist, dass das Paket dnsmasq auf eurem PC installiert ist (sollte in den Paketquellen verfügbar sein). Zur Datei /etc/network/interfaces (PC) müssen folgende Zeilen hinzugefügt werden:

up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &
up echo 1 > /proc/sys/net/ipv4/ip_forward &
up iptables -P FORWARD ACCEPT &
down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &

Anschließend wieder networking neu starten:
/etc/init.d/networking restart
Jetzt muss nur noch der Nameserver auf dem FreeRunner hinzugefügt werden. Nachdem die SSH-Verbindung steht, sind diese beiden Befehle auszuführen (FR):

echo nameserver 208.67.222.222 > /etc/resolv.conf
echo nameserver 208.67.220.220 >> /etc/resolv.conf

Die Internetverbindung lässt sich auf dem FreeRunner beispielsweise mit
ping blog.bugie.de
testen.

Am Ende sollte die Datei /etc/network/interfaces (PC) in etwa so aussehen:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# OpenMoko FreeRunner
auto usb0
iface usb0 inet static
address 192.168.0.200
netmask 255.255.255.0
network 192.168.0.0
up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &
up echo 1 > /proc/sys/net/ipv4/ip_forward &
up iptables -P FORWARD ACCEPT &
down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &

Diese Anleitung wurde unter Ubuntu 8.10 getestet.