<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet OpenEZX</title>
	<link>http://planet.openezx.org</link>
	<language>en</language>
	<description>Planet OpenEZX - http://planet.openezx.org</description>

<item>
	<title>Antonio Ospite: On USB projectors, linux and libam7xxx</title>
	<guid>http://ao2.it/en/tags/69 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2012/01/18/usb-projectors-linux-and-libam7xxx</link>
	<description>&lt;p&gt;I was looking into &lt;a href=&quot;http://en.wikipedia.org/wiki/Handheld_projector&quot; title=&quot;Wikipedia - Handheld projector&quot;&gt;compact/mini/pico/handheld projectors&lt;/a&gt;, and I obviously wanted something I could use under GNU/linux, there were basically two choices:

&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Pick up a projector with VGA/HDMI: Operating System independent.&lt;/li&gt;
&lt;li&gt;Pick up a USB projector: shipped only with drivers for MS Windows (and sometimes for MacOSX too).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since the first choice was more expensive and I verified that writing a driver for the second case wasn't too hard, I picked up an &lt;a href=&quot;http://www.acer.it/ac/it/IT/content/model/EY.JCP06.001&quot; title=&quot;Acer - C110 projector&quot;&gt;Acer C110&lt;/a&gt;, I paid it about 160 €, but you can find it even cheaper &lt;a href=&quot;http://www.amazon.it/gp/product/B00551DPIS/ref=s9_simh_gw_p23_d0_g23_i1?pf_rd_m=A11IL2PNWYJU7H&amp;pf_rd_s=center-2&amp;pf_rd_r=08AJEYQDZEE29GC01PHC&amp;pf_rd_t=101&amp;pf_rd_p=214853547&amp;pf_rd_i=426865031&quot; title=&quot;Acer C110 DMD/DLP Videoproiettore&quot;&gt;somewhere else&lt;/a&gt;, grr.&lt;/p&gt;

&lt;h3&gt;AM7X or AM7XXX&lt;/h3&gt;

&lt;p&gt;The C110 is based on an &lt;a href=&quot;http://www.actions-micro.com&quot; title=&quot;Actions Microelectronics Co., Ltd.&quot;&gt;Actions Micro&lt;/a&gt; AM7212P &lt;acronym title=&quot;Integrated Circuit&quot;&gt;IC&lt;/acronym&gt; and uses USB bulk transfers with a simple packet based protocol on top to exchange data and commands to and from a host system and the AM7XXX chip.&lt;/p&gt;

&lt;p&gt;Other projectors using the same protocol are:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.acer.it/ac/it/IT/content/models/projector-c&quot;&gt;Acer Series C pico projectors (C20 C110 C112 C120)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sagemcom.com/EN/products/image-sound/pico-video-projectors.html&quot;&gt;Philips/SagemCom PicoPix projectors (PPX 1020, PPX 1230, PPX 1430, PPX 1630)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.kabelmanie.cz/miniprojektor-cel-tec-mp-01/&quot;&gt;CEL-TEC MP-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dealextreme.com/p/portable-home-office-mini-usb-2-0-lcos-projector-16-9-45019&quot;&gt;Other unbranded projectors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These projectors use the USB Vendor and Product IDs &lt;code&gt;1de1:1101&lt;/code&gt; in &lt;em&gt;mass storage&lt;/em&gt; mode and &lt;code&gt;1de1:c101&lt;/code&gt; in &lt;em&gt;display mode&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Some &lt;acronym title=&quot;Digital Picture Frame&quot;&gt;DPF&lt;/acronym&gt;s too (from Hannspree for instance) are known to use these chips but I don't know yet if they can be put in &lt;em&gt;USB display mode&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I will refer to these devices as either AM7X or AM7XXX devices.&lt;/p&gt;

&lt;h3&gt;Open Source driver for AM7XXX devices&lt;/h3&gt;&lt;p&gt;
&lt;a href=&quot;https://github.com/rettichschnidi&quot; title=&quot;github - rettichschnidi (Reto Schneider)&quot;&gt;Reto Schneider&lt;/a&gt; and I are reverse engineering the USB protocol used by these devices, using &lt;a href=&quot;http://files.reto-schneider.ch/diesunddas/am7xxx/&quot; title=&quot;Acer C110 USB dumps&quot;&gt;USB&lt;/a&gt; dumps and disassembling the Windows device driver, and a basic but already usable library to communicate with those AM7x based projectors can be found in &lt;a href=&quot;http://git.ao2.it/libam7xxx.git/&quot; title=&quot;git.ao2.it - Open Source library for Actions Micro AM7XXX devices&quot;&gt;libam7xxx&lt;/a&gt;. Reto was the first to start working on that, in the form of &lt;a href=&quot;https://github.com/rettichschnidi/acerc11xdrv&quot; title=&quot;github - https://github.com/rettichschnidi/acerc11xdrv&quot;&gt;acerc11xdrv&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So you can now get these projectors to work wherever &lt;a href=&quot;http://www.libusb.org/wiki/libusb-1.0&quot; title=&quot;libusb - user level uniform access to USB devices&quot;&gt;libusb-1.0&lt;/a&gt; works, that means you can use them with your phone if it can run GNU/Linux for instance, or even Android/Linux but I don't have an Android device to verify that.&lt;/p&gt;

&lt;p&gt;For now all the communication about the development is happening on the &lt;code&gt;#am7xxx&lt;/code&gt; IRC Channel on the Freenode Network, come find us, and let us know if you want to help: like hosting a mailing list for us, or sponsoring some hardware (USB projectors you want to use &lt;em&gt;freely&lt;/em&gt; or devices you want to use these projectors with).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side note&lt;/strong&gt;: the user manuals of these devices sometimes refer to the functionality of displaying images over USB as &lt;q&gt;Display over USB&lt;/q&gt; (or &lt;acronym title=&quot;Display over USB&quot;&gt;DoUSB&lt;/acronym&gt;), this definition is used on a lot of projectors but I don't know if it refers always to the same protocol/mechanism to send images over USB.&lt;/p&gt;

&lt;h3&gt;Linux running &lt;strong&gt;ON&lt;/strong&gt; other projectors&lt;/h3&gt;

&lt;p&gt;Incidentally, when I was doing my pre-purchase market research, I ran into several projectors which —unsurprisingly— are running a Linux system themselves (linux kernel, busybox, etc.), here is a summary of what I found out:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.samsung.com/uk/support/model/SP0351VBX/EN&quot; title=&quot;Samsung - Support for SP-H03&quot;&gt;Samsung SP-H03&lt;/a&gt; (&lt;strong&gt;not&lt;/strong&gt; based on AM7X): the firmware image can be downloaded &lt;a href=&quot;http://downloadcenter.samsung.com/content/FM/201107/20110727110139308/P-OBRNPWWC-1008.1.rom&quot; title=&quot;Samsung - SP-03 firmware image&quot;&gt;here&lt;/a&gt;, and Samsung is providing the source code for the Free Software used in it, you can find it on &lt;a href=&quot;https://opensource.samsung.com&quot; title=&quot;Samsung - Open Source Release center&quot;&gt;opensource.samsung.com&lt;/a&gt; (AFAIR &lt;a href=&quot;http://laforge.gnumonks.org/weblog/&quot; title=&quot;Harald Welte's blog&quot;&gt;Harald Welte&lt;/a&gt; gave them some directions about GPL compliance, right?).&lt;/p&gt;

&lt;p&gt;This could be an interesting device if you want to run your own code &lt;strong&gt;on&lt;/strong&gt; a projector.
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://support.acer.com/product/default.aspx?modelId=3905&quot; title=&quot;Acer - K330 projector&quot;&gt;Acer K330&lt;/a&gt;: based on a chip of the same am7x family as the C110.&lt;/p&gt;

&lt;p&gt;The firmware image is &lt;a href=&quot;http://global-download.acer.com/GDFiles/BIOS/Firmware/Firmware_Acer_B0917_A_A.zip?acerid=634612612662586667&amp;Step1=PROJECTOR&amp;Step2=K%20SERIES&amp;Step3=K330&amp;OS=ALL&amp;LC=en&amp;BC=ACER&amp;SC=PA_7&quot; title=&quot;Acer - K330 firmware image&quot;&gt;available for download&lt;/a&gt; and it does contain the Linux kernel and other Open Source software, but the source code is not available, neither Linux or the &lt;a href=&quot;http://www.gnu.org/licenses/gpl.html&quot; title=&quot;GNU - The GNU General Public License&quot;&gt;GPL&lt;/a&gt; are mentioned in the downloadable documentation; I am going to do more research on this later to see if Acer is in compliance with the &lt;acronym title=&quot;General Public license&quot;&gt;GPL.
&lt;/acronym&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Open Projectors?&lt;/h3&gt;

&lt;p&gt;Having the ability of processing an image before projecting it —either on an external system, or on the projector itself— opens up to &lt;a href=&quot;http://www.youtube.com/watch?v=frGEzlrhve0&quot; title=&quot;youtube - Augmenting Indoor Spaces Using Interactive Environment-aware Handheld Projectors&quot;&gt;a lot of possibilities&lt;/a&gt;, and I can foresee an increase of &lt;acronym title=&quot;Augmented Reality&quot;&gt;AR&lt;/acronym&gt; applications using projectors; so, do you think there is enough interest for an &lt;em&gt;Open Projectors&lt;/em&gt; project? A place where we can share the techniques (&lt;a href=&quot;http://htrgroup.com/main.php?section=keystone&quot; title=&quot;HTR Group - Keystone Correction&quot;&gt;keystone correction&lt;/a&gt;, or some more sophisticate anamorphic transformations by the means of a &lt;a href=&quot;http://www.cs.cmu.edu/~rahuls/Research/Projector/&quot; title=&quot;CMU - Smart Projectors: Camera-Projector Systems&quot;&gt;Camera-Projector system&lt;/a&gt;) and the Open Source software implementing them, all in a single place.&lt;/p&gt;

&lt;p&gt;Get in touch if you have any ideas about that.&lt;/p&gt;</description>
	<pubDate>Wed, 18 Jan 2012 15:50:21 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: AOSP?</title>
	<guid>http://ao2.it/en/tags/68 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2012/01/15/aosp</link>
	<description>&lt;p&gt;Every time I read &lt;acronym title=&quot;Android Open Source Project&quot;&gt;AOSP&lt;/acronym&gt; in the news I think something is not quite right.

Here is a faint attempt to set things straight —with some humor, don't take it too seriously—: here is &lt;strong&gt;&lt;a href=&quot;http://aosp.it&quot; title=&quot;AOSP? What are you looking for, exactly?&quot;&gt;aosp.it&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And I don't even have an Android device... &lt;a href=&quot;http://www.asus.com/Eee/Eee_Pad/Eee_Pad_Transformer_Prime_TF201/&quot; title=&quot;Eee Pad Transformer Prime TF201 - has the bootloader been unlocked yet?&quot;&gt;yet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;seriously&lt;/strong&gt;, if anyone is interested in the &lt;a href=&quot;http://aosp.it&quot; title=&quot;AOSP? What are you looking for, exactly?&quot;&gt;aosp.it&lt;/a&gt; domain for some &lt;a href=&quot;http://en.wikipedia.org/wiki/Android_%28operating_system%29&quot; title=&quot;Wikipedia - Android (operating system)&quot;&gt;Android/Linux&lt;/a&gt;, Open Source related community site (maybe the very Italian one?), just let me know, I may be willing to concede it, if I decide not to start one myself.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;Portions of this page are reproduced from work created and
&lt;a href=&quot;http://code.google.com/policies.html&quot;&gt;shared by Google&lt;/a&gt;
and used according to terms described in the
&lt;a href=&quot;http://creativecommons.org/licenses/by/3.0/&quot;&gt;Creative Commons 3.0 Attribution License&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;div class=&quot;field field-type-filefield field-field-image&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Attached images:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2012/01/15/aosp&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2012/01/15/aosp/logo_ao2_android_400x400.png&quot; alt=&quot;ao2 logo mocking Android&quot; title=&quot;ao2 logo mocking Android&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;100&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;</description>
	<pubDate>Sat, 14 Jan 2012 23:27:17 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: IT has seen a crazy year</title>
	<guid>http://www.vanille-media.de/site/?p=158</guid>
	<link>http://www.vanille-media.de/site/index.php/2011/12/13/it-has-seen-a-crazy-year/</link>
	<description>&lt;p&gt;Information Technology has seen a really crazy year. Among all the smaller incidents, the big bangs involved Nokia partnering with Microsoft, abandoning Maemo, HP driving with WebOS against the wall, patent lawsuits everywhere.&lt;/p&gt;
&lt;p&gt;What that means for FOSS-lovers is clear&amp;#8230; you can&amp;#8217;t trust any company to continue working on anything. Business demands are what counts in the world of mass markets. If you want longterm support for a platform, your best bet is to build a community around it. But you will also want to work on hardware support otherwise you&amp;#8217;ll run into the next dead end.&lt;/p&gt;
&lt;p&gt;To be honest, right now I don&amp;#8217;t see much of a future for any mobile Linux-inspired platform other than the mutation called Android. But that&amp;#8217;s not much of a problem per se. The smartphone market is crazy. To compete in that world, you have to give up on freedom. But is the mass market really what we want? Is it what mobile Linux needs?&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t think so. There are still &lt;em&gt;huge&lt;/em&gt; opportunities for using Linux-based mobile software platforms in niches such as machine2machine communication, home automation, research, teaching, and more. That&amp;#8217;s where a service-based middleware like FSO comes into the game: for special interests. However, even niche-adoption is hindered without a minimal set of applications. And that is where we still lack: Even special interest people want to use their smartphones to manage contacts, browse the web, send mails, play media, etc. We don&amp;#8217;t have an integrated software stack with a complete set of UI applications that would cover these needs. Openmoko worked on one, but failed. Nokia worked on multiple ones, but gave up (multiple times). What else do we have?&lt;/p&gt;
&lt;p&gt;With HP&amp;#8217;s recent announcement about releasing WebOS as open source, the game may have changed. If we could use the WebOS application stack on top of the FSO middleware, we may have a real chance to get something great and usable – and &lt;em&gt;complete&lt;/em&gt; – soon. I have always liked the WebOS UI. If it&amp;#8217;s a bit slower than other UIs, who cares as long as it is free?&lt;/p&gt;</description>
	<pubDate>Tue, 13 Dec 2011 07:55:07 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Towards the end of 2011</title>
	<guid>http://www.vanille-media.de/site/?p=157</guid>
	<link>http://www.vanille-media.de/site/index.php/2011/12/09/towards-the-end-of-2011/</link>
	<description>&lt;p&gt;Tempus fugit. I can tell you. Even more so, if you have a baby. I must confess I somewhat underestimated the impact the baby would have on my spare time. In some weird mindset I really thought I could continue working as usual on my open source projects&amp;#8230; as we know now I couldn&amp;#8217;t. I completely lost track and have to catch up with all changes that happened over the last 6 months.&lt;/p&gt;
&lt;p&gt;The first bunch of weeks with the baby were &lt;em&gt;really&lt;/em&gt; demanding. I mean, &lt;strong&gt;really&lt;/strong&gt;. She screamed a lot and could only sleep in our arms. Boy, were we tired. We carried her around so much we have Schwarzenegger arms now. But it&amp;#8217;s great to see her developing, err&amp;#8230; growing up, of course. With 6 months now she is a very interested baby, eager to learn new things and always trying to become more mobile.&lt;/p&gt;
&lt;p&gt;Luckily both my wife and me are self-employed. It so much easier when you can skip some hours at the usual start of the workday and also at the usual end. Of course, the work needs to be done, so we have to compensate when she&amp;#8217;s in bed. But still, it&amp;#8217;s very satisfying being able to see her twice a day for a couple of hours &amp;#8212; not all families have this luxury. Plus the existence of our two invaluable grandmas&amp;#8230; it&amp;#8217;s great.&lt;/p&gt;
&lt;p&gt;Company-wise, the &lt;a title=&quot;Lauer &amp; Teuber&quot; href=&quot;http://www.app-developers.de&quot;&gt;Lauer &amp;amp; Teuber GbR&lt;/a&gt; had an amazing year with many interesting iOS (and some Android) projects. We have reached the maximum we can do with the two guys we are, so we decided to grow and hire our first regular employee who&amp;#8217;s going to start in 2012. We also rented another office and are already moving.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m slowly getting back into some of my beloved open source projects&amp;#8230; it&amp;#8217;s great that work on e.g. &lt;a title=&quot;The freesmartphone.org middleware project&quot; href=&quot;http://www.freesmartphone.org&quot;&gt;FSO&lt;/a&gt; did not stall at all, but continued while I was &amp;#8220;away&amp;#8221;. Last week, I attended the 3rd installment of the &lt;a title=&quot;Open Hard- and Software Workshop&quot; href=&quot;http://www.ohsw.de&quot;&gt;Open Hard- and Software Workshop&lt;/a&gt; in munich, where the latest development of the very promising &lt;a title=&quot;GTA04 Open Mobile Phone Hardware&quot; href=&quot;http://www.gta04.de&quot;&gt;GTA04&lt;/a&gt; mobile phone was presented. I had a talk about &lt;a title=&quot;Vala Programming Language&quot; href=&quot;http://www.vala-project.org&quot;&gt;Vala&lt;/a&gt; which was well received. By the way, my Vala-book plans are not dead yet&amp;#8230; just in parking position &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Next week I&amp;#8217;m attending the FSOSHRCON, a joined conference with the people working on the freesmartphone.org middleware and the &lt;a title=&quot;SHR project&quot; href=&quot;http://www.shr-project.org&quot;&gt;SHR&lt;/a&gt; software. It&amp;#8217;s going to be great seeing all the folks again, concentrating a full weekend to agree on some important issues laying the path forward for the next year. Can&amp;#8217;t wait to be there.&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s left is the feeling that an extremely busy year has passed by, spiced with incredibly intense emotions. I&amp;#8217;m a happy man and I love my life. I&amp;#8217;m given exciting opportunities, but also challenges – and I plan to accept everything &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;All the best to you guys!&lt;/p&gt;</description>
	<pubDate>Fri, 09 Dec 2011 08:10:31 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Gnome 3: go to Shell? Not just yet, thanks.</title>
	<guid>http://ao2.it/en/tags/63 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks</link>
	<description>&lt;p&gt;In &lt;a href=&quot;http://wiki.debian.org/DebianUnstable&quot; title=&quot;DebianUnstable - Debian Wiki&quot;&gt;Debian Unstable&lt;/a&gt; the &lt;a href=&quot;http://raphaelhertzog.com/2011/10/17/gnome-3-transition-happening-in-debian-unstable/&quot; title=&quot;Raphael Hertzog - GNOME 3 transition happening in Debian unstable&quot;&gt;transition&lt;/a&gt; to &lt;a href=&quot;http://www.gnome.org/gnome-3/&quot; title=&quot;GNOME 3 - Simply Beautiful&quot;&gt;Gnome 3&lt;/a&gt; is taking place; when Gnome 3.0 firstly came out &lt;a href=&quot;https://plus.google.com/108981268803321636289/posts/73dRyRbFq8z&quot; title=&quot;Google+ - Linus Torvalds quoted by Rui Olivera&quot;&gt;some unnamed geeky users&lt;/a&gt; complained loudly about the design decisions of the development team to push strongly towards &lt;a href=&quot;http://live.gnome.org/GnomeShell&quot; title=&quot;GnomeShell - GNOME Live!&quot;&gt;gnome-shell&lt;/a&gt; as a new &lt;em&gt;default&lt;/em&gt; &lt;acronym title=&quot;User Interface&quot;&gt;UI&lt;/acronym&gt;; &lt;em&gt;gnome-shell&lt;/em&gt; was designed focusing on usability (usability is a metric relative to a certain &lt;em&gt;target audience&lt;/em&gt; &lt;acronym title=&quot;By The Way&quot;&gt;BTW&lt;/acronym&gt;) and simplicity, hiding a lot of details from the users. Obviously you can never make everyone happy so some of us simply happened to be “out of target”: you know us computer people (*cough cough*), we like to be in charge and control The Machine...

