<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Hackable 1</title>
	<link>http://planet.hackable1.org</link>
	<language>en</language>
	<description>Hackable 1 - http://planet.hackable1.org</description>

<item>
	<title>khorben: What's going on?</title>
	<guid>http://people.defora.org/~khorben/place/blog/135/What-s-going-on-</guid>
	<link>http://people.defora.org/~khorben/place/blog/135/What-s-going-on-</link>
	<description>Almost two months without a post?&lt;br /&gt;
&lt;br /&gt;
Well, actually, I meant to post a few notes about how the Gtk+ 2.0 to 3.0 migration went for the DeforaOS project, but ended up forgetting about it. On the other hand, I've been busy debugging and polishing the user interface, and hope to release and package these changes soon.&lt;br /&gt;
&lt;br /&gt;
Speaking of which, I haven't given up on releasing hackable:1 dse2, the smartphone environment based on DeforaOS for the GSM stack and user interface. It's just been a pain to iron out the different issues encountered, with a new one appearing every time I managed to fix something. Regardless, it's looking promising, and I've been able to give and receive phone calls again.&lt;br /&gt;
&lt;br /&gt;
On the security front, the asm project (and its disassembler) is now waiting to be integrated into UWfirmforce, which would also benefit from an updated user interface (and reporting facility even). It'll take a few more coding nights though.&lt;br /&gt;
&lt;br /&gt;
This is also because according to the DeforaOS roadmap, I am focusing on a (re-)implementation of its main functionality: the distributed computing framework. Getting the design right is a challenge in itself already, but I am fairly confident to be able to commit the first working lines of code within a few more weeks.&lt;br /&gt;
&lt;br /&gt;
Looking forward to all of these :)&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Mon, 30 May 2011 11:59:10 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Calibrating the HTC TouchPro's touchscreen</title>
	<guid>http://people.defora.org/~khorben/place/blog/131/Calibrating-the-HTC-TouchPro-s-touchscreen</guid>
	<link>http://people.defora.org/~khorben/place/blog/131/Calibrating-the-HTC-TouchPro-s-touchscreen</link>
	<description>For the record, and because it gave me a hard time, here is how I could finally calibrate the touchscreen of an HTC TouchPro running hackable:1:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# rm -f /etc/pointercal# export TSLIB_FBDEVICE=/dev/fb0# export TSLIB_TSDEVICE=/dev/input/event3# export TSLIB_CALIBFILE=/etc/pointercal# export TSLIB_CONFFILE=/etc/ts.conf# ts_calibrate&lt;/pre&gt;
And the winner is:&lt;br /&gt;
&lt;pre&gt;# cat /etc/pointercal-626 -42507 37731912 53487 254 -5420672 65536&lt;/pre&gt;
I had to do this while running X, otherwise I only got trash on the framebuffer at best, and then nothing seemed to really happen.&lt;br /&gt;
&lt;br /&gt;
Initially, I tried to find a way to understand and convert Android's data to the values expected by tslib. I started with the latter, and eventually gave up as these values seemed poorly documented at best: it essentially consisted in a couple mailing-list posts basically saying that &amp;quot;no, you should not generate calibration values yourself&amp;quot;. But what if I have known, valid data?&lt;br /&gt;
&lt;br /&gt;
Anyway, I could finally find some hints there:&lt;br /&gt;
&lt;a href=&quot;http://doc.trolltech.com/4.3/qwscalibratedmousehandler.html#transform&quot;&gt;http://doc.trolltech.com/4.3/qwscalibratedmousehandler.html#transform&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And then in the source code for tslib:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;plugins/linear.c, struct tslib_linear:25 struct tslib_linear {26         struct tslib_module_info module;27         int     swap_xy;28 29 // Linear scaling and offset parameters for pressure30         int     p_offset;31         int     p_mult;32         int     p_div;34 // Linear scaling and offset parameters for x,y (can include rotation)35         int     a[7];36 };&lt;/pre&gt;
&lt;pre&gt;plugins/linear.c, mod_init():132         /*133          * Check calibration file134          */135         if( (calfile = getenv(&amp;quot;TSLIB_CALIBFILE&amp;quot;)) == NULL) calfile = defaultcalfile;136         if(stat(calfile,&amp;amp;sbuf)==0) {137                 pcal_fd = open(calfile,O_RDONLY);138                 read(pcal_fd,pcalbuf,200);139                 lin-&amp;gt;a[0] = atoi(strtok(pcalbuf,&amp;quot; &amp;quot;));140                 index=1;141                 while(index&amp;lt;7) {142                         tokptr = strtok(NULL,&amp;quot; &amp;quot;);143                         if(*tokptr!='\0') {144                                 lin-&amp;gt;a[index] = atoi(tokptr);145                                 index++;146                         }147                 }&lt;/pre&gt;
&lt;pre&gt;plugins/linear.c, linear_read():53                         xtemp = samp-&amp;gt;x; ytemp = samp-&amp;gt;y;54                         samp-&amp;gt;x =       ( lin-&amp;gt;a[2] +55                                         lin-&amp;gt;a[0]*xtemp +56                                         lin-&amp;gt;a[1]*ytemp ) / lin-&amp;gt;a[6];57                         samp-&amp;gt;y =       ( lin-&amp;gt;a[5] +58                                         lin-&amp;gt;a[3]*xtemp +59                                         lin-&amp;gt;a[4]*ytemp ) / lin-&amp;gt;a[6];&lt;/pre&gt;
Credits go there:&lt;br /&gt;
&lt;a href=&quot;http://automon.donaloconnor.net/installing-tslib-and-calibrating-it/83/&quot;&gt;http://automon.donaloconnor.net/installing-tslib-and-calibrating-it/83/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Wed, 06 Apr 2011 13:21:48 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: hackable:1 welcomes a new developer: Trim</title>
	<guid>http://people.defora.org/~khorben/place/blog/130/hackable-1-welcomes-a-new-developer--Trim</guid>
	<link>http://people.defora.org/~khorben/place/blog/130/hackable-1-welcomes-a-new-developer--Trim</link>
	<description>I am glad to announce the arrival of a new developer within the hackable:1 project: Adrien Dorsaz, aka Trim. He has already contributed improvements to the wireless configuration interface (wicd) and calendar application (dates), besides many helpful bug reports!&lt;br /&gt;
&lt;br /&gt;
Welcome Trim, with you the imminent dse2 release has gotten only better. Cheers!&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sat, 02 Apr 2011 14:26:00 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: hackable:1 builds and provides a package repository for Maemo</title>
	<guid>http://people.defora.org/~khorben/place/blog/123/hackable-1-builds-and-provides-a-package-repository-for-Maemo</guid>
	<link>http://people.defora.org/~khorben/place/blog/123/hackable-1-builds-and-provides-a-package-repository-for-Maemo</link>
	<description>I had been thinking about testing the DeforaOS graphical applications [1] on my N900 [2] for a while, but remained concentrated on the Openmoko Freerunner [3] and hackable:1 [4] until it was satisfying enough. With the upcoming dse2 [5] release being in a good shape [6], I decided to have a short look anyway.&lt;br /&gt;
&lt;br /&gt;
My first reaction was very much like when I checked Maemo [7] back in 2008:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;you need me to install scratchbox, which only supports i386? [8]&lt;/li&gt;
&lt;li&gt;the documentation links to external sites (Debian packaging) but doesn't explain how to actually build a package? [9]&lt;/li&gt;
&lt;li&gt;you prevent me from navigating the repositories freely? [10]&lt;/li&gt;
&lt;/ul&gt;
But this time, with the lessons learned while re-implementing strap:1 and cross-compiling Debian packages, I figured I could do it another way: with hackable:1 itself. Here is how.&lt;br /&gt;
&lt;br /&gt;
First, I determined how to populate the cross-compilation environment with the proper binaries. I added trunk/build/strap1/hostname/n900.nokia.maemo, containing:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ENVIRONMENT=GNOME #it's empty at the momentVERBOSE=1DEBIAN_MIRROR=repository.maemo.orgDEBIAN_REPOSITORIES=sdk/freeDEBIAN_VERSION=maemo5.0DEBIAN_SOURCES=&amp;quot;deb http://$DEBIAN_MIRROR/ $DEBIAN_VERSION $DEBIAN_REPOSITORIES&amp;quot;VENDOR=NokiaMODEL=N900PURPOSE=phone&lt;/pre&gt;
This also required handling Nokia-N900-phone as a valid profile, in trunk/build/strap1/profile/Nokia-N900-phone:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ARCH=&amp;quot;armel&amp;quot;STRIP=&amp;quot;arm-linux-gnueabi-strip&amp;quot;#this device is a phone. &amp;quot;strap1/profiles/include/phone.include&amp;quot;#add bluetooth support. &amp;quot;strap1/profiles/include/bluetooth.include&amp;quot;[...]&lt;/pre&gt;
(and so on for the rest of the hardware capabilities)&lt;br /&gt;
&lt;br /&gt;
Once this added, this simple command was enough to populate the environment:&lt;br /&gt;
&lt;pre&gt;# ./strap1.sh DESTDIR=/usr/arm-linux-gnueabi HOSTNAME=n900.nokia.maemo install&lt;/pre&gt;
There I was. It was even faster than with a regular Debian target, since there are way less packages available to parse. But did I miss installing the development packages? Totally. Yet it doesn't matter:&lt;br /&gt;
&lt;pre&gt;# ./strap1.sh DESTDIR=/usr/arm-linux-gnueabi HOSTNAME=n900.nokia.maemo \  PACKAGES=&amp;quot;libssl-dev libgtk2.0-dev&amp;quot; install&lt;/pre&gt;
And seconds later, I had these two installed as necessary, along with their dependencies of course. Sweet, but we're not done yet. Let's build actual packages:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ cd trunk/packages$ ./packages.sh DEBIAN_ARCH=armel DEBIAN_VERSION=maemo libsystem$ ./packages.sh DEBIAN_ARCH=armel DEBIAN_VERSION=maemo libdesktop$ ./packages.sh DEBIAN_ARCH=armel DEBIAN_VERSION=maemo editor&lt;/pre&gt;
Unfortunately, even with the correct binaries and packages definitions installed in the cross-compilation environment, dh_shlibdeps failed to grab the right dependencies. Disabling it during cross-compilation was enough to do the trick (commenting it out in debian/rules from the diff file).&lt;br /&gt;
&lt;br /&gt;
Time to add this new repository into the N900 [11], through &amp;quot;Application manager&amp;quot;-&amp;gt;&amp;quot;Catalogs&amp;quot;-&amp;gt;&amp;quot;New&amp;quot; [12]:&lt;br /&gt;
&lt;pre&gt;Catalog name: hackable:1Web address: &lt;a href=&quot;http://build.hackable1.org/debian&quot;&gt;http://build.hackable1.org/debian&lt;/a&gt;Distribution: wip-maemoComponents: main&lt;/pre&gt;
Open a terminal, gain root privileges:&lt;br /&gt;
&lt;pre&gt;# apt-get update# apt-get install libsystem0 libdesktop0 editor[...]$ editor&lt;/pre&gt;
And it works. I repeat: sweet.&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;you can install the following package to fix the missing icons: &lt;a href=&quot;http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/f/fixpr12icons/fixpr12icons_1.0+maemo-0_all.deb&quot;&gt;http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/f/fixpr12icons/fixpr12icons_1.0+maemo-0_all.deb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;this page is more exhaustive about the packaging process in Maemo: &lt;a href=&quot;http://wiki.maemo.org/Packaging&quot;&gt;http://wiki.maemo.org/Packaging&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
[1] &lt;a href=&quot;http://www.defora.org/os/wiki/3426/Graphical-environment&quot;&gt;http://www.defora.org/os/wiki/3426/Graphical-environment&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&quot;http://maemo.nokia.com/n900/&quot;&gt;http://maemo.nokia.com/n900/&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_FreeRunner&quot;&gt;http://wiki.openmoko.org/wiki/Neo_FreeRunner&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org/&lt;/a&gt;&lt;br /&gt;
[5] &lt;a href=&quot;http://trac.hackable1.org/trac/wiki/AvailableVersions/dse2&quot;&gt;http://trac.hackable1.org/trac/wiki/AvailableVersions/dse2&lt;/a&gt;&lt;br /&gt;
[6] &lt;a href=&quot;http://www.defora.org/os/download/download/3512/dse2-Screenshot-2.png&quot;&gt;http://www.defora.org/os/download/download/3512/dse2-Screenshot-2.png&lt;/a&gt;&lt;br /&gt;
[7] &lt;a href=&quot;http://www.maemo.org/&quot;&gt;http://www.maemo.org/&lt;/a&gt;&lt;br /&gt;
[8] &lt;a href=&quot;http://scratchbox.org/documentation/user/scratchbox-1.0/html/installdoc.html#AEN47&quot;&gt;http://scratchbox.org/documentation/user/scratchbox-1.0/html/installdoc.html#AEN47&lt;/a&gt;&lt;br /&gt;
[9] &lt;a href=&quot;http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging,_Deploying_and_Distributing&quot;&gt;http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging,_Deploying_and_Distributing&lt;/a&gt;&lt;br /&gt;
[10] &lt;a href=&quot;http://repository.maemo.org/dists/maemo5.0/&quot;&gt;http://repository.maemo.org/dists/maemo5.0/&lt;/a&gt;&lt;br /&gt;
[11] &lt;a href=&quot;http://people.defora.org/~khorben/share/n900/Screenshot-20110321-000354.png&quot;&gt;http://people.defora.org/~khorben/share/n900/Screenshot-20110321-000354.png&lt;/a&gt;&lt;br /&gt;
[12] &lt;a href=&quot;http://people.defora.org/~khorben/share/n900/Screenshot-20110321-000410.png&quot;&gt;http://people.defora.org/~khorben/share/n900/Screenshot-20110321-000410.png&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sun, 20 Mar 2011 21:18:47 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: New unofficial beta release of hackable:1</title>
	<guid>http://people.defora.org/~khorben/place/blog/122/New-unofficial-beta-release-of-hackable-1</guid>
	<link>http://people.defora.org/~khorben/place/blog/122/New-unofficial-beta-release-of-hackable-1</link>
	<description>I just announced the availability of the first beta version for dse2, the DeforaOS Smartphone Environment [1] as found in hackable:1 [2]:&lt;br /&gt;
&lt;a href=&quot;http://lists.hackable1.org/pipermail/hackable1-dev/2011-March/001686.html&quot;&gt;http://lists.hackable1.org/pipermail/hackable1-dev/2011-March/001686.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I don't think I have much to add to this; except on a personal level maybe, which would be appropriate here I guess.&lt;br /&gt;
&lt;br /&gt;
When I was first offered an Openmoko Neo1973 in summer of 2007 [3], I think I was both excited and disappointed about the device. It was a very promising opportunity for Open Source and telephony, at a time where only few devices were known to be usable with alternate and free environments. But I really did not like the look &amp;amp; feel of the device, or the state of the software running on it. Little did I suspect that I would spend so much time and energy with its successor, the Freerunner [4].&lt;br /&gt;
&lt;br /&gt;
This happened first while I was working with Bearstech [5] on the promotion of hackable devices [6]. There, we focused on supporting what seemed to be the most viable solution at the time: the Om2007.2 stack. This part was a very frustrating experience, which I have mentioned already [7].&lt;br /&gt;
&lt;br /&gt;
And now, I begin to feel much better about the whole thing. First, the Openmoko platform is still alive: thanks to Nikolaus Schaller of Golden Delicious [8], and of course thanks to the openness of the platform, a third-party hardware upgrade is available. Then, well, Google happened, Android is everywhere, and many more devices are usable with Open Source software.&lt;br /&gt;
&lt;br /&gt;
But what's more, I am beginning to feel better and better about the DeforaOS project as a whole. This was a painful yet fantastic motivation to bring it where it is today. I had even decided to mostly give it up about a month ago, at least for a while. But the deadline [9] I set for the project on improving the user environment is almost matched now [10]. Better, I have great plans for the following one [11]. I may even go to University again [12]! This is not without reminding me about my own description of myself :) [13]&lt;br /&gt;
&lt;br /&gt;
So yeah, four years later and much to my own surprise, I am getting increasingly comfortable and curious about using the dse2 release as a daily phone. It can only inspire me to push it to the next level :) [14]&lt;br /&gt;
&lt;br /&gt;
To conclude:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;special thanks to the Neo1973-gift-maker!&lt;/li&gt;
&lt;li&gt;all of this is completely futile, and most of my thoughts are going to people of Japan, Ivory Coast, France and Libya right now.&lt;/li&gt;
&lt;/ul&gt;
[1] &lt;a href=&quot;http://www.defora.org/os/wiki/3438/DeforaOS-Smartphone&quot;&gt;http://www.defora.org/os/wiki/3438/DeforaOS-Smartphone&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org/&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href=&quot;http://events.ccc.de/camp/2007/Intro/&quot;&gt;http://events.ccc.de/camp/2007/Intro/&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_FreeRunner&quot;&gt;http://wiki.openmoko.org/wiki/Neo_FreeRunner&lt;/a&gt;&lt;br /&gt;
[5] &lt;a href=&quot;http://www.bearstech.com/&quot;&gt;http://www.bearstech.com/&lt;/a&gt;&lt;br /&gt;
[6] &lt;a href=&quot;http://hackable-devices.org/&quot;&gt;http://hackable-devices.org/&lt;/a&gt;&lt;br /&gt;
[7] &lt;a href=&quot;http://people.defora.org/~khorben/place/blog/88/The-DeforaOS-smartphone-environment&quot;&gt;http://people.defora.org/~khorben/place/blog/88/The-DeforaOS-smartphone-environment&lt;/a&gt;&lt;br /&gt;
[8] &lt;a href=&quot;http://www.goldelico.com/&quot;&gt;http://www.goldelico.com/&lt;/a&gt;&lt;br /&gt;
[9] &lt;a href=&quot;http://www.defora.org/os/wiki/display/3324/Roadmap&quot;&gt;http://www.defora.org/os/wiki/display/3324/Roadmap&lt;/a&gt;&lt;br /&gt;
[10] &lt;a href=&quot;http://www.defora.org/os/wiki/3426/Graphical-environment&quot;&gt;http://www.defora.org/os/wiki/3426/Graphical-environment&lt;/a&gt;&lt;br /&gt;
[11] &lt;a href=&quot;http://www.defora.org/os/wiki/3427/Distributed-environment&quot;&gt;http://www.defora.org/os/wiki/3427/Distributed-environment&lt;/a&gt;&lt;br /&gt;
[12] &lt;a href=&quot;http://www.net.t-labs.tu-berlin.de/teaching/thesis/#network_virtu&quot;&gt;http://www.net.t-labs.tu-berlin.de/teaching/thesis/#network_virtu&lt;/a&gt;&lt;br /&gt;
[13] &lt;a href=&quot;http://people.defora.org/~khorben/place/wiki/12/About&quot;&gt;http://people.defora.org/~khorben/place/wiki/12/About&lt;/a&gt;&lt;br /&gt;
[14] &lt;a href=&quot;http://www.defora.org/os/wiki/display/3323/Planned-developments&quot;&gt;http://www.defora.org/os/wiki/display/3323/Planned-developments&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sun, 13 Mar 2011 20:27:55 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Over 10 thousand commits</title>
	<guid>http://people.defora.org/~khorben/place/blog/120/Over-10-thousand-commits</guid>
	<link>http://people.defora.org/~khorben/place/blog/120/Over-10-thousand-commits</link>
	<description>According to Ohloh [1], I just went over 10,000 commits [2]:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;DeforaOS 8173&lt;/li&gt;
