Categories
embedded systems English articles fun OpenWrt Tech

some updates of what’s going on :)

Besides the ongoing work related to the Openmoko Freerunner <-> OpenWrt integration, I decided to focus on multimedia application ports for OpenWrt.

The Xbox Multimedia Center (xbmc -> http://www.xbmc.org), which I’m using (and lovin’) for several years on my Xbox now, was starting getting ported to Linux quite some time ago.
The port looks really promising, so I decided to start get it working within OpenWrt.

I already started porting some basic needed dependencies, including <(lib)boost> (http://www.boost.org), a apparently widely used c++ library set.
Because this project – ehrm – really resists all normal tries getting cross-compiled and staged (it does use an alternative to make called <bjam> which is better because of… – I really have no clue), I took a look how the OpenEmbedded-project got it done – and it helped! – technically as well as morally.

Besides giving me some hints how to workaround some of their (really weird) stuff, I “discovered” a comment in the middle of the file (http://cgit.openembedded.net/cgit.cgi?url=openembedded/tree/recipes/boost/boost.inc) which I like to quote:

[..]
80 # Oh yippee, a new build system, it’s sooo cooool I could eat my own
81 # foot. inlining=on lets the compiler choose, I think. At least this
82 # stuff is documented…
83 # NOTE: if you leave on then in a debug build the build sys
84 # objcopy will be invoked, and that won’t work. Building debug apparently
85 # requires hacking gcc-tools.jam
86 #
87 # Sometimes I wake up screaming. Famous figures are gathered in the nightmare,
88 # Steve Bourne, Larry Wall, the whole of the ANSI C committee. They’re just
89 # standing there, waiting, but the truely terrifying thing is what they carry
90 # in their hands. At first sight each seems to bear the same thing, but it is
91 # not so for the forms in their grasp are ever so slightly different one from
92 # the other. Each is twisted in some grotesque way from the other to make each
93 # an unspeakable perversion impossible to perceive without the onset of madness.
94 # True insanity awaits anyone who perceives all of these horrors together.
95 #
96 # Quotation marks, there might be an easier way to do this, but I can’t find
97 # it. The problem is that the user.hpp configuration file must receive a
98 # pre-processor macro defined as the appropriate string – complete with “‘s
99 # around it. (<> is a possibility here but the danger to that is that the
100 # failure case interprets the < and > as shell redirections, creating
101 # random files in the source tree.)
[..]

Reading this really made my day 🙂

Anyway – boost is ported and working on OpenWrt now, but that’s only the head of the list of dependencies for getting xbmc compiled and running –
any help here – packaging requirements for xbmc for OpenWrt – is highly appreciated!

Categories
Brussels (Belgium) embedded systems English articles German articles misc Tech Trips Uncategorized

FOSDEM

Me and most of the other OpenWrt-guys are going to FOSDEM – the Free And Open Software Developement Meeting in Brussels.

See you there! 🙂

Categories
embedded systems English articles Openmoko OpenWrt Tech

OpenWrt is supporting the Openmoko GTA02 “Freerunner”!

It’s done – the Openmoko GTA02 “Freerunner” is running OpenWrt!

There’s lot’s of stuff to do but let’s see what I spent most of my time the last few months for:

– kernel (2.6.28) is building and booting (merging the Openmoko and OpenWrt patchsets, whereof one (and that’s not ours ;)) consists of either over 620 little non-atomic patches or one 10MB patchblob [kudos to git!], is no picnic (thanks to the work of Michael “mb” Buesch at this point!)
– D-Bus and the freesmartphone.org reference implementation (they import the libc.so.6 via ctypes – I was really puzzled when python told me it can’t find my libc, because I was using the uclibc)
– Xglamo with acceleration (in the beginning Xglamo just crashed, even JTAG wasn’t available anymore; it took us weeks to figure out that a compiler bug was the cause (thanks to Felix Fietkau, Holger Freyther and Lars Clausen) – Lars btw. is currently making good progress to get glamo acceleration working within Xorg)
– the EFL (enlightenment foundation libraries) and enlightenment including illume (needs some more love to make it really fit into the OpenWrt-environment – currently <edje_cc> and <eet> are required as pre-installed host tools)
– paroli phone application suite (in case it’s working ;))

A few days ago we established the first OpenWrt<->OpenWrt phone call which worked out of the box after flashing our devices!

Hurray! 🙂

Categories
embedded systems German articles Tech Windows Mobile

1st try of GUI-programming on WindowsCE: MPD-remote-control in python for “Windows Mobile/CE”

“Windows Mobile”-Client für MPD (Music Player Daemon)

Da ich bisher keine gescheihte und freie Möglichkeit gefunden habe “irgendwas” über mein (******-)WM-Handy zu steuern, habe ich mich jetzt mal rangesetzt und mich nach einer Möglichkeit umgesehen eine GUI ohne diesen .NET-sh1t auf dem PPC zu erstellen.
Da ich sowieso bereits die Python-Umgebung auf dem Teil habe (und ich ja auch ein großer Fan dieser Sprache bin) habe ich mich nach einer TKinter-Portierung umgesehen. Diese existiert (http://fore.validus.com/~kashtan/) und funktioniert auch, jedoch ist das nicht die native WinCE-GUI, was heißt, zusätzliche Libs sowie ein anderes look’n’feel (wobei letzteres gegenüber der WinCE-GUI nix heißen muss).
Ich suchte also weiter und bin auf eine Python-Lib gestoßen, welche ein API auf die WinCE-Gui bot: VensterCE (http://sourceforge.net/projects/vensterce). Es ist noch in der Entwicklung, reichte jedoch für meine Testapplikation völlig aus.
Ich bastelte mir also (überraschend schnell) eine (funktionierende) Applikation in Python, welche über TCP/IP mit dem MPD sprach.
Der MPD (http://www.musicpd.org/) ist ein ressourcensparender extrem kleiner mp3-player-daemon, welcher sich ausschließlich über TCP/IP steuern lässt. Weitere – auch grafische – Clients für den MPD lassen sich hier finden: http://www.musicpd.org/clients.shtml.
Das Resultat kann sich in meinen Augen – für ein Testprogramm – sehen lassen:

wm-mpc sowie wm-mpc

Wer Interesse daran hat soll sich melden. Ich möchte das jetzt nur nicht in solch einer unfertigen Version zum Download anbieten, da das Ding noch ein paar Bugs besitzt.

Categories
embedded systems German articles Tech

everything is total b0rken…

Mein eigentliches Ziel welches ich mit den hier z.T. vorgestellten Komponenten verfolg(t)e soll in einer kleinen Bildergeschichte veranschaulicht werden.

Die Theorie:
+ + + + = die perfekte Multimedia- und TV-Lösung

Nochmal die lange Geschichte in kurz, welche die Praxis erläutert: Am Anfang war die xbox, welche auch gleich (erfolgreich) die Stellung als Multimedia-Center einnahm. Dann kam die nslu2 und die Idee aus xbox + nslu2 eine TV-Lösung aufzubauen. Via eBay bestellte ich mir die Terratec Cinergy T2 – DVB-T-Box. Auf der nslu2 ließ sich jedoch das MythTV-Backend nicht kompilieren (auch dass es ganze 3 Tage gedauert, bis es mit einem Fehler abbrach hat die Sache nicht besser gemacht (natürlich mehrmals mit verschiedenen Compilern versucht)). Zudem schätze ich die nslu2 mit ihren 266 MHz für ein wenig schwach ein, um dvb-t in schön (deinterlacing, etc.) zu decodieren. Also holte ich mir für wenig Geld ein IBM Thinkpad T21 (siehe ein paar Posts zuvor) ohne alles, was aber läuft und nun auch erfolgreich von der nslu2 via pxe bootet. Dieses sollte dann den DVB-T-Kram übernehmen, hat aber nur USB 1.1 (die DVB-T-box benötigt USB 2.0), weswegen ich mir eine USB2-PCMCIA-Karte kaufte. Dies eläuft aber nicht mit der DVB-T-Box (waurm auch immer), ebenso wie eine 2. Karte mit anderem Chipsatz. Auch mit zusätzlicher Stromzufuhr (http://www.linuxforen.de/forums/showthread.php?t=223377) und ein paar sonstigen Experimenten war nichts zu machen. Zudem klackert meine größte Festplatte an der nslu2 nur noch lautstark rum, dass super Maxtor-festplatten-Diagnose-foobar-Programm ist aber der Meinung die Pladde sei voll i.O. womit ich keinen Fehlercode bekomme, welchen ich benötige, um auf der tollen interaktiven Maxtor-Webseite die Garantieabwicklung fortzusetzen.

3veryth1nG 1s t0t4l b0rk3n…

Categories
embedded systems German articles Tech

2-Komponenten-Server-Lösung

Ich bin ja bisher sehr zufrieden gewesen mit meiner Router-Router-NSLU2-Lösung gewesen (Router 1 (wgt634u) routet und fungiert als openvpn-server, Router 2 (wl500g) als WLAN-AP und Printserver und meine NSLU2 als Data-Storage).

Auch wenn die NSLU2 mit (anti-untertakteten 266 mhz ARM) recht schnell für solch ein openembedded-device ist, reicht die Rechenleistung nun nicht mehr aus (dazu, was darauf hätte laufen sollen, in einem anderen Post).

Erster Gedanke war, ein richtiger Rechner als Homeserver muss her, jedoch haben mich folgende Nachteile entschieden von dieser Idee abgebracht:

– teuer

– laut

– stromfressend

– groß

Jeder Punkt für sich hätte bei mir schon starke Bedenken ausgelöst, aber alle 4 Punkte zusammen kamen gar nicht in Frage – eine andere, elegantere Lösung muss her:

Ein Thinclient ! … ?

Jedoch ein Modell was die Anforderungen erfüllt, die ich erwarte (CPU ~600 mhz), war unverhältnismäßig teuer (eBay, etc.).

Bei einem Treffen der BeLUG (Berliner Linuxusergroup) dann die Lösung!

Jemand hatte ein altes Notebook ohne Display, ohne HDD und mit extrem schwachen Akku zu verkaufen – die perfekte kleine, leise, stromsparende Rechenmaschine für mein Vorhaben! Und dazu noch Qualität! Ein IBM Thinkpad T21.

thinkpad_t21

CPU: 900 Mhz P3

RAM: 128 MB (wird aufgestockt – hat wer Notebook-SD-RAM für mich)?

USB: 1.1 (brauch noch ne PCMCIA-USB2-Karte)

Dazu halt noch Ethernet, pcmcia, serial, parallel.

Aufteilung wird dann so sein: Thinkpad soll nur rechnen und via PXE von der nslu2 starten. NSLU2 fungiert als reines Data-Storage und überlässt Rechnungen dem Thinkpad.

Soweit die Theorie. Sobald meine Haupt-data-Platte von Maxtor ersetzt wurde (klackert gut) kanns dann auch losgehen 😉

Werd euch auf dem Laufenden halten!

So long…

Categories
embedded systems German articles Tech

loop-AES läuft nun auch auf der NSLU2

Moin!

Habe vor wenigen Minuten endlich auch loop-AES auf der NSLU2 zum Laufen gebracht – unter DebianSlug.

Es ist ein normales littleEndian Debian-ARM-System. Es laufen ein SSH- und userspace-NFS-Server.

Hier die ersten Benchmarks:

foo.img ist ein 60MB großes aus Nullen bestehendes Image 🙂

Das NFS-Volume ist eine über USB2.0-angeschlossende Platte – NICHT VERSCHLÃœSSELT!

[daten@alice:~] $ time cp foobar/foo.img /Volumes/192.168.1.39-1/

real   0m18.774s
user   0m0.002s
sys    0m0.876s
> 3 MB / s – man muss aber dazu sagen, dass die NSLU2 übertaktet ist und hier keine weiteren Dienste grad laufen.

Mit loop-AES-encryption sieht das ganze schon wieder ein wenig anders aus:

[daten@alice:~] $ time cp foobar/foo.img /Volumes/192.168.1.39/

real   0m50.315s
user   0m0.002s
sys    0m0.885s

Das Image ist immernoch 60 MB groß, das über NFS eingehangene Volume ist jetzt aber AES256 Bit verschlüsselt.

~1 MB / s – nicht gerade viel aber im Gegensatz zu meiner vorherigen WGT634U-Lösung mit rund 200 KB / s eine 500%-Steigerung 🙂

Ich geh’ pennen – gut n8

Categories
embedded systems German articles Tech

NSLU2 (Network Storage Link USB 2) da und gemodded

Hab’ lange nichts mehr von mir hören lassen, da ich leider noch einiges zu tun hatte (Klausuren, Arbeit, etc.); es hat sich jedoch einiges getan.

Ich habe (m)eine Linksys nslu2 bekommen (und auch gleich von 133 Mhz auf 266 Mhz hichgetaktet (oder besser anti-untertaktet), indem ein einfacher Widerstand rausgelötet wurde). 😛

NSLU2

Leider ist dort ein nicht standardmäßiger intel-LAN-Chip verbaut, für welchen es noch keine freien Treiber und deshalb hier leider Lizensproblematiken gibt (Debian z.B. weigert sich (verständlicherweise) nicht-GNU-Software in ihr Standardrepository mit aufzunehmen, weshalb es hier ein wenig Bastelei (welche glücklicherweise bereits andere Leute gemacht haben) bedarf, bis der Debianinstaller mit nativem nslu2-Ethernet-support durchlief.

Zudem gab es hier auch noch die Problematik, dass das Standarddebian und dessen gesamtes Paketrepository in der LittleEndian-Bytefolge kompiliert wurde, der vorkompilierte intel-Treiber jedoch nur im BigEndian zur Verfügung stand. Dieses Problem wurde jedoch auch schon gelöst – der Treiber steht nun auch in LittleEndian zur Verfügung.

Jetzt bin ich grad’ dabei mir einen eigenen Kernel für die nslu2 zu compilen, da der Standardkernel einige Designfehler zu enthalten scheint und versuche krampfhaft meine Buildroot-Umgebung zum Laufen zu bekommen.

Zu einem späteren Zeitpunkt werde ich dann Benchmarks machen und evtl. den RAM nachrüsten.
Bis jetzt kann ich nur sagen, dass dies wirklich mal relativ anständige Hardware zu sein scheint (intel XScale 266 MHZ ARM-based cpu).

So long…

Categories
fun German articles Tech

nAnL verlegt Rohre

Man saß wohl nicht mehr ganz nüchtern an einem Samstagabend zusammen und hat sich über Domainnamen die das Land braucht den Kopf zerbrochen.

‘N Kumpel (t3h T1mb0) kam dann auf die Domainidee “verlegtrohre.de”, welche dann auch keine Stunde später registriert wurde.

Im Nachhinein vielleicht ein wenig strange wirkend kamen wir an jenem Abend aus dem Lachen nicht mehr raus und es war das Produktivste, was das Wochenende über getan wurde.

Falls jemand ein Mailkonto oder eine Weiterleitung mit dem Suffix @verlegtrohre.de möchte, soll er ‘n Comment schreiben – ich bin spendabel 😛

Categories
German articles Tech

Python r0ckz!

Heyho!

Mir hat’s ja jetzt die Scriptsprache Python angetan, wobei das Wort “Scriptsprache” Python meiner Meinung nach nicht gerecht wird, so mächtig wie sie ist.

In Python ist es möglich Projekte komplett objektorientiert zu schreiben und zu modularisieren. Die Syntax ist schlüssig und leicht zu verstehen (nicht wie bei Perl :P) und erinnert leicht an funktionale Programmiersprachen (“.”-Operator, lambda-Funktionen, Blockaufbau (Formatierung relevant), etc.).

Es gibt eine Vielzahl von zur Verfügung stehenden Modulen, auf welche man seine eigenen Projekte aufbauen kann (alleine in der Standardumgebung 185) .

Zudem ist es möglich Exceptions durch try/catch-Blöcke abzufangen und auszuwerten. Auch Mehrfachvererbungen sind mit Python möglich.
Schnittstellen zu grafischen Toolkits und Datenbanken sind natürlich auch vorhanden.

Ich schätze Python aufgrund der enormen Anzahl an zur Verfügung stehenden Bibliotheken, der Möglichkeit Projekte komplett objektorientiert zu schreiben und zu modularisieren und nicht zuletzt wegen der einfachen Syntax.

Hoch lebe Python! 🙂

Einen schönen 1. Mai – nich zu viele Steine schmeißen…

So long…