I must admit I still don't have a definitive opinion about the &lt;em&gt;gnome-shell&lt;/em&gt; concept, for now I just know that it does not suit me; I am going to try it eventually, maybe I'll get used to it, but in the mean time I need my desktop back just like I shaped it through the years; can this be done without loosing all the good Gnome technologies (&lt;a href=&quot;http://live.gnome.org/Empathy&quot; title=&quot;Empathy - GNOME Live!&quot;&gt;Empathy&lt;/a&gt; over all of them)?&lt;/p&gt;

&lt;p&gt;To be completely fair I have to say that there is little to complain about with Gnome developers, we can still get our good old GNOME desktop fully back by using the &lt;a href=&quot;http://library.gnome.org/users/gnome-help/stable/fallback-mode.html.en&quot; title=&quot;GNOME - What is fallback mode?&quot;&gt;fall-back mode&lt;/a&gt; based on &lt;a href=&quot;http://en.wikipedia.org/wiki/GNOME_Panel&quot; title=&quot;Wikipedia - Gnome Panel&quot;&gt;gnome-panel&lt;/a&gt; and live happily ever after, let's take a look at how this can be accomplished.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: GNOME people state that the &lt;em&gt;fall-back mode&lt;/em&gt; is meant for systems with older graphic cards which &lt;strong&gt;cannot&lt;/strong&gt; run &lt;em&gt;gnome-shell&lt;/em&gt;, however it can very well be seen as a good opportunity for those who &lt;strong&gt;do not want to&lt;/strong&gt; run &lt;em&gt;gnome-shell&lt;/em&gt; just yet.&lt;/p&gt;

&lt;p&gt;Getting back to the topic: some minor touches are needed to make the panel look more like what we are used to, maybe &lt;strong&gt;some of&lt;/strong&gt; these settings could even become default for &lt;em&gt;fall-back mode&lt;/em&gt;, we'll see.&lt;/p&gt;

&lt;p&gt;First, enable &lt;em&gt;fall-back mode&lt;/em&gt; (on Debian there is a dedicated session you can choose from the Log-in Manager for that) and change some desktop settings, in a terminal type:&lt;/p&gt;

&lt;pre class=&quot;brush:plain&quot;&gt;
$ gsettings set org.gnome.desktop.session session-name 'gnome-fallback'
$ gsettings set org.gnome.desktop.interface 'menus-have-icons' true
$ gsettings set org.gnome.desktop.interface 'buttons-have-icons' true
$ gsettings set org.gnome.desktop.background 'show-desktop-icons' true
&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://live.gnome.org/GnomeTweakTool&quot; title=&quot;GnomeTweakTool - GNOME Live!&quot;&gt;gnome-tweak-tool&lt;/a&gt; can be used for some of these settings like shown in the attached images.&lt;/p&gt;

&lt;p&gt;Then rearrange the applets on the panel as you please (use &lt;kbd&gt;Alt-RightClick&lt;/kbd&gt; to access the panel properties), and fix the theming using &lt;a href=&quot;http://ao2.it/sites/default/files/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/adwaita-fallback-panel-theme.patch&quot; title=&quot;ao2.it - Adwaita-fallback-panel-theme.patch&quot;&gt;this patch&lt;/a&gt; to have a light panel again (against &lt;code&gt;gnome-themes-standard=3.0.2-1)&lt;/code&gt;:&lt;/p&gt;

&lt;pre class=&quot;brush:plain&quot;&gt;
$ mkdir $HOME/.themes
$ cd $HOME/.themes
$ cp -r /usr/share/themes/Adwaita Adwaita-fallback
$ cd Adwaita-fallback
$ patch -p1 &amp;lt; $HOME/adwaita-fallback-panel-theme.patch
$ gsettings set org.gnome.desktop.interface 'gtk-theme' 'Adwaita-fallback'
&lt;/pre&gt;

&lt;p&gt;Some final touches for the &lt;a href=&quot;http://en.wikipedia.org/wiki/Metacity&quot; title=&quot;Wikipedia - Metacity&quot;&gt;Metacity&lt;/a&gt; window manager and to the clock applet, and we are all set:&lt;/p&gt;

&lt;pre class=&quot;brush:plain&quot;&gt;
$ gconftool-2 --type string --set /apps/metacity/general/focus_mode mouse
$ gconftool-2 --type boolean --set /apps/metacity/general/compositing_manager true
$ gconftool-2 --type string --set /apps/panel3-applets/clock/custom_format '&amp;lt;span color=&quot;#333&quot;&amp;gt;%a %d %b&amp;lt;/span&amp;gt; &amp;lt;b&amp;gt;%H:%M&amp;lt;/b&amp;gt;'
$ gconftool-2 --type string --set /apps/panel3-applets/clock/format custom
&lt;/pre&gt;

&lt;p&gt;Ah, in the new &lt;em&gt;gnome-panel&lt;/em&gt; based on Gtk3 there are still &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=662172&quot; title=&quot;GNOME Bugzilla - Bug 662172&quot;&gt;some details to take care of&lt;/a&gt;, I hope issues like that will be addressed and that the panel will be supported for quite some time.&lt;/p&gt;&lt;div class=&quot;field field-type-filefield field-field-image&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Attached images:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/01-gnome-shell-default.png&quot; alt=&quot;Gnome Shell default look on Debian&quot; title=&quot;Gnome Shell default look on Debian&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/02-gnome-tweak-tool-desktop-icons.png&quot; alt=&quot;gnome-tweak-tool show desktop icons&quot; title=&quot;gnome-tweak-tool show desktop icons&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/03-gnome-fallback-default.png&quot; alt=&quot;Gnome 3 fall-back mode default look on Debian&quot; title=&quot;Gnome 3 fall-back mode default look on Debian&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/04-gnome-fallback-panel-arrangement.png&quot; alt=&quot;Gnome 3 fall-back mode applets rearranged&quot; title=&quot;Gnome 3 fall-back mode applets rearranged&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/05-gnome-fallback-rethemed.png&quot; alt=&quot;Gnome 3 fall-back mode rethemed to have a light panel&quot; title=&quot;Gnome 3 fall-back mode rethemed to have a light panel&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-filefield field-field-file&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Attached files:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;div class=&quot;filefield-file&quot;&gt;&lt;img class=&quot;filefield-icon field-icon-text-x-diff&quot; alt=&quot;text/x-diff icon&quot; src=&quot;http://ao2.it/sites/all/modules/filefield/icons/text-x-generic.png&quot; /&gt;&lt;a href=&quot;http://ao2.it/sites/default/files/blog/2011/10/19/gnome-3-go-shell-not-just-yet-thanks/adwaita-fallback-panel-theme.patch&quot; type=&quot;text/x-diff; length=2803&quot; title=&quot;adwaita-fallback-panel-theme.patch&quot;&gt;Adwaita theme patch for fall-back mode&lt;/a&gt;&lt;/div&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;</description>
	<pubDate>Wed, 19 Oct 2011 21:37:27 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: The Eagle Has Landed!</title>
	<guid>http://www.vanille-media.de/site/?p=156</guid>
	<link>http://www.vanille-media.de/site/index.php/2011/06/09/the-eagle-has-landed/</link>
	<description>&lt;p&gt;After letting us wait for a bit longer than scheduled (13 days), the hospital initiated the contractions. For the first couple of hours, everything went just perfect, but then the little one got stuck on the way and we had to resort to a cesarean section. Lara Marie Lauer was born 8th of June at 04:41 (AM) with 3460 gramms and 49 cm.&lt;/p&gt;
&lt;p&gt;Mummy was still on intensive care and so they gave her to me. I can&amp;#8217;t express the feelings I had in this very moment. I&amp;#8217;m still kind of overwhelmed every time I see her. Thanks for all of you who waited anxiously with me and those who prayed for us. The most important tasks for the near future is getting Mummy to recover and Lara Marie to become accustomed to us and the rest of the outside world.&lt;/p&gt;
&lt;p&gt;Please bear with me if in the next time I&amp;#8217;m not as responsive as usually &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;
&lt;center&gt;&lt;a title=&quot;Lara Marie Lauer&quot; href=&quot;http://www.vanille.de/images/LaraMarie1.jpg&quot;&gt;&lt;img src=&quot;http://www.vanille.de/images/tbLaraMarie1.jpg&quot; alt=&quot;Lara Marie Lauer&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 09 Jun 2011 16:06:10 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: German Post on time!</title>
	<guid>http://www.vanille-media.de/site/?p=153</guid>
	<link>http://www.vanille-media.de/site/index.php/2011/05/30/german-post-on-time/</link>
	<description>&lt;p&gt;And now for something completely different&amp;#8230; while we are all waiting for my baby to arrive (who was scheduled for 25th of May), she just received her first greeting card – together with a personalized bib and a towel (with integrated hood – pretty fancy!) from my good friends at #openmoko-cdevel.&lt;/p&gt;
&lt;p&gt;Guys, seeing this card was very heartwarming – it means a lot to me that you share my anticipation, thanks a lot! And I&amp;#8217;m 100% sure she will appreciate her gifts&amp;#8230; now let&amp;#8217;s cross fingers it won&amp;#8217;t take much longer&amp;#8230; waiting is the hardest part of it &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Yours,&lt;/p&gt;
&lt;p&gt;Mickey.&lt;/p&gt;</description>
	<pubDate>Mon, 30 May 2011 08:54:43 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: On git clone failing and tweaking object repack</title>
	<guid>http://ao2.it/en/tags/57 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2011/05/06/git-clone-failing-and-tweaking-object-repack</link>
	<description>&lt;p&gt;I had been experiencing errors when cloning the &lt;a href=&quot;http://openezx.org&quot;&gt;OpenEZX&lt;/a&gt; kernel with &lt;a href=&quot;http://git-scm.com/&quot; title=&quot;Git - Fast Version Control System&quot;&gt;git&lt;/a&gt; and I was finally able to solve the issue on the server, I am putting some notes here to save some time to someone else.

Here's how the story started:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain&quot;&gt;
ao2@jcn:~$ git clone git://git.openezx.org/openezx.git
Cloning into openezx...
remote: Counting objects: 1954118, done.
remote: fatal: unable to create thread: Resource temporarily unavailable
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed
&lt;/pre&gt;

&lt;p&gt;Looking at the server statistics with &lt;a href=&quot;http://htop.sourceforge.net/&quot; title=&quot;htop - an interactive process viewer for Linux&quot;&gt;htop&lt;/a&gt; confirmed this was happening because &lt;em&gt;git&lt;/em&gt; was running out of memory on the server; it is worth noticing that the issue was not present when cloning other projects from the same server (Linux kernel projects as well, hence with a comparable size &lt;em&gt;in principle&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;With the following points in mind:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
The server hosting the remote repository has about 1.6 GiB of RAM, but no &lt;a href=&quot;https://help.ubuntu.com/community/SwapFaq&quot; title=&quot;Community Ubuntu Documentation - Swap FAQ&quot;&gt;swap space&lt;/a&gt;;
&lt;/li&gt;
&lt;li&gt;
In OpenEZX we are using &lt;a href=&quot;http://repo.or.cz/w/topgit.git&quot; title=&quot;TopGit - A different patch queue manager&quot;&gt;TopGit&lt;/a&gt; to track topic branches, which generates tons of merge commits and makes the git repository heavier;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;my thoughts went like:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;
during a clone operation some compression of git objects occurs;
&lt;/li&gt;
&lt;li&gt;
because of the lack of swap space the compression operation must fit in memory;
&lt;/li&gt;
&lt;li&gt;
because of TopGit the compression operation on &lt;strong&gt;this&lt;/strong&gt; repository was more onerous than on the other projects, causing the memory outage.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So some optimization on the repository about objects compression was needed.&lt;/p&gt;

&lt;p&gt;The first thing that came to mind was &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-gc.html&quot; title=&quot;git-gc(1) Manual Page&quot;&gt;git-gc&lt;/a&gt; but that was failing as well:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain&quot;&gt;
openezx:~# cd /home/git/repositories/openezx.git
openezx:/home/git/repositories/openezx.git# git gc --aggressive
Counting objects: 1954118, done.
Delta compression using up to 2 threads.
warning: suboptimal pack - out of memory02)   
fatal: Out of memory, malloc failed (tried to allocate 602234 bytes)
error: failed to run repack
&lt;/pre&gt;

&lt;p&gt;The repack operation is performed by &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html&quot; title=&quot;git-pack-objects(1) Manual Page&quot;&gt;git-pack-objects&lt;/a&gt;, so after &lt;em&gt;Reading The Fine Manual&lt;/em&gt; I was able to make &lt;em&gt;git-gc&lt;/em&gt; run successfully using these steps:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain&quot;&gt;
openezx:/home/git/repositories/openezx.git# git config pack.thread 1
openezx:/home/git/repositories/openezx.git# git gc --aggressive
Counting objects: 1954118, done.
Compressing objects: 100% (1936802/1936802), done.
Writing objects: 100% (1954118/1954118), done.
Total 1954118 (delta 1618716), reused 0 (delta 0)
&lt;/pre&gt;

&lt;p&gt;note that using only one thread makes the process quite slow.&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;http://code.google.com/p/msysgit/issues/detail?id=292&quot; title=&quot;mysysgit - Issue 292&quot;&gt;some other cases&lt;/a&gt; it could be useful to change also the &lt;code&gt;pack.windowMemory&lt;/code&gt; config option, but a relation involving the address space, the available memory and the number of threads has to be found, so since just using one thread worked fine for me, I took that as the minimal fix for my problem.&lt;/p&gt;

&lt;p&gt;Bottom line: cloning the repository is now back working:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain&quot;&gt;
ao2@jcn:~$ git clone git://git.openezx.org/openezx.git
Cloning into openezx...
remote: Counting objects: 1954118, done.
remote: Compressing objects: 100% (318086/318086), done.
remote: Total 1954118 (delta 1618716), reused 1954118 (delta 1618716)
Receiving objects: 100% (1954118/1954118), 377.38 MiB | 738 KiB/s, done.
Resolving deltas: 100% (1618716/1618716), done.
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Side note&lt;/strong&gt;: the more attentive reader would have noticed a cosmetic defect in the output when &lt;em&gt;git-gc&lt;/em&gt; fails (more precisely from &lt;em&gt;git-pack-objects&lt;/em&gt;: &lt;code&gt;warning: suboptimal pack - out of memory02)&lt;/code&gt;), well don't loose any sleep over it :) it has been &lt;a href=&quot;http://article.gmane.org/gmane.comp.version-control.git/170253&quot; title=&quot;Minor cosmetic defect in git-pack-objects output&quot;&gt;reported&lt;/a&gt; and there is &lt;a href=&quot;http://article.gmane.org/gmane.comp.version-control.git/170316&quot; title=&quot;Re: Minor cosmetic defect in git-pack-objects output&quot;&gt;a workaround for that&lt;/a&gt; already.&lt;/p&gt;</description>
	<pubDate>Fri, 06 May 2011 10:41:37 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Kinect linux kernel driver</title>
	<guid>http://ao2.it/en/tags/49 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2010/12/06/kinect-linux-kernel-driver</link>
	<description>&lt;p&gt;It looks like Santa came early this year.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.kernellabs.com/blog/&quot; title=&quot;KernelLabs.com… it’s not just another Linux blog&quot;&gt;KernelLabs&lt;/a&gt; sponsored me for a &lt;a href=&quot;http://en.wikipedia.org/wiki/File:KinectSensor.png&quot; title=&quot;Wikipedia - File:KinectSensor.png&quot;&gt;Kinect sensor device&lt;/a&gt; unit so I can experiment writing a Linux kernel driver for it.&lt;/p&gt;

&lt;p&gt;So in the next weeks I'll be working on a &lt;a href=&quot;http://cateee.net/lkddb/web-lkddb/USB_GSPCA.html&quot; title=&quot;Linux Kernel Driver DataBase - CONFIG_USB_GSPCA: GSPCA based webcam&quot;&gt;gspca&lt;/a&gt; driver for this device. For now the code is going to be hosted in the &lt;a href=&quot;http://git.ao2.it/gspca_kinect.git&quot; title=&quot;git.ao2.it - linux kernel driver for the Kinect sensor device&quot;&gt;gspca_kinect repository&lt;/a&gt;, as an out of kernel module, this will ease compile/test cycle; if it comes out that changes are needed to gspca itself, then I'll decide whether hosting these changes as patches, or switching to a kernel clone repository; suggestions will be welcome. The driver is working already, but currently you can just use the sensor as a normal WebCam.

&lt;/p&gt;

&lt;h3&gt;About the Kinect&lt;/h3&gt;&lt;p&gt;
The Kinect sensor is a device used by Microsoft for its &lt;a href=&quot;http://en.wikipedia.org/wiki/Kinect&quot; title=&quot;Wikipedia - Kinect&quot;&gt;Kinect&lt;/a&gt; project, which is a system for &lt;strong&gt;controller-less&lt;/strong&gt; Human-Computer interaction firstly targeted for &lt;a href=&quot;http://en.wikipedia.org/wiki/Xbox_360&quot; title=&quot;Wikipedia - Xbox 360&quot;&gt;Xbox 360&lt;/a&gt;, but rumors say MS could be integrating this technology into its future operating systems; the hardware is only part of the system of course, the software does most of the interpretation work figuring out how many users there are and assigning a meaning to their actions.&lt;/p&gt;

&lt;p&gt;Great part of the &lt;a href=&quot;http://openkinect.org/wiki/Protocol_Documentation&quot; title=&quot;OpenKinect - Protocol Documentation&quot;&gt;Kinect communication protocol&lt;/a&gt; has been already figured out, thanks to the &lt;a href=&quot;http://www.adafruit.com/&quot; title=&quot;adafruit Industries, Unique &amp; fun DIY electronics and kits&quot;&gt;adafruit people&lt;/a&gt; who &lt;a href=&quot;http://ladyada.net/learn/diykinect/&quot; title=&quot;Hacking the Kinect - How to hack USB device drivers&quot;&gt;dumped the communication stream&lt;/a&gt; with the Xbox using an &lt;a href=&quot;http://www.totalphase.com/products/beagle_usb480/&quot; title=&quot;TotalPhase - Beagle USB 480 Protocol Analyzer&quot;&gt;usb bus analyzer&lt;/a&gt;, and to &lt;a href=&quot;http://marcansoft.com/blog/&quot; title=&quot;Marcansoft - Abort, Retry, Hack?&quot;&gt;Héctor Martín Cantero (marcan)&lt;/a&gt; who started analyzing the trace for the &lt;a href=&quot;https://github.com/OpenKinect/libfreenect&quot; title=&quot;Drivers and libraries for the Xbox Kinect device on WIndows, Linux, and OS X&quot;&gt;libfreenect driver&lt;/a&gt;. Marcan is also the guy who won the &lt;a href=&quot;http://www.adafruit.com/blog/2010/11/10/we-have-a-winner-open-kinect-drivers-released-winner-will-use-3k-for-more-hacking-plus-an-additional-2k-goes-to-the-eff/&quot; title=&quot;adafruit - WE HAVE A WINNER – Open Kinect driver(s) released&quot;&gt;adafruit bounty for a kinect opensource driver&lt;/a&gt;, and the one behind &lt;a href=&quot;http://marcansoft.com/blog/2010/10/asbestos-running-linux-as-gameos/&quot; title=&quot;Marcansoft - AsbestOS: Running Linux as GameOS&quot;&gt;AsbestOS&lt;/a&gt;. All these efforts have flowed into the &lt;a href=&quot;http://openkinect.org&quot; title=&quot;OpenKinect wiki&quot;&gt;OpenKinect&lt;/a&gt; project, wisely guided by &lt;a href=&quot;http://openkinect.org/wiki/User:JoshB&quot; title=&quot;OpenKinect - User:JoshB&quot;&gt;Joshua Blake&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For an overview about the hardware you can see the &lt;a href=&quot;http://www.ifixit.com/Teardown/Microsoft-Kinect-Teardown/4066&quot; title=&quot;iFixit - Microsoft Kinect Teardown&quot;&gt;IFixit teardown&lt;/a&gt;, the part I am interested in for now is the integration of the video capturing sub-device which provides what is usually called RGBD data (Red, Green, Blue, Depth), the Depth component gives spatial information about the captured scene, easing out the process of &lt;a href=&quot;http://en.wikipedia.org/wiki/Segmentation_%28image_processing%29&quot; title=&quot;Wikipedia - Segmentation&quot;&gt;image segmentation&lt;/a&gt;. Just to give an idea, &lt;a href=&quot;http://stackoverflow.com/questions/2100064/how-to-remove-background-image-and-get-fore-image&quot; title=&quot;StackOverflow - how to remove background image and get fore image&quot;&gt;background subtraction&lt;/a&gt; is one step of the segmentation process, and can be achieved quite robustly with techniques like &lt;a href=&quot;http://research.microsoft.com/en-us/um/people/eyalofek/depth%20key/DepthKey.pdf&quot; title=&quot;Microsoft Research - Depth keying&quot;&gt;Depth keying&lt;/a&gt; (the spatial version of &lt;a href=&quot;http://en.wikipedia.org/wiki/Chroma_key&quot; title=&quot;Wikipedia - Chroma key&quot;&gt;Chroma keying&lt;/a&gt;). But I am really not an expert in this area.&lt;/p&gt;