&lt;li&gt;hackable:1 1350&lt;/li&gt;
&lt;li&gt;RunningBear 483&lt;/li&gt;
&lt;li&gt;Whitix 13&lt;/li&gt;
&lt;/ul&gt;
for a total of 10,019.&lt;br /&gt;
&lt;br /&gt;
Now let's see if it was worth the effort...&lt;br /&gt;
&lt;br /&gt;
[1] &lt;a href=&quot;http://www.ohloh.net/&quot;&gt;http://www.ohloh.net/&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&quot;http://www.ohloh.net/accounts/khorben/widgets&quot;&gt;http://www.ohloh.net/accounts/khorben/widgets&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sun, 13 Mar 2011 12:02:26 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Resurrecting RunningBear</title>
	<guid>http://people.defora.org/~khorben/place/blog/118/Resurrecting-RunningBear</guid>
	<link>http://people.defora.org/~khorben/place/blog/118/Resurrecting-RunningBear</link>
	<description>Today (or tonight) I have finally managed to import most of the fixes pushed into DeforaOS since the last meaningful commits to the RunningBear project (around December 2008 I guess). This was motivated by a few reasons:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;a bug report on memchr() in the DeforaOS libc [1]&lt;/li&gt;
&lt;li&gt;NetBSD booting on N900 [2]&lt;/li&gt;
&lt;li&gt;good progress on DeforaOS [3] [4]&lt;/li&gt;
&lt;li&gt;same on hackable:1 [5]&lt;/li&gt;
&lt;/ul&gt;
Unfortunately, it still isn't good enough to support Xynth's user interface on the system [6]. But it's getting close enough, and I think the missing parts are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;support for setjmp() and longjmp() in the libc;&lt;/li&gt;
&lt;li&gt;same for signal(), checking alarm() too;&lt;/li&gt;
&lt;li&gt;for NetBSD, importing and adapting Linux' &amp;lt;sys/kd.h&amp;gt; to match the wscons API.&lt;/li&gt;
&lt;/ul&gt;
These are three hairy issues to tackle, but nothing's too hairy for a RunningBear (hey it's 3 am I'm allowed).&lt;br /&gt;
&lt;br /&gt;
With luck RunningBear could actually begin its career running on both the Openmoko Freerunner and Neo1973, HTC TouchPro and Nokia N900 smartphones, based on either Linux or NetBSD kernels. I'll try to do it with hackable:1 first though :)&lt;br /&gt;
&lt;br /&gt;
Last but not least: RunningBear is on Ohloh now! [7]&lt;br /&gt;
&lt;br /&gt;
The links:&lt;br /&gt;
[1] &lt;a href=&quot;http://www.defora.org/os/project/bug_display/3474?bug_id=40&quot;&gt;http://www.defora.org/os/project/bug_display/3474?bug_id=40&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&quot;http://www.netbsdfr.org/?p=1993&quot;&gt;http://www.netbsdfr.org/?p=1993&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href=&quot;http://www.defora.org/os/news/3478/Summary-of-latest-releases&quot;&gt;http://www.defora.org/os/news/3478/Summary-of-latest-releases&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href=&quot;http://www.defora.org/os/news/3484/Release-party-for-RunningBear&quot;&gt;http://www.defora.org/os/news/3484/Release-party-for-RunningBear&lt;/a&gt;&lt;br /&gt;
[5] &lt;a href=&quot;http://www.hackable1.org/&quot;&gt;http://www.hackable1.org/&lt;/a&gt;&lt;br /&gt;
[6] &lt;a href=&quot;http://xynth.sf.net/&quot;&gt;http://xynth.sf.net/&lt;/a&gt;&lt;br /&gt;
[7] &lt;a href=&quot;http://www.ohloh.net/p/RunningBear&quot;&gt;http://www.ohloh.net/p/RunningBear&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sun, 27 Feb 2011 01:27:48 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Compiling Android applications on NetBSD</title>
	<guid>http://people.defora.org/~khorben/place/blog/115/Compiling-Android-applications-on-NetBSD</guid>
	<link>http://people.defora.org/~khorben/place/blog/115/Compiling-Android-applications-on-NetBSD</link>
	<description>As mentioned previously, I gave a try to the Android SDK recently, and was even able to package a few applications on my NetBSD-based development workstation (amd64 architecture). I am listing the most important steps here; for the actual instructions, please refer to &lt;a href=&quot;http://developer.android.com/sdk/installing.html&quot;&gt;http://developer.android.com/sdk/installing.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Sun Java SE 6&lt;/pre&gt;
