<?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: 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;</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 src=&quot;http://blondon.fr/blog/public/.Screenshot-2_m.jpg&quot; alt=&quot;nitromoko-1&quot; title=&quot;nitromoko-1, Jun 2009&quot; /&gt;&lt;/p&gt;


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


&lt;p&gt;&lt;img src=&quot;http://blondon.fr/blog/public/.Screenshot-4_m.jpg&quot; alt=&quot;nitromoko-3&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 src=&quot;http://blondon.fr/blog/public/.laptop_m.jpg&quot; alt=&quot;nitromoko-4&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>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>