&lt;p&gt;In the Kinect device, RGBD data is captured from two distinct sensors: a regular RGB sensor and a monochrome sensor which, with the aid of a &lt;acronym title=&quot;Infra Red&quot;&gt;IR&lt;/acronym&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Structured_light&quot; title=&quot;Wikipedia - Structured Light&quot;&gt;structured light&lt;/a&gt;, captures what is finally exposed as a depth map; so what we have is basically a &lt;a href=&quot;http://en.wikipedia.org/wiki/Structured-light_3D_scanner&quot; title=&quot;Wikipedia - Structured-light 3D scanner&quot;&gt;Structured-light 3D scanner&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Kernel driver development&lt;/h3&gt;&lt;p&gt;
I don't know yet if the gspca driver is going to define two video devices, one for each sensor, or if a combined format would be preferred, I am asking for advice from others more expert in this field.&lt;/p&gt;

&lt;p&gt;This is the plan:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
Stabilize the first version of the driver which does device registration/initialization and allows capturing the RGB data with fixed resolution and fixed framerate using a video device node. The RGB data comes as a raw &lt;a href=&quot;http://en.wikipedia.org/wiki/Bayer_filter&quot; title=&quot;Wikipedia - Bayer Filter&quot;&gt;Bayer pattern&lt;/a&gt;, precisely in the &lt;a href=&quot;http://www.linuxtv.org/downloads/v4l-dvb-apis/V4L2-PIX-FMT-SGRBG8.html&quot;&gt;V4L2_PIX_FMT_SGRBG8&lt;/a&gt; pixelformat.
&lt;/li&gt;
&lt;li&gt;
Add support for capturing the Depth map data somehow. Each depth value has 11-bit precision, and the data is transferred as a packed array, I still don't know how such format should be presented to userspace.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Follow the discussion on the &lt;a href=&quot;http://groups.google.com/group/openkinect/browse_thread/thread/c0863b21e47bbf29&quot; title=&quot;OpenKinect -  Kinect sensor and Linux kernel driver&quot;&gt;OpenKinect mailing list&lt;/a&gt; or on &lt;a href=&quot;http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/26194&quot; title=&quot;linux-media - Kinect sensor and Linux kernel driver&quot;&gt;linux-media&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Thinking outside the (X)box&lt;/h3&gt;&lt;p&gt;
Ah, don't forget to check out all the &lt;a href=&quot;http://www.kinecthacks.net/&quot; title=&quot;KinectHacks&quot;&gt;fancy stuff&lt;/a&gt; people are doing with this toy.&lt;/p&gt;</description>
	<pubDate>Mon, 06 Dec 2010 21:12:09 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Bug hunting in Linux kernel land: an unpretentious primer</title>
	<guid>http://ao2.it/en/tags/47 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2010/11/02/bug-hunting-linux-kernel-land-unpretentious-primer</link>
	<description>&lt;p&gt;Lately I've been fixing some defects  in the &lt;a href=&quot;http://cateee.net/lkddb/web-lkddb/HIDRAW.html&quot; title=&quot;Linux Kernel Driver Database: CONFIG_HIDRAW: /dev/hidraw raw HID device support&quot;&gt;hidraw&lt;/a&gt; interface in the Linux kernel (commits &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d20d5ffab92f00188f360c44c791a5ffb988247c&quot; title=&quot;HID: hidraw, fix a NULL pointer dereference in hidraw_ioctl&quot;&gt;d20d5ff&lt;/a&gt; and &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e42dee9a99a3ecd32b5c027e8f7411fb5bc11eb6&quot; title=&quot;HID: hidraw, fix a NULL pointer dereference in hidraw_write&quot;&gt;e42dee9&lt;/a&gt;), simple issues like these NULL pointer dereference are a good example to show how to analyze a Linux bug trace in order to spot the defective code. So let's take a look.