First of all, you need Sun's Java development environment installed and running. It is readily packaged in pkgsrc (as Linux i386 binaries), in lang/sun-jdk6:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# cd /usr/pkgsrc/lang/sun-jdk6[...]&lt;/pre&gt;
First, you'll have to accept both licenses of the JRE (runtime) and JDK (development) packages; to do so, add the following lines to /etc/mk.conf:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ACCEPTABLE_LICENSES+= sun-jre6-licenseACCEPTABLE_LICENSES+= sun-jdk6-license&lt;/pre&gt;
Then, you'll have to download the generic Linux i386 packages yourself:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;jre-6u22-linux-i586.bin&lt;/li&gt;
&lt;li&gt;jdk-6u22-linux-i586.bin&lt;/li&gt;
&lt;/ul&gt;
They are both found at &lt;a href=&quot;http://www.oracle.com/technetwork/java/archive-139210.html&quot;&gt;http://www.oracle.com/technetwork/java/archive-139210.html&lt;/a&gt; . When done, move them to where pkgsrc stores downloaded content, typically /usr/pkgsrc/distfiles.&lt;br /&gt;
&lt;br /&gt;
Back to /usr/pkgsrc/lang/sun-jdk6, install it as usual:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# make install[...]&lt;/pre&gt;
This will install a complete Linux i386 binary emulation environment, if you didn't already have it installed (like for Adobe's Flash player). At this point, if the checksum of any file is wrong, then make sure to delete it and download it again: they are correctly referenced in pkgsrc, no need to insist.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Eclipse IDE&lt;/pre&gt;
The next important thing is to obtain the Eclipse IDE (version 3.5 or earlier). An old version is already packaged in devel/eclipse (3.0.1), but it will certainly not be enough to get the SDK to work. The 3.6 Linux build of Eclipse ran perfectly though, as downloaded here: &lt;a href=&quot;http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/SR1/eclipse-java-helios-SR1-linux-gtk.tar.gz&quot;&gt;http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/SR1/eclipse-java-helios-SR1-linux-gtk.tar.gz&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It is then enough to extract and run the environment directly:&lt;br /&gt;
&lt;pre&gt;$ tar xzf eclipse-java-helios-SR1-linux-gtk.tar.gz$ cd eclipse$ ./eclipse&lt;/pre&gt;
Create and choose a workspace directory as proposed, and you should then be greeted with the Eclipse welcome screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Android ADT plug-in for Eclipse&lt;/pre&gt;
Before installing the actual SDK for Android, it will greatly help if you get the &amp;quot;Android Development Tools&amp;quot; integrated into Eclipse. Select the Help menu, then &amp;quot;Install new software...&amp;quot;. Click &amp;quot;Add...&amp;quot; to add the &amp;quot;ADT Plugin&amp;quot; repository at &amp;quot;&lt;a href=&quot;https://dl-ssl.google.com/android/eclipse/&quot;&gt;https://dl-ssl.google.com/android/eclipse/&lt;/a&gt;&amp;quot; and &amp;quot;OK&amp;quot;. &amp;quot;Select all&amp;quot; and hit &amp;quot;Next&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It's fine (so to speak) if it takes time at this stage: it just took ten minutes for me right now as I am testing this. So even if Eclipse seems to have hung, it seems that the first time you're doing this, it needs to (slowly) download, parse and refresh a whole lot of internal repository data before it even gets to the one you just added.&lt;br /&gt;
&lt;br /&gt;
Anyway, just accept the license if you agree, go through the unsigned content, and restart Eclipse as proposed. If you're lucky (and patient) enough it will work eventually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Android SDK&lt;/pre&gt;
Yes, we're getting there. It is now time to download and extract the Android SDK as well:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ ftp &lt;a href=&quot;http://dl.google.com/android/android-sdk_r10-linux_x86.tgz&quot;&gt;http://dl.google.com/android/android-sdk_r10-linux_x86.tgz&lt;/a&gt;$ tar xzf android-sdk_r10-linux_x86.tgz&lt;/pre&gt;
With this done, you still have to let Eclipse know where you have extracted the tools: &amp;quot;Window&amp;quot; menu, &amp;quot;Preferences&amp;quot;, in the &amp;quot;Android&amp;quot; tab simply browse to the SDK location, &amp;quot;Apply&amp;quot;, &amp;quot;Apply&amp;quot; again (important) and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Do not hesitate to repeat this last step a few times, possibly restarting Eclipse right after doing it, as in my case it didn't seem to get it right the first or second time around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Android SDK platforms&lt;/pre&gt;
There is one last step and you'll be free to compile your first Android applications. In the &amp;quot;Window&amp;quot; menu, &amp;quot;Android SDK and AVD Manager&amp;quot;: check and install the SDK platforms as needed. You'll then be ready to create and compile your first package, as documented there: &lt;a href=&quot;http://developer.android.com/guide/tutorials/hello-world.html&quot;&gt;http://developer.android.com/guide/tutorials/hello-world.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Remaining challenges&lt;/pre&gt;
There is still one thing that doesn't work on NetBSD with this setup: the emulator. It legitimately complains with this message:&lt;br /&gt;
&lt;pre&gt;/lib/libc.so.6: version `GLIBC_2.7' not found (required by.../android/android-sdk-linux_x86//tools/emulator)&lt;/pre&gt;
This is because the Linux emulation environment packaged is too old to support programs linked with newer versions of the glibc. As annoying as this is, there is good news: as far as I know, it is already supported in the -current branch of NetBSD's development, and will definitely be available in the 6.0 release.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Conclusion&lt;/pre&gt;
I have to say, in spite of the weight and very specific requirements of the SDK, it seems to be clearly documented and integrated. It's a good lesson for the more open development environments which I'm used to work with so far (like hackable:1, &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org/&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
But unfortunately, again, if anything breaks, I did not find anything easier than to erase the whole &amp;quot;eclipse&amp;quot; folder and start over. It seems that programming complete IDE and SDK environments is too complex for developers to implement error checking: this has bitten me heavily when installing the SDK on Linux Debian 6.0 amd64:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;install the SDK without the i386 binary compatibility packages installed;&lt;/li&gt;
&lt;li&gt;everything seems to work, no errors, but it keeps forgetting where the SDK tools are, and then fails to create virtual devices;&lt;/li&gt;
&lt;li&gt;install the lib32ncurses5 i386 package (and dependencies)&lt;/li&gt;
&lt;li&gt;re-declare where the SDK tools are, it won't warn you again that they're missing but still won't work;&lt;/li&gt;
&lt;li&gt;start over from scratch, it will.&lt;/li&gt;
&lt;/ul&gt;
*sigh*&lt;br /&gt;
&lt;br /&gt;
Yet:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ file workspace/HelloWorld/bin/HelloWorld.apkworkspace/HelloWorld/bin/HelloWorld.apk: Zip archive data, at least v2.0 to extract&lt;/pre&gt;
Update: I just packaged eclipse 3.6.1 in wip/eclipse. HTH :)&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Thu, 24 Feb 2011 15:48:27 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Installing the Meego SDK on Debian Squeeze</title>
	<guid>http://people.defora.org/~khorben/place/blog/109/Installing-the-Meego-SDK-on-Debian-Squeeze</guid>
	<link>http://people.defora.org/~khorben/place/blog/109/Installing-the-Meego-SDK-on-Debian-Squeeze</link>
	<description>I recently had to install the Android SDK on a couple of my machines, and will share my experience doing that after this post. I am currently trying to compare it with Meego, and I think these few notes can be useful.&lt;br /&gt;
&lt;br /&gt;
I encountered a couple issues:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;the &amp;quot;meego-sdk&amp;quot; package was uninstallable because of a dependency issue;&lt;/li&gt;
&lt;li&gt;the SDK installs into /opt and the recommended partitioning has / too small (about 200MB are required)&lt;/li&gt;
&lt;/ul&gt;
The first issue was solved by forward-porting libmpfr1ldbl from Debian Lenny; if you adapt for your setup and actual versions:&lt;br /&gt;
&lt;pre&gt;# echo deb-src &lt;a href=&quot;http://ftp2.de.debian.org/debian/&quot;&gt;http://ftp2.de.debian.org/debian/&lt;/a&gt; lenny main &amp;gt;&amp;gt; /etc/apt/sources.list# apt-get update[...]# apt-get source -b libmpfr1ldbl[...]# dpkg -i libmpfr1ldbl_2.3.1.dfsg.1-2_amd64.deb[...]# apt-get install meego-sdk[...]&lt;/pre&gt;
I'll see if I can easily package it within hackable:1, it could be interesting to help install the SDK thanks to this repository; it's usually the other way around...&lt;br /&gt;
&lt;br /&gt;
The second issue was easily solved with a bind mount:&lt;br /&gt;
&lt;pre&gt;# echo /usr/opt /opt bind defaults,bind 0 0 &amp;gt;&amp;gt; /etc/fstab# mkdir -p /opt /usr/opt# mount /opt&lt;/pre&gt;
This has to be done before the previous step if you needed it. Do not forget to move the contents of /opt to /usr/opt if necessary.&lt;br /&gt;
&lt;br /&gt;
I have also posted this information on &lt;a href=&quot;http://wiki.meego.com/Talk:Image_Creation_For_Beginners&quot;&gt;http://wiki.meego.com/Talk:Image_Creation_For_Beginners&lt;/a&gt; .&lt;br /&gt;
&lt;br /&gt;
Interestingly enough it supports OpenID. It was trivial enough to login using my existing ID on &lt;a href=&quot;http://openid.bearstech.com/&quot;&gt;http://openid.bearstech.com/&lt;/a&gt; . Neat :)&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sun, 20 Feb 2011 22:44:52 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: First (unofficial) release of the DeforaOS smartphone environment</title>
	<guid>http://people.defora.org/~khorben/place/blog/96/First-(unofficial)-release-of-the-DeforaOS-smartphone-environment</guid>
	<link>http://people.defora.org/~khorben/place/blog/96/First-(unofficial)-release-of-the-DeforaOS-smartphone-environment</link>
	<description>I finally have the pleasure to deliver the first version of the DeforaOS Smartphone environment, as featured in the hackable:1 distribution.&lt;br /&gt;
First, the direct links:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.defora.org/download/snapshots/hackable1/Hackable1-Openmoko-Freerunner-user-2010.09a-rootfs.jffs2&quot;&gt;http://www.defora.org/download/snapshots/hackable1/Hackable1-Openmoko-Freerunner-user-2010.09a-rootfs.jffs2&lt;/a&gt; (flash)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.defora.org/download/snapshots/hackable1/Hackable1-Openmoko-Freerunner-user-2010.09a.tar.gz&quot;&gt;http://www.defora.org/download/snapshots/hackable1/Hackable1-Openmoko-Freerunner-user-2010.09a.tar.gz&lt;/a&gt; (MicroSD)&lt;/li&gt;
&lt;/ul&gt;
If you like the artwork better than I do myself, you can also find a splash screen for u-boot there:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.defora.org/download/snapshots/hackable1/Hackable1-Openmoko-Freerunner-user-2010.07a-splash.gz&quot;&gt;http://www.defora.org/download/snapshots/hackable1/Hackable1-Openmoko-Freerunner-user-2010.07a-splash.gz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
I have gathered some release notes and documentation within hackable:1's wiki, which you will find there:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trac.hackable1.org/trac/wiki/AvailableVersions/dse1&quot;&gt;http://trac.hackable1.org/trac/wiki/AvailableVersions/dse1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trac.hackable1.org/trac/wiki/DeforaOSSmartphone&quot;&gt;http://trac.hackable1.org/trac/wiki/DeforaOSSmartphone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Of course, I gathered some screenshots as well. They can be seen here:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.defora.org/os/project/download/3343/Phone&quot;&gt;http://www.defora.org/os/project/download/3343/Phone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Before I conclude, I am the first one to know that this release is far from perfect. If you feel like you have anything to say about it, you will be more than welcome to let it be known. There are a number of ways to do that:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;contacting me personally as described on &lt;a href=&quot;http://people.defora.org/~khorben/place/wiki/13/Contact&quot;&gt;http://people.defora.org/~khorben/place/wiki/13/Contact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;using DeforaOS' development mailing-list, as on &lt;a href=&quot;http://lists.defora.org/&quot;&gt;http://lists.defora.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;filing a bug in DeforaOS: &lt;a href=&quot;http://www.defora.org/os/project/bug_new&quot;&gt;http://www.defora.org/os/project/bug_new&lt;/a&gt; (create your account first at &lt;a href=&quot;https://www.defora.org/os/user/register&quot;&gt;https://www.defora.org/os/user/register&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
Now for the final words of this post, I have no reason to hide the fact that hackable:1 itself is probably a dead project already. I seem to be the last developer interested, which I find quite sad since I know no other project providing ready-to-flash Debian images for embedded platforms.&lt;br /&gt;
If you also have a need and desire for such a framework, I encourage you to let it be known. As for myself, I have in mind to improve and maintain such a way to generate ready-to-use images, probably as part of the DeforaOS project as well, unless somebody beats me to it.&lt;br /&gt;
&lt;br /&gt;
Anyway, for more literature on this work, feel free to check earlier blog posts and news announcements on this blog or at &lt;a href=&quot;http://www.defora.org/&quot;&gt;http://www.defora.org/&lt;/a&gt; .&lt;br /&gt;
&lt;br /&gt;
Happy testing!&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Mon, 20 Sep 2010 14:51:02 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Releasing a new snapshot of the DeforaOS smartphone environment on hackable:1</title>
	<guid>http://people.defora.org/~khorben/place/blog/95/Releasing-a-new-snapshot-of-the-DeforaOS-smartphone-environment-on-hackable-1</guid>
	<link>http://people.defora.org/~khorben/place/blog/95/Releasing-a-new-snapshot-of-the-DeforaOS-smartphone-environment-on-hackable-1</link>
	<description>I have managed yesterday to release a new snapshot of the DeforaOS smartphone environment, as found packaged on top of the hackable:1 distribution. Unfortunately, there is still one obvious blocker bug before it can be easily tested as a real phone at the moment: as it seems, the modem &amp;quot;forgets&amp;quot; the PIN code a few seconds after accepting it, and is then unable to register correctly.
&lt;br /&gt;
Of course, my current plan is to investigate and fix this as soon as possible (with a new snapshot). Yet, among the changes since the last release of the environment, you will already find:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;a new finger keyboard, with popup keys (and using Gtk+' theme)
&lt;/li&gt;
&lt;li&gt;the addition of a phone log;
&lt;/li&gt;
&lt;li&gt;preferences windows for the phone application;
&lt;/li&gt;
&lt;li&gt;the return of the background picture, and a preferences window to easily change it;
&lt;/li&gt;
&lt;li&gt;last but not least, the final version of my initial attempt at SMS encryption.
&lt;/li&gt;
&lt;/ul&gt;

With this, I will continue my work on the user experience:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;fix and update the web browser (broken since the switch to Debian testing);
&lt;/li&gt;
&lt;li&gt;continue improvements to the finger keyboard (bigger keys, multiple layouts)
&lt;/li&gt;
&lt;li&gt;nicer Gtk+ theme and artwork if I manage (screenshots!)
&lt;/li&gt;
&lt;li&gt;more actual tests and usability improvements to the phone application;
&lt;/li&gt;
&lt;li&gt;power management;
&lt;/li&gt;
&lt;li&gt;GPRS support.
&lt;/li&gt;
&lt;/ul&gt;

I have also begun to implement an application to configure access to wireless networks, with wpa_supplicant's help. It will take another while though.
&lt;br /&gt;

&lt;br /&gt;
For more information, as always, check either &lt;a href=&quot;http://www.defora.org/,&quot;&gt;http://www.defora.org/,&lt;/a&gt; the IRC channel of hackable:1 (#hackable1 on Freenode), the respective mailing-lists (devel@lists.defora.org, hackable1-dev@lists.hackable1.org...) or even, feel free to contact me directly of course: &lt;a href=&quot;http://people.defora.org/~khorben/place/wiki/13/Contact&quot;&gt;http://people.defora.org/~khorben/place/wiki/13/Contact&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
And before I forget, the snapshot itself is announced and available there: &lt;a href=&quot;http://www.defora.org/os/news/3394/New-snapshot-of-the-DeforaOS-smartphone&quot;&gt;http://www.defora.org/os/news/3394/New-snapshot-of-the-DeforaOS-smartphone&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Mon, 30 Aug 2010 12:57:56 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: Improvizing a talk at Debienna</title>
	<guid>http://people.defora.org/~khorben/place/blog/91/Improvizing-a-talk-at-Debienna</guid>
	<link>http://people.defora.org/~khorben/place/blog/91/Improvizing-a-talk-at-Debienna</link>
	<description>I have been staying a few days in Vienna a couple weeks ago, where I happened to join a Debienna [1] meeting. As things went it felt appropriate to introduce hackable:1 [2] (and my current work on it) to this fine crowd. I have therefore quickly prepared a presentation, of which slides can be found there [3].
&lt;br /&gt;

&lt;br /&gt;
It was called &amp;quot;hackable:1 (and then more)&amp;quot;, and I really appreciated this opportunity. See you guys!
&lt;br /&gt;

&lt;br /&gt;
[1] &lt;a href=&quot;http://www.debienna.at/&quot;&gt;http://www.debienna.at/&lt;/a&gt;
&lt;br /&gt;
[2] &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org/&lt;/a&gt;
&lt;br /&gt;
[3] &lt;a href=&quot;http://people.defora.org/~khorben/papers/h1more/h1.html&quot;&gt;http://people.defora.org/~khorben/papers/h1more/h1.html&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Thu, 26 Aug 2010 16:54:19 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: News from the hackable:1 front</title>
	<guid>http://people.defora.org/~khorben/place/blog/89/News-from-the-hackable-1-front</guid>
	<link>http://people.defora.org/~khorben/place/blog/89/News-from-the-hackable-1-front</link>
	<description>About the DeforaOS smartphone environment, I have just uploaded a first image for tests, as presented here:
&lt;br /&gt;
&lt;a href=&quot;https://www.defora.org/os/news/3380/Snapshot-of-the-DeforaOS-smartphone-available-for-tests&quot;&gt;https://www.defora.org/os/news/3380/Snapshot-of-the-DeforaOS-smartphone-available-for-tests&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
It directly benefits from the recent switch to Debian Squeeze/testing, as the default version of Debian on which hackable:1's development is now based. Like before, images are generated daily and found here:
&lt;br /&gt;
&lt;a href=&quot;http://build.hackable1.org/&quot;&gt;http://build.hackable1.org/&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Last but not least, you may have heard of OsmocomBB, a Free Software GSM Baseband software implementation:
&lt;br /&gt;
&lt;a href=&quot;http://www.osmocom.org/&quot;&gt;http://www.osmocom.org/&lt;/a&gt;
&lt;br /&gt;
Good news is, I have started to package it for use within hackable:1. A few things are left to be fixed before they can be pushed automatically online, but I have been able to cross-compile libosmocore and the layer23 set of tools already.
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Fri, 30 Jul 2010 14:00:45 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>khorben: The DeforaOS smartphone environment</title>
	<guid>http://people.defora.org/~khorben/place/blog/88/The-DeforaOS-smartphone-environment</guid>
	<link>http://people.defora.org/~khorben/place/blog/88/The-DeforaOS-smartphone-environment</link>
	<description>I'll change my habits a bit here, and write a personal note about what I've been working on recently. Some of you may know about it already, since I have begun to announce it, but probably to a smaller audience this far [1].
&lt;br /&gt;

&lt;br /&gt;
It's probably relevant to begin with some background information about all this, although even then it's difficult to know where to start.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;Reinventing the wheel
&lt;/pre&gt;

For some reason I found the urge to start an Operating System project of my own, which began with a modified version of Debian GNU/Linux [2]. This goes as far back as 2001, which may seem like yesterday to many experienced UNIX users, but was just a year after my first installation of a distribution on my own computer. This turned into a LFS-based project [3], before becoming the DeforaOS project as it is today [4], with more or less the goal to re-implement a complete kernel and user environment.
&lt;br /&gt;

&lt;br /&gt;
That is to say, you may see a pattern here, and remind me that such time may be better spent improving the existing projects. While I would definitely agree that many Open Source projects need help (quite logically, otherwise I wouldn't have started my own), I will briefly summarize the reasons behind my choices:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I am having fun, and learning in the process;
&lt;/li&gt;
&lt;li&gt;back then, I did not have the technical means (eg cheap Internet access), let alone political power to influence much of the things I really wanted;
&lt;/li&gt;
&lt;li&gt;with my projects evolving, I stuck with this work and choices rather than give it all up;
&lt;/li&gt;
&lt;li&gt;frankly I still do not see myself having any political power now in the community, to do what I really want anyway;
&lt;/li&gt;
&lt;li&gt;last but not least, I am essentially trying to implement a different design, which I believe is worth a try.
&lt;/li&gt;
&lt;/ul&gt;

Of course this doesn't mean that I always make the same choices as a professional [5]. This experience has always been useful, even though a compromise in design I made to implement a working solution unfortunately hasn't succeeded to date [6]. But I have then been focusing a full year on the hackable:1 project instead [7], with a few releases along the way.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;The Openmoko Freerunner
&lt;/pre&gt;

This is clearly another illustration of the &amp;quot;reinventing the wheel&amp;quot; approach. Why go all the way and create an Open Source smartphone from scratch [8]? It sure must be tedious, and from my experience and the information I have obtained in the process, I can say it sure was. And I can't say it was a clear, undisputed success either.
&lt;br /&gt;

&lt;br /&gt;
I'll be honest: I never liked the device itself. I found it ugly and bulky at best. I encountered the most annoying hardware bugs and subsequent frustration rushes. No need to mention the community fragmentation, which didn't help either. But today still, it sure has its uses, and is actually useful in plenty of ways.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;Coding again
&lt;/pre&gt;

Burning out, having new opportunities, I parted ways and resumed work as a security consultant instead [9]. I could afford to take a first break in far-away land (thanks a.) and have fun creating software again, rather than feel like a packaging robot for what seemed to me as being broken code anyway.
&lt;br /&gt;

&lt;br /&gt;
I could manage to get a few bugs fixed in my current Operating System of choice (NetBSD [10]), and then turn a few more sub-projects of DeforaOS to be good enough that I began to (finally) use many of them on a daily basis.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;The motive(s)
&lt;/pre&gt;

Owning a Sharp Zaurus [11] for a few years, I had already been thinking about an embedded version of the desktop environment while writing it. But I could do better; I could take my revenge on the Openmoko Freerunner instead. Still bitter from the outcome of my efforts while working with the device, I was convinced that I could do better. Be it true or not, as always there is only one way to know: trying it hard, whatever the reason.
&lt;br /&gt;

&lt;br /&gt;
After a quick glance at the Openmoko community, to no surprise I found its activity to be declining. Maybe this is not true and I was simply expecting it, but I think it's fair to say that the hardware is aging. Nonetheless, combined with hackable:1 it has the advantage to easily letting me run my own native environment. This is certainly not true of the more popular mobile platforms.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;Trying a different way
&lt;/pre&gt;

As mentioned, I thought I could turn this phone into something more useful than it already was. This was based on the following assumptions, based on my personal appreciation:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;the existing projects are over-engineered;
&lt;/li&gt;
&lt;li&gt;they have no global coherence concerning usability;
&lt;/li&gt;
&lt;li&gt;they are often developed as regular applications, regardless of the hardware constraints.
&lt;/li&gt;
&lt;/ul&gt;

Better then, some interesting and unusual features of the hardware are available and documented [12], some of which could turn into interesting security developments. I cannot pretend to have actually been able to do better, or implement all these fancy features, especially within this other month break; but here is where I am now.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;The DeforaOS embedded desktop environment
&lt;/pre&gt;

First, I have spent some time improving and adapting my existing desktop applications to fit the Freerunner. I won't copy and paste what I have already written about it [13]. Instead, here is a summary of its current status:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;neither hardware buttons are required (nor currently used) for regular operation, as everything can be done on-screen;
&lt;/li&gt;
&lt;li&gt;both panels are fully functional, with an integrated application launcher, and displaying the clock, hardware status (including registration, signal level and operator) and of course an application switcher;
&lt;/li&gt;
&lt;li&gt;the on-screen keyboard is fast, although definitely not finger-friendly at the moment (xkbd embedded in the panel), and will be re-implemented from scratch;
&lt;/li&gt;
&lt;li&gt;the contextual menus (as offered through a Gtk+ extension) could be more intuitively found;
&lt;/li&gt;
&lt;li&gt;the file manager is functional, but could be better integrated with the freedesktop.org standards;
&lt;/li&gt;
&lt;li&gt;the clipboard and drag&amp;amp;drop features from the same project could be improved as well;
&lt;/li&gt;
&lt;li&gt;the homescreen functionality cannot be enabled at the moment due to how matchbox-window-manager handles it;
&lt;/li&gt;
&lt;li&gt;DeforaOS' own window manager is not mature enough to be used instead at this point;
&lt;/li&gt;
&lt;li&gt;the latest versions of the web browser cannot be packaged on hackable:1 at the moment, as it depends on a more recent version of WebKit.
&lt;/li&gt;
&lt;/ul&gt;
I think this reflects quite well what is to be expected there.

&lt;br /&gt;
&lt;pre&gt;The DeforaOS smartphone environment
&lt;/pre&gt;

Meanwhile, I have implemented a complete telephony application from scratch [14]. The design goals were:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;use Gtk+ and the glib libraries in C, and only relying on them and DeforaOS' libDesktop;
&lt;/li&gt;
&lt;li&gt;embed the GSM daemon directly inside it;
&lt;/li&gt;
&lt;li&gt;implement the core application with all the required functionality built-in (eg contacts, messages, phone calls, preferences...)
&lt;/li&gt;
&lt;li&gt;let this application be as reactive as possible (eg single process)
&lt;/li&gt;
&lt;li&gt;extend it through optional plug-ins;
&lt;/li&gt;
&lt;li&gt;support hardware modems as broken as on the Openmoko Freerunner.
&lt;/li&gt;
&lt;/ul&gt;

It's still far from being eligible as a regular mobile phone sold with a contract, but as of today this first set of goals was mostly met. Some essential features are still missing:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;adding, editing and deleting contacts;
&lt;/li&gt;
&lt;li&gt;maintaining a phone log;
&lt;/li&gt;
&lt;li&gt;sending DTMF codes during calls;
&lt;/li&gt;
&lt;li&gt;storing the messages sent;
&lt;/li&gt;
&lt;li&gt;support for delivery reports;
&lt;/li&gt;
&lt;li&gt;preferences dialogs;
&lt;/li&gt;
&lt;li&gt;entering the PUK/PIN2/PUK2 codes;
&lt;/li&gt;
&lt;li&gt;switching to data mode;
&lt;/li&gt;
&lt;li&gt;call forwarding...
&lt;/li&gt;
&lt;/ul&gt;
Most of them are not challenging anymore, and are just a matter of taking a few hours this and there to get them done.

&lt;br /&gt;
&lt;pre&gt;Where is gets interesting
&lt;/pre&gt;

One of the first parts I believe I should emphasize in this post is the plug-in support. First, it allows full integration with the actual, underlying hardware platform with all the code clearly separated. This is the case on the Openmoko, where:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;a first plug-in takes care of supporting profiles, by requesting a ring tone, triggering the vibrator and so on;
&lt;/li&gt;
&lt;li&gt;the hardware plug-in catches these events and turns the relevant components on and off.
&lt;/li&gt;
&lt;/ul&gt;

Secondly, it allows extending the functionality in lots of different ways, from PulseAudio support to DBUS and potentially FSO integration [15], without mentioning webcams, GPS positioning [16] and then more.
&lt;br /&gt;

&lt;br /&gt;
And there's more.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;SMS encryption
&lt;/pre&gt;

One of the first additional security features I have been thinking about is SMS encryption [17]. While not being specific to the Freerunner, it is certainly an interesting platform for such a feature. My current implementation, while not being cryptographically strong at the moment, can already be demonstrated as a working Proof-of-Concept [18].
&lt;br /&gt;

&lt;br /&gt;
More than that, it is maybe time to think about a common, interoperable way to implement this feature. It looks like things could be moving towards this direction, with new projects emerging like TextSecure [19].
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;Cell tracking and geotagging
&lt;/pre&gt;

Not unlike some other phones, but probably in a more accessible way, the Freerunner supports an &amp;quot;engineering mode&amp;quot;. It is basically a monitoring mode [20][21], much like the one on your regular 802.11abgn wireless card (except you can't sniff traffic, yet [22][23][24]).
&lt;br /&gt;

&lt;br /&gt;
While not being as featureful and polished as kismet [25], my current implementation (couple of days old) can already illustrate this concept.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;The future
&lt;/pre&gt;

With a project as promising as Osmocombb [26] able to run on the Freerunner, I can only let you guess where all of this can be going. There are still many things to be done with this hardware, and of course I am also hoping to run my software on other devices as well, like the ones from ROAD [27], GizmoForYou [28], Nokia [29], Glofiish [30], HTC [31] and Palm [32] among others.
&lt;br /&gt;

&lt;br /&gt;
If you would feel interested in any of this, do not hesitate to let me know [33]. Better, you can use the development infrastructure directly [34]. I will welcome your feedback and ideas, free patches and hardware, consider contracted projects.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;Thank yous
&lt;/pre&gt;

To conclude, I have omitted one of the reasons behind all of this in this post. I had the pleasure to be invited to the Nokia Hackfest in Berlin mid-March this year [35], and then be honoured with a free N97 and N900 device. They have both proven very helpful while developing this software already.
&lt;br /&gt;

&lt;br /&gt;
Of course there's a number of people and projects who are also a great help to me every day. I can only hope to be helpful to you, too. Cheers!
&lt;br /&gt;

&lt;br /&gt;
[1] &lt;a href=&quot;http://www.defora.org/os/news/3363/Introducing-the-DeforaOS-smartphone&quot;&gt;http://www.defora.org/os/news/3363/Introducing-the-DeforaOS-smartphone&lt;/a&gt;
&lt;br /&gt;
[2] &lt;a href=&quot;http://www.debian.org/&quot;&gt;http://www.debian.org/&lt;/a&gt;
&lt;br /&gt;
[3] &lt;a href=&quot;http://www.linuxfromscratch.org/&quot;&gt;http://www.linuxfromscratch.org/&lt;/a&gt;
&lt;br /&gt;
[4] &lt;a href=&quot;http://www.defora.org/&quot;&gt;http://www.defora.org/&lt;/a&gt;
&lt;br /&gt;
[5] &lt;a href=&quot;http://people.defora.org/~khorben/cv.en.html&quot;&gt;http://people.defora.org/~khorben/cv.en.html&lt;/a&gt;
&lt;br /&gt;
[6] &lt;a href=&quot;http://runningbear.org/&quot;&gt;http://runningbear.org/&lt;/a&gt;
&lt;br /&gt;
[7] &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org/&lt;/a&gt;
&lt;br /&gt;
[8] &lt;a href=&quot;http://www.openmoko.org/&quot;&gt;http://www.openmoko.org/&lt;/a&gt;
&lt;br /&gt;
[9] &lt;a href=&quot;http://www.duekin.com/&quot;&gt;http://www.duekin.com/&lt;/a&gt;
&lt;br /&gt;
[10] &lt;a href=&quot;http://www.netbsd.org/&quot;&gt;http://www.netbsd.org/&lt;/a&gt;
&lt;br /&gt;
[11] &lt;a href=&quot;http://www.trisoft.de/slc3200.htm&quot;&gt;http://www.trisoft.de/slc3200.htm&lt;/a&gt;
&lt;br /&gt;
[12] &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem&quot;&gt;http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem&lt;/a&gt;
&lt;br /&gt;
[13] &lt;a href=&quot;http://www.defora.org/os/news/3362/DeforaOS-as-an-embedded-desktop-environment&quot;&gt;http://www.defora.org/os/news/3362/DeforaOS-as-an-embedded-desktop-environment&lt;/a&gt;
&lt;br /&gt;
[14] &lt;a href=&quot;http://www.defora.org/os/project/3343/Phone&quot;&gt;http://www.defora.org/os/project/3343/Phone&lt;/a&gt;
&lt;br /&gt;
[15] &lt;a href=&quot;http://www.freesmartphone.org/&quot;&gt;http://www.freesmartphone.org/&lt;/a&gt;
&lt;br /&gt;
[16] &lt;a href=&quot;http://realtimeblog.free.fr/&quot;&gt;http://realtimeblog.free.fr/&lt;/a&gt;
&lt;br /&gt;
[17] &lt;a href=&quot;http://www.cryptosms.org/&quot;&gt;http://www.cryptosms.org/&lt;/a&gt;
&lt;br /&gt;
[18] &lt;a href=&quot;http://www.passageenseine.org/hackevents/confidences-par-sms&quot;&gt;http://www.passageenseine.org/hackevents/confidences-par-sms&lt;/a&gt;
&lt;br /&gt;
[19] &lt;a href=&quot;http://www.whispersys.com/&quot;&gt;http://www.whispersys.com/&lt;/a&gt;
&lt;br /&gt;
[20] &lt;a href=&quot;http://nobbi.com/monitor/index.html&quot;&gt;http://nobbi.com/monitor/index.html&lt;/a&gt;
&lt;br /&gt;
[21] &lt;a href=&quot;http://www.gnokii.org/screenshots.shtml&quot;&gt;http://www.gnokii.org/screenshots.shtml&lt;/a&gt;
&lt;br /&gt;
[22] &lt;a href=&quot;http://www.gnuradio.org/&quot;&gt;http://www.gnuradio.org/&lt;/a&gt;
&lt;br /&gt;
[23] &lt;a href=&quot;http://cryptome.org/jya/crack-a5.htm&quot;&gt;http://cryptome.org/jya/crack-a5.htm&lt;/a&gt;
&lt;br /&gt;
[24] &lt;a href=&quot;http://reflextor.com/trac/a51&quot;&gt;http://reflextor.com/trac/a51&lt;/a&gt;
&lt;br /&gt;
[25] &lt;a href=&quot;http://www.kismetwireless.net/&quot;&gt;http://www.kismetwireless.net/&lt;/a&gt;
&lt;br /&gt;
[26] &lt;a href=&quot;http://bb.osmocom.org/&quot;&gt;http://bb.osmocom.org/&lt;/a&gt;
&lt;br /&gt;
[27] &lt;a href=&quot;http://www.road.de/&quot;&gt;http://www.road.de/&lt;/a&gt;
&lt;br /&gt;
[28] &lt;a href=&quot;http://www.gizmoforyou.net/&quot;&gt;http://www.gizmoforyou.net/&lt;/a&gt;
&lt;br /&gt;
[29] &lt;a href=&quot;http://www.nokia.com/&quot;&gt;http://www.nokia.com/&lt;/a&gt;
&lt;br /&gt;
[30] &lt;a href=&quot;http://www.glofiish.com/&quot;&gt;http://www.glofiish.com/&lt;/a&gt;
&lt;br /&gt;
[31] &lt;a href=&quot;http://www.htc.com/&quot;&gt;http://www.htc.com/&lt;/a&gt;
&lt;br /&gt;
[32] &lt;a href=&quot;http://www.palm.com/&quot;&gt;http://www.palm.com/&lt;/a&gt;
&lt;br /&gt;
[33] &lt;a href=&quot;http://people.defora.org/~khorben/place/wiki/13/Contact&quot;&gt;http://people.defora.org/~khorben/place/wiki/13/Contact&lt;/a&gt;
&lt;br /&gt;
[34] &lt;a href=&quot;http://www.defora.org/os/project/bug_list/3343/Phone&quot;&gt;http://www.defora.org/os/project/bug_list/3343/Phone&lt;/a&gt;
&lt;br /&gt;
[35] &lt;a href=&quot;http://www.youtube.com/watch?v=5jW3VDqvzLs&quot;&gt;http://www.youtube.com/watch?v=5jW3VDqvzLs&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sat, 12 Jun 2010 19:46:31 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>hackable:1 official blog: Openmoko devroom at the fosdem</title>
	<guid>tag:blog.hackable1.org,2010://1.12</guid>
	<link>http://blog.hackable1.org/2010/02/openmoko-devroom-at-the-fosdem.html</link>
	<description>Hello hackable:1 users !&lt;br /&gt;&lt;br /&gt;Serdar Dere, from #openmoko-cdevel managed to get a devroom at this year's fosdem for the openmoko community !&lt;br /&gt;First things first, huge thanks to him.&lt;br /&gt;&lt;br /&gt;Second, we get the room on Sunday morning and the schedule is &lt;a href=&quot;http://www.fosdem.org/2010/schedule/devrooms/openmoko&quot;&gt;here&lt;/a&gt;. As you can see, it is full of talks and hackable:1 has a slot.&lt;br /&gt;&lt;br /&gt;Meet you there ! Who's coming ?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT:&lt;/b&gt; &lt;a href=&quot;http://islibre.org/%7Edeubeuliou/openmoko/h1_fosdem2010.pdf&quot;&gt;The slides&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>Mon, 15 Feb 2010 18:08:52 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: New feature for rev5: h1settings</title>
	<guid>tag:blog.hackable1.org,2009://1.5</guid>
	<link>http://blog.hackable1.org/2009/08/new-feature-for-rev5-h1settings.html</link>
	<description>In this article I'm going to describe a new feature which will be available in rev5: h1settings.&lt;br /&gt;&lt;br /&gt;h1settings is a library which handles the global settings of the phone. It is a basic wrapper upon some gconf keys and has functions to :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;read and update key values&lt;br /&gt;&lt;/li&gt;&lt;li&gt;listen to gconf key changes&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Currently, only a few keys are available :&lt;br /&gt;&lt;br /&gt;Device states :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;gprs on/off : /desktop/h1/phone/enable_gprs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;gsm on/off : /desktop/h1/phone/enable_gsm&lt;br /&gt;&lt;/li&gt;&lt;li&gt;gps on/off : /desktop/h1/gps/enable_gps&lt;br /&gt;&lt;/li&gt;&lt;li&gt;wifi on/off : /desktop/h1/phone/enable_wifi&lt;br /&gt;&lt;/li&gt;&lt;li&gt;bluetooth on/off : /desktop/h1/phone/enable_bluetooth&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Power management :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;power management enabled / disabled&lt;/li&gt;&lt;/ul&gt;The idea behind this library is to add loose coupling between
components. For example the power management key is used by the gsm
applet when a call is in progress (to fix this silly bug: http://trac.hackable1.org/trac/ticket/42 ) in order to disable power management (i.e. suspend). The gsm
applet does not know how to disable PM but neod knows.&lt;br /&gt;
&lt;br /&gt;Currently, all the actions related to key states except gsm are handled by neod, the central daemon. It registers itself for these keys changes and sets the state of the devices. For the gsm part, it is handled by the gsm applet because it has already everything needed to switch on/off the antenna.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Another advantage is that an independant settings app can be built very easily without any dependencies with the underlying system, and this app already exists : h1settings.&lt;br /&gt;See some screenshots below :&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-1-13.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-1-thumb-480x640-13.png&quot; alt=&quot;h1settings-1.png&quot; class=&quot;mt-image-center&quot; height=&quot;640&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-2-16.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-2-thumb-480x640-16.png&quot; alt=&quot;h1settings-2.png&quot; class=&quot;mt-image-center&quot; height=&quot;640&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:30:21 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: Running hackable:1 on the ROAD Officer S101</title>
	<guid>tag:blog.hackable1.org,2009://1.6</guid>
	<link>http://blog.hackable1.org/2009/08/running-hackable1-on-the-road-officer-s101.html</link>
	<description>Within my position for the promotion of free, open-source hardware solutions in general (and currently, telephony in particular), I am of course trying to keep in touch with the latest developments in this field. Eventually, I have met the fine people at &lt;a href=&quot;http://www.road.de/&quot;&gt;ROAD&lt;/a&gt;, a small company in Berlin developing a phone: the &lt;a href=&quot;http://www.road.de/en/handypcs/officer.html&quot;&gt;Officer S101&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you don't know about it already, its form-factor will remind you of the Nokia Communicator: from the outside, it looks like a regular candy-bar phone, but it also reveals a full keyboard and wide-screen display when opened. What interests us here is that its inside is open, too :)&lt;br /&gt;&lt;br /&gt;The device is not in production yet, but they have been so kind as to let me borrow a sample for a while, which I demonstrated during my &lt;a href=&quot;https://wiki.har2009.org/page/Workshop:OpenMoko&quot;&gt;hackable:Device workshops&lt;/a&gt; at &lt;a href=&quot;https://wiki.har2009.org/page/Main_Page&quot;&gt;HAR2009&lt;/a&gt; by the way. This is where I managed to install &lt;a href=&quot;http://www.hackable1.org/&quot;&gt;hackable:1&lt;/a&gt; on the phone.&lt;br /&gt;&lt;br /&gt;On the hardware side, it was difficult to let it be easier to test. Let me stress first that this was a pre-production device, and all of this may be subject to changes! So here we are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the phone has an internal flash memory but can also boot on an SD card, which is conveniently replaceable without opening the phone or even removing the battery,&lt;/li&gt;&lt;li&gt;the first partition of the SD card must be formatted as a FAT filesystem,&lt;/li&gt;&lt;li&gt;I was provided with two second-stage bootloaders: one that boots the phone from flash, and the other which updates it.&lt;/li&gt;&lt;/ul&gt;Therefore, it was just a matter of copying the correct bootloader on the SD card, along with the root filesystem to flash if desired.&lt;br /&gt;&lt;br /&gt;About the software now, this device happens to use the same architecture as the &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_FreeRunner&quot;&gt;Openmoko Freerunner&lt;/a&gt; within &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;, &quot;armel&quot;. One only has then to choose the right packages, configure them accordingly and generate a filesystem archive.&lt;br /&gt;&lt;br /&gt;First, I have added a generic device definition file in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/profiles/ROAD-Officer.include&quot;&gt;trunk/build/profiles/ROAD-Officer.include&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;DEBIAN_ARCH=&quot;armel&quot;&lt;br /&gt;STRIP=&quot;arm-linux-gnueabi-strip&quot;&lt;br /&gt;&lt;/pre&gt;The &quot;STRIP&quot; line is necessary because of the way we are currently cross-compiling Debian packages: the native tools are unable to strip the binaries cross-compiled. Therefore, strap:1 is currently doing it instead, while generating the images.&lt;br /&gt;&lt;pre&gt;#this device is a phone&lt;br /&gt;. &quot;profiles/generic-phone.include&quot;&lt;br /&gt;#add bluetooth support&lt;br /&gt;. &quot;profiles/generic-bluetooth.include&quot;&lt;br /&gt;#add GPS support&lt;br /&gt;. &quot;profiles/generic-gps.include&quot;&lt;br /&gt;#add touchscreen support&lt;br /&gt;. &quot;profiles/generic-touchscreen.include&quot;&lt;br /&gt;#add wifi support&lt;br /&gt;. &quot;profiles/generic-wifi.include&quot;&lt;br /&gt;&lt;/pre&gt;This should be self-explanatory :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#packages&lt;br /&gt;#Debian&lt;br /&gt;PACKAGES=&quot;$PACKAGES&lt;br /&gt;[...]&lt;br /&gt;xserver-xorg-core&lt;br /&gt;xserver-xorg-input-kbd&lt;br /&gt;xserver-xorg-input-tslib&lt;br /&gt;xserver-xorg-video-fbdev&lt;br /&gt;zlib1g&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Unlike the Openmoko Freerunner, which has its own dedicated X server, we are using the generic framebuffer-based X server. It just works :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#specific kernel&lt;br /&gt;#FIXME still needs to be packaged&lt;br /&gt;PACKAGES_BLACKLIST=&quot;xserver-xorg-video-all&quot;&lt;br /&gt;&lt;/pre&gt;In order to gain space, we are blacklisting this meta-package: xserver-xorg-core dependencies are actually satisfied with at least one video driver installed, which is the case here.&lt;br /&gt;&lt;br /&gt;Next comes the actual profile definition, in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/profiles/ROAD-Officer-user.profile&quot;&gt;trunk/build/profiles/ROAD-Officer-user.profile&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;. &quot;profiles/ROAD-Officer.include&quot;&lt;br /&gt;#blacklist packages to gain space&lt;br /&gt;PACKAGES_BLACKLIST=&quot;bash&lt;br /&gt;debconf-i18n&quot;&lt;br /&gt;#additional dependencies adjustments&lt;br /&gt;PACKAGES=&quot;$PACKAGES&lt;br /&gt;debconf-english&quot;&lt;br /&gt;CLEAN_DOC=yes&lt;br /&gt;CLEAN_LOCALES=yes&lt;br /&gt;&lt;/pre&gt;This was directly taken from the &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_1973&quot;&gt;Openmoko Neo1973&lt;/a&gt; profile, which has tough space constraints on the flash. Here we do not have such limitations, however it made the testing process slightly faster.&lt;br /&gt;&lt;br /&gt;Anyway, after some more tuning in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/packages/&quot;&gt;trunk/build/packages&lt;/a&gt;, it was time to generate the filesystem archive:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$ &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/build.sh&quot;&gt;./build.sh&lt;/a&gt; VENDOR=ROAD MODEL=Officer PURPOSE=user archive&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;At this stage, the only missing bit was the kernel. I simply used the one already flashed onto the device, but I still needed some modules. They were of course provided to me in source and binary forms, but I don't think this kernel tree is available publicly at the moment. I am sure it will be as soon as the ROAD developers can manage.&lt;br /&gt;&lt;br /&gt;Unfortunately, I could only get this far yet. It boots all the way to the graphical user interface, where the &lt;a href=&quot;http://wiki.openmoko.org/wiki/Om2007.2&quot;&gt;Om2007.2&lt;/a&gt; design does not really fit the rather wide screen. We are currently working hard on the next release, &lt;a href=&quot;http://trac.hackable1.org/trac/milestone/rev5&quot;&gt;rev5&lt;/a&gt;, and focusing on the Openmoko Freerunner first, but I will be resuming this work soon enough!&lt;br /&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:29:59 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: Temporary issues with emdebian's toolchain solved</title>
	<guid>tag:blog.hackable1.org,2009://1.7</guid>
	<link>http://blog.hackable1.org/2009/09/temporary-issues-with-emdebians-toolchain-solved.html</link>
	<description>When cross-compiling &lt;a href=&quot;http://www.hackable1.org/&quot;&gt;hackable:1&lt;/a&gt; packages, we are relying on the &lt;a href=&quot;http://buildd.emdebian.org/debian/&quot;&gt;stable emdebian toolchain&lt;/a&gt; to compile our programs. Apparently, there &lt;a href=&quot;http://lists.debian.org/debian-embedded/2009/08/msg00128.html&quot;&gt;has been a problem last week&lt;/a&gt;, where the toolchain was &lt;a href=&quot;http://lists.debian.org/debian-embedded/2009/08/msg00137.html&quot;&gt;erroneously recompiled&lt;/a&gt; and from then on depending on packages not available on &lt;a href=&quot;http://www.debian.org/releases/lenny/&quot;&gt;Debian Lenny&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We have coordinated this issue with &lt;a href=&quot;http://emdebian.org/&quot;&gt;emdebian&lt;/a&gt;'s team, and are glad to announce that everything &lt;a href=&quot;http://lists.debian.org/debian-embedded/2009/09/msg00001.html&quot;&gt;seems to be back in order&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have been upgrading your &lt;a href=&quot;http://download.hackable1.org/cross/&quot;&gt;hackable:1 cross-compilation environment&lt;/a&gt; during this window, there is a simple way to get it to work again:&lt;br /&gt;&lt;pre&gt;# apt-get remove --purge libgcc1-armel-cross&lt;br /&gt;# apt-get install gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then you should be able to &lt;a href=&quot;http://blog.hackable1.org/trac.hackable1.org/trac/wiki/CrossCompiler&quot;&gt;cross-compile&lt;/a&gt; again!&lt;br /&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:29:24 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: Study boot process to improve boot time</title>
	<guid>tag:blog.hackable1.org,2009://1.9</guid>
	<link>http://blog.hackable1.org/2009/09/study-boot-process-to-improve-boot-time.html</link>
	<description>&lt;p&gt;One thing I'll certainly work on in the upcoming weeks is boot time improvement. &lt;br /&gt;
So far, booting takes quite a long time. But instead of looking at my clock when powering up my FreeRunner,
I installed a tool to go deeper in the boot process and analyse its (non-)performance.  &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/09/bootchart_small-22.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/09/bootchart_small-thumb-600x352-22.png&quot; alt=&quot;bootchart_small.png&quot; class=&quot;mt-image-center&quot; height=&quot;352&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
This tool is called Bootchart-lite, a clone of the well known Bootchart on desktop systems. &lt;br /&gt;
That's a basic rewrite from embedded systems that create similar logs as its big brother bootchart, meaning bootchart can compute them.  &lt;/p&gt;

&lt;p&gt;If you are interested in working on boot time improvement, you should install it !  &lt;/p&gt;



&lt;p&gt;&lt;i&gt;&lt;b&gt;&lt;em&gt;Uboot configuration&lt;/em&gt;&lt;/b&gt;&lt;/i&gt; &lt;/p&gt;

&lt;p&gt;The bootloader must be configured to add a kernel parameter. Here is the way for Uboot. Adapt it for Qi if you use it.  &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    # apt-get install fso-utils # from FSO
    # mkdir /tmp/uboot &amp;amp;&amp;amp; cd /tmp/uboot
    # dfu-util -a u-boot_env -U env.u-boot
    # uboot-envedit -i env.u-boot -p &amp;gt; env_modified.u-boot.tx
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Edit env_modified.u-boot.txt to tell the kernel to use bootchart-lite instead of init as first process.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    boot_menu_timeout=300
    bootargs_base=rootfstype=jffs2 root=/dev/mtdblock6 quiet bootlevel=8 init=/usr/bin/bootchart-lite console=ttySAC2,115200 console=tty0 loglevel=8 regular_boot
    ...

    # uboot-envedit -i env.u-boot -f env_modified.u-boot.txt -o env_modified.u-boot
    # dfu-util -a u-boot_env -D env_modified.u-boot
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;&lt;em&gt;* Install the packages *&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;On your FreeRunner running Hackable:1, install bootchart-lite:
(As of september, 18, it is packaged for daily builds, and will be packaged for rev5)  &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    hackable1# apt-get install bootchart-lite
    hackable1# reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;&lt;b&gt;Get data and render the image&lt;/b&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On your computer, install bootchart-view (from the big brother bootchart project), and get the logs. &lt;br /&gt;
Then, render the PNG (or SVG) image.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    # apt-get install bootchart-view 
    $ scp -r root@hackable1:/etc/bootchart-lite .
    $ cd bootchart-lite
    $ tar czf bootchart.tgz *.log
    $ bootchart -f png bootchart.tgz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the most difficult step :)  !&lt;/p&gt;

&lt;p&gt;I'll have a look on that later, I'm focusing on rev5 for now.  &lt;/p&gt;

&lt;p&gt;Eh ! There are &quot;beta2&quot; images available on http://build.hackable1.org. Would you
give it a try ?  &lt;/p&gt;

&lt;p&gt;Please let us know how you like it and if bugs remain !&lt;/p&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:29:05 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: Hackable:1 rev5 is out !</title>
	<guid>tag:blog.hackable1.org,2009://1.11</guid>
	<link>http://blog.hackable1.org/2009/12/hackable1-rev5-is-out.html</link>
	<description>&lt;p&gt;Dear Hackable:1 users,&lt;br /&gt;&lt;br /&gt;After rev5rc1, we spent hours and hours debugging this or improving that to finally get the rev5 out today. Yep, that's right: &lt;b&gt;hackable:1 rev5 (Codename: Chuck) is there&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-28.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-thumb-300x385-28.png&quot; alt=&quot;Xbackground.png&quot; class=&quot;mt-image-center&quot; height=&quot;385&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;First of all, you can grab the different flavours (user for the flash and developer for the SD) here: &lt;a href=&quot;http://download.hackable1.org/rev5&quot;&gt;http://download.hackable1.org/rev5&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;font&gt;Changelog&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;Here are the changes since rev4:&lt;br /&gt;&lt;br /&gt;
&lt;font&gt;+ End users matters&lt;/font&gt;&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Most of the software stack now runs under the 'hackable1' user, for security purposes.&lt;/li&gt;&lt;li&gt; SMS proper implementation&lt;/li&gt;&lt;li&gt; The contact list bug has been found and fixed!&lt;/li&gt;&lt;li&gt;Power management improvements, suspend works, bluetooth and wifi are no longer turned on by default.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An application called 'h1settings' can be used to configure phone features, (enable / disable &lt;span class=&quot;caps&quot;&gt;GSM &lt;/span&gt;/ Wireless / &lt;span class=&quot;caps&quot;&gt;GPS, &lt;/span&gt;power management, ...) as well as time and date.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; We created a new theme to celebrate this new release!&lt;br /&gt;&lt;/li&gt;&lt;li&gt; We got a splashscreen! It features a Chuck figure to reflects the rev5 codename: Chuck&lt;/li&gt;&lt;li&gt;For those who used to love the games on OM2007.2, we put them back !&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Boot time seems to have been improved a bit&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;font&gt;+ Power users / developers matters&lt;/font&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; This rev5 release has entirely been built from the automatic build system.&lt;/li&gt;&lt;li&gt; A Linux kernel is now packaged in hackable:1, in order not to rely on fso-pkg anymore.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;    Debugging has been disabled (boot time improvement)&lt;/li&gt;&lt;li&gt;    Easier kernel upgrade when using an ext2 partition to store the kernel on µSD cards&lt;/li&gt;&lt;li&gt;    Separation of kernel modules in three sets: essential (comes with the kernel), common modules and &quot;more modules&quot;&lt;/li&gt;&lt;li&gt;    You can read a bit on &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&quot;&gt;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;CDBS &lt;/span&gt;is now used for some packages.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;the package h1packtools contains a CDBS rule that may suffice for simple programs with the autotools&lt;/li&gt;&lt;li&gt;this rule also enables cross-compilation ; it is based on previous works on this subject&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Git repositories can now be used as sources for remote projects.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;font&gt;Where can I find it? Where can I get it? I didn't understand last time, so I ask again : what is the answer to the ultimate question about life, the universe, and everything?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
As ever, you can download hackable:1 on &lt;a href=&quot;http://download.hackable1.org/rev5&quot;&gt;http://download.hackable1.org/rev5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
All the necessary information can be found on &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org&lt;/a&gt; as ever, that is documentation, installation instructions as well as known issues.&lt;br /&gt;&lt;br /&gt;
It's obvious that the answer to the aforementioned question is &quot;Chuck&quot;.&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;&lt;font&gt;Who should I thank for all that stuff?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
Among the people who worked on this release, the most notorious are (alphabetically):&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Marcus Bauer (mbauer)&lt;/li&gt;&lt;li&gt;Jérome Blondon (jbl2024)&lt;/li&gt;&lt;li&gt;Sébastien Bocahu (zecrazytux)&lt;/li&gt;&lt;li&gt;Pierre Pronchery (khorben)&lt;/li&gt;&lt;li&gt;David Wagner (Deubeuliou)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
We'd also like to thank all the testers, among them most notably Bearstech employees, and regular contributors/users of hackable:1, who kept us going forward.&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;&lt;font&gt;What should I expect next?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;Due to a very good number of good reasons, which could all of them be summed up by a minute of one of khorben's rants against libgsmd, we'll switch to Freesmartphone.Org for rev6.&lt;br /&gt;We will also switch from xserver-xglamo to xserver-xorg for the sake of more responsive graphics.&lt;br /&gt;On the developer side, we will of course continue to improve the packaging system and lower the entry barrier.&lt;br /&gt;&lt;br /&gt;All in all, more reliable &lt;span class=&quot;caps&quot;&gt;GSM &lt;/span&gt;&amp;amp; suspend, and almost all the features one may need. Stay tuned!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The hackable:1 team&lt;br /&gt;</description>
	<pubDate>Tue, 22 Dec 2009 13:27:04 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: Hackable:1, rev5rc1, at last!</title>
	<guid>tag:blog.hackable1.org,2009://1.10</guid>
	<link>http://blog.hackable1.org/2009/10/hackable1-rev5rc1-at-last.html</link>
	<description>Dear Hackable:1 users,&lt;br /&gt;&lt;br /&gt;We are glad to announce that, after long &amp;amp; thorough efforts from the development team, after a bunch of testing hours, after a long time spent on arguing whether we should include this or that feature, we made it: &lt;b&gt;hackable:1 rev5rc1 (Codename: Chuck) is there&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-28.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-thumb-300x385-28.png&quot; alt=&quot;Xbackground.png&quot; class=&quot;mt-image-center&quot; height=&quot;385&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;Here is a changelog of corrected bugs and added features from rev4.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;font&gt;Changelog&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font&gt;+ End users matters&lt;/font&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Most of the software stack now runs under the 'hackable1' user, for security purposes.&lt;/li&gt;&lt;li&gt; SMS proper implementation&lt;/li&gt;&lt;li&gt; The contact list bug has been found and fixed!&lt;/li&gt;&lt;li&gt; Power management improvements, suspend works (well almost each &amp;amp; every time, sadly we're still hunting GSM issues for that matter)!&lt;/li&gt;&lt;li&gt; An application called 'h1settings' can be used to configure phone features, (enable / disable  GSM / Wireless / GPS, power management, ...)&lt;/li&gt;&lt;li&gt; We created a new theme to celebrate this new release! &lt;/li&gt;&lt;li&gt; We got a splashscreen! It features a Chuck figure to reflects the rev5 codename: Chuck&lt;/li&gt;&lt;li&gt; Boot time seems to have been improved a bit&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;font&gt;+ Power users / developers matters&lt;/font&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; This RC1 and the upcoming final rev5 release are now built from the automatic build system.&lt;/li&gt;&lt;li&gt; A Linux kernel is now packaged in hackable:1, in order not to rely on fso-pkg anymore.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;    Debugging has been disabled (boot time improvement)&lt;/li&gt;&lt;li&gt;    Easier kernel upgrade when using an ext2 partition to store the kernel on µSD cards&lt;/li&gt;&lt;li&gt;    Separation of kernel modules in three sets: essential (comes with the kernel), common modules and &quot;more modules&quot;&lt;/li&gt;&lt;li&gt;    You can read a bit on &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&quot;&gt;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;font&gt;Where can I find it? Where can I get it? What is the answer to the ultimate question about life, the universe, and everything?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As ever, you can download hackable:1 on &lt;a href=&quot;http://download.hackable1.org/rev5rc1/&quot;&gt;http://download.hackable1.org/rev5rc1&lt;/a&gt;.&lt;br /&gt;All the necessary information can be found on &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org&lt;/a&gt; as ever, that is documentation, installation instructions as well as known issues.&lt;br /&gt;It's obvious that the answer to the aforementioned question is &quot;Chuck&quot;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font&gt;Who should I thank for all that stuff?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Among the people who worked on this release, the most notorious are (alphabetically):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Marcus Bauer (mbauer)&lt;/li&gt;&lt;li&gt;Jérome Blondon (jbl2024)&lt;/li&gt;&lt;li&gt;Sébastien Bocahu (zecrazytux)&lt;/li&gt;&lt;li&gt;Pierre Pronchery (khorben)&lt;/li&gt;&lt;li&gt;David Wagner (Deubeuliou)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We'd also like to thank all the testers, among them most notably Bearstech employees, and regular contributors/users of hackable:1, who kept us going forward.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font&gt;What should I expect next?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Due to a very good number of good reasons, which could all of them be summed up by a minute of one of khorben's rants against libgsmd, we'll switch to Freesmartphone.Org for rev6. &lt;br /&gt;All in all, more reliable GSM &amp;amp; suspend, and almost all the features one may need. Stay tuned!&lt;br /&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Oct 2009 15:58:10 +0000</pubDate>
</item>
<item>
	<title>khorben: Working on gsmd</title>
	<guid>http://people.defora.org/~khorben/place/blog/64/Working-on-gsmd</guid>
	<link>http://people.defora.org/~khorben/place/blog/64/Working-on-gsmd</link>
	<description>Last week, I have spent some time figuring out how to improve the status of the phone stack for the hopefully-soon-to-be-released development version of hackable:1 [1]. There are unfortunately a few major problems:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;asking the PIN code multiple times [2]
&lt;/li&gt;
&lt;li&gt;network registration rarely effective
&lt;/li&gt;
&lt;li&gt;SIM contacts and messages not always fetched [3]
&lt;/li&gt;
&lt;li&gt;sending messages not always working
&lt;/li&gt;
&lt;li&gt;no GPRS support at all (from a GUI like [4])
&lt;/li&gt;
&lt;/ul&gt;

It sounds like a lot, but I'm pretty sure the cause is the same for all: interaction with the gsmd. It's somewhat strange, since the development sources were synchronized with rev4...
&lt;br /&gt;

&lt;br /&gt;
Therefore, I've been using libgsmd-tool extensively for a while. First, I realized that the code for its &amp;quot;shell&amp;quot; mode (-m shell) is somewhat fragile. Unfortunately, the design of this part doesn't make it trivial to fix.
&lt;br /&gt;

&lt;br /&gt;
Anyway, then, I've been using the &amp;quot;atcmd&amp;quot; mode as well (-m atcmd), while working on the GPRS interaction in particular. Here comes the funny part: since this command then basically works like a serial console, why not tell pppd to use it instead of the actual serial device?
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;gsm-tool - (C) 2006-2007 by Harald Welte and OpenMoko, Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY

ATZ
STR=`ATZ'
RSTR=`OK'
&lt;/pre&gt;

It makes even more sense in this context, since the phone stack no longer runs as root, and therefore shouldn't be allowed to tinker with the gsmd daemon at all anymore (eg &amp;quot;/etc/init.d/gsmd start/stop&amp;quot;).
&lt;br /&gt;

&lt;br /&gt;
The first part was easy; patching libgsmd-tool to:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;output errors to stderr,
&lt;/li&gt;
&lt;li&gt;remove the local echo (eg &amp;quot;STR=...&amp;quot;)
&lt;/li&gt;
&lt;li&gt;write the response without escaping (eg &amp;quot;RSTR=...&amp;quot;)
&lt;/li&gt;
&lt;/ul&gt;

The second part took me a bit more time, but is actually trivial when you know it: using the &amp;quot;pty&amp;quot; directive of pppd instead of &amp;quot;/dev/ttySAC0&amp;quot;. The change goes in /etc/ppp/peers/gprs:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;##
## pppd options
##
#/dev/ttySAC0
pty &amp;quot;/usr/bin/libgsmd-tool -m atcmd&amp;quot;
&lt;/pre&gt;

It actually works up to a certain point:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I doubt that connectivity reports still work while the connection is up (eg signal quality, etc)
&lt;/li&gt;
&lt;li&gt;gsmd probably currently doesn't expect this to happen,
&lt;/li&gt;
&lt;li&gt;there should be some kind of pass-through mode, where libgsmd-tool would pipe the data in and out of stdin to and from the gsm daemon.
&lt;/li&gt;
&lt;/ul&gt;

With this solved, this could be a rather elegant solution to be able to use GPRS without interrupting gsmd. I guess it would also allow the other applications sharing access to the daemon to keep the communication socket open during that time.
&lt;br /&gt;

&lt;br /&gt;
For the record:
&lt;br /&gt;
&lt;pre&gt;Sep 16 15:47:34 syn pppd[321]: pppd 2.4.4 started by khorben, uid 1000
Sep 16 15:47:34 syn chat[518]: send (ATZ^M)
Sep 16 15:47:34 syn chat[518]: expect (OK)
Sep 16 15:47:34 syn chat[518]: OK
Sep 16 15:47:34 syn chat[518]:  -- got it
Sep 16 15:47:34 syn chat[518]: send (AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;internet.eplus.de&amp;quot;^M)
Sep 16 15:47:35 syn chat[518]: expect (OK)
Sep 16 15:47:35 syn chat[518]:
Sep 16 15:47:35 syn chat[518]: OK
Sep 16 15:47:35 syn chat[518]:  -- got it
Sep 16 15:47:35 syn chat[518]: send (ATD*99***1#^M)
Sep 16 15:47:35 syn chat[518]: expect (CONNECT)
&lt;/pre&gt;

[1] &lt;a href=&quot;http://www.hackable1.org/&quot;&gt;http://www.hackable1.org/&lt;/a&gt;
&lt;br /&gt;
[2] &lt;a href=&quot;http://trac.hackable1.org/trac/ticket/254&quot;&gt;http://trac.hackable1.org/trac/ticket/254&lt;/a&gt;
&lt;br /&gt;
[3] &lt;a href=&quot;http://trac.hackable1.org/trac/ticket/264&quot;&gt;http://trac.hackable1.org/trac/ticket/264&lt;/a&gt;
&lt;br /&gt;
[4] &lt;a href=&quot;http://people.defora.org/~khorben/place/blog/60/New-project--gprs-for-hackable-1-on-the-Openmoko-Freerunner&quot;&gt;http://people.defora.org/~khorben/place/blog/60/New-project--gprs-for-hackable-1-on-the-Openmoko-Freerunner&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>Wed, 16 Sep 2009 13:51:22 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>zecrazytux: Custom Linux kernel for the Openmoko Freerunner on Hackable:1 This is an ugly script to get the correct path of modules to add in the .modlist</title>
	<guid>http://zecrazytux.net/Embedded/Hackable1/Custom%5FKernel.html</guid>
	<link>http://zecrazytux.net/Embedded/Hackable1/Custom%5FKernel.html</link>
	<description>&lt;p&gt;&lt;!--[09/13/09]--&gt;&lt;/p&gt; &lt;h1&gt;Custom Linux kernel for the Openmoko Freerunner on Hackable:1&lt;/h1&gt; &lt;p&gt;We've been using FSO/debian&amp;rsquo;s kernel package in Hackable:1 till now (mid-september).&lt;br /&gt; &lt;/p&gt; &lt;p&gt;I decided to package a custom one for Hackable:1. Why ?&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;to disable debugging that I suspect being a cause of a slow boot (debug + screen output, wich is slow on the Freerunner)&lt;br /&gt; &lt;/li&gt; &lt;li&gt;we may need it for other projects in anear future&lt;br /&gt; &lt;/li&gt; &lt;li&gt;for hackability: easy to patch, modify the configuration&amp;hellip; while still being integrated in hackable:1 thanks to its packaging&lt;br /&gt; &lt;/li&gt; &lt;li&gt;because I can :)&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;developper information&lt;/h2&gt; &lt;p&gt;You should already know our build system, if not, take a look at :) &amp;ndash; http://trac.hackable1.org/&lt;br /&gt; &lt;/p&gt; &lt;p&gt;As of september, 13, 09:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;p&gt;Kernel sources come from &lt;a href=&quot;http://git.openmoko.org/git/kernel.git/&quot;&gt;git://git.openmoko.org/git/kernel.git&lt;/a&gt; &lt;br /&gt; &lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;although GTA02 is now supported in the mainstream kernel 2.6.31, the support of gta02 hardware is uncomplete.&lt;br /&gt; &lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;The kernel config can be found in the debian/ directory after patching with &lt;span class=&quot;filename&quot;&gt;packages/linux-image-gta02/linux-image-gta02.diff&lt;/span&gt;.&lt;br /&gt; It was copied from pkg-fso and modified a bit, mostly in order to disable debugging features.&lt;/p&gt;&lt;/li&gt; &lt;li&gt;&lt;p&gt;As it uses git, you cane asily build &lt;em&gt;your&lt;/em&gt; patched kernel, using another git repository and another commit tag. (you only have to modify debian/changelog a bit, or use bump.sh)&lt;br /&gt; &lt;/p&gt;&lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;general informations&lt;/h2&gt; &lt;p&gt;Three packages are created:&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;linux-image-gta02&lt;/strong&gt;: Linux kernel plus the basic kernel modules that are necessary for the Openmoko Freerunner to run correctly&lt;br /&gt; &lt;/li&gt; &lt;li&gt;&lt;strong&gt;linux-modules-gta02&lt;/strong&gt;: common kernel modules you may need, when pluging a peripheral for example&lt;br /&gt; &lt;/li&gt; &lt;li&gt;&lt;strong&gt;linux-moremodules-gta02&lt;/strong&gt;: other modules, that are built for a few people who may need them (not for everybody end-user)&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;[temporary] call for module sorting&lt;/h2&gt; &lt;p&gt;Please let me know in which package should modules go&amp;hellip; :)&lt;/p&gt; &lt;p&gt;All modules that are compiled go to &lt;em&gt;linux-moremodules-gta02&lt;/em&gt; first, then, some are moved to &lt;em&gt;linux-image-gta02&lt;/em&gt; and &lt;em&gt;linux-modules-gta02&lt;/em&gt; according to the module lists : &lt;span class=&quot;filename&quot;&gt;debian/linux-(image|modules).modlist&lt;/span&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://fuckpaste.zecrazytux.net/h1/12-09_20%3a52-list_module_path.sh.html&quot;&gt;This is an ugly script to get the correct path of modules to add in the .modlist files&lt;/a&gt;&lt;br /&gt; &lt;/p&gt;</description>
	<pubDate>Sat, 12 Sep 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>hackable:1 official blog: Run Ogsmd on Hackable:1</title>
	<guid>tag:blog.hackable1.org,2009://1.4</guid>
	<link>http://blog.hackable1.org/2009/08/run-ogsmd-on-hackable1.html</link>
	<description>&lt;p&gt;As you may know, we are willing to migrate to FSO. As part of it, we made ogsmd running on H:1 and we will rewrite phone-kit to use libfso-glib instead of libgsmd.&lt;/p&gt;

&lt;p&gt;Until we get all the stuff packaged, here are the step to make ogsmd running on a Hackable:1 rev4 installation.&lt;/p&gt;

        &lt;font&gt;Install the framework

&lt;/font&gt;&lt;p&gt;We will use a git version that I know working. On your computer:
&lt;pre class=&quot;brush: shell&quot;&gt;
git clone git://git.freesmartphone.org/framework.git
cd framework
git checkout 17898fc0f73453c11d1b1e8db57f8e8a0cfbc943 .
cd ..
scp -r framework root@192.168.0.202: # I assume that it is you FR's IP
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;SSH into your freerunner and:
&lt;pre class=&quot;brush: shell&quot;&gt;
cd framework
python setup.py install
cd ..
&lt;/pre&gt;
&lt;/p&gt;

&lt;font&gt;Install the muxer&lt;/font&gt;&lt;br /&gt;

&lt;p&gt;We will use SHR packages which a copy of them is on our trac.
&lt;pre class=&quot;brush: shell&quot;&gt;
wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/fso-abyss_0.3.5+gitr67+ff68be1581069ca494a559e85f6299246888d3b5-r0_armv4t.ipk&amp;quot;
ar -x fso-abyss_0.3.5+gitr67+ff68be1581069ca494a559e85f6299246888d3b5-r0_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libgsm0710mux0_0.3.5+gitr35+8e3e7533b286d8086bce8fa09bce23bb9f18bb98-r1_armv4t.ipk&amp;quot;
ar -x libgsm0710mux0_0.3.5+gitr35+8e3e7533b286d8086bce8fa09bce23bb9f18bb98-r1_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libgsm0710-0_1.1.1+gitr15+3bb80ba6cc9f86ed3996f88bfa2986cc572489d6-r1_armv4t.ipk&amp;quot;
ar -x libgsm0710-0_1.1.1+gitr15+3bb80ba6cc9f86ed3996f88bfa2986cc572489d6-r1_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libfsotransport0_0.9.3+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk&amp;quot;
ar -x libfsotransport0_0.9.3+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libfsobasics0_0.8.1.0+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk&amp;quot;
ar -x libfsobasics0_0.8.1.0+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk
tar -xvzf data.tar.gz -C /
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;We will use SHR frameworkd.conf:
&lt;pre class=&quot;brush: shell&quot;&gt;wget &amp;quot;http://git.shr-project.org/git/?p=shr-themes.git;a=blob_plain;f=frameworkd/frameworkd-config-shr/om-gta02/frameworkd.conf;hb=HEAD&amp;quot; -O /etc/frameworkd.conf
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;If the following file doesn't exists, libgsm0710mux segfaults (see http://trac.freesmartphone.org/ticket/467)
&lt;pre class=&quot;brush: shell&quot;&gt;
cat &amp;lt;&amp;lt; __EOF &amp;gt; /etc/abyss.conf
[omuxerd]
autoopen = 1
autoclose = 1
autoexit = 1
[session]
mode = 1
framesize = 98
port = /dev/ttySAC0
speed = 115200

[device]
wakeup_threshold = 6
wakeup_waitms = 200

__EOF
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;And if this one doesn't exists, fso-abyss claims it doesn't provide any channel
&lt;pre class=&quot;brush: shell&quot;&gt;
touch /etc/cornucopia.conf
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;A file may have permissions problem, first check it:
&lt;pre class=&quot;brush: shell&quot;&gt;
ls -l /usr/lib/dbus-1.0/dbus-daemon-launch-helper
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If the group isn't messagebus:
&lt;pre class=&quot;brush: shell&quot;&gt;
chgrp messagebus /usr/lib/dbus-1.0/dbus-daemon-launch-helper
chmod u+s /usr/lib/dbus-1.0/dbus-daemon-launch-helper # because chgrp removes the SUID
&lt;/pre&gt;&lt;/p&gt;

&lt;font&gt;Launch Ogsmd&lt;/font&gt;&lt;br /&gt;

&lt;p&gt;Let's kill the old stuff...
&lt;pre class=&quot;brush: shell&quot;&gt;
killall -9 ogsmd
&lt;/pre&gt;
...and launch te framework:
&lt;pre class=&quot;brush: shell&quot;&gt;
frameworkd -s ogsmd
&lt;/pre&gt;
If no error (Python Traceback) occurs, we can move on:&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;libfso-glib sample&lt;/font&gt;&lt;br /&gt;
&lt;font&gt;Install libfso-glib&lt;/font&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/libfso-glib/libfso-glib0_0.2.0-gitrx44+9d292508739452b55b80ec40ec57405a5de2159f-r0_armv4t.ipk&amp;quot;
ar -x libfso-glib0_0.2.0-gitrx44+9d292508739452b55b80ec40ec57405a5de2159f-r0_armv4t.ipk
tar -xvzf data.tar.gz -C /
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;Install the sample&lt;/font&gt;
(See &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/src/applications/sample-libfso-glib-0.1/src/main.c&quot;&gt;the sources&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
wget http://trac.hackable1.org/trac/raw-attachment/wiki/libfso-glib/sample-libfso-glib_0.1-1_armel.deb
dpkg -i sample-libfso-glib_0.1-1_armel.deb
sample-w
&lt;/pre&gt;
You will be asked for your PIN
(unless you are already authentified) and you will be registered.


&lt;p&gt;Then, it will catch several signals. after that, you can call yourself and see the signals &quot;CallStatus&quot; be matched. These signals are sent whenever the status of a call (which ID is specified, i.e. &quot;1&quot;) change. (ie &quot;incoming&quot; or &quot;release&quot;). See &lt;a href=&quot;http://docs.freesmartphone.org/&quot;&gt;FSO doc&lt;/a&gt; for further information.&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;And now what ?&lt;/font&gt;
You can already, by reading freesmartphone.h, find any interesting function you need and write nice applications.&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;Any question ?&lt;/font&gt;&lt;br /&gt;
If you have any question about this manipulation or about Hackable:1, feel free to ask in the comments.&lt;/p&gt;

You can fin updates of this tutorial on our &lt;a href=&quot;http://trac.hackable1.org/trac/wiki/ogsmd&quot;&gt;trac&lt;/a&gt;</description>
	<pubDate>Wed, 19 Aug 2009 21:31:46 +0000</pubDate>
</item>
<item>
	<title>khorben: Cross-compiling Debian packages for hackable:1, part 2</title>
	<guid>http://people.defora.org/~khorben/place/blog/62/Cross-compiling-Debian-packages-for-hackable-1--part-2</guid>
	<link>http://people.defora.org/~khorben/place/blog/62/Cross-compiling-Debian-packages-for-hackable-1--part-2</link>
	<description>I wrote a while ago about how to cross-compile Debian packages, and within the
&lt;br /&gt;
hackable:1 Linux distribution in particular. I'm glad to say that I managed to
&lt;br /&gt;
find a decent work-around for a problem I mentioned last time: dh_shlibdeps
&lt;br /&gt;
couldn't work.
&lt;br /&gt;

&lt;br /&gt;
dh_shlibdeps is in fact a wrapper around the dpkg-shlibdeps command. This
&lt;br /&gt;
command analyzes every binary and library shipped in a package being generated,
&lt;br /&gt;
in order to automatically list their dependencies. This can be problematic when
&lt;br /&gt;
cross-compiling, since the binaries don't match the current architecture, and
&lt;br /&gt;
may not even match the database of installed packages.
&lt;br /&gt;

&lt;br /&gt;
The trick here is to force dh_shlibdeps to:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;look into the cross-compilation root folder,
&lt;/li&gt;
&lt;li&gt;read the dependency tracking information specially written for the occasion.
&lt;/li&gt;
&lt;/ul&gt;

This is now done using this syntax in hackable:1:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;$ dh_shlibdeps -l/usr/$(DEB_HOST_GNU_TYPE)/lib:/usr/$(DEB_HOST_GNU_TYPE)/usr/lib \
-- -Ldebian/shlibs.cross
&lt;/pre&gt;

where:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;-l does the former directly,
&lt;/li&gt;
&lt;li&gt;and -L does the latter through dpkg-shlibdeps (escaped with --).
&lt;/li&gt;
&lt;/ul&gt;

With this fix, the packages cross-compiled are almost as good as native ones,
&lt;br /&gt;
stripping being the last culprit (only eating space). This will require a
&lt;br /&gt;
modification to all the packages, but it will then help a lot with automated
&lt;br /&gt;
images generation.
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Tue, 18 Aug 2009 10:09:23 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>hackable:1 official blog: hackable:1 makes your device happy</title>
	<guid>tag:blog.hackable1.org,2009://1.3</guid>
	<link>http://blog.hackable1.org/2009/08/hackable1-makes-your-device-happy.html</link>
	<description>As a lot of you know, at Bearstech, we're very serious with hackable:1 and what we intend to do with it.&lt;br /&gt;&lt;br /&gt;If you were to ask to a typical hackable:1 developer, he'd probably say he crafts his code as he would paint an art piece or carve a nice wooden table. All the development is done for your GTA02 pleasure. &lt;br /&gt;
&lt;br /&gt;As can prove the following pictures, left alone, our GTA02s are not that happy. See how they seem to whine or just how they seem alone, oblivious to the fact that they're with their peers:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/boite-6.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/boite-thumb-600x450-6.jpg&quot; alt=&quot;boite.jpg&quot; class=&quot;mt-image-center&quot; height=&quot;450&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;But then, a little bit of H:1 magic, and look at how they seem to shine in happiness, all directed towards the same common objective, united to fight for their common goal:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/hackable_1-7.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/hackable_1-thumb-600x450-7.jpg&quot; alt=&quot;hackable_1.jpg&quot; class=&quot;mt-image-center&quot; height=&quot;450&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;There is no &lt;strike&gt;spoon&lt;/strike&gt; more proof needed to say that hackable:1 will make your device happy. Up to you guys !&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 17 Aug 2009 14:11:00 +0000</pubDate>
</item>
<item>
	<title>iscape: Behind the scenes of Bearstech</title>
	<guid>tag:blogger.com,1999:blog-7398299105390421998.post-1089678936547876054</guid>
	<link>http://openporticus.blogspot.com/2009/08/behind-scenes-of-bearstech.html</link>
	<description>As part of our research &amp;amp; development on mobile devices we are currently participating on a project from ANR, the Agence Nationale de la Recherche - the french national agency for research. This project is about mobility and multihoming and we do the Linux terminal part.&lt;br /&gt;&lt;br /&gt;Currently we are investigating the transport layer and here specifically SCTP. SCTP is on the same layer as TCP or UDP but combines advantages of both protocols and adds multihoming capability.&lt;br /&gt;&lt;br /&gt;SCTP opens independent so called streams on one connection. In order to distinguish it from TCP a connection is therefore called an association.&lt;br /&gt;&lt;br /&gt;Another difference with TCP is that SCTP is a message oriented protocol and not a stream oriented protocol. This is very handy for the application developer as one does not have to collect and reassemble the data packagewise but gets it delivered in a whole.&lt;br /&gt;&lt;br /&gt;Other nifty features include automatic network interface detection together with a heartbeat and automatic failover to any other known working network interface.&lt;br /&gt;&lt;br /&gt;Last not least the streams are indepent. This can be used for reliable delivery on networks with package loss by sending a message over every stream. If one sends a message with TCP ten times and one gets lost then the subsequent messages get stuck until the lost package has arrived. This is known as head-of-line problem. With SCTP streams are independent and thus delivery on other streams continues even when a package on one stream was lost and therefore is blocked for retransmission.&lt;br /&gt;&lt;br /&gt;That's it for today for the Bearstech Labs, stay tuned!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7398299105390421998-1089678936547876054?l=openporticus.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 14 Aug 2009 06:53:46 +0000</pubDate>
	<author>noreply@blogger.com (marcus)</author>
</item>
<item>
	<title>hackable:1 official blog: Welcome on our new hackable:blog !</title>
	<guid>tag:blog.hackable1.org,2009://1.2</guid>
	<link>http://blog.hackable1.org/2009/08/welcome-on-our-new-hackableblog.html</link>
	<description>Hey everyone,&lt;br /&gt;&lt;br /&gt;Long time no see. At last, we decided to setup a blog in order to keep you all in touch with what you need to know about hackable:1, and about the new things we do.&lt;br /&gt;&lt;br /&gt;Stay tuned, as we're bounded to put a lot of things here sooner than later!&lt;br /&gt;</description>
	<pubDate>Thu, 13 Aug 2009 17:35:21 +0000</pubDate>
</item>
<item>
	<title>khorben: New project: gprs for hackable:1 on the Openmoko Freerunner</title>
	<guid>http://people.defora.org/~khorben/place/blog/60/New-project--gprs-for-hackable-1-on-the-Openmoko-Freerunner</guid>
	<link>http://people.defora.org/~khorben/place/blog/60/New-project--gprs-for-hackable-1-on-the-Openmoko-Freerunner</link>
	<description>I have just released the first version of gprs, a tool to ease connections to the GPRS network on hackable:1, for the Openmoko Freerunner in particular. The project's homepage is here:
&lt;br /&gt;
&lt;a href=&quot;http://people.defora.org/~khorben/projects/gprs/&quot;&gt;http://people.defora.org/~khorben/projects/gprs/&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
It's still alpha quality but already works in some conditions. I have uploaded a couple screenshots as well. I hope to package it soon, it will then be instantly available via the daily builds.&lt;br /&gt;</description>
	<pubDate>Thu, 06 Aug 2009 11:10:10 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>zecrazytux: mkdebpackaging.sh: a minimalistic, crosscompilation-aware replacement for dh_make</title>
	<guid>http://zecrazytux.net/Embedded/Hackable1/news/09-06-12-Minimalistic%5Fcrosscompilation-aware%5Fscript%5Ffor%5Fcreating%5Fdebian%5Fpackaging%5Ftemplates.html</guid>
	<link>http://zecrazytux.net/Embedded/Hackable1/news/09-06-12-Minimalistic%5Fcrosscompilation-aware%5Fscript%5Ffor%5Fcreating%5Fdebian%5Fpackaging%5Ftemplates.html</link>
	<description>&lt;p&gt;&lt;!--[06/12/09]--&gt;&lt;/p&gt; &lt;h1&gt;mkdebpackaging.sh: a minimalistic, crosscompilation-aware replacement for dh_make&lt;/h1&gt; &lt;p&gt;the first step to create a debian package is usually using `dh_make', that creates a few important files that are used to describe the package(s):&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;debian/control: which packages are generated, what is necessary to build, install&amp;hellip;&lt;br /&gt; &lt;/li&gt; &lt;li&gt;debian/changelog: gives the version number of the package and keeps traces of everything that happened to that package.&lt;/li&gt; &lt;li&gt;debian/rules: a Makefile describinghow the software should be built&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;why did I wrote a replacement for dh_make ?&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;dh_make does not support take care of crosscompilation-only CFLAGS or LDFLAGS so that we had to tweak every debian/rules templates each time. Copy &amp;amp; paste is boring and time-ineficient. &lt;br /&gt; &lt;/li&gt; &lt;li&gt;dh_make creates a somewhat &amp;ldquo;too big&amp;rdquo; Makefile for our needs.&lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;How to use it&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;cd&lt;/em&gt; into a software source directory (remember that directories should be named something like softname-X.x (X.x being the version)).&lt;br /&gt; &lt;/li&gt; &lt;li&gt;execute the script:&lt;br /&gt; $ /path/to/mkdebpackaging.sh -m &amp;ldquo;Sebastien BOCAHU&amp;rdquo; -e &amp;ldquo;sbocahu-AT-bearstech.com&amp;rdquo;&lt;br /&gt; &lt;/li&gt; &lt;li&gt;edit debian packaging templates (files into debian/)&lt;br /&gt; &lt;/li&gt; &lt;li&gt;build the package:&lt;br /&gt; $ dpkg-buildpackage -us -uc # for native compilation&lt;br /&gt; $ dpkg-buildpackage -us -uc -aarmel # for ARM crosscompilation&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;Review it and give your point of view !&lt;/h2&gt; &lt;p&gt;I wrote it quite quickly and many things can certainly be improved, so please tell me :) &lt;br /&gt; Patching ltmain.sh (libtool) can fail, so that you have to dig into it by your own.&lt;br /&gt; &lt;/p&gt;</description>
	<pubDate>Thu, 11 Jun 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>jbl2024: embedded webapp on the freerunner</title>
	<guid>urn:md5:205dd987782f0153202b4cee3823341e</guid>
	<link>http://blondon.fr/blog/index.php?post/2009/06/07/freerunner-embedded-webapp</link>
	<description>&lt;p&gt;This weekend, i played with &lt;a href=&quot;http://nitrogenproject.com&quot; hreflang=&quot;en&quot;&gt;nitrogen&lt;/a&gt; on my freerunner :&lt;/p&gt;


&lt;p&gt;&lt;img alt=&quot;nitromoko-1&quot; src=&quot;http://blondon.fr/blog/public/.Screenshot-2_m.jpg&quot; title=&quot;nitromoko-1, Jun 2009&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img alt=&quot;nitromoko-2&quot; src=&quot;http://blondon.fr/blog/public/.Screenshot-3_m.jpg&quot; title=&quot;nitromoko-2, Jun 2009&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img alt=&quot;nitromoko-3&quot; src=&quot;http://blondon.fr/blog/public/.Screenshot-4_m.jpg&quot; title=&quot;nitromoko-3, Jun 2009&quot; /&gt;&lt;/p&gt;


&lt;p&gt;The funny thing is that it is a full web app with the webserver running on the freerunner. Thanks to the nitrogen framework, the code is not bloated as usual and is quite simple.&lt;/p&gt;


&lt;p&gt;Example : the clock is refreshed by the server every minutes with these simple statements:&lt;/p&gt;
&lt;pre&gt;
body() -&amp;gt; 
	Body = [	
    	#panel { class=&amp;quot;h1-logo&amp;quot;, body = [#image { image=&amp;quot;/images/hackable1.gif&amp;quot;} ] },
	    #label { id=clock, text=&amp;quot;10:14&amp;quot;},
    	#label { id=mylabel, text=&amp;quot;&amp;quot; }
    ],
	wf:comet(fun() -&amp;gt; clock_update(clock) end),
	wf:render(Body).