The steps to fix any defect are basically:
&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;
reproduce the problem (a quick introduction to the concept of “&lt;dfn&gt;Observability&lt;/dfn&gt;” of software faults is in: &lt;a href=&quot;http://blog.mxunit.org/2010/01/dissecting-bug.html&quot; title=&quot;MXUnit Blog - Dissecting The Bug&quot;&gt;Dissecting The Bug&lt;/a&gt;)
&lt;/li&gt;
&lt;li&gt;
find the offending code/policy
&lt;/li&gt;
&lt;li&gt;
elaborate a solution
&lt;/li&gt;
&lt;li&gt;
implement and test the solution is working
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Reproducing the problem&lt;/h3&gt;&lt;p&gt;
If the problem is in some userspace/kernelspace interface then writing a test program which triggers the bug may be the quickest way to reproduce it. The test program should be as simple as possible, doing the minimum required to expose the defect, as it will be used also as a proof that the bug has been solved in the right way; just like when proving a theorem we don't want to have more hypotheses than are necessary. The test program for one of the issues above looks like this:&lt;/p&gt;

&lt;pre class=&quot;brush: cpp&quot; title=&quot;test_hidraw_write.c&quot;&gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;sys/stat.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

#include &amp;lt;linux/hidraw.h&amp;gt;

int main(int argc, char *argv[])
{
	int fd = -1;
	unsigned char report[2] = {0x01, 0x00};
	int ret;

	if (argc != 2) {
		fprintf(stderr, &quot;usage: %s &amp;lt;/dev/hidrawX&amp;gt;\n&quot;, argv[0]);
		exit(1);
	}

	fd = open(argv[1], O_RDWR);
	if (fd &amp;lt; 0) {
		perror(&quot;hidraw open&quot;);
		exit(1);
	}

	while (1) {
		ret = write(fd, report, sizeof(report));
		printf(&quot;ret: %d\n&quot;, ret);
	}

	close(fd);
	exit(0);
}
&lt;/pre&gt;

&lt;p&gt;That gives me the occasion for an observation about one aspect of testing procedures: as you can see the test program above uses deliberately some bad practice, namely it does not check the return value of the &lt;code&gt;write()&lt;/code&gt; call in order to exit the while loop; we know this is generally bad from a programming point of view, however it turns out to be good from another point of view: bad programs can spot cases we didn't think of in our code paths; it goes without saying that this is no excuse for “uncontrolled” bad practices, nor for the bug we had in the first place :).&lt;/p&gt;

&lt;p&gt;Anyhow, the code above exposes the defect on kernels up to 2.6.35, just run the program and unplug the (USB) device (a &lt;a href=&quot;http://en.wikipedia.org/wiki/Sixaxis&quot; title=&quot;Wikipedia - Sixaxis&quot;&gt;Sony Sixaxis&lt;/a&gt; in my case):&lt;/p&gt;

&lt;pre class=&quot;brush: plain; highlight: [2]&quot;&gt;
BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
IP: [&amp;lt;ffffffffa0f0a625&amp;gt;] hidraw_write+0x3b/0x116 [hid]
PGD 37082067 PUD 3701f067 PMD 0 
Oops: 0000 [#1] SMP 
last sysfs file: /sys/devices/pci0000:00/0000:00:04.0/usb4/idVendor
CPU 0 
Modules linked in: hid_sony usbhid hid kvm_amd kvm powernow_k8 mperf cpufreq_powersave cpufreq_conservative cpufreq_stats cpufreq_userspace ipt_MASQUERADE lirc_serial(C) lirc_dev bridge stp ppdev lp sco bnep rfcomm l2cap crc16 tun sit tunnel4 binfmt_misc uinput fuse ip6table_raw ip6table_mangle ip6t_REJECT ip6t_LOG nf_conntrack_ipv6 ip6table_filter ip6_tables xt_tcpudp ipt_REJECT ipt_ULOG xt_limit xt_state xt_multiport iptable_filter iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 iptable_mangle iptable_raw ip_tables x_tables nfsd exportfs nfs lockd fscache nfs_acl auth_rpcgss sunrpc hwmon_vid loop snd_hda_codec_nvhdmi snd_hda_codec_via snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_midi snd_rawmidi nvidia(P) snd_seq_midi_event snd_seq snd_timer snd_seq_device btusb bluetooth joydev snd edac_core shpchp video tpm_tis tpm evdev rfkill parport_pc parport tpm_bios pcspkr asus_atk0110 processor output edac_mce_amd soundcore snd_page_alloc i2c_nforce2 pci_hotplug k8temp wmi i2c_core button ext3 jbd mbcache dm_mod sg sd_mod sr_mod cdrom crc_t10dif ata_generic usb_storage ahci libahci pata_amd ohci_hcd libata ehci_hcd scsi_mod usbcore forcedeth floppy nls_base thermal thermal_sys [last unloaded: hid]

Pid: 4818, comm: test_hidraw_wri Tainted: P         C  2.6.35-ao2 #2 M3N78-VM/System Product Name
RIP: 0010:[&amp;lt;ffffffffa0f0a625&amp;gt;]  [&amp;lt;ffffffffa0f0a625&amp;gt;] hidraw_write+0x3b/0x116 [hid]
RSP: 0018:ffff880037081ee8  EFLAGS: 00010202
RAX: 0000000000000000 RBX: 0000000000000002 RCX: ffff880037081f58
RDX: 0000000100000000 RSI: 0000000000000008 RDI: ffffffffa0f128b0
RBP: 0000000000000001 R08: ffffffffa0f0a5ea R09: 000000000040087a
R10: 0000000000000000 R11: ffffffff81150c83 R12: ffff880037081f58
R13: 00007fff1b34cab0 R14: 00000000ffffffed R15: 0000000000000000
FS:  00007fa946870700(0000) GS:ffff880001a00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000028 CR3: 000000005ad24000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process test_hidraw_wri (pid: 4818, threadinfo ffff880037080000, task ffff88006003e630)
Stack:
 ffff88005ad95000 00007fff1b34cab0 ffff880037081f58 00007fff1b34cba0
&amp;lt;0&amp;gt; 0000000000000000 ffffffff810ea46f 0000000000000003 0000000000000008
&amp;lt;0&amp;gt; ffff88005ad95000 00007fff1b34cab0 00000000004005c0 ffffffff810ea57e
Call Trace:
 [&amp;lt;ffffffff810ea46f&amp;gt;] ? vfs_write+0xa4/0x100
 [&amp;lt;ffffffff810ea57e&amp;gt;] ? sys_write+0x45/0x6b
 [&amp;lt;ffffffff81008a02&amp;gt;] ? system_call_fastpath+0x16/0x1b
Code: 53 48 8b 47 18 48 c7 c7 b0 28 f1 a0 48 89 d3 48 8b 40 10 8b 68 58 e8 07 9a 3f e0 81 e5 ff ff 0f 00 89 ed 48 8b 04 ed c0 2b f1 a0 &amp;lt;4c&amp;gt; 8b 60 28 49 83 bc 24 50 1c 00 00 00 0f 84 af 00 00 00 48 81 
RIP  [&amp;lt;ffffffffa0f0a625&amp;gt;] hidraw_write+0x3b/0x116 [hid]
 RSP &amp;lt;ffff880037081ee8&amp;gt;
CR2: 0000000000000028
---[ end trace 06cb2d01ded47cc4 ]---
&lt;/pre&gt;

&lt;p&gt;The most important info in this message is highlighted above in line two, that is:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain; first-line: 2&quot;&gt;
IP: [&amp;lt;ffffffffa0f0a625&amp;gt;] hidraw_write+0x3b/0x116 [hid]
&lt;/pre&gt;

&lt;p&gt;This tells us the last instruction executed, the one triggering the bug; the format is &lt;code&gt;symbol_name+offset/symbol_size [module_name]&lt;/code&gt; as can be seen in &lt;a href=&quot;http://lxr.linux.no/#linux+v2.6.36/mm/slab.c%23L4457&quot; title=&quot;lxr - linux+v2.6.36/mm/slab.c&quot;&gt;mm/slab.c&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Finding the offending code&lt;/h3&gt;

&lt;p&gt;To find where the offending instruction is, we can disassemble the object code with &lt;a href=&quot;http://en.wikipedia.org/wiki/Objdump&quot; title=&quot;Wikipedia - Objdump&quot;&gt;objdump&lt;/a&gt;, here's the interesting function:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain; collapse: true; first-line: 625&quot; title=&quot;objdump -d drivers/hid/hidraw.o&quot;&gt;
00000000000008e5 &amp;lt;hidraw_write&amp;gt;:
 8e5:	41 56                	push   %r14
 8e7:	41 be ed ff ff ff    	mov    $0xffffffed,%r14d
 8ed:	41 55                	push   %r13
 8ef:	49 89 f5             	mov    %rsi,%r13
 8f2:	41 54                	push   %r12
 8f4:	55                   	push   %rbp
 8f5:	53                   	push   %rbx
 8f6:	48 8b 47 18          	mov    0x18(%rdi),%rax
 8fa:	48 c7 c7 00 00 00 00 	mov    $0x0,%rdi
 901:	48 89 d3             	mov    %rdx,%rbx
 904:	48 8b 40 10          	mov    0x10(%rax),%rax
 908:	8b 68 58             	mov    0x58(%rax),%ebp
 90b:	e8 00 00 00 00       	callq  910 &amp;lt;hidraw_write+0x2b&amp;gt;
 910:	81 e5 ff ff 0f 00    	and    $0xfffff,%ebp
 916:	89 ed                	mov    %ebp,%ebp
 918:	48 8b 04 ed 00 00 00 	mov    0x0(,%rbp,8),%rax
 91f:	00 
 920:	4c 8b 60 28          	mov    0x28(%rax),%r12
 924:	49 83 bc 24 30 1c 00 	cmpq   $0x0,0x1c30(%r12)
 92b:	00 00 
 92d:	0f 84 af 00 00 00    	je     9e2 &amp;lt;hidraw_write+0xfd&amp;gt;
 933:	48 81 fb 00 10 00 00 	cmp    $0x1000,%rbx
 93a:	76 25                	jbe    961 &amp;lt;hidraw_write+0x7c&amp;gt;
 93c:	65 48 8b 04 25 00 00 	mov    %gs:0x0,%rax
 943:	00 00 
 945:	8b b0 c8 01 00 00    	mov    0x1c8(%rax),%esi
 94b:	48 c7 c7 00 00 00 00 	mov    $0x0,%rdi
 952:	31 c0                	xor    %eax,%eax
 954:	41 b6 ea             	mov    $0xea,%r14b
 957:	e8 00 00 00 00       	callq  95c &amp;lt;hidraw_write+0x77&amp;gt;
 95c:	e9 81 00 00 00       	jmpq   9e2 &amp;lt;hidraw_write+0xfd&amp;gt;
 961:	48 83 fb 01          	cmp    $0x1,%rbx
 965:	77 25                	ja     98c &amp;lt;hidraw_write+0xa7&amp;gt;
 967:	65 48 8b 04 25 00 00 	mov    %gs:0x0,%rax
 96e:	00 00 
 970:	8b b0 c8 01 00 00    	mov    0x1c8(%rax),%esi
 976:	48 c7 c7 00 00 00 00 	mov    $0x0,%rdi
 97d:	31 c0                	xor    %eax,%eax
 97f:	41 be ea ff ff ff    	mov    $0xffffffea,%r14d
 985:	e8 00 00 00 00       	callq  98a &amp;lt;hidraw_write+0xa5&amp;gt;
 98a:	eb 56                	jmp    9e2 &amp;lt;hidraw_write+0xfd&amp;gt;
 98c:	be d0 00 00 00       	mov    $0xd0,%esi
 991:	48 89 df             	mov    %rbx,%rdi
 994:	41 be f4 ff ff ff    	mov    $0xfffffff4,%r14d
 99a:	e8 00 00 00 00       	callq  99f &amp;lt;hidraw_write+0xba&amp;gt;
 99f:	48 85 c0             	test   %rax,%rax
 9a2:	48 89 c5             	mov    %rax,%rbp
 9a5:	74 3b                	je     9e2 &amp;lt;hidraw_write+0xfd&amp;gt;
 9a7:	e8 00 00 00 00       	callq  9ac &amp;lt;hidraw_write+0xc7&amp;gt;
 9ac:	89 da                	mov    %ebx,%edx
 9ae:	4c 89 ee             	mov    %r13,%rsi
 9b1:	48 89 ef             	mov    %rbp,%rdi
 9b4:	e8 00 00 00 00       	callq  9b9 &amp;lt;hidraw_write+0xd4&amp;gt;
 9b9:	48 85 c0             	test   %rax,%rax
 9bc:	41 b6 f2             	mov    $0xf2,%r14b
 9bf:	75 19                	jne    9da &amp;lt;hidraw_write+0xf5&amp;gt;
 9c1:	b9 01 00 00 00       	mov    $0x1,%ecx
 9c6:	48 89 da             	mov    %rbx,%rdx
 9c9:	48 89 ee             	mov    %rbp,%rsi
 9cc:	4c 89 e7             	mov    %r12,%rdi
 9cf:	41 ff 94 24 30 1c 00 	callq  *0x1c30(%r12)
 9d6:	00 
 9d7:	41 89 c6             	mov    %eax,%r14d
 9da:	48 89 ef             	mov    %rbp,%rdi
 9dd:	e8 00 00 00 00       	callq  9e2 &amp;lt;hidraw_write+0xfd&amp;gt;
 9e2:	48 c7 c7 00 00 00 00 	mov    $0x0,%rdi
 9e9:	e8 00 00 00 00       	callq  9ee &amp;lt;hidraw_write+0x109&amp;gt;
 9ee:	5b                   	pop    %rbx
 9ef:	5d                   	pop    %rbp
 9f0:	41 5c                	pop    %r12
 9f2:	41 5d                	pop    %r13
 9f4:	49 63 c6             	movslq %r14d,%rax
 9f7:	41 5e                	pop    %r14
 9f9:	c3                   	retq
&lt;/pre&gt;

&lt;p&gt;The instruction we are interested in is at &lt;code&gt;hidraw_write+0x3b&lt;/code&gt; which is at address &lt;code&gt;0x8e5+0x3b&lt;/code&gt; that is &lt;code&gt;0x920&lt;/code&gt;:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain; first-line: 641; highlight: [643]&quot;&gt;
 918:   48 8b 04 ed 00 00 00    mov    0x0(,%rbp,8),%rax
 91f:   00
 920:   4c 8b 60 28             mov    0x28(%rax),%r12
 924:   49 83 bc 24 30 1c 00    cmpq   $0x0,0x1c30(%r12)
 92b:   
&lt;/pre&gt;

&lt;p&gt;Now, how do we find the correspondent instruction in the source code? If we don't want to do that &lt;a href=&quot;http://kerneltrap.org/node/3648&quot; title=&quot;Kerneltrap - Linux: How To Locate An Oops&quot;&gt;the hard way&lt;/a&gt; we can use the &lt;code&gt;-S&lt;/code&gt; option of &lt;em&gt;objdump&lt;/em&gt; like mentioned also in &lt;a href=&quot;http://lxr.linux.no/#linux+v2.6.36/Documentation/BUG-HUNTING&quot; title=&quot;LXR - linux/Documentation/BUG-HUNTING&quot;&gt;Documentation/BUG-HUNTING&lt;/a&gt; in the kernel tree, which interleaves source code with the disassembled listing, here's the excerpt we need:
&lt;/p&gt;

&lt;pre class=&quot;brush: plain; first-line: 1481&quot;&gt;
	dev = hidraw_table[minor]-&amp;gt;hid;
 916:	89 ed                	mov    %ebp,%ebp
 918:	48 8b 04 ed 00 00 00 	mov    0x0(,%rbp,8),%rax
 91f:	00 
 920:	4c 8b 60 28          	mov    0x28(%rax),%r12
&lt;/pre&gt;

&lt;p&gt;So in this case the problem is that the code is trying to dereference &lt;code&gt;hidraw_table[minor]&lt;/code&gt;, but this entry could be NULL if we disconnect the device while performing the &lt;code&gt;write()&lt;/code&gt; in a loop without checking return values.&lt;/p&gt;

&lt;p&gt;Finding out the exact line could be a little harder when macros and inlined functions are used, but once we know how to deal with a simple scenario like the one proposed the complicated cases become someway doable too.&lt;/p&gt;

&lt;h3&gt;Elaborating a solution&lt;/h3&gt;&lt;p&gt;
The fix is trivial is this case: check the pointer is not NULL before dereferencing it, bail out otherwise.&lt;/p&gt;

&lt;h3&gt;Implementing and testing the solution&lt;/h3&gt;&lt;p&gt;
This is the actual patch which solves the issue:
&lt;/p&gt;

&lt;pre class=&quot;brush: diff&quot;&gt;
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
index 9eaf6ae..a3866b5 100644
--- a/drivers/hid/hidraw.c
+++ b/drivers/hid/hidraw.c
@@ -109,6 +109,12 @@ static ssize_t hidraw_write(struct file *file, const char __user *buffer, size_t
 	int ret = 0;
 
 	mutex_lock(&amp;amp;minors_lock);
+
+	if (!hidraw_table[minor]) {
+		ret = -ENODEV;
+		goto out;
+	}
+
 	dev = hidraw_table[minor]-&amp;gt;hid;
 
 	if (!dev-&amp;gt;hid_output_raw_report) {
&lt;/pre&gt;

&lt;p&gt;Now, using the fixed &lt;em&gt;hid&lt;/em&gt; module, if we run the test program again and disconnect the device we won't hurt the kernel anymore.&lt;/p&gt;</description>
	<pubDate>Tue, 02 Nov 2010 21:18:26 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Towards the end of 2010</title>
	<guid>http://www.vanille-media.de/site/index.php/2010/10/16/towards-the-end-of-2010/</guid>
	<link>http://www.vanille-media.de/site/index.php/2010/10/16/towards-the-end-of-2010/</link>
	<description>&lt;p&gt;Howdy, dear reader!&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s been a while on this blog, mainly due to the fact that many short status updates are better twittered than blogged. Then again, as promised / threatened in &lt;a href=&quot;http://www.vanille-media.de/site/index.php/2009/11/10/towards-the-end-of-2009/&quot;&gt;last year&amp;#8217;s installment&lt;/a&gt; of this column, I had to spend most of the time this year with iOS development, rather than with FOSS &amp;#8212; and it doesn&amp;#8217;t look like this will change much (you know, food and things&amp;#8230;). Still I do care a lot about projects like OpenEmbedded, Vala, freesmartphone.org, and the like, so here&amp;#8217;s what has been going on this year:&lt;/p&gt;
&lt;h2&gt;OpenEmbedded (&lt;a title=&quot;OpenEmbedded&quot; href=&quot;http://www.openembedded.org&quot;&gt;www.openembedded.org&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;OE moved along quite well this year. I did not have much time for it &amp;#8212; other than taking care about a couple of Vala and FSO recipes &amp;#8212; but I&amp;#8217;m especially pleased that the community finally embraced major clean up. Thanks to Frans, Richard, and all others involved, OE is improving heavily &amp;#8212; although it wasn&amp;#8217;t easy: Over the last couple of years, the OE core contributors developed a resistance against any changes affecting more than a handfull of recipes, however in order to make OE handle even more contributors and various use cases, we had to do some substantial cleanups. This will reduce maintenance and improve the overall quality of recipes in OE, which is the #1 complaint I hear.&lt;/p&gt;
&lt;h2&gt;Vala (&lt;a title=&quot;Vala Programming Language&quot; href=&quot;http://www.vala-project.org&quot;&gt;www.vala-project.org&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;During the first half of the year, Vala went through some extremely tiring phases of non-activity, which improved vastly when its main developers opened up a bit, i.e. giving more developers access to the tree, adding branches, etc. There have been many changes in the Dova profile, but also the GLib profile has seen an incredible amount of work, bugfixes, some new features, and more.&lt;/p&gt;
&lt;p&gt;The pace of changes that affect basic things had also impact on my vala-book plans; apart from a severe lack of time on my side, I think it&amp;#8217;s better to wait until Vala is closer to 1.0. Otherwise I risk describing a moving target, which &amp;#8212; considering the time I have to work on that project &amp;#8212; would effectively kill it. That said, it&amp;#8217;s great to see that Vala is getting better every day and gains more and more popularity from all kinds of developers.&lt;/p&gt;
&lt;h2&gt;FSO (&lt;a title=&quot;FSO&quot; href=&quot;http://www.freesmartphone.org&quot;&gt;freesmartphone.org&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;The progress on freesmartphone.org is two-fold; on one hand, we have seen quite a nice amount of work to support more devices. On the other hand though, in contrast to all the work I did in 2009, there has been a severe lack of development of the core in 2010. This I plan to change as soon as possible. For 2011, I see myself continuing to develop FSO in the following three dimensions; internal, external, and integration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;Internal&lt;/span&gt; | FSO is a heavy DBus consumer. I think by now we are one of the largest projects using DBus, at least considering the amount of API and running processes that communicate with each other via DBus. We always had our share of problems with DBus, especially some concurrency problems and race conditions are still haunting us. Both libdbus and dbus-glib exhibit their own share of problems, obviously this is not much of an issue on the desktop, but  it turns out to be a major PITA on embedded systems, such as a phone.  That&amp;#8217;s why I have been excited since I heard that the glib team planned  to write their own DBus backend and put it right into the glib. This  work has now been released as of glib 2.26. Over the next weeks, I will port FSO to using gdbus in a branch.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;External&lt;/span&gt; | DBus-signals have some problems. That&amp;#8217;s why some big projects (BlueZ and  ConnMan, to name two of them) adopted an agent-style of API, where the  clients have to implement a server API which is being called by the  actual servers. While this means some more work for client developers,  it has major benefits. I&amp;#8217;m going to change some of our APIs to adopt this style.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Integration&lt;/span&gt; | To deliver an integrated solution for today&amp;#8217;s mobile phones, FSO needs  to add more glue to work with existing services, such as BlueZ  (bluetooth connectivity), Connman (ethernet and wifi connectivity), and  some VoIP services. While these services work fine on their own, FSO  lacks an API that uses these individual services in combination to achieve higher level tasks.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All this means that I will not be working much on the actual ports, but rather use my &amp;#8212; very limited, did I say that yet? &amp;#8212; time to drive the core forwards. I still believe that we will have full FOSS phones &amp;#8212; other than the Openmoko devices &amp;#8212; soon. Please help to make this dream a reality. (And no, please don&amp;#8217;t talk to me about Android&amp;#8230;)&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;:M:&lt;/p&gt;</description>
	<pubDate>Sat, 16 Oct 2010 16:34:47 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: User-aware scheduling</title>
	<guid>http://ao2.it/en/tags/43 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2010/09/21/user-aware-scheduling</link>
	<description>&lt;p&gt;Recently both &lt;a href=&quot;http://www.osnews.com/story/23823/Canonical_Toying_with_Hardware_Sensors&quot; title=&quot;OSnews - Canonical Toying with Hardware Sensors&quot;&gt;OSnews&lt;/a&gt; and &lt;a href=&quot;http://linux.slashdot.org/story/10/09/21/1247213/Canonical-Designer-Demos-Ubuntu-Context-aware-UI&quot; title=&quot;Slashdot - Canonical Designer Demos Ubuntu Context-aware UI&quot;&gt;Slashdot&lt;/a&gt; pointed out some experiments about &lt;a href=&quot;http://en.wikipedia.org/wiki/Context_awareness&quot; title=&quot;Wikipedia - Context awareness&quot;&gt;context-aware&lt;/a&gt; &lt;acronym title=&quot;User Interface&quot;&gt;UI&lt;/acronym&gt;s done by Christian Giordano at &lt;a href=&quot;http://www.canonical.com/&quot; title=&quot;Canonical  - home page&quot;&gt;Canonical&lt;/a&gt; (the company behind &lt;a href=&quot;http://ubuntu.com&quot; title=&quot;Ubuntu: secure, intuitive operating system&quot;&gt;Ubuntu GNU/Linux&lt;/a&gt;), and the first results are somewhat interesting. As you can see in the &lt;a href=&quot;http://vimeo.com/14959854&quot; title=&quot;Vimeo - Parallax and fullscreen interaction via webcam&quot;&gt;good video demo&lt;/a&gt; from &lt;a href=&quot;http://design.canonical.com/2010/09/getting-physical/&quot; title=&quot;Canonical Design - Getting physical&quot;&gt;the original article&lt;/a&gt; the effects are nothing mind blowing, but they serve greatly to illustrate the concept, and by building on that something more useful would come out eventually.&lt;/p&gt;

&lt;p&gt;That reminds me of another (never realized) old idea of mine from when I was attending the Operating System course at the university, I wanted to bind system responsiveness —at a lower level— to user presence, by tuning scheduler parameters according to the user being at his/her computer or not.

Imagine a desktop computer which is encoding a video in background, when the user is interacting with the system then the interactive tasks must be more important, but when he/she leaves, then the system could assign to the background job all the resources it needs to run “at its best”.&lt;/p&gt;

&lt;p&gt;The parameters to change system responsiveness could be, just for instance, process &lt;a href=&quot;http://en.wikipedia.org/wiki/Nice_%28Unix%29&quot; title=&quot;Wikipedia -nice (Unix)&quot;&gt;niceness&lt;/a&gt;, &lt;a href=&quot;https://help.ubuntu.com/community/SwapFaq#What%20is%20swappiness%20and%20how%20do%20I%20change%20it?&quot; title=&quot;Ubuntu - SwapFaq&quot;&gt;swappiness&lt;/a&gt; (some report that less swapping results in more responsiveness, but I don't have numbers either to agree or disagree on that), or the whole scheduler could be changed on the fly if there is any system allowing that.&lt;/p&gt;

&lt;p&gt;The mechanisms to detect user presence could be the usual: proximity sensors, video from a webcam or &lt;a href=&quot;http://www.c0t0d0s0.org/archives/5680-The-user-mood-aware-scheduler.html&quot; title=&quot;The user-mood aware scheduler&quot;&gt;audio form a mic (humor alert)&lt;/a&gt;, some measure of mouse and keyboard activity, a pillow/button on the seat (that would tell &lt;em&gt;butt-on&lt;/em&gt; / &lt;em&gt;butt-off&lt;/em&gt;... ehm).&lt;/p&gt;

&lt;p&gt;In my original thoughts I wanted to detect when the monitor was manually switched off, that's because I usually switch it off when I leave the computer in order to save some power; on a laptop we have the lid button which could be abused, but I couldn't find a way to detect when an external monitor is turned off, anyone?&lt;/p&gt;</description>
	<pubDate>Tue, 21 Sep 2010 20:01:46 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Supercool Linux</title>
	<guid>http://ao2.it/en/tags/40 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2010/07/20/supercool-linux</link>
	<description>&lt;p&gt;We all know &lt;a href=&quot;http://en.wikipedia.org/wiki/Linux&quot; title=&quot;Wikipedia: Linux&quot;&gt;linux&lt;/a&gt; is cool, don't we? However these people at &lt;a href=&quot;http://it-it.facebook.com/pages/Naples-Italy/SUPERFREDDO-CATENA-DI-PRODOTTI-SURGELATI-NAPOLI/292071878179&quot; title=&quot;SUPERFREDDO CATENA DI PRODOTTI SURGELATI NAPOLI&quot;&gt;SuperFreddo&lt;/a&gt; make it supercool (&lt;dfn&gt;freddo&lt;/dfn&gt; is the Italian word for cool/cold).&lt;/p&gt;

&lt;div&gt;
&lt;img src=&quot;http://photos-e.ak.fbcdn.net/hphotos-ak-snc3/hs169.snc3/19660_292098848179_292071878179_3377085_2791392_s.jpg&quot; alt=&quot;SuperFreddo logo&quot; title=&quot;SuperFreddo logo&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://it-it.facebook.com/pages/Naples-Italy/SUPERFREDDO-CATENA-DI-PRODOTTI-SURGELATI-NAPOLI/292071878179&quot; title=&quot;SUPERFREDDO CATENA DI PRODOTTI SURGELATI NAPOLI&quot;&gt;SuperFreddo&lt;/a&gt; is a &lt;em&gt;frozen food chain&lt;/em&gt; here in Naples Italy,  and &lt;a href=&quot;http://it-it.facebook.com/photo.php?pid=3377085&amp;id=292071878179&quot; title=&quot;Foto di SUPERFREDDO CATENA DI PRODOTTI SURGELATI NAPOLI&quot;&gt;the penguin in their logo&lt;/a&gt; has an &lt;strong&gt;interesting&lt;/strong&gt; resemblance to &lt;a href=&quot;http://en.wikipedia.org/wiki/Tux&quot; title=&quot;Wikipedia: Tux&quot;&gt;Tux&lt;/a&gt;, the linux kernel mascot: the contour is not exact and it is wearing a hat and a scarf, but you just look at the feet —at their inclination— and you have no more doubts.&lt;/p&gt;

&lt;p&gt;I am not on Facebook, so maybe some of you could point out to &lt;a href=&quot;http://it-it.facebook.com/pages/Naples-Italy/SUPERFREDDO-CATENA-DI-PRODOTTI-SURGELATI-NAPOLI/292071878179&quot; title=&quot;SUPERFREDDO CATENA DI PRODOTTI SURGELATI NAPOLI&quot;&gt;them&lt;/a&gt; where the designer of their logo could have taken inspiration from.&lt;br /&gt;Could there be also a legal case here? I don't know.&lt;/p&gt;

&lt;p&gt;I attach a couple of pictures of their shopping bags, just for the records, and to remind people that &lt;a href=&quot;http://www.inaltreparole.net/en/nature/bustediplasticaultimoanno050110.html&quot; title=&quot;2010: goodbye plastic bags (in Italy)&quot;&gt;from 2011 plastic bags are banned in Italy&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;field field-type-filefield field-field-image&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Attached images:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2010/07/20/supercool-linux&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2010/07/20/supercool-linux/superfreddo-tux.jpg&quot; alt=&quot;SuperFreddo plastic bag&quot; title=&quot;SuperFreddo plastic bag&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;133&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
              &lt;div class=&quot;field-item even&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2010/07/20/supercool-linux&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2010/07/20/supercool-linux/superfreddo-tux-detail.jpg&quot; alt=&quot;SuperFreddo plastic bag - detail&quot; title=&quot;SuperFreddo plastic bag - detail&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;100&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;</description>
	<pubDate>Tue, 20 Jul 2010 09:42:24 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Write access to OpenEmbedded</title>
	<guid>http://ao2.it/en/tags/38 at http://ao2.it</guid>
	<link>http://ao2.it/en/news/2010/06/04/write-access-openembedded</link>
	<description>&lt;p&gt;Since late May 2010 I've been given write access to the &lt;a href=&quot;http://git.openembedded.org/cgit.cgi/openembedded/&quot; title=&quot;cgit: OpenEmbedded Development Tree&quot;&gt;OpenEmbedded repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to the &lt;a href=&quot;http://wiki.openembedded.net/index.php/Main_Page&quot; title=&quot;OpenEmbedded, the build framework for embedded Linux&quot;&gt;OE&lt;/a&gt; devs who supported me.&lt;/p&gt;</description>
	<pubDate>Fri, 04 Jun 2010 15:02:11 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Neat compile/run cycle with git and OpenEmbedded</title>
	<guid>http://ao2.it/en/tags/37 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2010/05/27/neat-compilerun-cycle-git-and-openembedded</link>
	<description>&lt;p&gt;No matter how much careful we are when writing code, whatever changes we are making to a piece of software we must test them before production, even &lt;a title=&quot;Wikipedia: Donald Knuth&quot; href=&quot;http://en.wikipedia.org/wiki/Donald_Knuth&quot;&gt;Donald Knuth&lt;/a&gt; once said: &lt;q cite=&quot;http://www-cs-faculty.stanford.edu/~knuth/faq.html&quot;&gt;Beware of bugs in the above code; I have only proved it correct, not tried it.&lt;/q&gt; :).&lt;/p&gt;

&lt;p&gt;Moreover, if the software we are working on is targeting an embedded system and needs cross-compilation and depends on other software, then testing can be more tedious: we have to prepare patches/archives and instruct the target SDK to pick our latest code, or we could code directly in the SDK working tree, but that would not be very clean. If you use &lt;a title=&quot;Git: Fast Version Control System&quot; href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt; and &lt;a title=&quot;OpenEmbedded: the build framework for embedded Linux&quot; href=&quot;http://wiki.openembedded.net/index.php/Main_Page&quot;&gt;OpenEmbedded&lt;/a&gt; there is a very neat way to build directly from our own working directory on the filesystem.

By developing with git from the start, your changes are ready to be sent &lt;a title=&quot;Wikipedia: Upstream (software development)&quot; href=&quot;http://en.wikipedia.org/wiki/Upstream_%28software_development%29&quot;&gt;upstream&lt;/a&gt; as soon as they are proven to be OK.&lt;/p&gt;

&lt;h3&gt;Git cloning from filesystem&lt;/h3&gt;&lt;p&gt;
I am not going to repeat how nice, sleek and whatnot git is, just let me show you again how flexible it is: you can easily “re-clone” from a git clone on the filesystem, no need to have any servers around:&lt;/p&gt;

&lt;pre class=&quot;brush:bash&quot;&gt;
$ cd /tmp
$ git clone file:///home/ao2/Proj/EZX/OE/framework
&lt;/pre&gt;

&lt;p&gt;See? By only using the &lt;code&gt;file://&lt;/code&gt; &lt;acronym title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/acronym&gt; scheme we fetch from a &lt;a title=&quot;Git Book: Git Directory and Working Directory&quot; href=&quot;http://book.git-scm.com/1_git_directory_and_working_directory.html&quot;&gt;git  (working) directory&lt;/a&gt;: a git directory is a valid git repository, there's some beauty in this regularity.&lt;/p&gt;

&lt;h3&gt;Fetching the latest code from our git working dir with OpenEmbedded&lt;/h3&gt;

&lt;p&gt;OpenEmbedded uses the &lt;a title=&quot;Wikipedia: Bitbake&quot; href=&quot;http://en.wikipedia.org/wiki/BitBake&quot;&gt;bitbake&lt;/a&gt; task executor, .bb files (called recipes) are used to describe bitbake tasks, they are generally used to define packages for distributing some software, and the source code of the software can be fetched in many different ways; in this case we are editing a recipe which uses the &lt;em&gt;git&lt;/em&gt; fetcher, let's take a look at the original &lt;code&gt;recipes/freesmartphone/frameworkd_git.bb&lt;/code&gt;:&lt;/p&gt;

&lt;pre class=&quot;brush:bash&quot;&gt;
DESCRIPTION = &quot;The reference implementation of the freesmartphone.org framework APIs&quot;
HOMEPAGE = &quot;http://www.freesmartphone.org&quot;
AUTHOR = &quot;FreeSmartphone.Org Development Team&quot;
SECTION = &quot;console/network&quot;
DEPENDS = &quot;python-cython-native python-pyrex-native&quot;
LICENSE = &quot;GPL&quot;
SRCREV = &quot;93673aa09cafc8fb5cfc3cb4055a73e25e595b70&quot;
PV = &quot;0.9.5.9+gitr${SRCPV}&quot;
PR = &quot;r3&quot;
PE = &quot;1&quot;

inherit distutils update-rc.d python-dir

INITSCRIPT_NAME = &quot;frameworkd&quot;
INITSCRIPT_PARAMS = &quot;defaults 29&quot;

SRC_URI = &quot;${FREESMARTPHONE_GIT}/framework.git;protocol=git;branch=master \
           file://frameworkd \
           file://frameworkd.conf \
	   &quot;
SRC_URI_append_shr = &quot;file://oeventsd-use-opimd-signals.patch;patch=1&quot;

S = &quot;${WORKDIR}/git&quot;
...
...
&lt;/pre&gt;

&lt;p&gt;we can change the path in &lt;code&gt;SRC_URI&lt;/code&gt; to a directory on the filesystem, and change the protocol to &lt;code&gt;file&lt;/code&gt; so that git uses our working copy to fetch the code for the package, we can also specify our development branch here. Note that we still have to use the &lt;code&gt;git://&lt;/code&gt; scheme, because that's what tells bitbake which fetcher to use.&lt;/p&gt;

&lt;pre class=&quot;brush:diff&quot;&gt;
diff --git a/recipes/freesmartphone/frameworkd_git.bb b/recipes/freesmartphone/frameworkd_git.bb
index dac7fe9..ddae81d 100644
--- a/recipes/freesmartphone/frameworkd_git.bb
+++ b/recipes/freesmartphone/frameworkd_git.bb
@@ -4,9 +4,9 @@ AUTHOR = &quot;FreeSmartphone.Org Development Team&quot;
 SECTION = &quot;console/network&quot;
 DEPENDS = &quot;python-cython-native python-pyrex-native&quot;
 LICENSE = &quot;GPL&quot;
-SRCREV = &quot;93673aa09cafc8fb5cfc3cb4055a73e25e595b70&quot;
+SRCREV = &quot;${AUTOREV}&quot;
 PV = &quot;0.9.5.9+gitr${SRCPV}&quot;
-PR = &quot;r3&quot;
+PR = &quot;r4&quot;
 PE = &quot;1&quot;

 inherit distutils update-rc.d python-dir
@@ -14,7 +14,7 @@ inherit distutils update-rc.d python-dir
 INITSCRIPT_NAME = &quot;frameworkd&quot;
 INITSCRIPT_PARAMS = &quot;defaults 29&quot;

-SRC_URI = &quot;${FREESMARTPHONE_GIT}/framework.git;protocol=git;branch=master \
+SRC_URI = &quot;git:///home/ao2/Proj/EZX/OE/framework;protocol=file;branch=freescale_neptune \
            file://frameworkd \
            file://frameworkd.conf \
           &quot;          
&lt;/pre&gt;

&lt;p&gt;Now we are set, we can build packages as usual and test our local changes on the target system:&lt;/p&gt;

&lt;pre class=&quot;brush:bash&quot;&gt;
$ bitbake -c clean recipes/freesmartphone/frameworkd_git.bb
$ bitbake recipes/freesmartphone/frameworkd_git.bb
&lt;/pre&gt;</description>
	<pubDate>Thu, 27 May 2010 08:46:09 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Joining twitter</title>
	<guid>http://www.vanille-media.de/site/index.php/2010/04/04/joining-twitter/</guid>
	<link>http://www.vanille-media.de/site/index.php/2010/04/04/joining-twitter/</link>
	<description>&lt;p&gt;I&amp;#8217;m now on &lt;a href=&quot;http://twitter.com/DrMickeyLauer&quot;&gt;twitter&lt;/a&gt;. I&amp;#8217;ll use that for small status updates on the various open source related work I&amp;#8217;m doing, e.g. &lt;a href=&quot;http://freesmartphone.org&quot;&gt;FSO&lt;/a&gt;, &lt;a href=&quot;http://openembedded.org&quot;&gt;OpenEmbedded&lt;/a&gt;, &lt;a href=&quot;http://vala-project.org&quot;&gt;Vala&lt;/a&gt;, and the like.&lt;/p&gt;
&lt;p&gt;Follow me, if you can &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 04 Apr 2010 14:59:21 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Qt suddenly got interesting again</title>
	<guid>http://www.vanille-media.de/site/index.php/2010/02/27/qt-suddenly-got-interesting-again/</guid>
	<link>http://www.vanille-media.de/site/index.php/2010/02/27/qt-suddenly-got-interesting-again/</link>
	<description>&lt;p&gt;After &lt;a href=&quot;http://www.trolltech.com&quot;&gt;Trolltech&lt;/a&gt; dropping the ball with the community back in the old days of &lt;a href=&quot;http://opie.handhelds.org&quot;&gt;Opie&lt;/a&gt;, I pretty much gave up on Qt (and C++) apart from accepting some contract work, so my C++/Qt skills would not get too rusty. Since my nightmares with getting something fluid out of Gtk+ (back in the &lt;a href=&quot;http://www.openmoko.org&quot;&gt;Openmoko&lt;/a&gt; days), I did not have the chance to do much UI work &amp;#8212; the &lt;a href=&quot;http://www.freesmartphone.org&quot;&gt;freesmartphone.org&lt;/a&gt; middleware kept me busy enough.&lt;/p&gt;
&lt;p&gt;I have been watching Qt progressing though, and ever since they introduced &lt;a href=&quot;http://labs.trolltech.com/blogs/2008/11/06/welcome-to-kinetic/&quot;&gt;Qt Kinetic&lt;/a&gt; and &lt;a href=&quot;http://labs.trolltech.com/blogs/2009/05/13/qt-declarative-ui/&quot;&gt;QML&lt;/a&gt; it became very interesting for me again. QML looks like EFL&amp;#8217;s &lt;a href=&quot;http://trac.enlightenment.org/e/wiki/Edje&quot;&gt;Edje&lt;/a&gt; been thought through &amp;#8212; don&amp;#8217;t get me wrong, Edje was groundbreaking (as most of Rasterman&amp;#8217;s work) when it made its debut, however in my opinion it got stuck in the middle and never lived up to what I was expecting from it.&lt;/p&gt;
&lt;p&gt;Once QML ships with Qt &amp;#8212; hopefully in the next minor or at least major version of Qt, I will get back on doing some FOSS work on application level to complete creating a smart phone stack. That&amp;#8217;s going to be fun!&lt;/p&gt;</description>
	<pubDate>Sat, 27 Feb 2010 15:44:17 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: F(SO|OS)DEM 2010</title>
	<guid>http://www.vanille-media.de/site/index.php/2010/02/08/fsoosdem-2010/</guid>
	<link>http://www.vanille-media.de/site/index.php/2010/02/08/fsoosdem-2010/</link>
	<description>&lt;p&gt;Just came back from FOSDEM 2010, which &amp;#8212; after skipping the last incarnation &amp;#8212; was a great inspiring and productive event. The Openmoko devroom we originally requested was declined, however thanks to the initiative of Serdar Dere, it turned out we could snatch a last minute 3 hours timeslot that was left open by the Xorg guys. Very shortly we prepared a &lt;a href=&quot;http://www.fosdem.org/2010/schedule/devrooms/openmoko&quot;&gt;schedule&lt;/a&gt; and managed to get a nice program which was very well received.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.vanille.de/images/fosdem-openmoko-devroom-1.jpg&quot; alt=&quot;Openmoko Devroom @ FOSDEM 2010&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
Due to the short notice, we could not manage to create a video recording infrastructure, so I&amp;#8217;m afraid this year we can only provide the slides &amp;#8212; which are a notoriously bad substitute for real talks though. We try to improve for next year &amp;#8212; if we can get a devroom again. The pictures you are seeing are courtesy Dr. Nikolaus Schaller from Goldelico, btw. &amp;#8212; thanks!
&lt;/p&gt;
&lt;p&gt;
The FOSDEM team did certainly improve its organization over the last years, I was very pleased to see some of my criticism being taken into account. Apart from the lack of good coffee in Brussels (which the FOSDEM team probably is unguilty for), I can&amp;#8217;t complain about anything. Even WiFi worked tremendously well on saturday. I still think due to the size of the ever growing interest in this conference that the ULB as location should seriously be reconsidered though. The special service transport on sunday to the main station is a great idea, folks &amp;#8212; thanks a lot! Funnily enough, half of the ICE that took me to/from Frankfurt/Main to Brussels Zuid was filled with hackers, btw. &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.vanille.de/images/fosdem-openmoko-devroom-2.jpg&quot; alt=&quot;Openmoko Devroom @ FOSDEM 2010&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
I have met some interesting people working on mobile devices, such as dcordes, leviathan, GNUtoo, cr2, larsc, heinervdm, etc. It&amp;#8217;s great to see there is still momentum in real mobile FOSS architectures (i.e. something besides the Android, Maemo, or WebOS systems). I&amp;#8217;m glad to tell you that this year we will see an exciting breakthrough in freesmartphone.org middleware supporting new platforms, i.e. progress on the HTC Dream and the Palm Pre is looking _very_ well. Stay tuned for more details appearing here soon.
&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.vanille.de/images/fosdem-openmoko-devroom-3.jpg&quot; alt=&quot;Openmoko Devroom @ FOSDEM 2010&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I wish every conference would be like that. The only slightly disappointing thing was the cross-buildsystem-session in the embedded room. Just when I was expecting the discussion about the problems and potential collaboration to start, the time for the session was over. &lt;img src=&quot;http://www.vanille-media.de/site/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;wp-smiley&quot; /&gt; Rather than wasting time watching Andy Green telling us that our projects will die soon and we should all start using Fedora/Embedded now, we could have had some progress&amp;#8230; Oh well, perhaps next year.&lt;/p&gt;</description>
	<pubDate>Mon, 08 Feb 2010 19:56:25 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: FOSDEM 2010</title>
	<guid>http://www.vanille-media.de/site/index.php/2010/02/03/fosdem-2010/</guid>
	<link>http://www.vanille-media.de/site/index.php/2010/02/03/fosdem-2010/</link>
	<description>&lt;p&gt;Due to some lucky coincidences, we got a &lt;a href=&quot;http://www.fosdem.org/2010/schedule/devrooms/openmoko&quot;&gt;devroom&lt;/a&gt; at this year&amp;#8217;s FOSDEM. I&amp;#8217;ll be there, presenting a short overview about the history of the Openmoko project as well as a wrap-up of the latest work on the &lt;a href=&quot;http://www.freesmartphone.org&quot;&gt;freesmartphone.org&lt;/a&gt; mobile devices middleware.&lt;/p&gt;
&lt;p&gt;Hope to see you there!&lt;/p&gt;</description>
	<pubDate>Wed, 03 Feb 2010 12:14:56 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: fso-boot</title>
	<guid>http://www.vanille-media.de/site/index.php/2010/02/02/fso-boot/</guid>
	<link>http://www.vanille-media.de/site/index.php/2010/02/02/fso-boot/</link>
	<description>&lt;p&gt;I&amp;#8217;m fed up with booting my Linux-based smartphones like desktop-systems. Two major developments will help me accomplish enormous improvements in boot speed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;devtmpfs &amp;#8212; kernel support for the /dev file system&lt;/li&gt;
&lt;li&gt;dbus system activation &amp;#8212; on-demand launching of dbus-based services&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m going to carry out the following two tasks in &lt;a href=&quot;http://www.openembedded.org&quot;&gt;OE&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Writing fso-boot, a small executable written in C, which mounts the filesystems, brings up DBus and (optionally) launches X11&lt;/li&gt;
&lt;li&gt;Setting fso-boot as new init process, that way you still have sysvinit and udev in your root file system, but they&amp;#8217;re not active unless explicitly asked for&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;#8217;ll do that for the freesmartphone.org adaptation for the HTC Dream (T-Mobile G1, Google ADP-1), which I&amp;#8217;m running on 2.6.32 (necessary for devtmpfs) &amp;#8212; stay tuned for the first benchmarks.&lt;/p&gt;</description>
	<pubDate>Mon, 01 Feb 2010 23:59:51 +0000</pubDate>
</item>
<item>
	<title>Antonio Ospite: Branding patches with git and vim</title>
	<guid>http://ao2.it/en/tags/26 at http://ao2.it</guid>
	<link>http://ao2.it/en/blog/2010/01/05/branding-patches-git-and-vim</link>
	<description>&lt;p&gt;In &lt;a title=&quot;Wikipedia: Linux Kernel&quot; href=&quot;http://en.wikipedia.org/wiki/Linux_kernel&quot;&gt;linux kernel&lt;/a&gt; development there are informal, and yet quite solid, conventions which apply when
sharing patches and collaborating during the —public and undisclosed— phase of
code peer-review.&lt;/p&gt;

&lt;p&gt;As some of you may know, all the communications about kernel development happen via e-mail, and there
are some tools to ease the task of preparing and sending patches; these
tools allow some degree of customization, or “branding” like I am calling it in
this case. Let's see how to decorate our patches so that their author is more
easily recognizable (and acknowledgeable). Obviously all this doesn't apply only
to linux, that's just where my experience come from.&lt;/p&gt;

&lt;p&gt;Let's step back to summarize a common work-flow used when preparing patches with
the &lt;a title=&quot;Git: Fast Version Control System&quot; href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt; &lt;acronym title=&quot;Source Code Management system&quot;&gt;SCM&lt;/acronym&gt;:&lt;/p&gt;

&lt;pre class=&quot;brush:bash&quot;&gt;
# clone some repository
git clone git://git.example.com/repo.git
cd repo.git

# create a new development branch and work on it
git branch new-dev-branch
git checkout new-dev-branch

# Commit operation is inexpensive in git, use it
$EDITOR fileA
$EDITOR fileB
git commit fileA fileB
$EDITOR fileA
git commit fileA

# Prepare patches to be sent
git format-patch -s --cover-letter master..new-dev-branch

# Edit patches to:
#   - add Cc recipients
#   - add annotations after the '---' separator,
#      this does not interfere with commit messages
$EDITOR *.patch
git send-email --to &quot;Some MailingList &amp;lt;some@mailinglist&amp;gt;&quot; *.patch

# When the patches are accepted upstream we can delete
# our local development branch
git checkout master
git branch -D new-dev-branch
&lt;/pre&gt;

&lt;p&gt;Now, the patches we are  producing this way have the author figuring as the sender, and are signed off
according to the &lt;a href=&quot;http://elinux.org/Developer_Certificate_Of_Origin&quot;&gt;Developer Certificate of Origin&lt;/a&gt;, but we can still make them more “personal”, for instance we can:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
Add some custom email headers, like &lt;code&gt;Organization&lt;/code&gt; or &lt;code&gt;X-Face&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
Appending a signature to the cover letter.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Adding custom headers&lt;/h3&gt;

&lt;p&gt;Using the &lt;code&gt;format.headers&lt;/code&gt; option in git you can add any header conforming to &lt;a title=&quot;Internet Message Format&quot; href=&quot;http://tools.ietf.org/html/rfc2822&quot;&gt;RFC2822&lt;/a&gt; into the patches you generate with &lt;code&gt;git format-patch&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I am adding an &lt;a title=&quot;Wikipedia: X-Face&quot; href=&quot;http://en.wikipedia.org/wiki/X-Face&quot;&gt;X-Face&lt;/a&gt; header (the source image is attached at the end of the post):
&lt;/p&gt;

&lt;pre class=&quot;brush:plain&quot;&gt;
X-Face: z*RaLf`X&amp;lt;@C75u6Ig9}{oW$H;1_\2t5)({*|jhM&amp;lt;pyWR#k60!#=#&amp;gt;/Vb;]yA5&amp;lt;GWI5`6u&amp;amp;+
 ;6b'@y|8w&quot;wB;4/e!7wYYrcqdJFY,~%Gk_4]cq$Ei/7&amp;lt;j&amp;amp;N3ah(m`ku?pX.&amp;amp;+~:_/wC~dwn^)MizBG
 !pE^+iDQQ1yC6^,)YDKkxDd!T&amp;gt;\I~93&amp;gt;J&amp;lt;_`&amp;lt;4)A{':UrE
&lt;/pre&gt;

&lt;p&gt;To set this you can do:
&lt;/p&gt;

&lt;pre class=&quot;brush:bash&quot;&gt;
git config --global --add format.headers ''
git config --global --edit
&lt;/pre&gt;&lt;p&gt;
and then add the string in double quotes, remembering to escape characters in the X-Face as &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-config.html&quot; title=&quot;git-config(1) Manual Page&quot;&gt;git-config(1) Manual Page&lt;/a&gt; says:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
  Double quote &quot; and backslash \ characters in variable values must be 
  escaped: use \&quot; for &quot; and \\ for \.
&lt;br /&gt;&lt;br /&gt;   
  The following escape sequences (beside \&quot; and \\) are recognized: \n for 
  newline character (NL), \t for horizontal tabulation (HT, TAB) and \b for 
  backspace (BS). No other char escape sequence, nor octal char sequences are 
  valid.
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which in my case gives:
&lt;/p&gt;

&lt;pre class=&quot;brush:plain&quot;&gt;
[format]
	headers = &quot;X-Face: z*RaLf`X&amp;lt;@C75u6Ig9}{oW$H;1_\\2t5)({*|jhM&amp;lt;pyWR#k60!#=#&amp;gt;/Vb;]yA5&amp;lt;GWI5`6u&amp;amp;+\n ;6b'@y|8w\&quot;wB;4/e!7wYYrcqdJFY,~%Gk_4]cq$Ei/7&amp;lt;j&amp;amp;N3ah(m`ku?pX.&amp;amp;+~:_/wC~dwn^)MizBG\n !pE^+iDQQ1yC6^,)YDKkxDd!T&amp;gt;\\I~93&amp;gt;J&amp;lt;_`&amp;lt;4)A{':UrE\n&quot;
&lt;/pre&gt;

&lt;p&gt;Now the recipients can see my X-Face in my patches, provided that their &lt;acronym title=&quot;Mail    User Agent&quot;&gt;MUA&lt;/acronym&gt; can decode it...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; please don't copy and paste this X-Face blindly, this is &lt;strong&gt;my&lt;/strong&gt; X-Face, you want to have your very own.&lt;/p&gt;

&lt;h3&gt;Appending a signature to the cover letter&lt;/h3&gt;

&lt;p&gt;If you are using the &lt;a title=&quot;Vim: the  editor&quot; href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; editor to compose the cover letter and annotate patches it is very easy to make it add your signature to the first mail in your &lt;em&gt;patchset&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Download my &lt;a title=&quot;signature_block.vim: Add and manipulate signature blocks in e-mails&quot; href=&quot;http://www.vim.org/scripts/script.php?script_id=2872&quot;&gt;signature_block.vim&lt;/a&gt; into &lt;code&gt;~/.vim/plugin/&lt;/code&gt; and add these lines to your &lt;code&gt;~/.vimrc&lt;/code&gt;:
&lt;/p&gt;

&lt;pre class=&quot;brush:plain&quot;&gt;
  &quot; Append a signature block to cover letters generated with git-format-patch
  autocmd BufRead 0000-cover-letter.patch silent call AddSignature('~/.signature') | w
  autocmd BufRead 0000-cover-letter.patch autocmd! BufRead 0000-cover-letter.patch
&lt;/pre&gt;

&lt;p&gt;Now the first time you open a file named &lt;code&gt;0000-cover-letter.patch&lt;/code&gt; your signature (any text in &lt;code&gt;~/.signature&lt;/code&gt;, in this case) will be appended automatically.
&lt;/p&gt;&lt;div class=&quot;field field-type-filefield field-field-image&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Attached images:&amp;nbsp;&lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;a href=&quot;http://ao2.it/en/blog/2010/01/05/branding-patches-git-and-vim&quot; class=&quot;imagecache imagecache-thumbnail-100px imagecache-linked imagecache-thumbnail-100px_linked&quot;&gt;&lt;img src=&quot;http://ao2.it/en/sites/default/files/imagecache/thumbnail-100px/blog/2010/01/05/branding-patches-git-and-vim/ao2_Xface.png&quot; alt=&quot;ao2 X-Face&quot; title=&quot;ao2 X-Face&quot; class=&quot;imagecache imagecache-thumbnail-100px&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt;&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;</description>
	<pubDate>Tue, 05 Jan 2010 22:53:31 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: GSM Palm Pre on the horizon</title>
	<guid>http://www.vanille-media.de/site/index.php/2009/09/25/gsm-palm-pre-on-the-horizon/</guid>
	<link>http://www.vanille-media.de/site/index.php/2009/09/25/gsm-palm-pre-on-the-horizon/</link>
	<description>&lt;p&gt;As &lt;a title=&quot;Palm Pre Challenge Announcement&quot; href=&quot;http://lists.linuxtogo.org/pipermail/smartphones-userland/2009-September/001996.html&quot;&gt;mentioned&lt;/a&gt;, the freesmartphone.org team and community has taken the &lt;a title=&quot;Palm Pre Challenge&quot; href=&quot;http://www.freesmartphone.org/index.php/Palm_Pre_Challenge&quot;&gt;challenge&lt;/a&gt; to put the FSO stack on the Palm Pre which is out next month. The goal is to manage a voice call with the FSO stack within four weeks.&lt;/p&gt;
&lt;p&gt;The idea behind this is a very important one. With only the Openmoko FreeRunner as a platform, the FSO stack is doomed into oblivion sooner or later, since its a very limited hardware platform &amp;#8212; in quantity, but considering the closed alternatives also in quality. Hence, we need to proof that FSO can run on current, competitive hardware &amp;#8212; to embrace companies that want to adopt FSO in their niche.&lt;/p&gt;
&lt;p&gt;The Palm Pre is currently our major hope &amp;#8212; all other hardware being either too closed (yes, this includes the Nokia N900) or already outdated.&lt;/p&gt;</description>
	<pubDate>Fri, 25 Sep 2009 17:18:50 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Vala gains support for server-side async dbus</title>
	<guid>http://www.vanille-media.de/site/index.php/2009/09/13/vala-gains-support-for-server-side-async-dbus/</guid>
	<link>http://www.vanille-media.de/site/index.php/2009/09/13/vala-gains-support-for-server-side-async-dbus/</link>
	<description>&lt;p&gt;Something wonderful has happened! Jürg Billeter &amp;#8212; mastermind of Vala &amp;#8212; pushed support for server-side async dbus into Vala. I hope I didn&amp;#8217;t annoy him too much (having continuesly pestered for almost a year now), but the net effect is that we can now continue working on fsogsmd, the Vala implementation of our dbus GSM server (see &lt;a title=&quot;freesmartphone.org&quot; href=&quot;http://docs.freesmartphone.org&quot;&gt;http://docs.freesmartphone.org&lt;/a&gt; for an overview of the API). Yay!&lt;/p&gt;</description>
	<pubDate>Sun, 13 Sep 2009 17:44:23 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: LinuxTag 2009</title>
	<guid>http://www.vanille-media.de/site/index.php/2009/06/24/linuxtag-2009/</guid>
	<link>http://www.vanille-media.de/site/index.php/2009/06/24/linuxtag-2009/</link>
	<description>&lt;p&gt;I&amp;#8217;m on my way to LinuxTag 2009. Instead of a &amp;#8220;real booth&amp;#8221; like last year, we settled on a developer table in the hacking area &amp;#8212; there we can present our Linux on mobile projects such as&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;GPE&quot; href=&quot;http://gpe.linuxtogo.org&quot;&gt;GPE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;freesmartphone.org&quot; href=&quot;http://www.freesmartphone.org&quot;&gt;FSO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;OpenEZX&quot; href=&quot;http://www.openezx.org&quot;&gt;OpenEZX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;OpenMoko&quot; href=&quot;http://www.openmoko.org&quot;&gt;OpenMoko&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Gnufiish&quot; href=&quot;http://www.gnufiish.org&quot;&gt;Gnufiish&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;in a more relaxed way &amp;#8212; giving room to dive into some technical issues, when interested folks come around.&lt;/p&gt;
&lt;p&gt;Find me there, if you&amp;#8217;re interested in any of the aforementioned projects. I&amp;#8217;ll be there until Friday afternoon.&lt;/p&gt;</description>
	<pubDate>Wed, 24 Jun 2009 05:34:30 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Catching up and plans for 2009</title>
	<guid>http://www.vanille-media.de/site/index.php/2009/02/17/catching-up-and-plans-for-2009/</guid>
	<link>http://www.vanille-media.de/site/index.php/2009/02/17/catching-up-and-plans-for-2009/</link>
	<description>&lt;p&gt;I felt it&amp;#8217;s time to recap the stuff that kept me busy the last months and give you an overview over the achievements planned for this year &amp;#8212; always focusing the free software movement, of course.&lt;/p&gt;
&lt;h1&gt;freesmartphone.org&lt;/h1&gt;
&lt;p&gt;Let&amp;#8217;s start with the major project I&amp;#8217;ve been working on, the &lt;a href=&quot;http://www.freesmartphone.org&quot;&gt;freesmartphone.org&lt;/a&gt; project, funded by &lt;a href=&quot;http://www.openmoko.org&quot;&gt;Openmoko, Inc&lt;/a&gt;. FSO grows, and it grows in the right directions. We get more API customers &amp;#8212; notably the &lt;a href=&quot;http://shr-project.org&quot;&gt;SHR project&lt;/a&gt; and the &lt;a href=&quot;http://paroli-project.org&quot;&gt;Paroli project&lt;/a&gt; &amp;#8212; and refine our API and the reference implementation. The 5th milestone has just been released and apart from a major foobar with read-only partitions, it&amp;#8217;s pretty good. We are going to fix this OE-inheritance and release a milestone 5.1 in a couple of days.&lt;/p&gt;
&lt;h2&gt;fso-abyss (GSM 07.10 Multiplexing)&lt;/h2&gt;
&lt;p&gt;For some modems &amp;#8212; e.g. the TI Calypso (see my previous post on &lt;a href=&quot;http://www.vanille-media.de/site/index.php/2008/12/03/ogsmd-and-its-modems/&quot;&gt;ogsmd and its modems&lt;/a&gt;) &amp;#8212; until now we have relied on pyneo&amp;#8217;s &lt;a href=&quot;http://pyneo.org/downloads/gsm0710muxd-HEAD.tgz&quot;&gt;gsm0710muxd&lt;/a&gt;. Over the last weeks we found some severe problems (race conditions, buffer overflows) with this though, so I thought I have a shot at developing my own GSM 07.10 Multiplexer.&lt;/p&gt;
&lt;p&gt;The result is called &lt;em&gt;fso-abyss&lt;/em&gt; and is &amp;#8212; as with all our software &amp;#8212; available at &lt;a href=&quot;http://git.freesmartphone.org&quot;&gt;git.freesmartphone.org&lt;/a&gt; under a free software license. The major difference to gsm0710muxd is the architecture (and maintainability). While gsm0710muxd combines talking to the serial ports, the pty&amp;#8217;s, handling dbus queries, and doing modem specific things, fso-abyss went a different route.&lt;/p&gt;
&lt;p&gt;At the heart there is a minimal protocol engine implementing GSM 07.10. Since there was already something available in Qtopia &amp;#8212; even nicely seperated without any external dependencies &amp;#8212; I took that one and factored it out in a dedicated project called &lt;strong&gt;libgsm0710&lt;/strong&gt; (available in git as well). The idea here is that different interest groups can collaborate on getting the protocol engine right, since not everyone wants a DBus frontend such as implemented in fso-abyss. The next step was writing a VAPI file for glueing the protocol engine to &lt;a href=&quot;http://vala-project.org&quot;&gt;Vala&lt;/a&gt; (more about that one in a bit), which has been used to develop the upper layers of fso-abyss.&lt;/p&gt;
&lt;p&gt;Last but not least, there was the pty implementation, the serial port communications abstraction, and finally the dbus server. The DBus API originally designed in cooperation with pyneo has been enhanced to feature the additional features (only) present in fso-abyss. Apart from the architecture, fso-abyss also can handle virtual serial port signalling, 07.10 test commands, automatic session handling, has a wakeup service, and more. Next up is adding support for the Cinterion mc75i which has some proprietary extensions to GSM 07.10 Basic Multiplexing.&lt;/p&gt;
&lt;h2&gt;dbus-hlid (DBus High Level Introspection Daemon&lt;/h2&gt;
&lt;p&gt;Modern DBus APIs are pretty dynamic, i.e. objects can come and go at any time. Depending on the hardware, you may find more or less objects of a certain kind. You can now add infrastructure to query the objects (essentially a duplication of what DBus should provide), or just rely on the existing DBus introspection API. Unfortunately this API is missing some critical features to make it &lt;em&gt;really&lt;/em&gt; usable, such as querying objects that implement a certain interface.&lt;/p&gt;
&lt;p&gt;So I took the plunge and factored this out of the freesmartphone.org frameworkd, since it has broader use. This is the API for it (as introspected by mdbus):&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
root@om-gta02:~# mdbus -s org.freesmartphone.DBus /org/freesmartphone/DBus&lt;br /&gt;
[METHOD]    org.freesmartphone.DBus.ListBusNames() -&gt; ( as:result )&lt;br /&gt;
[METHOD]    org.freesmartphone.DBus.ListObjectPaths( s:busname ) -&gt; ( ao:result )&lt;br /&gt;
[METHOD]    org.freesmartphone.DBus.ListObjectsByInterface( s:busname, s:iface ) -&gt; ( ao:result )&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Here are examples of how you can use it (demonstrated within a Python shell):&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&gt;&gt;&gt; hlid.ListBusNames()&lt;br /&gt;
[   'org.freedesktop.DBus',&lt;br /&gt;
'org.freesmartphone.omuxerd',&lt;br /&gt;
':1.21',&lt;br /&gt;
'org.bluez',&lt;br /&gt;
'org.tichy.launcher',&lt;br /&gt;
':1.13',&lt;br /&gt;
':1.0',&lt;br /&gt;
'org.freesmartphone.frameworkd',&lt;br /&gt;
':1.14',&lt;br /&gt;
':1.1',&lt;br /&gt;
':1.2',&lt;br /&gt;
':1.3',&lt;br /&gt;
':1.4',&lt;br /&gt;
'org.freesmartphone.ogsmd',&lt;br /&gt;
':1.6',&lt;br /&gt;
'org.freesmartphone.DBus']&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&gt;&gt;&gt; hlid.ListObjectPaths(&quot;org.freesmartphone.ogsmd&quot;)&lt;br /&gt;
['/org/freesmartphone/GSM/Device', '/org/freesmartphone/GSM/Server']&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&gt;&gt;&gt; hlid.ListObjectPaths(&quot;org.freesmartphone.odeviced&quot;)&lt;br /&gt;
[   '/org/freesmartphone/Device/Audio',&lt;br /&gt;
'/org/freesmartphone/Device/CPU',&lt;br /&gt;
'/org/freesmartphone/Device/Display',&lt;br /&gt;
'/org/freesmartphone/Device/Display/0',&lt;br /&gt;
'/org/freesmartphone/Device/Display/gta02_bl',&lt;br /&gt;
'/org/freesmartphone/Device/IdleNotifier/0',&lt;br /&gt;
'/org/freesmartphone/Device/Info',&lt;br /&gt;
'/org/freesmartphone/Device/Input',&lt;br /&gt;
'/org/freesmartphone/Device/LED/gta02_aux_red',&lt;br /&gt;
'/org/freesmartphone/Device/LED/gta02_power_blue',&lt;br /&gt;
'/org/freesmartphone/Device/LED/gta02_power_orange',&lt;br /&gt;
'/org/freesmartphone/Device/LED/neo1973_vibrator',&lt;br /&gt;
'/org/freesmartphone/Device/PowerControl/Bluetooth',&lt;br /&gt;
'/org/freesmartphone/Device/PowerControl/UsbHost',&lt;br /&gt;
'/org/freesmartphone/Device/PowerControl/WiFi',&lt;br /&gt;
'/org/freesmartphone/Device/PowerSupply/ac',&lt;br /&gt;
'/org/freesmartphone/Device/PowerSupply/adapter',&lt;br /&gt;
'/org/freesmartphone/Device/PowerSupply/apm',&lt;br /&gt;
'/org/freesmartphone/Device/PowerSupply/battery',&lt;br /&gt;
'/org/freesmartphone/Device/PowerSupply/usb',&lt;br /&gt;
'/org/freesmartphone/Device/RealTimeClock/0',&lt;br /&gt;
'/org/freesmartphone/Device/RealTimeClock/rtc0']&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&gt;&gt;&gt; hlid.ListObjectsByInterface(&quot;org.freesmartphone.odeviced&quot;, &quot;org.freesmartphone.Device.LED&quot;)&lt;br /&gt;
[   '/org/freesmartphone/Device/LED/gta02_aux_red',&lt;br /&gt;
'/org/freesmartphone/Device/LED/gta02_power_blue',&lt;br /&gt;
'/org/freesmartphone/Device/LED/gta02_power_orange',&lt;br /&gt;
'/org/freesmartphone/Device/LED/neo1973_vibrator']&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;fso-monitord&lt;/h2&gt;
&lt;p&gt;While working on implementing GSM time(zone) support for ogsmd, we found we had too few samples, especially since time(zone) information are only sent by few providers all over the world. Moreoever, we missed a generic means to record all the data the frameworkd is sending out via its signals, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usage statistics&lt;/li&gt;
&lt;li&gt;Location Updates&lt;/li&gt;
&lt;li&gt;Diagnostic Data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To support this (and more), we came up with &lt;em&gt;fso-monitord&lt;/em&gt;, which is available from git as well. fso-monitord logs its data to a flat file format that you can send to us to improve our databases or for debugging. We also figured this would be the best place to add a generic frameworkd watchdog &amp;#8212; monitoring all fso components &amp;#8212; shutting down or restarting components as necessary and also logging incidents such as API violations.&lt;/p&gt;
&lt;h2&gt;What&amp;#8217;s next in FSO?&lt;/h2&gt;
&lt;p&gt;For milestone 5.5 (due end of march), we have two major features on the &lt;a href=&quot;http://trac.freesmartphone.org&quot;&gt;roadmap&lt;/a&gt;, namely bluetooth networking (headset profile) and extended PIM support. Milestone 6 will then sport full-fledged networking.&lt;/p&gt;
&lt;p&gt;Beyond milestone 6 &amp;#8212; apart from one major thing, which I&amp;#8217;ll cover in a second &amp;#8212; we only have some rough plans, such as revamping or refining the subsystems we&amp;#8217;re not perfectly happy with (&lt;em&gt;oeventsd&lt;/em&gt; and &lt;em&gt;opreferencesd&lt;/em&gt; come to mind). Also, alsa audio scenario handling is broken by design, but this is something we have to take up with upstream.&lt;/p&gt;
&lt;p&gt;The freesmartphone.org reference implementation has been progressing incredibly fast. This is partly due to choosing &lt;a href=&quot;http://www.python.org&quot;&gt;Python&lt;/a&gt; as the implementation language (which has been a wise choice) of our DBus APIs. Now you all know that although I truely love Python (I even wrote a book about it) and try to use it everywhere it fits, I&amp;#8217;m very well aware that for the future of the freesmartphone.org project, it might be important to come up with a frameworkd reimplementation in a compiled language &amp;#8212; to reduce the footprint and squeak every possible bit of performance out of the (embedded) system.&lt;/p&gt;
&lt;p&gt;This is why I have decided to encourage a second reference implementation. This one will be written in Vala (I might have mentioned it before, did I?) which is an incredible combination of elegance and performance, featuring a complete lack of any runtime penalties and additional dependencies. It&amp;#8217;s simply amazing and I&amp;#8217;m seriously thinking about writing an introductionary book about Vala later this year.&lt;/p&gt;
&lt;p&gt;Anyways, back to the topic, the first bits of this Vala implementation has landed in the freesmartphone.org git in the form of the very successful GSoC project &lt;em&gt;odeviced&lt;/em&gt;, written by &lt;a href=&quot;http://sudharsh.wordpress.com&quot;&gt;Sudarshan S&lt;/a&gt;. Stay tuned for some amazing FSO runtime speedups coming in autumn and winter this year to your device.&lt;/p&gt;
&lt;h1&gt;XeTex&lt;/h1&gt;
&lt;p&gt;Next to writing software for the freesmartphone.org project, I also found some time to pick up working with my favourite writing tool &lt;a href=&quot;http://www.lyx.org&quot;&gt;LyX&lt;/a&gt;. LyX, which could be described as a LaTeX frontend, nowadays features integration with the new LaTeX variant &lt;a href=&quot;http://scripts.sil.org/xetex&quot;&gt;XeTex&lt;/a&gt;. In contrast to other incarnations such as pdfLaTeX, XeTeX can utilize system fonts such as AAT or OpenType, which are the latest technology in computer-assisted typesetting.&lt;/p&gt;
&lt;p&gt;I can now use my &amp;#8220;corporate&amp;#8221; fonts &lt;a href=&quot;http://en.wikipedia.org/wiki/FF_Meta&quot;&gt;FF Meta&lt;/a&gt; and &lt;a href=&quot;http://www.metaserif.com/&quot;&gt;FF Meta Serif&lt;/a&gt; from LyX &amp;#8212; amazing!&lt;/p&gt;
&lt;h1&gt;Conferences&lt;/h1&gt;
&lt;p&gt;Although still working on cutting down my travelling, I can&amp;#8217;t miss some conferences this year. I managed to skip FOSDEM, which made me a bit sad, but I&amp;#8217;ll be compensated by attending&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://chemnitzer.linux-tage.de/2009/info/index_en.html&quot;&gt;Chemnitzer Linux-Tage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.foss-aalborg.dk/&quot;&gt;FOSS Aalborg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.openexpo.org/en&quot;&gt;OpenExpo 2009&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linuxtag.org/2009/en.html&quot;&gt;LinuxTag 2009&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and possible some more&amp;#8230; This year my main topics will be &lt;a href=&quot;http://openembedded.org&quot;&gt;OpenEmbedded&lt;/a&gt; and &lt;a href=&quot;http://docs.freesmartphone.org&quot;&gt;freesmartphone.org&lt;/a&gt; &amp;#8212; both dedicated to reducing the fragmentation of Linux-based embedded systems and to ease writing software for mobile devices running free and open source software. I hope we&amp;#8217;ll bump into each other at one of these occasions.&lt;/p&gt;
&lt;p&gt;Stay tuned!&lt;/p&gt;</description>
	<pubDate>Tue, 17 Feb 2009 18:36:13 +0000</pubDate>
</item>
<item>
	<title>Michael Lauer: Visiting 25c3 for one day</title>
	<guid>http://www.vanille-media.de/site/index.php/2008/12/27/visiting-25c3-for-one-day/</guid>
	<link>http://www.vanille-media.de/site/index.php/2008/12/27/visiting-25c3-for-one-day/</link>
	<description>&lt;p&gt;Although traditionally the Chaos Computer Congress&amp;#8217; schedule is slightly suboptimal for me (12/26th is my birthday), I&amp;#8217;m going to be in Berlin from 12/28th to 12/30th and will visit CCC on the 3th day (12/29th). I&amp;#8217;m going to attend Harald&amp;#8217;s talk about GSM base stations, so if you want to talk to me, just pick me up afterwards.
&lt;/p&gt;</description>
	<pubDate>Sat, 27 Dec 2008 01:29:29 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: TechWeek in Vachdorf</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/06/#e2008-06-12T17_28_43.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/06/#e2008-06-12T17_28_43.txt</link>
	<description>&lt;p&gt;Over the last week, directly after LinuxTag, I was in Vachdorf. If you like to
know more about this small village take a look at
&lt;a href=&quot;http://www.openstreetmap.org/?lat=50.52746&amp;lon=10.5342&amp;zoom=17&amp;layers=0B0FT&quot;&gt;OSM&lt;/a&gt;.
Of course we mapped the whole village while being there.&lt;/p&gt;

&lt;p&gt;The reason for being there was the TechWeek from
&lt;a href=&quot;http://pengutronix.de/&quot;&gt;Pengutronix&lt;/a&gt;, a company from my area doing a lot linux
embedded projects for the industry. I already known some of the people working
there privately. While being there I got known to the other ones. I must admit
that it is a nice bunch of smart people loving what they are doing. What I
actually appreciate a lot is their work to get their patches into mainline, even
if it costs a lot of time and money. This is a not-so-common practice in the industry
linux embedded world.&lt;/p&gt;

&lt;p&gt;While hanging out there and having good talks about git, patch handling and
submission workflows I spend most of my time working on geting some of the EZX
patches mainline ready. We now have a &lt;a href=&quot;https://svn.openezx.org/branches/linux-2.6-arm/&quot;&gt;svn
branch&lt;/a&gt; that contains patches
sitting directly on top of the arm git tree pxa branch. While working on this
I also started to submit
&lt;a href=&quot;http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=5079/1&quot;&gt;three&lt;/a&gt;
&lt;a href=&quot;http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=5082/1&quot;&gt;one-line&lt;/a&gt;
&lt;a href=&quot;http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=5091/1&quot;&gt;fixes&lt;/a&gt; upstream to get used to the
arm-linux workflow. 2 Are already in the git tree, one is acked and waiting in
incoming.&lt;/p&gt;

&lt;p&gt;I enjoyed the week. Smart people, good food and hacking on stuff you like. Life
could be that easy...&lt;/p&gt;</description>
	<pubDate>Thu, 12 Jun 2008 15:28:43 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Talk and Radio Interview at the LinuxTag 2008</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-23T00_37_09.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-23T00_37_09.txt</link>
	<description>&lt;p&gt;Next tuesday I'll be on my way to Berlin for the
&lt;a href=&quot;http://www.linuxtag.org/2008&quot;&gt;LinuxTag&lt;/a&gt;. It will be some busy days between
giving a
&lt;a href=&quot;http://www.linuxtag.org/2008/de/conf/events/vp-mittwoch/vortragsdetails.html?talkid=12&quot;&gt;talk&lt;/a&gt;,
an &lt;a href=&quot;http://cms.radiotux.de/index2.php&quot;&gt;interview&lt;/a&gt; for Radio Tux and hanging out
at the booth of my &lt;a href=&quot;http://openmoko.com/&quot;&gt;ex-employer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Still I'm looking forward to it. This time I hopefully have some time to attend
the technically talks. I look at you kernel track. And let
&lt;a href=&quot;http://laforge.gnumonks.org/weblog/2008/05/21#20080521-lastminute_talk-linuxtag&quot;&gt;Harald&lt;/a&gt;
de-mystify the security of the micro waves around us.&lt;/p&gt;</description>
	<pubDate>Thu, 22 May 2008 22:37:09 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: SCM changes</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-09T16_24_40.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-09T16_24_40.txt</link>
	<description>&lt;p&gt;Over the last days I did some changes to the SCMs for my private projects. Some
got migrated from svn to git. Also some git repos changed the location. Please
refer to the overview websites if you run into trouble:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://svn.datenfreihafen.org/$PROJECT_NAME&quot;&gt;http://svn.datenfreihafen.org/$PROJECT_NAME&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://git.datenfreihafen.org/&quot;&gt;http://git.datenfreihafen.org/&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 09 May 2008 14:24:40 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Recent OpenEZX progress</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-09T01_27_11.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-09T01_27_11.txt</link>
	<description>&lt;p&gt;Since I left OpenMoko I have found some time to work on OpenEZX again. There are
two nice things that happened since then.&lt;/p&gt;

&lt;p&gt;The first one was that I got an 18bpp patch for all the second generation devices
working. At least pxafb and fbcon are working fine now. I still need to test X
more. :) The patch was from the gumstix patchset. Thank you guys.&lt;/p&gt;

&lt;p&gt;The second was the boot_usb 0.2.0 release. We use this little tool a lot and SVN
is stable most of the time. Especially after Daniel Ribeiro added support for
initrd, commandline and setting the machine ID a release was needed.&lt;/p&gt;</description>
	<pubDate>Thu, 08 May 2008 23:27:11 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: OpenMoko Framework Initiative goes live</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-09T00_40_32.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2008/05/#e2008-05-09T00_40_32.txt</link>
	<description>&lt;p&gt;Mickey already
&lt;a href=&quot;http://www.vanille-media.de/site/index.php/2008/05/05/openmoko-framework-initiative/&quot;&gt;blogged&lt;/a&gt;
about it. This is something we talked about a lot lately. Sometimes frustrated
sometimes with hope. It is something we never got right since the beginning.&lt;/p&gt;

&lt;p&gt;Ease the development of new applications and services. Build your kick ass stuff
on top of a good fundament. And if it does not give you what you need, extend
it. It's not like other commercial frameworks where you have to deal with what
you get. It's open, take it, extend it, send patches. :)&lt;/p&gt;

&lt;p&gt;Let's hope the framework team get the resources they need for getting it done. I
also have some private ideas how to contribute here. Once I have something ready
I let you know.&lt;/p&gt;

&lt;p&gt;As code is better then words, take a look at their
&lt;a href=&quot;http://git.freesmartphone.org/&quot;&gt;git repos&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 08 May 2008 22:40:32 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Which wifi chip drives the Spectec SDW-82{1,2,3} SDIO cards?</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/12/#e2007-12-10T18_28_12.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/12/#e2007-12-10T18_28_12.txt</link>
	<description>&lt;p&gt;Dear Lazyweb,&lt;/p&gt;

&lt;p&gt;I'm interested in SDIO wifi cards that could be supported within a 2.6 linux
kernel. Using them to add wifi connectivity to my EZX devices would be nice. EZX
devices are based on PXA270 with full SD or microSD slots.&lt;/p&gt;

&lt;p&gt;It would now be interesting to know if the &lt;a href=&quot;http://www.spectec.com.tw/wlan.htm&quot;&gt;Spectec SDIO
cards&lt;/a&gt; are based on the Atheros 6000
SDIO chip. OpenMoko is working on a &lt;a href=&quot;http://svn.openmoko.org/developers/sameo/patches/ar6k-atheros/&quot;&gt;GPL
driver&lt;/a&gt; for this
chip. That would hopefully reduce the amount of work to get it running on other
devices.&lt;/p&gt;

&lt;p&gt;So anybody knows more about the chip Spectec use?&lt;/p&gt;

&lt;p&gt;regards&lt;/p&gt;

&lt;p&gt;Stefan Schmidt&lt;/p&gt;</description>
	<pubDate>Mon, 10 Dec 2007 16:28:12 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Navilock BT-451 under linux and navit</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/11/#e2007-11-15T22_58_34.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/11/#e2007-11-15T22_58_34.txt</link>
	<description>&lt;p&gt;Bluetooth GPS reciever just rock. Small, easy to use, no cables and useable with
different devices. Once my day-by-day gadgets and notebook have all one build-in
I can get it of it, but that will take some time.&lt;/p&gt;

&lt;p&gt;So the toy is called BT-451 and has a u-blox ANTARIS4 SuperSense chip build-in.
Getting it to work is easy:&lt;/p&gt;

&lt;pre&gt;
hcitool scan
rfcomm connect hci0 
&lt;/pre&gt;

&lt;p&gt;After this you have a serial port (perhaps /dev/bluetooth/rfcomm/0) where all
the NMEA data comes in. Just give this one to &lt;a href=&quot;http://gpsd.berlios.de/&quot;&gt;gpsd&lt;/a&gt;
and you can use it in multiple applications. I also heard that this is even
easier with &lt;a href=&quot;http://folks.o-hand.com/iain/gypsy/&quot;&gt;gypsy&lt;/a&gt;. No more need to deal
with rfcomm yourself. That screams for a test once it is in debian.&lt;/p&gt;

&lt;p&gt;There is some more stuff I like about the BT-451. Once it had a fix I was able
to put it in a pocket of my jacket, sit in my car and it still gets the
position. Tested with driving home with my notebook on the seat next to be and
tracking the drive with &lt;a href=&quot;http://navit.sourceforge.net/&quot;&gt;navit&lt;/a&gt;.
&lt;a href=&quot;http://totalueberwachung.de/blog/&quot;&gt;Daniel&lt;/a&gt; also discovered that the USB plug is
not only for charging, but also shows up as ACM modem and spies out the NMEA on
/dev/ttyACM0. And once connected via USB it also works without a battery.&lt;/p&gt;

&lt;p&gt;The above mentioned navit is one of the most promising stuff I like to use
regulary with the GPS. It's a navigation system with a routing engine. Not only
download maps and show them, but do real routing with vector based maps. As we
all know maps are problematic. &lt;a href=&quot;http://www.openstreetmap.org/&quot;&gt;OpenStreetMap&lt;/a&gt; is
working on this problem. Until this is useable everywhere I like to have some
commercial maps I can route with on my linux system. Don't expect some vendor
has got this ready. :(&lt;/p&gt;

&lt;p&gt;But FOSS has, as almost, an answer for me. Navit support different vector maps
for commercial CDs. Just buy such one, copy the files and navit handles the
rest. Great.&lt;/p&gt;

&lt;p&gt;No I just need to test the navit setup on my Neos. :)&lt;/p&gt;</description>
	<pubDate>Thu, 15 Nov 2007 20:58:34 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Catching up with OpenEZX again</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/09/#e2007-09-03T14_15_44.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/09/#e2007-09-03T14_15_44.txt</link>
	<description>&lt;p&gt;It's a long time since I really spent some hours on doing OpenEZX only work. A
lot great stuff happened since then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Alex Zhang worked out some of the differences on the sweet A1200 device. He
offered patches to get at least usbnet working with the EOC chip and better
support for the 18bpp framebuffer and touchscreen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Daniel Ribeiro finally got the ezx-asoc driver working and was able to do a
voice call. The first with our 2.6 based kernel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Antonio Ospite made some nice progress in getting the GPS information on the
gps-enabled A780's from mux14 and worked out the used protocol. This mean we
are close before having full NMEA output from it and feed it into gpsd which
makes the whole informations available to other applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Motivated from all this great work Mickey and me spent more or less a full day
with OpenEZX work. Catching up with the newest stuff and getting OpenEmbedded
integration into an even better shape as it already was. (Thanks for koen on
taking care of this most of the time).&lt;/p&gt;

&lt;p&gt;Besides this there was some ongoing work to make OpenMoko more useful on
devices with QVGA screens. Based on the work Philipp Zabel we started an QVGA
theme. Some artwork still needs a bit rework but it looks already pretty good.
Mickey made some pictures and will link them from his on blog entry I guess.&lt;/p&gt;

&lt;p&gt;Once wyrm has merged the outstanding patches into the svn and we have done more
work on the QVGA theme we will go for an snapshot release for with kernel and
rootfs.&lt;/p&gt;</description>
	<pubDate>Mon, 03 Sep 2007 12:15:44 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Mobile Developer Days 2007 are over</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/09/#e2007-09-03T13_53_16.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/09/#e2007-09-03T13_53_16.txt</link>
	<description>&lt;p&gt;Currently I'm with Mickey in a train back to Germany from Denmark. The last days I
participated the Mobile Developer Days 2007. In contrast to the most other
conferences I attend this one was not only about FOSS but more about developing
software for mobile devices. Write applications in Python, Java, Open C,
examples for location enabled applications, VoIP and rapid prototyping for
artist are just a small extract of the program.&lt;/p&gt;

&lt;p&gt;Mickey and me gave our talks about Open{Moko,EZX} and presented the community
view in discussions.&lt;/p&gt;

&lt;p&gt;Besides the different focus the event was also a lot smaller then the ones I
usually attend. Around 40 people. So most of the attendees were speaker as well.
Mixed up with the fact that many of the people are doing research in this area
gave the conference a academic touch.&lt;/p&gt;

&lt;p&gt;In the last weeks Mickey and me pondered if we really should attend as our
travel and working schedules are pretty full, we did not got plane tickets and
had to go two 10 hours train rides, etc.&lt;/p&gt;

&lt;p&gt;In the end I'm happy we decided to go. Besides the talks especially the small
group of people was a good place for interesting and informative discussions.
Coming from the FOSS world and doing not much business besides OpenMoko it was
quite interesting for me what people with a more commercial background are doing
with mobile devices and what benefits and drawbacks they see in using FOSS for
example.&lt;/p&gt;

&lt;p&gt;During the days and nights we had some working session with normal OpenMoko stuff
but also some hours on catching up with OpenEZX stuff. But that's another
blogpost.&lt;/p&gt;</description>
	<pubDate>Mon, 03 Sep 2007 11:53:16 +0000</pubDate>
</item>
<item>
	<title>Stefan Schmidt: Conferences ahead. Going to RMLL and GUADEC.</title>
	<guid>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/07/#e2007-07-07T19_02_08.txt</guid>
	<link>http://www.datenfreihafen.org/~stefan/weblog/archives/2007/07/#e2007-07-07T19_02_08.txt</link>
	<description>&lt;p&gt;After having a busy time with university, OpenMoko and getting my partime
freelance going I now are getting more relaxed and looking forward to the next
two weeks which I will spend mostly on two conferences.&lt;/p&gt;

&lt;p&gt;Next week starts with my flight to France. I'm giving a
&lt;a href=&quot;http://www.rmll.info/article136.html?lang=en&quot;&gt;talk about free software on mobile
phones&lt;/a&gt;. It covers mostly
&lt;a href=&quot;http://www.openezx.org/&quot;&gt;OpenEZX&lt;/a&gt; and
&lt;a href=&quot;http://www.openmoko.org&quot;&gt;OpenMoko&lt;/a&gt;, but also tries to give an overview about
other projects in this area. As my talk is at the first day I'm looking forward
for the other talks, visit Amiens and doing having some time for OpenMoko
related work.&lt;/p&gt;

&lt;p&gt;Coming back from France means having a half day and a night at home and jumping
over to England again. &lt;a href=&quot;http://www.guadec.org/&quot;&gt;GUADEC&lt;/a&gt; will be full of meeting
people, having fun and making plans for the upcoming month. I'll fly together
with Daniel and his girlfriend and meet up Mickey in Birmingham. But besides
OpenMoko related discussions I really looking forward to meet people behind
Gnome.&lt;/p&gt;</description>
	<pubDate>Sat, 07 Jul 2007 17:02:08 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: My reason for being away from OpenEZX</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/12/04#20061204-openezx_openmoko</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/12/04#20061204-openezx_openmoko</link>
	<description>&lt;p&gt;
This post should have been posted months ago, but only since very recently I'm
allowed to talk about the real reason.  You might have read about it, if you
read my full blog, but I'm posting this again in the 'a780' category to make it
appear on &lt;a href=&quot;http://planet.openezx.org/&quot;&gt;planet.openezx.org&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I've been hired to be key element in the design and implementation of the &lt;a href=&quot;http://www.openmoko.com/&quot;&gt;OpenMoko&lt;/a&gt; platform and the first device it
supports: The Neo1973 phone.  While there is no provision in the contract
preventing me from working on the OpenEZX project at all, this assignment has
just sucked up all available time like a vacuum cleaner.
&lt;/p&gt;
&lt;p&gt;
To OpenEZX developers, users and supporters: Please be assured that most of the
work done on OpenMoko will eventually benefit OpenEZX quite a lot.  So please
stay tuned, and concentrate on the low-leve device-specific issues that need to
be resolved with the Motorola EZX hardware :)
&lt;/p&gt;</description>
	<pubDate>Mon, 04 Dec 2006 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: A1200 LSM / SELinux update</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/09/15#20060915-a1200-lsm</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/09/15#20060915-a1200-lsm</link>
	<description>&lt;p&gt;
James Morris got quite interested when I told him that the A1200 uses SELinux
to lock out the users (owners!) from their own phone ;)  So we both did some
further analysis, and it turned out that Motorola had actually released the
source code to their own policy engine (MotoAC) with the A1200 kernel sources
on &lt;a href=&quot;http://opensource.motorola.com/&quot;&gt;opensource.motorola.com&lt;/a&gt;, whcih
is good.
&lt;/p&gt;
&lt;p&gt;
Still we didn't understand why you would use an unmaintained, at least three
years old version of SELinux to base a forked policy engine on it - but
obviously this is the world of Free Software and everybody is allowed to make
his own decisions.
&lt;/p&gt;
&lt;p&gt;
I've also catched up with the A1200 in general and found out that people have
already managed to flash their own kernel into it, whcih is great. I wish I had
more time to put into &lt;a href=&quot;http://openezx.org/&quot;&gt;OpenEZX&lt;/a&gt; at this point,
turning it into something that is actually useful.  &lt;i&gt;HINT: Skilled volunteers
needed&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://pavelmachek.livejournal.com/28110.html&quot;&gt;Pavel Machek apparently
got one&lt;/a&gt; and is annoyed by the restrictive SELinux policies.  By now I'm quite sure that it's not all too difficult to get rid of them ;)
&lt;/p&gt;</description>
	<pubDate>Fri, 15 Sep 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: ROKR E2 Linux Phone review</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/09/01#20060901-rokr_e2-review</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/09/01#20060901-rokr_e2-review</link>
	<description>&lt;p&gt;
There has been an extensive &lt;a href=&quot;http://www.osnews.com/story.php?news_id=15678&amp;page=1&quot;&gt;review of the Linux based Motorola ROKR E2 phone&lt;/a&gt; at osnews.com.
&lt;/p&gt;</description>
	<pubDate>Fri, 01 Sep 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Wanted: Author and/or sources for EZX "qonsole" application</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/08/29#20060829-qonsole-author-sources</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/08/29#20060829-qonsole-author-sources</link>
	<description>&lt;p&gt;
The original author of the KDE &quot;Konsole&quot; program, Lars Doelle, &lt;a href=&quot;http://www.motorolafans.com/index.php?name=News&amp;file=article&amp;sid=79&quot;&gt;is
actively looking for the Author and/or the source code of the &quot;qonsole&quot;
program&lt;/a&gt;, a terminal program for the Motorola EZX platform that is
apparently derived from GPL licensed Konsole.
&lt;/p&gt;
&lt;p&gt;
Since the legal status of qonsole never was clear, I always refused to host it
on any of the &lt;a href=&quot;http://www.openezx.org/&quot;&gt;OpenEZX&lt;/a&gt; project resources.
I didn't really know of any GPL violation going on, but had a somewhat strange
feeling.
&lt;/p&gt;
&lt;p&gt;
If any of you has information on where the qonsole program originates, please
make sure to inform either Lars or me about it.  We know by now that it
appears to originate from some chinese or singapore mobile phone forums.
&lt;/p&gt;
&lt;p&gt;
It's good to see more software authors of GPL licensed programs actually caring
about enforcement of their license :)  I sincerely hope this can be resolved and
qonsole either distributed in gpl-compliant way, or a re-implementation be found/made.
&lt;/p&gt;</description>
	<pubDate>Tue, 29 Aug 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Motorola ROKR E2</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/07/10#20060710-rokr_e2</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/07/10#20060710-rokr_e2</link>
	<description>&lt;p&gt;
I've found the ROKR E2, which is yet another Motorola Linux GSM/GPRS phone
exclusively sold in china so far.  Apparently since June 22nd, so it's a quite
new thing.  It's very different from the A7xx/E680x series in that it doesn't have a
touch screen, but many more buttons.  Also, it features a full-size SD card
slot, which makes it theoretically SDIO compatible (I'm pretty sure they use some SDIO compatible SD host controller in there).
&lt;/p&gt;
&lt;p&gt;
Let's see whether I can work with the Chinese language firmware.  I already
found out how to get it into boot-loader flash mode (by pressing the camera
button on the upper right side while powering the device up).  It looks
completely different than the blob on the A780/E680, but that doesn't really
mean anything.
&lt;/p&gt;
&lt;p&gt;
As of now, I don't have any technical proof that the device runs Linux.  I'll
probably not find time to play with this toy before I get back to Germany.
But if anyone has hints or further information on how to dig deeper into the
ROKR E2, don't hesitate to send me an email about your findings.
&lt;/p&gt;</description>
	<pubDate>Mon, 10 Jul 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Motorola A728 and A732</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/07/08#20060708-a728-a732</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/07/08#20060708-a728-a732</link>
	<description>&lt;p&gt;
Just next to my hotel, there is a book store that also sells mobile phones.
Among the Motorola models are the A728 and A732, both Linux based.  They're
about 160EUR each.  I don't yet know whether that is a good price, but now
after checking with some online shops I think it is.
&lt;/p&gt;
&lt;p&gt;
So I guess I'll get one of each in order to investigate whether we can hack
them from an OpenEZX point of view.  Also, this finally allows me to obtain
proof whether they're still shipping GPL incompliant or not.
&lt;/p&gt;
&lt;p&gt;
I'll continue to look for an A768 and E895. Let's see whether I'll find some
time to do some more serious 'shop browsing'.
&lt;/p&gt;</description>
	<pubDate>Sat, 08 Jul 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Some small A780 progress</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/06/23#20060623-ezx6-mux_cli</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/06/23#20060623-ezx6-mux_cli</link>
	<description>&lt;p&gt;
I've continued my work on porting the ts07.10 from Motorola's mux_cli to 2.6.x.
It now compiles, although I have no idea whether it actually works as expected.
&lt;/p&gt;
&lt;p&gt;
Since Linux 2.5/2.6 has undergone quite some sophisticated changes in both
scheduling/context area (no more struct task_queue) as well as the tty layer
(dynamically allocated and managed flip buffers, etc), the task has been a bit
more challenging than the usual copy+paste+minor_fixup task.
&lt;/p&gt;
&lt;p&gt;
I'll also be releasing the -ezx6 kernel soon (2.6.17 based) in the next couple
of days, where I plan to merge mickey's various driver bits (LED, backlight,
keypad fixes) and the above-mentioned mux_cli.
&lt;/p&gt;</description>
	<pubDate>Fri, 23 Jun 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Interview on OpenEZX at LWN.net</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/06/12#20060612-lwn-interview</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/06/12#20060612-lwn-interview</link>
	<description>&lt;p&gt;
For those interested, &lt;a href=&quot;http://lwn.net&quot;&gt;lwn.net&lt;/a&gt; is featuring the
first part of an &lt;a href=&quot;http://lwn.net/Articles/186972/&quot;&gt;interview withe me
on the status of the OpenEZX project&lt;/a&gt;.  The way longer pert of the interview
on &lt;a href=&quot;http://gpl-violations.org/&quot;&gt;gpl-violations.org&lt;/a&gt; will be posted
within the next two weeks.
&lt;/p&gt;
&lt;p&gt;
Now let's hope that I'll be able to fix that nasty netfilter bug that I'm
hunting for weeks now and get back to OpenEZX kernel hacking...
&lt;/p&gt;</description>
	<pubDate>Mon, 12 Jun 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Not working on OpenEZX at the moment</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/06/07#20060607-busy</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/06/07#20060607-busy</link>
	<description>&lt;p&gt;
Due to lots of other &quot;real life&quot; and &quot;real work&quot; constraints, I'm not able to
work on OpenEZX for at least another week :(
&lt;/p&gt;</description>
	<pubDate>Wed, 07 Jun 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Porting Motorola's TS07.10 MUX driver to 2.6.x</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/27#20060527-mux_cli</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/27#20060527-mux_cli</link>
	<description>&lt;p&gt;
Since Motorola has finally released the source code for the mux_cli.o and
gprsv.o modules of their 2.4.17 kernel on &lt;a href=&quot;http://opensource.motorola.com&quot;&gt;opensource.motorola.com&lt;/a&gt;, I've started
to clean them up and port them to 2.6.x.
&lt;/p&gt;
&lt;p&gt;
Due to the questionable coding style of that original source code, and the many
interface changes in the TTY layer between 2.4.x and 2.6.x, this turns out to
be a bigger task than expected.  With some luck, I'll find some time tomorrow
at &lt;a href=&quot;http://ph-neutral.org/&quot;&gt;ph-neutral&lt;/a&gt; to finish the initial port.
&lt;/p&gt;
&lt;p&gt;
Once that code works on 2.6.x, I already have a quite long list of TODO's.
First of all, the lower-layer interface needs to be cleaned up.  Ideally, the
whole TS 07.10 implementation is a TTY line discipline that can be stacked on
top of any UART, together with a virtual/fake UART that makes use of the
Motorola specific TS07.10 USB transport.
&lt;/p&gt;</description>
	<pubDate>Sat, 27 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Touch-screen driver for A780/E680, lots of other progress</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/19#20060519-touchscreen</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/19#20060519-touchscreen</link>
	<description>&lt;p&gt;
As of today, the OpenEZX project has a working touch screen driver.  I've been
testing this with the Kdrive X11 server of OpenEmbedded, and it seems to work
nicely on my A780 after calibrating with ts_calibrate.
&lt;/p&gt;
&lt;p&gt;
This is such a major step forward, since the touch-screen driver requires a
functional PCAP2 driver, which in turn comprises working SPI support, as well as some
tricky SPI-during-hardirq for interrupt chaining.
&lt;/p&gt;
&lt;p&gt;
If you're interested in giving it a try, there's the &lt;a href=&quot;http://people.openezx.org/laforge/kernel/patches-2.6.16-2.6.16.13-exz6.tar.bz2&quot;&gt;the
-ezx6 quilt patchset&lt;/a&gt; including all this work.
&lt;/p&gt;
&lt;p&gt;
Also, thanks to the work by Michael 'mickey' Lauer, I've managed to set up an
&lt;a href=&quot;http://www.openembedded.org/&quot;&gt;OpenEmbedded&lt;/a&gt; environment to build a
distribution for OpenEZX.  You can find the first &lt;a href=&quot;http://people.openezx.org/laforge/a780oe/&quot;&gt;bunch of packages&lt;/a&gt; as well
as &lt;a href=&quot;http://people.openezx.org/laforge/a780-openzaurus-root-20060518.tar.bz2&quot;&gt;a
root filesystem that you can put on TransFlash&lt;/a&gt; on my OpenEZX developer
pages.
&lt;/p&gt;
&lt;p&gt;
The availability of a OE based root filesystem, a kernel with keypad,
touch-screen, usbnet and framebuffer support actually means that all the [G]UI
people can now start to work on making their favourite UI system work on OpenEZX.
Given the amount of interest I've seen in this area, I'm confident that I still don't
(yet) need to dive into UI development myself but can stay with the more
technical low-level stuff.
&lt;/p&gt;
&lt;p&gt;
Speaking of which, I've also hacked a nice tool called &lt;a href=&quot;http://svnweb.openezx.org/cgi-bin/viewcvs.cgi/trunk/src/gpiotool/&quot;&gt;gpiotool&lt;/a&gt;,
using which you can read/write GPIO configuration as well as individual GPIO
pins from userspace.  If I had written this earlier on, it would have saved a
lot of time and hassle.  But then, it's always hard pushing yourself to develop
code that _just_ aids development and doesn't really add any functionality
itself.
&lt;/p&gt;
&lt;p&gt;
Using this tool I'm now investigating the AP/BP interaction (handshake). Let's
hope that we can actually use the phone as a phone really soon.
&lt;/p&gt;</description>
	<pubDate>Fri, 19 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Motorola launching opensource.motorola.com</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/15#20060515-motorola-opensource</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/15#20060515-motorola-opensource</link>
	<description>&lt;p&gt;
Motorola seems to be making some progress internally.  Today they've announced
the availability of &lt;a href=&quot;http://opensource.motorola.com/&quot;&gt;opensource.motorola.com&lt;/a&gt;, a web site
dedicated to free and open source software used and developed in/by Motorola.
This is apparently also the portal where they are starting to publicize the
source code for their Linux based Smartphones.
&lt;/p&gt;
&lt;p&gt;
While the source code there is not complete in any way [yet], it actually
includes the kernel sources for the A1200 phone, too.  After a quick read
through it, it seems to be very similar to the A780 code (because of a very
similar hardware architecture).
&lt;/p&gt;
&lt;p&gt;
Some of the differences are:
&lt;ul&gt;
&lt;li&gt;FOTA (Flash on-the-air)&lt;/li&gt;Basically a function by which network operators
can modify the flash memory of your phone, thereby forcing software updates
onto you.  Not something completely new in the GSM world, but something that always gives me the creeps as a security professional.
&lt;li&gt;Power Management&lt;/li&gt;Apparently the power management capabilities were extended to provide better battery life time.
&lt;li&gt;Minor differences in boot loader / kernel handover&lt;/li&gt;
&lt;li&gt;SE Linux&lt;/li&gt; Yes, they're actually using SE Linux features on a phone.  I haven't yet tried to figure out for what, but usually you would assume that the mobile phone vendors/operators use it to lock their users out of the phone, rather than protecting the users from the evil outside world.
&lt;/ul&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 15 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: A full day of EZX driver development</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/14#20060514-slow-progress</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/14#20060514-slow-progress</link>
	<description>&lt;p&gt;
Today wasn't exactly the most efficient day of development I ever had. 
Basically, the amount of progress made after 13 hours of hacking in the area of
EZX device drivers is extremely slow.  It didn't even help to not eat, not
cook, and not get out of the bed for the whole day.  Basically I started with
&quot;let's fix this quickly before breakfast&quot;, but it wasn't fixed even when I stopped
working at 11pm.
&lt;/p&gt;
&lt;p&gt;
My new SPI driver seems to be working fine, but I have massive problems with
all the PCAP drivers.  This is mainly touch-screen, but also ADC for reading
battery voltage, etc.  Somehow I cannot get it to produce any IRQ's.
&lt;/p&gt;</description>
	<pubDate>Sun, 14 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Debian sarge root filesystem image for EZX phones</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/12#20060512-sarge-root</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/12#20060512-sarge-root</link>
	<description>&lt;p&gt;
In order to get other developers going quickly, I have now provided a Debian
sarge (arm) root filesystem and a corresponding kernel plus instructions.
&lt;/p&gt;
&lt;p&gt;
Anyone who wants to see a stock Debian installation boot on his EZX phone, 
have a look at the files published &lt;a href=&quot;http://people.openezx.org/laforge/&quot;&gt;here&lt;/a&gt;.
&lt;/p&gt;</description>
	<pubDate>Fri, 12 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: OpenEZX virtual host running</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/11#20060511-vhost</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/11#20060511-vhost</link>
	<description>&lt;p&gt;
I've finally found the time to configure the OpenEZX virtual host.  This means
that I now have absolutely no problems to hand out developer accounts on
openezx.org.  I've also moved the EZX related subversion repository from
gnumonks.org to this machine.
&lt;/p&gt;
&lt;p&gt;
If you're working on free software for Motorola EZX smartphones, and are interested
in getting some account where you can host your project(s) in svn / git, dump
some code on http/ftp or just want a openezx.org email address, please let me know.
&lt;/p&gt;</description>
	<pubDate>Thu, 11 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Working on Bluetooth and GPRS/GSM support</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/05/11#20060511-bt-gprs</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/05/11#20060511-bt-gprs</link>
	<description>&lt;p&gt;
I've been working a bit on getting Bluetooth and GPRS/GSM support into my 2.6.x
based kernel for the A780.  Both are quite a bit challenging, even more than I initially thought so.
&lt;/p&gt;
&lt;p&gt;
As for Bluetooth: In theory there is a bcm2035 chip, compatible to the
Bluetooth HCI specification, attached to ttyS1 (BTUART) of the PXA270.
However, there are some power management related additional signals hooked up
to GPIO signals.  I think I'm configuring them right, though.  Also, there is
some indication that the bcm2035 actually requires a bit of firmware loaded
into it.  Without a vendor data sheet and with only some stripped proprietary
Motorola dload program this will require quite a bit more of investigation.
&lt;/p&gt;
&lt;p&gt;
My initial 'demand' for Bluetooth would have been the possibility to use my
Apple BT keyboard with the framebuffer console, providing a local console in
case telnet dies for some reason.
&lt;/p&gt;
&lt;p&gt;
On the GSM/GPRS front (yes, we actually want to use the phone as a phone
sometimes), I've been wading through disassembled gprsv.o and mux_cli.o code.
Both re-implementations are progressing slowly, but steadily.
&lt;/p&gt;
&lt;p&gt;
The easier part seems to be mux_cli.o.  I've now started to write some libusb
based userspace code to test a ts07.10 implementation in userspace via the USB
endpoints to the BP. Once the userspace code seems to be working, I can work
on a kernel level implementation.  The good thing about this is that there are
actually quite a few GSM phones that support this multiplex on their serial
port. So the resulting mux/demux driver will actually be useful for more
people, not just Motorola Linux smartphone owners.
&lt;/p&gt;</description>
	<pubDate>Thu, 11 May 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: A780/E680: SPI driver using hardware SPI controllers working</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/29#20060429-ezx_spi</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/29#20060429-ezx_spi</link>
	<description>&lt;p&gt;
So apparently there is no obvious reason for Motorola's driver using bit-banging
rather than the controllers inside the PXA270.  I now have a modified Motorola
driver on 2.6.16.5 running that uses the SPI controller for the bus to PCAP2.
Getting my own driver running should therefore be quite fast now.
&lt;/p&gt;
&lt;p&gt;
I've also hacked a bit on the keyboard side, although it's not working yet.
&lt;/p&gt;</description>
	<pubDate>Sat, 29 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Working on new SPI/SSP drivers for OpenEZX kernel</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/27#20060427-ezx_spi</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/27#20060427-ezx_spi</link>
	<description>&lt;p&gt;
One of the fundamental interfaces on the Motorola EZX phones is SPI, which
interconnects (among others) the PCAP2 peripheral with the PXA270.  Motorola
ships their 2.4.20 kernel with some ugly piece of spaghetti code driver for it.
Apparently they've had difficulties driving the PXA27x SPI controller, and in
the end decided to just 'bit-bang' the signals over GPIO.  Obviously that's
inefficient and CPU-intensive.  I hope there is no real hardware problem
preventing the use of the embedded SPI controllers.
&lt;/p&gt;
&lt;p&gt;
First I started writing a driver against arch/arm/mach-pxa/ssp.c, only to
discover later that this code actually predates (and therefore doesn't use) the
generic drivers/spi/ interface.  Since I'm a fan of generic interfaces, I chose
to write a PXA generic driver for the drivers/spi interface, plus some EZX
specific glue code for it.
&lt;/p&gt;
&lt;p&gt;
One of the interesting bits is that the PCAP2 can interrupt the PXA, and it
then acts as an external interrupt controller, whose registers you can access
over SPI.  So a PCAP2 interrupt can mean that some touch-screen event happened,
that the headphone, USB or microphone jack state has changed, etc.  All those
various real interrupt sources need to be fed to individual distinct drivers
(audio, touch-screen, USB). The Motorola kernel uses an ugly kludge of callback functions that those drivers can register with the SSP/SPI driver.
&lt;/p&gt;
&lt;p&gt;
So in my new driver, I choose to actually model that bit of PCAP2 functionality
as an external interrupt controller.  This way the actual sound/touch-screen
driver can just do request_interrupt() like they usually do.
However, this means that I need to access SPI from within hardirq
context, which again doesn't mix well with the architecture of the drivers/spi
code (which is asynchronous and queues requests).  So I need to implement a
couple of synchronous SPI functions in addition to that.
&lt;/p&gt;
&lt;p&gt;
This is now a lot of code, and I'm about to test and debug it, which is
expected to be time-consuming and boring.  I'll post a status update as soon as
there's more information.
&lt;/p&gt;</description>
	<pubDate>Thu, 27 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: OpenEZX: USB Ethernet support working</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/22#20060422-kernel26-udc</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/22#20060422-kernel26-udc</link>
	<description>&lt;p&gt;
After lots of hacking at FISL 7.0 in Porto Alegre, I've managed to get the
PXA27x USB device controller to work in USB Ethernet emulation to work.   I can now
actually ping and telnet to the 2.6.16.5-running E680, using a debootstrapped
Debian/ARM on SD-Card.
&lt;/p&gt;
&lt;p&gt;
I'll publish the patches in one or two days, when everything has stabilized a
bit, and the debugging code has been removed.
&lt;/p&gt;
&lt;p&gt;
Also, at the event here, I've managed to convince quite a number of Free
Software people that those Linux smartphones are actually quite interesting
toys.  Most notably, Keith Packard of Xorg fame has indicated he would probably
be getting one and working on a lightweight UI.  This motivates me even more to have
a stable and fully working kernel environment finished soon.
&lt;/p&gt;</description>
	<pubDate>Sat, 22 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: State of OpenEZX 2.6.x kernel development</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/17#20060417-kernel26-status</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/17#20060417-kernel26-status</link>
	<description>&lt;p&gt;
During my two days of &lt;a href=&quot;http://openezx.org/&quot;&gt;EZX phone hacking&lt;/a&gt;, I've
made significant progress.  Probably the most important discovery was how to
get a serial console on the USB plug, enabling other people to do further kernel
development without physically modifying the phone  - but it's still a long way
to go.
&lt;/p&gt;
&lt;p&gt;
A current list of TODO's:
&lt;ul&gt;
&lt;li&gt;find out why kernel doesn't boot with CONFIG_IWMMXT&lt;/li&gt;
&lt;li&gt;find out why E680 SD/MMC works, but not A780 TransFlash&lt;/li&gt;
&lt;li&gt;debug and fix pxa27x_udc in order to provide usbnet (nfsroot!)&lt;/li&gt;
&lt;li&gt;debug and fix mtd support in order to be able to access system flash&lt;/li&gt;
&lt;li&gt;port and cleanup video and sound drivers&lt;/li&gt;
&lt;li&gt;port Motorola-specific SSP/SPI drivers into 2.6.x generic SPI stack&lt;/li&gt;
&lt;li&gt;port all the driver specific dpm bits from Motorola's 2.4.20 to 2.6.x&lt;/li&gt;
&lt;li&gt;clean up the already working keypad drivers&lt;/li&gt;
&lt;li&gt;finish re-implementation of mux_cli and grpsv modules&lt;/li&gt;
&lt;li&gt;look into re-implementing the proprietary flash  fs drivers, though I don't think
    that is particularly important, we could run our code 100% on SD/TransFlash&lt;/li&gt;
&lt;li&gt;create a modified bootloader that allows for multi-boot configurations.  It could
    actually include SD/TF support for booting kernels from there.&lt;/li&gt;
&lt;li&gt;check how the other (later) Motorola Linux smartphones differ and merge their
    device-specific code into our 2.6.x kernel tree&lt;/li&gt;
&lt;li&gt;last, but not least, we need to do something about userspace.  I'm not a GUI guy
    at all, and I haven't yet thoroughly investigated all the existing projects like
    OPIE, etc. I'm sure once the hardware support is there, some more GUI-savvy people
    will do something in that area, though.
&lt;/li&gt;&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
So why am I stating this here? Because it's up to _you_ to help and take care
of one of these tasks if we want to see the dream of having a fully-free
software E680/A780 before they get phased out ;)
&lt;/p&gt;</description>
	<pubDate>Mon, 17 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: 2.6.16.5 boots on EZX phones</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/17#20060417-ezx-2616</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/17#20060417-ezx-2616</link>
	<description>&lt;p&gt;
I've finally managed to get a 2.6.x kernel running on the Motorola A780 and
E680.  Apparently the problems I encountered are part of 2.6.14 (which was
current mainline when I started the port).  After merging my patches into
2.6.16.5, everything suddenly worked fine ;)
&lt;/p&gt;
&lt;p&gt;
So what I've got now:
&lt;ul&gt;
&lt;li&gt;kernel 2.6.16.5 booting on both A780 and E680&lt;/li&gt;
&lt;li&gt;USB host controller towards Neptune BP working&lt;/li&gt;
&lt;li&gt;USB device controller partially working&lt;/li&gt;
&lt;li&gt;MTD support for all flash partitions&lt;/li&gt;
&lt;li&gt;SD/MMC support on E680 (TransFlash on A780 not working yet)&lt;/li&gt;
&lt;li&gt;Framebuffer working on both models, with nice 4x6 tiny font&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
The main obstacle now is that TransFlash on the A780 is not working yet. The
A780 is actually more important than the E680.  For some strange reason, all
the response bytes from the TF card appear to be zero (at least that's what the
response FIFO of the PXA27x embedded SD/MMC controller reports).  I've already tried a lot, but am a bit clueless after many hours of trial and error :(
&lt;/p&gt;</description>
	<pubDate>Mon, 17 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Running a serial console on the A780</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/16#20060416-ezx-sercons-hacking</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/16#20060416-ezx-sercons-hacking</link>
	<description>&lt;p&gt;
After about half a day of trial and error (which was related to a totally
different problem, as it turned out), I now have a 2.4.20-based kernel with
working serial console for my A780.  Unfortunately the console requires
soldering four wires onto test pads of the PCB - something that I achieved with
0.1mm diameter magnet wire (Kupferlackdraht for you Germans).  The magnet wires
are thin enough to get them through the TransFlash slot to the outside, without
having to modify the case.
&lt;/p&gt;
&lt;p&gt;
If you're interested in a bootup log captured from the STUART, check &lt;a href=&quot;http://svn.gnumonks.org/trunk/a780/src/stuart-test/stuart.S&quot;&gt;this one&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The rest of the day was spent debugging why my (still 2.6.14 based) kernel
doesn't want to boot on the machine.  As it turns out, booting stops  somewhere
in the early initialization after head.S has called &lt;i&gt;decompress_kernel()&lt;/i&gt;.
Debugging this problem has also caused me to actually write some ARM assembly
code.  For years I'm reading and debugging ARM code, but I've never actually
written ARM asm from scratch.  So my assembly code now prints one character for every stage of the booting process (ABCDEFGHI) and then stops.  At the time the 
C code should print its first character, the device is already gone.  So maybe something with the setup of the registers according to C calling convention, or setup of stack/heap is erroneous.
&lt;/p&gt;
&lt;p&gt;
Interestingly, that startup code has not really changed all that much from
2.4.20 (which runs) and my 2.6.14 based kernel.
&lt;/p&gt;
&lt;p&gt;
It's not unlikely that I'm [again] hunting a totally different problem.  I'll probably merge my patches into 2.6.17-rc1 and see whether that works...
&lt;/p&gt;</description>
	<pubDate>Sun, 16 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Obtaining Asian Motorola EZX phones in Europe</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/11#20060411-motorola_asian_phones</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/11#20060411-motorola_asian_phones</link>
	<description>&lt;p&gt;
A couple of days ago, &lt;a href=&quot;http://gnumonks.org/~laforge/weblog/2006/04/08#20060408-looking_for_linux_phones&quot;&gt;I
was looking for a way to obtain Motorola Linux Smartphones in Europe&lt;/a&gt;, i.e.
those plenty of models that are not officially sold anywhere but China and
other areas of Asia.
&lt;/p&gt;
&lt;p&gt;
I've now found a suitable importer specialized in importing Asian phones into
the European market.  In case you're interested, feel free to contact me for
more details.  The phones range between EUR 180 and EUR 300, but there's a
minimum order of five phones. I'll probably be ordering around early may.
&lt;/p&gt;</description>
	<pubDate>Tue, 11 Apr 2006 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: planet.openezx.org launched</title>
	<guid>http://laforge.gnumonks.org/weblog/2006/04/08#20060408-planet</guid>
	<link>http://laforge.gnumonks.org/weblog/2006/04/08#20060408-planet</link>
	<description>&lt;p&gt;
In the tradition of my main project netfilter (which has a &lt;a href=&quot;http://planet.netfilter.org/&quot;&gt;planet.netfilter.org&lt;/a&gt;, I've now also
opened a planet site for the &lt;a href=&quot;http://openezx.org&quot;&gt;OpenEZX&lt;/a&gt; project at
&lt;a href=&quot;http://planet.openezx.org/&quot;&gt;planet.openezx.org&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This should give users the ability to stay up to date with current developments
in the Motorola Linux smartphone hacking community.
&lt;/p&gt;
&lt;p&gt;
If you know of any feeds that I should add to this planet, please let me know
&lt;/p&gt;</description>
	<pubDate>Sat, 08 Apr 2006 02:00:00 +0000</pubDate>
</item>

</channel>
</rss>