&lt;/pre&gt;

&lt;pre&gt;
clock_update(Clock)-&amp;gt;
    {_Date, {Hour, Min, _Sec}} = erlang:localtime(),
    Value = io_lib:format(&amp;quot;~2.10.0B:~2.10.0B&amp;quot;, [Hour, Min]),
    wf:update(Clock, lists:flatten(Value)),
	wf:comet_flush(),
	timer:sleep(1000*60),
    clock_update(Clock).
&lt;/pre&gt;


&lt;p&gt;Last but not least, the client runs well on my laptop too :&lt;/p&gt;


&lt;p&gt;&lt;img alt=&quot;nitromoko-4&quot; src=&quot;http://blondon.fr/blog/public/.laptop_m.jpg&quot; title=&quot;nitromoko-4, Jun 2009&quot; /&gt;&lt;/p&gt;


&lt;p&gt;So we have the best of the both worlds (web &amp;amp; desktop) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;access to native resources thanks to erlang&lt;/li&gt;
&lt;li&gt;event driven code with nitrogen (push with comet)&lt;/li&gt;
&lt;li&gt;customized ui (jQuery)&lt;/li&gt;
&lt;li&gt;distributed client (example : accessing the contact list without installing crappy software)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main drawback is performance (for the ui part) and memory consumption (i need to make some tests to figure out exactly).&lt;/p&gt;


&lt;p&gt;The source code for the nitrogen/erlang part is available here : &lt;a href=&quot;http://blondon.fr/blog/public/web_samples_freerunner.erl&quot; title=&quot;http://blondon.fr/blog/public/web_samples_freerunner.erl&quot;&gt;http://blondon.fr/blog/public/web_s...&lt;/a&gt;
I'll post the whole app (html, media and css) asap.&lt;/p&gt;</description>
	<pubDate>Sun, 07 Jun 2009 16:08:00 +0000</pubDate>
</item>
<item>
	<title>khorben: How to flash Openmoko flash images very fast</title>
	<guid>http://people.defora.org/~khorben/place/blog/15/How-to-flash-Openmoko-flash-images-very-fast</guid>
	<link>http://people.defora.org/~khorben/place/blog/15/How-to-flash-Openmoko-flash-images-very-fast</link>
	<description>There is a very nice and fast alternative to using dfu-util to flash images on the Openmoko Freerunner phone:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;boot the developer version of hackable:1 on an SD card
&lt;/li&gt;
&lt;li&gt;use dd like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;# cat Hackable1-Openmoko-Freerunner-user-daily-rootfs.jffs2 /dev/zero | \
     		| dd of=/dev/mtdblock6
&lt;/pre&gt;

for the root filesystem, and:
&lt;br /&gt;
&lt;pre&gt;# cat uImage.bin /dev/zero | dd of=/dev/mtdblock3
&lt;/pre&gt;
for the kernel.

&lt;br /&gt;

&lt;br /&gt;
Even better, if you don't want to create a temporary copy of the image to flash, transfer it on the fly via SSH:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# cat Hackable1-Openmoko-Freerunner-user-daily-rootfs.jffs2 /dev/zero | \
     		progress ssh root@192.168.0.202 dd of=/dev/mtdblock6
     [...]
139853824 bytes (140 MB) copied, 278.255 s, 503 kB/s
&lt;/pre&gt;

Just omit progress if you don't run NetBSD, or use either this port or this version.
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Thu, 28 May 2009 23:31:39 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>jbl2024: hackable:1 rev4 and the gprs</title>
	<guid>urn:md5:fa531e8a40d54609bfa4f66144ee747b</guid>
	<link>http://blondon.fr/blog/index.php?post/2009/05/21/hackable%3A1-rev4-and-the-gprs</link>
	<description>&lt;p&gt;I'm using the gprs almost every days during my train trips. It works like a charm although it does not use the muxer.
Here are the detailed instructions to use the muxer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;change MUX=no to MUX=yes in /usr/bin/p and /usr/bin/x&lt;/li&gt;
&lt;li&gt;change delay from 5 to 10 in /usr/bin/x (lines 65 &amp;amp; 69)&lt;/li&gt;
&lt;li&gt;in /etc/ppp/peers/gprs :
&lt;ul&gt;
&lt;li&gt;line 36 : comment the /dev/ttySAC0 option&lt;/li&gt;
&lt;li&gt;line 42 : uncomment the updetach option&lt;/li&gt;
&lt;li&gt;line 43 : comment the nodetach option&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;reload the gui stack (/etc/init.d/xserver-hackable1/restart), wait for registration and launch the p script.&lt;/p&gt;


&lt;p&gt;Now you can use the gprs and use the phone as the same time (but the gprs connection will hang when calling)&lt;/p&gt;


&lt;p&gt;By the way, in order to improve the phone experience, the latest svn version of the openmoko-gsm-applet now handle the gprs automatically :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start when the registration is done&lt;/li&gt;
&lt;li&gt;stop when starting a call&lt;/li&gt;
&lt;li&gt;stop when receiving a call&lt;/li&gt;
&lt;li&gt;restart when call is finished&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TODO :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use some gconf keys to check if gprs is allowed to start (see &lt;a href=&quot;http://trac.hackable1.org/trac/wiki/settings#Settingsspecificationpage&quot; hreflang=&quot;en&quot;&gt;http://trac.hackable1.org/trac/wiki/settings#Settingsspecificationpage&lt;/a&gt; )&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Thu, 21 May 2009 05:47:00 +0000</pubDate>
</item>
<item>
	<title>zecrazytux: Wifig available &amp;ndash; documentation about packaging and crosscompilation for Hackable:1 libcommongui0 wifig</title>
	<guid>http://zecrazytux.net/Embedded/Hackable1/news/09-04-21-Wifig-available-%26-packaging%5F%26%26%5Fcrosscompilation%5Fdocumentation.html</guid>
	<link>http://zecrazytux.net/Embedded/Hackable1/news/09-04-21-Wifig-available-%26-packaging%5F%26%26%5Fcrosscompilation%5Fdocumentation.html</link>
	<description>&lt;p&gt;&lt;!--[04/21/09]--&gt;&lt;/p&gt; &lt;h1&gt;Wifig available &amp;ndash; documentation about packaging and crosscompilation for Hackable:1&lt;/h1&gt; &lt;h2&gt;Wifig&lt;/h2&gt; &lt;p&gt;I've packaged &lt;strong&gt;jbl2024&lt;/strong&gt;&amp;rsquo;s &lt;a href=&quot;http://trac.hackable1.org/trac/wiki/Wifig&quot;&gt;wifig&lt;/a&gt;, an application for easily configuring wireless access.&lt;br /&gt; &lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://zecrazytux.net/Bordel/h1/images/wifig.png&quot; alt=&quot;wifig&quot; /&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;For now, packages aren&amp;rsquo;t available on the hackable:1 repository. You can find them on my website:&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://zecrazytux.net/Bordel/h1/packages/libcommongui0_0.1+svn552-1_armel.deb&quot;&gt;libcommongui0&lt;/a&gt;&lt;br /&gt; &lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://zecrazytux.net/Bordel/h1/packages/wifig_0.1+svn552-1_armel.deb&quot;&gt;wifig&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Wifig requires (missing in the stock hackable:1 rev3 release):&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;libcurl&lt;br /&gt; &lt;/li&gt; &lt;li&gt;udhcpc&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://meshy.org/~ato/debian/pool/main/w/wmiconfig/wmiconfig_0.0.18-1_armel.deb&quot;&gt;wmiconfig&lt;/a&gt;&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Please review it !&lt;br /&gt; It needs to be polyshed (be added on the menu, for example)&lt;br /&gt; &lt;/p&gt; &lt;h2&gt;Documentation about packaging and crosscompilation for Hackable:1&lt;/h2&gt; &lt;p&gt;I've wrote a bit of documentation about packaging, crosscompilation and possible problems with the crosscompilation envrironnement:&lt;br /&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://zecrazytux.net/Embedded/Hackable1/Crosscompilation.html&quot;&gt;crosscompilation &amp;amp; packaging documentation&lt;/a&gt; &lt;br /&gt; &lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://zecrazytux.net/Embedded/Hackable1/H1_cross_compiler_problems_&amp;_fixes.html&quot;&gt;crosscompilation environnement problems &amp;amp; fixes&lt;/a&gt;&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;I hope this kind of documentation would help people to contribute :) !&lt;br /&gt; &lt;/p&gt;</description>
	<pubDate>Mon, 20 Apr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>khorben: Cross-compiling Debian packages for hackable:1</title>
	<guid>http://people.defora.org/~khorben/place/blog/1/Cross-compiling-Debian-packages-for-hackable-1</guid>
	<link>http://people.defora.org/~khorben/place/blog/1/Cross-compiling-Debian-packages-for-hackable-1</link>
	<description>I was finally able to create my first cross-compiled Debian package this evening. This wasn't without a lot of pain, and some issues remain. Still, it's worth mentioning how to reproduce it, along with the problems that I have more or less solved along the way.
&lt;br /&gt;

&lt;br /&gt;
Requirements
&lt;br /&gt;

&lt;br /&gt;
It's somewhat easier to start from hackable:1's cross-compiling environment. In fact there are still a few glitches to get it truly working, as always just create tickets if you get stuck (or solve something yourself).
&lt;br /&gt;

&lt;br /&gt;
pkg-config 0.23
&lt;br /&gt;

&lt;br /&gt;
In contrast with the current autoconf/automake/libtool's nightmare, pkg-config has managed to make life easier. This is particularly true since its 0.23 release and fix for the PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_LIBDIR environment variables. In our case, they are set as follows:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;export PKG_CONFIG_LIBDIR=&amp;quot;/usr/arm-linux-gnueabi/usr/lib/pkgconfig:/usr/arm-linux-gnueabi/usr/share/pkgconfig&amp;quot;
export PKG_CONFIG_SYSROOT_DIR=&amp;quot;/usr/arm-linux-gnueabi&amp;quot;
&lt;/pre&gt;

This does two important things:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;prefix the relevant CFLAGS and LDFLAGS flags with the path to the cross-compiled include and library files;
&lt;/li&gt;
&lt;li&gt;forces pkg-config to only look at the definition files for packages installed in the cross-compilation environment.
&lt;/li&gt;
&lt;/ul&gt;

Unfortunately, Debian does not include pkg-config 0.23 yet. I have explained how to install it from source, but even better I have packaged the patched 0.23 release in hackable:1. It will appear from the upcoming build bot soon.
&lt;br /&gt;

&lt;br /&gt;
libmokoui2
&lt;br /&gt;

&lt;br /&gt;
Unlike jbl2024 with neod, I have settled on libmokoui2. Here's a summary of the issues I ran into.
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;$ dpkg-buildpackage -rfakeroot -us -uc -aarmel
[...]
checking for C compiler default output file name... 
configure: error: C compiler cannot create executables
See `config.log' for more details.
make: *** [config.status] Error 77
dpkg-buildpackage: failure: debian/rules build gave error exit status 2
&lt;/pre&gt;

Here's what said in config.log:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;configure:2950: arm-linux-gnueabi-gcc -g -O2  -Wl,-z,defs -lX11 conftest.c  &amp;gt;&amp;amp;5
/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/bin/../../lib/libX11.so when searching for -lX11
/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /usr/arm-linux-gnueabi/bin/../../lib/libX11.a when searching for -lX11
/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
&lt;/pre&gt;

The solution here is to force the LDFLAGS, as follows:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
LDFLAGS=-L/usr/$(DEB_HOST_GNU_TYPE)/lib -L/usr/$(DEB_HOST_GNU_TYPE)/usr/lib
else
[...]
./configure $(CROSS) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS=&amp;quot;$(CFLAGS)&amp;quot; LDFLAGS=&amp;quot;-Wl,-z,defs $(LDFLAGS)&amp;quot;
&lt;/pre&gt;

This works much better. We even got rid of -lX11, which should not be necessary: it is already required by the other libraries which will be used.
&lt;br /&gt;

&lt;br /&gt;
libtool nightmare
&lt;br /&gt;

&lt;br /&gt;
This is what drove me nuts again. I am not the only one:
&lt;br /&gt;

&lt;br /&gt;
&amp;laquo; You might play with compiler and linker flags, try to hack and understand the libtool shell script (best of luck if you can decipher it), and end up cursing the ancestors of those who ever came up with such a dumb system. &amp;raquo;
&lt;br /&gt;

&lt;br /&gt;
...and so I read it, and cursed endlessly. Thousands of lines of shell stress-testing code. To put it shortly, libtool is re-generated everytime you run ./configure, which appends ltmain.sh to some configuration variables.
&lt;br /&gt;

&lt;br /&gt;
At this point, depending on which LDFLAGS you're using, libtool will have a life of its own, sometimes replacing -lname by /usr/lib/libname.so, sometimes not (and ignoring most other flags). This got wrong in our case; in fact, libtool was correct in picking up *.la files (libtool's own library description format) in /usr/arm-linux-gnueabi/usr/lib, but it was blindly trusting them as they mention the libraries are stored in /usr/lib instead.
&lt;br /&gt;

&lt;br /&gt;
The solution should have been as &amp;quot;simple&amp;quot; as using -inst-prefix-dir (which I did not know about, and found by reading the code). Unfortunately it wasn't and I had to patch ltmain.sh to obtain what I feel is the correct fix:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;test -f &amp;quot;$inst_prefix_dir$add&amp;quot; &amp;amp;&amp;amp; add=&amp;quot;$inst_prefix_dir$add&amp;quot;
&lt;/pre&gt;

This checks if the library is in the staging directory, which takes then precedence over the normal path.
&lt;br /&gt;

&lt;br /&gt;
dh_strip and dh_shlibdeps
&lt;br /&gt;

&lt;br /&gt;
I was totally expecting them to break: dh_strip hardcodes strip as the executable to run (instead of $(DEB_HOST_GNU_TYPE)-strip). Likewise, dh_shlibdeps will have to be modified to support cross-compilation. So I temporarily disabled them both.
&lt;br /&gt;

&lt;br /&gt;
And the winner is...
&lt;br /&gt;

&lt;br /&gt;
It feels good when it works:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;dpkg-deb: building package `libmokoui2-dev' in `../libmokoui2-dev_0.3+svn4878-1_armel.deb'.
dpkg-deb: building package `libmokoui2' in `../libmokoui2_0.3+svn4878-1_armel.deb'.
dpkg-genchanges  &amp;gt;../libmokoui2_0.3+svn4878-1_armel.changes
dpkg-genchanges: including full source code in upload
dpkg-buildpackage: full upload (original source is included)
&lt;/pre&gt;

It's not so bad, I learned some :)&lt;br /&gt;</description>
	<pubDate>Fri, 17 Apr 2009 00:00:36 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>iscape: hello planet hackable:1</title>
	<guid>tag:blogger.com,1999:blog-7398299105390421998.post-1581969888120937274</guid>
	<link>http://openporticus.blogspot.com/2009/04/hello-planet-hackable1.html</link>
	<description>Hello Planet,&lt;br /&gt;&lt;br /&gt;am just testing my blogging set up here, more posts with real content to follow soon.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7398299105390421998-1581969888120937274?l=openporticus.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Apr 2009 02:13:27 +0000</pubDate>
	<author>noreply@blogger.com (marcus)</author>
</item>
<item>
	<title>khorben: hackable:1 as a Xen guest</title>
	<guid>http://people.defora.org/~khorben/place/blog/3/hackable-1-as-a-Xen-guest</guid>
	<link>http://people.defora.org/~khorben/place/blog/3/hackable-1-as-a-Xen-guest</link>
	<description>As probably already pretty obvious here, my main Operating System is NetBSD. Over the past few weeks, I've been trying virtualization, using Xen with NetBSD as the native host. This excellent howto describes the whole procedure better than I could do it.
&lt;br /&gt;

&lt;br /&gt;
This wasn't without a few issues though. Here's what was important in my case:
&lt;br /&gt;

&lt;br /&gt;
Xen device files
&lt;br /&gt;

&lt;br /&gt;
Don't forget to create the device files:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# cd /dev &amp;amp;&amp;amp; MAKEDEV xen
&lt;/pre&gt;

The bootloader
&lt;br /&gt;

&lt;br /&gt;
For 64-bit hosts, or simply if your / partition is &amp;quot;big&amp;quot; (somewhere between 512MB and 4096MB in my experience), then you must use NetBSD's native bootloader. It requires NetBSD 5.0 (or -current, and you can also get it to work on 4.0 and below).
&lt;br /&gt;

&lt;br /&gt;
First, don't forget to copy /usr/mdec/boot to /boot when updating the bootloader (symptom is &amp;quot;unknown command&amp;quot;). Then, copy and modify /boot.cfg from /usr/src/etc/etc.amd64/boot.cfg:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;menu=Boot normally:boot /netbsd.gz
menu=Boot Xen:modules enabled;load /netbsd.xen0 bootdev=wd0a ro console=pc;multiboot /xen.gz dom0_mem=1024M
menu=Boot single user:boot /netbsd.gz -s
menu=Disable ACPI:boot /netbsd.gz -2
menu=Disable ACPI and SMP:/boot /netbsd.gz -12
menu=Drop to boot prompt:prompt
default=1
timeout=10
&lt;/pre&gt;

Create the virtual machine
&lt;br /&gt;

&lt;br /&gt;
You can use a plain file as the guest, to be able to switch between Xen and qemu at will. I have detailed my procedure below.
&lt;br /&gt;

&lt;br /&gt;
Create and partition a 20GB file
&lt;br /&gt;

&lt;br /&gt;
I'm not sure if this blocksize is optimal. You may also feel free to set swap space at this stage, I chose to proceed without any:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# dd if=/dev/zero of=ldeb bs=1024*1024 count=20480
# vnconfig -c vnd0 ldeb
# fdisk -u vnd0
[...]
Do you want to change our idea of what BIOS thinks? [n] n
&lt;/pre&gt;

&lt;pre&gt;Partition table:
0: &amp;lt;UNUSED&amp;gt;
1: &amp;lt;UNUSED&amp;gt;
2: &amp;lt;UNUSED&amp;gt;
3: &amp;lt;UNUSED&amp;gt;
Bootselector disabled.
No active partition.
Which partition do you want to change?: [none] 0
The data for partition 0 is:
&amp;lt;UNUSED&amp;gt;
sysid: [0..255 default: 169] 131
start: [0..xcyl default: 63, 0cyl, 0MB] 63
size: [0..xcyl default: x, xcyl, xMB] $
bootmenu: []
&lt;/pre&gt;

&lt;pre&gt;Partition table:
0: Linux native (sysid 131)
   start 63, size 41942977 (20480 MB, Cyls 0-2610/212/34), Active
       PBR is not bootable: All bytes are identical (0x00)
[...]
Which partition do you want to change?: [none]
&lt;/pre&gt;

&lt;pre&gt;We haven't written the MBR back to disk yet.  This is your last chance.
Partition table:
[...]
Should we write new partition table? [n] y
&lt;/pre&gt;

NetBSD also needs a disklabel to identify the different partitions:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# disklabel -Ii vnd0
partition&amp;gt; a
Filesystem type [?] [4.2BSD]: Linux Ext2
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 63
Partition size ('$' for all remaining) [xc, ys, zM]: $
partition&amp;gt; W
Label disk [n]? y
Label written
partition&amp;gt; Q
&lt;/pre&gt;

Format and mount the partition
&lt;br /&gt;

&lt;br /&gt;
I force a block size of 4KB for compatibility with NetBSD, and 128 bytes per inode for performance:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# mke2fs -b 4096 -I 128 /dev/vnd0a
# mkdir /mnt/ldeb
# mount /dev/vnd0a /mnt/ldeb
&lt;/pre&gt;

Download and extract hackable:1
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# wget &lt;a href=&quot;http://build.hackable1.org/Hackable1-Openmoko-Freerunner-cross-daily.tar.gz&quot;&gt;http://build.hackable1.org/Hackable1-Openmoko-Freerunner-cross-daily.tar.gz&lt;/a&gt;
# tar -xzvpf Hackable1-Openmoko-Freerunner-cross-daily.tar.gz -C /mnt/ldeb
&lt;/pre&gt;

Download and install the kernel modules
&lt;br /&gt;

&lt;br /&gt;
We're using Xen 3.0.4 now to make sure it is well supported as of today. The kernel itself doesn't need to be on the partition, and will be installed later:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# wget &lt;a href=&quot;http://bits.xensource.com/oss-xen/release/3.0.4-1/bin.tgz/xen-3.0.4_1-install-x86_64.tgz&quot;&gt;http://bits.xensource.com/oss-xen/release/3.0.4-1/bin.tgz/xen-3.0.4_1-install-x86_64.tgz&lt;/a&gt;
# tar xzvf xen-3.0.4_1-install-x86_64.tgz dist/install/lib/modules \
&lt;/pre&gt;
		dist/install/boot
&lt;pre&gt;# mkdir -p /mnt/ldeb/lib/modules
# mv dist/install/lib/modules/2.6.16.33-xen /mnt/ldeb/lib/modules
&lt;/pre&gt;

Unmount the partition
&lt;br /&gt;

&lt;br /&gt;
And take care of the vnd pseudo-device as well:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# umount /mnt/ldeb
# vnconfig -u vnd0
&lt;/pre&gt;

Install the kernel image
&lt;br /&gt;

&lt;br /&gt;
Copy the kernel next to the image:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# cp dist/install/boot/vmlinuz-2.6.16.33-xen /home/xen/ldeb.xenU
&lt;/pre&gt;

Configure the virtual machine
&lt;br /&gt;

&lt;br /&gt;
This is my configuration file, with the comments stripped off:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# cat &amp;gt; /usr/pkg/etc/xen/ldeb &amp;lt;&amp;lt; EOF
kernel = &amp;quot;/home/xen/ldeb.xenU&amp;quot;
memory = 768
name = &amp;quot;ldeb&amp;quot;
cpu = 1
vif = [ 'mac=aa:00:00:50:02:f0, bridge=bridge0' ]
disk = [ 'file:/home/xen/ldeb,0x300,w' ]
root = &amp;quot;hda1&amp;quot;
extra = &amp;quot;root=/dev/hda1 ro&amp;quot;
EOF
&lt;/pre&gt;

Boot the machine
&lt;br /&gt;

&lt;br /&gt;
Finally, if all is well:
&lt;br /&gt;

&lt;br /&gt;
&lt;pre&gt;# xm create -c /usr/pkg/etc/xen/ldeb
&lt;/pre&gt;

You should then be able to login as root. It's recommended to install libc6-xen, some other tweaks may be useful too. I'll be all ears :)
&lt;br /&gt;

&lt;br /&gt;
Update:
&lt;br /&gt;

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;the disklabel is better now:
&lt;/li&gt;
&lt;li&gt;using &amp;quot;Linux Ext2&amp;quot; instead of &amp;quot;4.2BSD&amp;quot;
&lt;/li&gt;
&lt;li&gt;starting at offset 63
&lt;/li&gt;
&lt;li&gt;the flag to mke2fs was wrong (it's -I to specify the bytes per inode)
&lt;/li&gt;
&lt;li&gt;it's probably vnd0a instead of vnd0e&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Thu, 02 Apr 2009 23:16:42 +0000</pubDate>
	<author>khorben@defora.org (khorben)</author>
</item>
<item>
	<title>zecrazytux: Barcamp à SUPINFO Marseille le 17 avril</title>
	<guid>http://zecrazytux.net/Embedded/Hackable1/news/09-04-08-Barcamp-%C3%A0-SUPINFO-Marseille.html</guid>
	<link>http://zecrazytux.net/Embedded/Hackable1/news/09-04-08-Barcamp-%C3%A0-SUPINFO-Marseille.html</link>
	<description>&lt;p&gt;&lt;!--[03/08/09]--&gt;&lt;/p&gt; &lt;h1&gt;Barcamp à SUPINFO Marseille le 17 avril&lt;/h1&gt; &lt;p&gt;Un barcamp aura lieu le vendredi 17 avril à SUPNFO Marseille.&lt;br /&gt; &lt;/p&gt; &lt;p&gt;J'y présenterais l'OpenMoko, Hackable:1, et plus généralement le projet de Hackable Devices de Bearstech qui m'intéresse beaucoup.&lt;br /&gt; &lt;/p&gt; &lt;p&gt;N'hésitez pas à venir nous rejoindre, que vous ayez un OpenMoko où non !&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Différents thêmes seront abordés, et je présenterais également NetBSD, pkgsrc et Xen sur NetBSD lors de ce Barcamp.&lt;br /&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://barcamp.org/BarCampMarseille2&quot;&gt;Plus d'informations ici :)&lt;/a&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;Venez nombreux !&lt;/p&gt;</description>
	<pubDate>Sat, 07 Mar 2009 23:00:00 +0000</pubDate>
</item>
<item>
	<title>jbl2024: Finger scrolling and the freerunner</title>
	<guid>urn:md5:16da609ad388718819045d1b7b7d2769</guid>
	<link>http://blondon.fr/blog/index.php?post/2009/02/21/Finger-scrolling-and-the-freerunner</link>
	<description>&lt;p&gt;The openmoko-today app actually implements a kind of finger scrolling, but i find it very weird. I launch applications instead of scrolling every time i try to scroll.&lt;br /&gt;
In order to achieve finger scrolling, i have created a scrolled window with an event box above. The scrollbars are hidden and i'm listening to the button-press, button-release and motion-event signals to handle everything.&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;How to scroll the window&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;The initial Y position is saved in the button-press callback.&lt;/li&gt;
&lt;li&gt;In the motion-event callback, we have the current Y position. A delta is calculated between theses 2 values&lt;/li&gt;
&lt;li&gt;This delta is applied to scroll the window (by changing the GtkAdjustment value).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;How to detect a mouse click instead of a scrolling action&lt;/h3&gt;


&lt;p&gt;In order to detect mouse click instead of scrolling :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;i launch a short timer when the user click on a button.&lt;/li&gt;
&lt;li&gt;When the timer expires, the button is saved in a variable and is activated.&lt;/li&gt;
&lt;li&gt;The timer is canceled whenever the motion-event is fired (and the button variable is cleared).&lt;/li&gt;
&lt;li&gt;When the user raises his finger (button-release signal of the eventbox), if the button is still here, the clicked signal is fired.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Implementation&lt;/h3&gt;

&lt;p&gt;The source code for the finger scrolling system can be found in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/src/libraries/libcommongui&quot;&gt;libcommongui &lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;For an example of usage, see &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/src/applications/wifig&quot;&gt;wifig&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 21 Feb 2009 07:09:00 +0000</pubDate>
</item>
<item>
	<title>jbl2024: erlang on hackable:1</title>
	<guid>urn:md5:1d72ea26047d43746d6ea1f36cd2df2d</guid>
	<link>http://blondon.fr/blog/index.php?post/2009/02/14/erlang-on-hackable%3A1</link>
	<description>Erlang works out of the box on hackable:1 &lt;br /&gt;&lt;br /&gt;Here are the steps to make a little gtk app :
&lt;ul&gt;
&lt;li&gt;install erlang :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;apt-get install erlang&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Download gtknode at http://code.google.com/p/gtknode/ Then :&lt;/p&gt;
&lt;pre class=&quot;wiki&quot;&gt;&lt;code&gt;./configure --prefix=/usr&lt;br /&gt;make&lt;br /&gt;make install&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;test and enjoy :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;wiki&quot;&gt;&lt;code&gt;%%%-------------------------------------------------------------------&lt;br /&gt;-module(testerl).&lt;br /&gt;&lt;br /&gt;-export([start/0]).&lt;br /&gt;&lt;br /&gt;-record(widget, {id, name}).&lt;br /&gt;&lt;br /&gt;-define(G(C,A),gtknode:cmd(hello,C,A)).&lt;br /&gt;&lt;br /&gt;create_button(Winstruct, Label)-&amp;gt;&lt;br /&gt;    Id = ?G('Gtk_button_new_with_label',[Label]),&lt;br /&gt;    ?G('Gtk_box_pack_start', [get_vbox(Winstruct), Id, false, false, 5]),&lt;br /&gt;    ?G('Gtk_widget_show',[Id]),&lt;br /&gt;    Widget = #widget{name = &quot;Name&quot;, id=Id},&lt;br /&gt;    add_widget_to_struct(Widget, Winstruct).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;get_vbox(Winstruct)-&amp;gt;&lt;br /&gt;    [Vbox] = dict:fetch(vbox, Winstruct),&lt;br /&gt;    Vbox.&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;add_widget_to_struct(Widget, Winstruct) when is_record(Widget, widget)-&amp;gt;&lt;br /&gt;    Widgets = dict:fetch(widgets, Winstruct),&lt;br /&gt;    dict:store(widgets, [Widget|Widgets], Winstruct). &lt;br /&gt;&lt;br /&gt;add_to_struct([], Dict)-&amp;gt;&lt;br /&gt;    Dict;&lt;br /&gt;add_to_struct([{Key, Value}|Tail], Dict)-&amp;gt;&lt;br /&gt;    DictBis = dict:append(Key, Value, Dict),&lt;br /&gt;    add_to_struct(Tail, DictBis).&lt;br /&gt;&lt;br /&gt;start() -&amp;gt;&lt;br /&gt;    gtknode:start(hello),&lt;br /&gt;    Win = ?G('Gtk_window_new',['GTK_WINDOW_TOPLEVEL']),&lt;br /&gt;    ScrolledWindow = ?G('Gtk_scrolled_window_new', [ 'NULL', 'NULL']),&lt;br /&gt;    ?G('Gtk_container_add',[Win,ScrolledWindow]),&lt;br /&gt;    ?G('Gtk_scrolled_window_set_policy', [ScrolledWindow, 'GTK_POLICY_NEVER', 'GTK_POLICY_ALWAYS']),&lt;br /&gt;&lt;br /&gt;    Viewport = ?G('Gtk_viewport_new', ['NULL', 'NULL']),&lt;br /&gt;    ?G('Gtk_container_add',[ScrolledWindow, Viewport]),&lt;br /&gt; &lt;br /&gt;    Vbox = ?G('Gtk_vbox_new', [false, 0]),&lt;br /&gt;    io:fwrite(&quot;Vbox = ~p~n&quot;, [Vbox]),&lt;br /&gt;    ?G('Gtk_container_add',[Viewport,Vbox]),&lt;br /&gt; &lt;br /&gt;    But = ?G('Gtk_button_new_with_label',[&quot;butté&quot;]),&lt;br /&gt;    &lt;br /&gt;    ?G('Gtk_widget_set_name', [But, &quot;button&quot;]),&lt;br /&gt;    ?G('Gtk_box_pack_start', [Vbox, But, false, false, 5]),&lt;br /&gt;    &lt;br /&gt;    ?G('Gtk_widget_show',[Win]),&lt;br /&gt;    ?G('Gtk_widget_show',[ScrolledWindow]),    &lt;br /&gt;    ?G('Gtk_widget_show',[Viewport]),&lt;br /&gt;    ?G('Gtk_widget_show',[Vbox]),&lt;br /&gt;    ?G('Gtk_widget_show',[But]),&lt;br /&gt;    ?G('GN_signal_connect',[But,clicked]),&lt;br /&gt;    ?G('GN_signal_connect',[Win,destroy]),&lt;br /&gt;   &lt;br /&gt;    Winstruct = add_to_struct([{window, Win}, {vbox, Vbox}, {widgets, []}], dict:new()),&lt;br /&gt;    loop(Winstruct, But).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;loop(Winstruct, But) -&amp;gt;&lt;br /&gt;    receive&lt;br /&gt;        {hello,{signal,{But,clicked}}} -&amp;gt;&lt;br /&gt;            io:fwrite(&quot;widget : ~p  ~p~n&quot;,[But, clicked]),&lt;br /&gt;            io:fwrite(&quot;winstruct = ~p~n&quot;, [Winstruct]),&lt;br /&gt;            WinstructB = create_button(Winstruct, &quot;toto va a la plage&quot;),&lt;br /&gt;            loop(WinstructB, But);&lt;br /&gt;        {hello,{signal,{_,destroy}}}  -&amp;gt;&lt;br /&gt;            gtknode:stop(hello)&lt;br /&gt;    end.&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;wiki&quot;&gt;&lt;code&gt;erl -sname anode@localhost&lt;br /&gt;(anode@localhost)1&amp;gt; c(testerl).&lt;br /&gt;(anode@localhost)2&amp;gt; testerl:start().&lt;/code&gt;&lt;/pre&gt;</description>
	<pubDate>Sat, 14 Feb 2009 09:23:00 +0000</pubDate>
</item>
<item>
	<title>iscape: apple, ipods and navigation systems</title>
	<guid>tag:blogger.com,1999:blog-7398299105390421998.post-2295118434438197482</guid>
	<link>http://openporticus.blogspot.com/2007/05/apple-ipods-and-navigation-systems.html</link>
	<description>I just had the other day the opportunity to see my parents using a navigation system for their first time. Actually it was a &quot;PNA&quot;, a PDA form factor system specifically designed for the task of navigation. I have to add that my Father is engineer and that my parents have a computer since 10 years.  Nevertheless the user interface was all but intuitve to them. Without my help they would have never succeded to get the thing running.&lt;br /&gt;&lt;br /&gt;Apples iPod was not the first mp3 player, yet its success is based on its superior usability.&lt;br /&gt;&lt;br /&gt;To quote Antoine de Saint-Exupery:&lt;br /&gt;&lt;span&gt;&quot;It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away.&quot;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;My point is that lots of software is way to overengineered for the non-geek user. Too many features, too much technical stuff under the hood, while forgetting about the main purpose, whether this is playing mp3's or bringing you from A to B.&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Apart from watching people using software I have learned a lot from Kathy Sierra's blog &quot;Creating Passionate Users&quot;.&lt;br /&gt;&lt;br /&gt;Actually I wonder if part of google's success is simply based on the fact that the front page www.google.com has never gotten cluttered with other stuff like yahoo or msn.&lt;br /&gt;&lt;br /&gt;And a last note: I can't use my car radio without the manual - I'm not joking. In fact I simply refuse to read the manual for a radio. Long ago the days when there were just two turning knobs: on/off-volume and search a station.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7398299105390421998-2295118434438197482?l=openporticus.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 23 May 2007 23:44:52 +0000</pubDate>
	<author>noreply@blogger.com (marcus)</author>
</item>

</channel>
</rss>
