<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SIGQUIT</title>
	<atom:link href="http://sigquit.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sigquit.wordpress.com</link>
	<description>... and core dumped</description>
	<lastBuildDate>Sat, 18 May 2013 18:27:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sigquit.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>SIGQUIT</title>
		<link>http://sigquit.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sigquit.wordpress.com/osd.xml" title="SIGQUIT" />
	<atom:link rel='hub' href='http://sigquit.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ModemManager speaks MBIM</title>
		<link>http://sigquit.wordpress.com/2013/04/17/modemmanager-speaks-mbim/</link>
		<comments>http://sigquit.wordpress.com/2013/04/17/modemmanager-speaks-mbim/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 13:42:10 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNOME Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[freedesktop]]></category>
		<category><![CDATA[libmbim]]></category>
		<category><![CDATA[MBIM]]></category>
		<category><![CDATA[ModemManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=534</guid>
		<description><![CDATA[MBIM! Winter is over, Spring is here, and along with the heat, rains and insects, ModemManager arrives with support for modems using the new MBIM protocol, available through the new cdc-mbim kernel driver in Linux &#62;= 3.8 and a preliminary version of libmbim. The current implementation provides: PIN unlock/change/enable/disable capabilities 3GPP modem support (GSM, HSPA, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=534&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_500" class="wp-caption aligncenter" style="width: 610px"><a href="http://sigquit.files.wordpress.com/2013/04/4428831120_6e7e791aa8.jpg"><img src="http://sigquit.files.wordpress.com/2013/04/4428831120_6e7e791aa8.jpg?w=595" alt="4428831120_6e7e791aa8"   class="aligncenter size-full wp-image-535" /></a><p class="wp-caption-text">(C) tasayu @ Flickr &#8211; CC by-nc-nd</p></div>
<h4>MBIM!</h4>
<p>Winter is over, Spring is here, and along with the heat, rains and insects, ModemManager arrives with support for modems using the new MBIM protocol, available through the new <em>cdc-mbim</em> kernel driver in Linux &gt;= 3.8 and a preliminary version of <a href="http://sigquit.wordpress.com/2013/02/06/an-introduction-to-libmbim" target="_blank">libmbim</a>.</p>
<p>The current implementation provides:</p>
<ul>
<li>PIN unlock/change/enable/disable capabilities</li>
<li>3GPP modem support (GSM, HSPA, LTE&#8230;)</li>
<li>Basic connectivity support</li>
</ul>
<p>It doesn&#8217;t provide yet most of the side-features available in other modems (e.g. SMS messaging, location&#8230;), but it is a good start. If you don&#8217;t want to use MBIM just yet, check Bjørn&#8217;s <a href="https://mail.gnome.org/archives/networkmanager-list/2013-April/msg00065.html" target="_blank">list of issues and alternatives</a>.</p>
<p>&nbsp;</p>
<h4>Where do I get it?</h4>
<p>The &#8216;libmbim&#8217; library can be found in the following <a href="http://www.lanedo.com" target="_blank">Lanedo</a>-maintained gitorious repository:</p>
<ul>
<li><strong>git:</strong> <a href="https://gitorious.org/lanedo/libmbim" target="_blank">https://gitorious.org/lanedo/libmbim</a></li>
</ul>
<p>&nbsp;<br />
We also released a tarball in libqmi&#8217;s release place:<br />
<a href="http://www.freedesktop.org/software/libqmi/libmbim-0.0.1.tar.xz">http://www.freedesktop.org/software/libqmi/libmbim-0.0.1.tar.xz</a></p>
<p>If you&#8217;re part of the <strong>freedesktop.org sitewranglers</strong> group, please check the still open <a href="https://bugs.freedesktop.org/show_bug.cgi?id=59161" target="_blank">libmbim project request</a>.</p>
<p>The support is already in ModemManager <strong>git master</strong>, and will be enabled if <strong>libmbim</strong> is found during configure. You can also explicitly request to use MBIM support with the new <em>&#8211;with-mbim</em> configure switch.</p>
<p>&nbsp;</p>
<h4>Thanks</h4>
<p>Special thanks go to <a href="http://www.lanedo.com" target="_blank"><strong>Lanedo</strong></a> for sponsoring the <a href="http://sigquit.wordpress.com/2013/02/06/an-introduction-to-libmbim" target="_blank">initial libmbim development</a>, <strong>Bjørn Mork</strong> for his suggestions and tests with multiple MBIM-capable modems, and <a href="http://www.huawei.com" target="_blank"><strong>Huawei</strong></a> for sending me a E367 with MBIM firmware.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnome-planet/'>GNOME Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/freedesktop/'>freedesktop</a>, <a href='http://sigquit.wordpress.com/tag/libmbim/'>libmbim</a>, <a href='http://sigquit.wordpress.com/tag/mbim/'>MBIM</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/534/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=534&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2013/04/17/modemmanager-speaks-mbim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2013/04/4428831120_6e7e791aa8.jpg" medium="image">
			<media:title type="html">4428831120_6e7e791aa8</media:title>
		</media:content>
	</item>
		<item>
		<title>ModemManager (and latest udev) in OpenWRT</title>
		<link>http://sigquit.wordpress.com/2013/02/14/modemmanager-and-latest-udev-in-openwrt/</link>
		<comments>http://sigquit.wordpress.com/2013/02/14/modemmanager-and-latest-udev-in-openwrt/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 13:21:20 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Packaging]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[libqmi]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[systemd]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=528</guid>
		<description><![CDATA[So I wanted to have ModemManager in OpenWRT to handle my mobile broadband connections. OpenWRT has its own built-in support to handle mobile broadband modems of different types, mainly for AT-controlled modems, but also for QMI-controlled modems through libqmi and qmicli (now available in upstream OpenWRT). But hell, why not package ModemManager for that work, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=528&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So I wanted to have ModemManager in OpenWRT to handle my mobile broadband connections.</p>
<p>OpenWRT has its own built-in support to handle mobile broadband modems of different types, mainly for AT-controlled modems, but also for QMI-controlled modems through <a href="http://sigquit.wordpress.com/2012/08/20/qmi-powered-broadband-connections-in-openwrt">libqmi and qmicli</a> (now <a href="https://lists.openwrt.org/pipermail/openwrt-devel/2012-December/017726.html">available in upstream</a> OpenWRT). But hell, why not package ModemManager for that work, and provide a unified single DBus API to control any kind of mobile broadband modem in the same way?</p>
<p>ModemManager itself isn&#8217;t a very complex daemon, so it doesn&#8217;t have many dependencies, <em>just</em>: <a href="http://developer.gnome.org/glib/" target="_blank">glib</a>/<a href="http://developer.gnome.org/gio/" target="_blank">gio</a>, <a href="http://www.freedesktop.org/wiki/Software/dbus" target="_blank">dbus</a>, <a href="http://en.wikipedia.org/wiki/Udev" target="_blank">udev/gudev</a> and <a href="http://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi/" target="_blank">libqmi</a>. In the world of OpenWRT, though, none of these are blessed dependencies, as they have a lightweight replacement for everything: <a href="http://nbd.name/gitweb.cgi?p=luci2/libubox.git;a=summary" target="_blank">libubox</a> (instead of glib), <a href="http://nbd.name/gitweb.cgi?p=luci2/ubus.git;a=summary" target="_blank">ubus</a> (instead of dbus) and <a href="https://dev.openwrt.org/browser/trunk/package/hotplug2" target="_blank">hotplug2</a> (instead of udev). These replacements target minimal embedded systems, and are perfectly integrated into OpenWRT and provide the building blocks of other core software like the <a href="http://wiki.openwrt.org/doc/techref/netifd" target="_blank">netifd</a> network interface daemon.</p>
<p>Still, having ModemManager available as a OpenWRT package seems like a good idea if you&#8217;re not very constrained by the hardware you&#8217;re going to use. If you are building a system which should support <strong>multiple broadband modems from different vendors</strong>, or just building a base system for one specific modem model but leaving the door open to change the model in the future, ModemManager seems a good choice.</p>
<p>&nbsp;</p>
<h4>systemd&#8217;s udev in OpenWRT</h4>
<p>Since <a href="http://cgit.freedesktop.org/systemd/systemd/commit/?id=19c5f19d69bb5f520fa7213239490c55de06d99d" target="_blank">April 2012</a>, udev sources are now integrated within the <a href="http://www.freedesktop.org/wiki/Software/systemd" target="_blank">systemd</a> source code. And that means that udev packages in OpenWRT would need to get updated in order to get built from that new repository. systemd provides some hints on what would be the best way of creating <a href="http://freedesktop.org/wiki/Software/systemd/MinimalBuilds" target="_blank">a minimal systemd</a> build which can be used to gather just the udev-specific libraries and binaries. The easiest way involves compiling the whole systemd package with all optional features disabled, and that would get us not only systemd (which we won&#8217;t need), but also udevd and libudev. Easy, yes, but then we have some issues in the environment that we would need to handle&#8230;</p>
<p>In OpenWRT, the udev package is available in the <em>trunk</em> repository, where only the core OpenWRT packages are given. But in order to get the new udev compiled out of systemd we end up needing additional dependencies (dbus, libcap) which are only available in the <em>packages</em> repository. Moreover, if you also want to compile the glib-based gudev library, glib is also needed, which is also only available in the <em>packages</em> repository. And you cannot require a package from <em>trunk</em> to depend on a package from <em>packages</em>, so&#8230; ended up creating a new <strong>systemd-udev</strong> package within the <em>packages</em> repository.</p>
<p>As I was targeting the uClibc toolchain, I also ended up requiring some additional patches both in uClibc (e.g. to enable utmpx) and systemd to get the thing properly compiled. The patches applied in the systemd sources are just to handle missing features in uClibc (execvpe, secure_getenv&#8230;). Whenever uClibc includes those, we&#8217;ll be able to remove those patches.</p>
<p>&nbsp;</p>
<h4>ModemManager in OpenWRT</h4>
<p>I prepared an easy setup of ModemManager packaging in OpenWRT, where all possible plugins get compiled. It wouldn&#8217;t have been difficult to allow selecting via configuration which plugins to get compiled, but didn&#8217;t want to spend time on that.</p>
<p>I sent the patches to the OpenWRT mailing list already, but if you want to give it a quick try, you can just clone the Lanedo OpenWRT repositories (<a href="https://gitorious.org/lanedo/openwrt" target="_blank">trunk</a> and <a href="https://gitorious.org/lanedo/openwrt-packages" target="_blank">packages</a>) from gitorious.org:<br />
<code><br />
$&gt; git clone git://gitorious.org/lanedo/openwrt.git<br />
$&gt; git clone git://gitorious.org/lanedo/openwrt-packages.git<br />
</code></p>
<p>You&#8217;ll want both &#8216;<strong>modemmanager-support</strong>&#8216; branches in those git repositories.</p>
<p>ModemManager will be available under the &#8216;Network&#8217; section in the OpenWRT build configuration; but only after explicitly selecting the following kernel modules (all under Kernel Modules/USB support):</p>
<ul>
<li>kmod-usb-net</li>
<li>kmod-usb-serial</li>
<li>kmod-usb-acm</li>
</ul>
<p>Once all above are enabled, ModemManager can be selected, and it will itself pull all its other required dependencies (systemd-udev, glib, dbus, libqmi&#8230;).</p>
<p>&nbsp;</p>
<h4>No LuCI? No connection manager?</h4>
<p>Well, not yet <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . If you want to use ModemManager you still need to have your own connection manager software to manage the connectivity. ModemManager will get your mobile broadband modem connected, but you still need to either call pppd or setup the wwan interface yourself (depending on the data port type). This is really not a big deal; and you can just setup a shell script using the provided <a href="http://www.lanedo.com/~aleksander/modem-manager/api-20121005/mmcli.html" target="_blank">mmcli</a> command line interface to talk to ModemManager.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/packaging/'>Packaging</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/libqmi/'>libqmi</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/openwrt/'>openwrt</a>, <a href='http://sigquit.wordpress.com/tag/systemd/'>systemd</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/528/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=528&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2013/02/14/modemmanager-and-latest-udev-in-openwrt/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>An introduction to libmbim</title>
		<link>http://sigquit.wordpress.com/2013/02/06/an-introduction-to-libmbim/</link>
		<comments>http://sigquit.wordpress.com/2013/02/06/an-introduction-to-libmbim/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 09:40:59 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNOME Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[freedesktop]]></category>
		<category><![CDATA[libmbim]]></category>
		<category><![CDATA[libqmi]]></category>
		<category><![CDATA[MBIM]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[QMI]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=520</guid>
		<description><![CDATA[Linux kernel 3.8 comes with a new &#8216;cdc-mbim&#8216; driver&#8230; let&#8217;s see what all this is about&#8230; &#160; What is MBIM? The Mobile Interface Broadband Model (MBIM) is a new standard developed by the USB Implementers Forum, specifically designed for high speed mobile broadband modem devices. This new USB networking subclass defines two separate new features: [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=520&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img src="http://sigquit.files.wordpress.com/2013/02/freebeers.jpg?w=595" alt="freebeers"   class="aligncenter size-full wp-image-524" /></p>
<p><strong>Linux kernel 3.8</strong> comes with a new &#8216;<strong>cdc-mbim</strong>&#8216; driver&#8230; let&#8217;s see what all this is about&#8230;</p>
<p>&nbsp;</p>
<h4>What is MBIM?</h4>
<p>The <a href="http://www.usb.org/developers/devclass_docs/MBIM10.zip" target="_blank">Mobile Interface Broadband Model (MBIM)</a> is a new standard developed by the <a href="http://www.usb.org" target="_blank">USB Implementers Forum</a>, specifically designed for high speed mobile broadband modem devices.</p>
<p>This new USB networking subclass defines two separate new features:</p>
<ul>
<li>A new <strong>MBIM USB device model</strong>, providing multiple IP connections over a single USB interface, and without the need of 802.3 frames (as was the case with ECM and NCM)</li>
<li>A new <strong>MBIM control protocol</strong> to talk to modem devices</li>
</ul>
<p>&nbsp;</p>
<h4>MBIM message types</h4>
<p>The protocol defines different message types with different formats.</p>
<p>Some of them are used to establish the channel of communication with the modem:</p>
<ul>
<li><strong>Open Message</strong> (Host-&gt;Modem): Initialization request.</li>
<li><strong>Open Done Message</strong> (Host&lt;-Modem): Initialization response.</li>
<li><strong>Close Message</strong> (Host-&gt;Modem): Close request.</li>
<li><strong>Close Done Message</strong> (Host&lt;-Modem): Close response.</li>
</ul>
<p>Some of the messages are used to report errors in the protocol; which may be sent either from the host or from the modem:</p>
<ul>
<li><strong>Host Error Message</strong> (Host-&gt;Modem): Host-reported error.</li>
<li><strong>Modem Error Message</strong> (Host&lt;-Modem): Modem-reported error.</li>
</ul>
<p>And finally, some messages provide access to the different <em>CIDs</em> (Command IDs) defined in each Service.</p>
<ul>
<li><strong>Command Message</strong> (Host-&gt;Modem): Request of a given command.</li>
<li><strong>Command Done Message</strong> (Host&lt;-Modem): Response to a given command.</li>
<li><strong>Indication Message</strong> (Host&lt;-Modem): Unsolicited messages sent by the modem.</li>
</ul>
<p>These last three messages support protocol-defined fragmentation. If the sender of the message finds out that the message is longer than the maximum control transfer size defined when the communication channel was opened (with an <em>Open Message</em>), it will be able to split it into sorted chunks and send them one by one over the wire. Each of these fragments specify the total amount of fragments expected, as well as the order in the sequence. The receiver of the fragments will therefore need to wait for all fragments to arrive &#8211; which should arrive in order &#8211; before processing the message.</p>
<p>&nbsp;</p>
<h4>MBIM services</h4>
<p>The protocol defines a basic set of different <strong>Services</strong>:</p>
<ul>
<li><em>Basic Connect</em>: Which provides the support for basic IP connectivity</li>
<li><em>SMS</em>: SMS messaging</li>
<li><em>USSD</em>: Unstructured Supplementary Service Data</li>
<li><em>Phonebook</em>: Handling contacts and such</li>
<li><em>STK</em>: SIM toolkit</li>
<li><em>Authentication</em></li>
<li><em>Device Service Stream</em></li>
</ul>
<p>Only the <em>Basic Connect</em> one is mandatory in every MBIM device; others are optional. Vendors or even Network Operators can also extend the functionality of the device with other services; for example to support other protocols embedded within MBIM (e.g. QMI or AT within MBIM); or just to provide specific new features.</p>
<p>&nbsp;</p>
<h4>MBIM commands</h4>
<p>For each service, MBIM defines a set of <strong>Commands</strong> (CIDs); and each command can then be divided into <strong>3 actions</strong>:</p>
<ul>
<li>&#8220;<em><strong>Set</strong></em>&#8220;: An user-requested action to change the modem state or configuration</li>
<li>&#8220;<em><strong>Query</strong></em>&#8220;: An user-requested action to query the modem state or configuration</li>
<li>&#8220;<em><strong>Notification</strong></em>&#8220;: An unsolicited report of the modem state or configuration</li>
</ul>
<p>Not every action is supported by every command. For example, the &#8220;<em>Device Caps</em>&#8221; command in the &#8220;<em>Basic Connect</em>&#8221; service only supports the &#8220;<em>Query</em>&#8221; action, while the &#8220;<em>Radio State</em>&#8221; command of the same service supports all &#8220;<em>Set</em>&#8220;, &#8220;<em>Query</em>&#8221; and &#8220;<em>Notification</em>&#8220;.</p>
<p>But how does this match with the message types defined before?</p>
<ul>
<li>Host-created &#8220;<em>Set</em>&#8221; and &#8220;<em>Query</em>&#8221; requests are sent using &#8220;<em>Command Messages</em>&#8220;.</li>
<li>Modem-created &#8220;<em>Set</em>&#8221; and &#8220;<em>Query</em>&#8221; responses are sent using &#8220;<em>Command Done Messages</em>&#8220;.</li>
<li>Modem-created &#8220;<em>Notifications</em>&#8221; are sent using &#8220;<em>Indication Messages</em>&#8220;.
</ul>
<p>&nbsp;</p>
<h4>MBIM basic types</h4>
<p>The protocol not only defines which action is supported in each command; it also defines the contents of the request, response and indication messages. The contents of each message are composed of collections of basic types defined by the protocol:</p>
<ul>
<li>Unsigned 32bit integers: Even for the most simple values (e.g. booleans), little-endian 32 bit unsigned integers are used.</li>
<li>Strings: UTF-16LE encoded strings are always used.</li>
<li>UUIDs: The protocol defines a special 16-byte-long UUID type, e.g. to define Service IDs</li>
<li>Arrays: Collection of N values of a given basic type.</li>
<li>Structs: Sequence of other basic types, given in a specific order.</li>
</ul>
<p>As you can see, there is not much effort (none, actually) into making the protocol efficient in terms of overhead introduced; more than half of the bytes in each message will very likely end up being NUL bytes. Also, it is assured that each field within a message is aligned in a 32bit boundary, which makes it easier to read independent fields directly from the binary stream.</p>
<p>&nbsp;</p>
<h4>How does this compare to QMI?</h4>
<p>There are quite some differences between this protocol and <a href="http://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi" target="_blank">QMI</a>. To name a few:</p>
<ul>
<li>Less basic types in MBIM, specially regarding signed/unsigned integers. QMI defines many more integer types, of different sizes and with different sign.</li>
<li>Basic strings are given in ASCII in QMI</li>
<li>Struct types are re-used in MBIM, as opposed to QMI, where each TLV would define the struct contents as it needed.</li>
<li>There is no &#8216;client allocation&#8217; needed in MBIM, i.e. the process opening the MBIM port doesn&#8217;t need to allocate clients for the different services.</li>
<li>Fragmentation is built-in in the MBIM protocol; QMI required special TLVs and logic to handle messages that may be longer than the standard message size (e.g. when transferring the PRL list).</li>
<li>Binary representation of the message is completely different. In QMI you would have a list of TLVs, one after the other. In MBIM, the contents of the message are split into two different sections: one which contains the fixed-size values and one for the variable-size values. For example, a string in MBIM is defined by two values in the fixed-size region (offset and size), while the real string data is within the variable-size section.</li>
</ul>
<p>&nbsp;</p>
<h4>libmbim</h4>
<p>The &#8216;<strong>libmbim</strong>&#8216; library is an attempt to write a protocol support library, as previously done with &#8216;<strong>libqmi</strong>&#8216;.</p>
<p>The current codebase, <strong>GLib/GObject/GIO</strong> based, is pretty similar to what libqmi provided, with a &#8216;<em>MbimDevice</em>&#8216; GObject to handle the communication through the <code>/dev/cdc-wdm</code> port, as well as &#8216;<em>MbimMessage</em>&#8216; types to handle the creation of commands. Given that there is no need for client allocations in MBIM, there is no &#8216;<em>MbimClient</em>&#8216; object needed. Also, given that the contents of each message are pre-defined, it wasn&#8217;t considered the need of input and output &#8216;bundles&#8217; to handle collections of TLVs, as done in libqmi.</p>
<p><strong>Fragmentation</strong> of incoming/outgoing messages is handled internally by the &#8216;<em>MbimDevice</em>&#8216;, which is a nice thing to have, as it simplifies the usage of the API. The user just creates a message, as long as it needs it to be, and the &#8216;<em>MbimDevice</em>&#8216; will take care of splitting it into fragments. When receiving a message, the user will also receive already the full message, once all fragments have been combined internally.</p>
<p>The messages and the services are defined in a <strong>JSON dictionary</strong>, and as with libqmi, all the message handling code is auto-generated from there. The capabilities of the <em>mbim-codegen</em> are still not in pair with those in <em>qmi-codegen</em> yet, though. The generator doesn&#8217;t support e.g. &#8220;Set&#8221; requests with parameters, or &#8220;Indication&#8221; messages. As previously said, this currently is a proof-of-concept, someday we&#8217;ll support all those properly.</p>
<p>&nbsp;</p>
<h4>mbimcli</h4>
<p>The project comes with a command line utility (<em>mbimcli</em>), which allows (will allow) running &#8220;<em>Get</em>&#8221; or &#8220;<em>Set</em>&#8221; commands directly from the shell. There aren&#8217;t many supported commands yet, so I cannot show many more examples than this one:</p>
<p><code><br />
$ sudo mbimcli \<br />
&nbsp;&nbsp;&nbsp;&nbsp;-d /dev/cdc-wdm1 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;--basic-connect-query-subscriber-ready-status</p>
<p>[/dev/cdc-wdm1] Subscriber ready status retrieved:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready state: 'device-locked'<br />
&nbsp;&nbsp;&nbsp;&nbsp;Subscriber ID: 'unknown'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIM ICCID: '984310311520086950F1'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready info: 'unknown'<br />
Telephone numbers: ''<br />
</code></p>
<p><em>Hint:</em> Using <code>--verbose</code> will show you the raw binary message contents!</p>
<p>&nbsp;</p>
<h4>Where do I get it?</h4>
<p>The &#8216;libmbim&#8217; library and the &#8216;mbimcli&#8217; utility can be found in the following <a href="http://www.lanedo.com" target="_blank">Lanedo</a>-maintained gitorious repository:</p>
<ul>
<li><strong>git:</strong> <a href="https://gitorious.org/lanedo/libmbim" target="_blank">https://gitorious.org/lanedo/libmbim</a></li>
</ul>
<p>&nbsp;<br />
There is already <a href="https://bugs.freedesktop.org/show_bug.cgi?id=59161" target="_blank">a request</a> to host this project in the <strong>freedesktop.org</strong> infrastructure, so it may end up getting moved there at some point.</p>
<p>&nbsp;</p>
<h4>Help! Contribute! Sponsor!</h4>
<p>This development was kindly sponsored by <a href="http://www.lanedo.com" target="_blank"><strong>Lanedo GmbH</strong></a>. If you want to help, or sponsor further development in <strong>libmbim</strong>, <strong>mbimcli</strong> or the <strong>ModemManager</strong> integration, <a href="http://www.lanedo.com/contact.html" target="_blank">just let us know</a>!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnome-planet/'>GNOME Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/freedesktop/'>freedesktop</a>, <a href='http://sigquit.wordpress.com/tag/libmbim/'>libmbim</a>, <a href='http://sigquit.wordpress.com/tag/libqmi/'>libqmi</a>, <a href='http://sigquit.wordpress.com/tag/mbim/'>MBIM</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/qmi/'>QMI</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/520/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=520&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2013/02/06/an-introduction-to-libmbim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2013/02/freebeers.jpg" medium="image">
			<media:title type="html">freebeers</media:title>
		</media:content>
	</item>
		<item>
		<title>ModemManager-powered location indicator for gnome-shell</title>
		<link>http://sigquit.wordpress.com/2013/01/03/modemmanager-powered-location-indicator-for-gnome-shell/</link>
		<comments>http://sigquit.wordpress.com/2013/01/03/modemmanager-powered-location-indicator-for-gnome-shell/#comments</comments>
		<pubDate>Thu, 03 Jan 2013 16:58:40 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNOME Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[3gpp]]></category>
		<category><![CDATA[cdma]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome-shell]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[QMI]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=515</guid>
		<description><![CDATA[TL;DR: Show location information retrieved directly from ModemManager in a gnome-shell indicator. I&#8217;ve been wanting to try to write a gnome-shell extension from some time, and I ended up finding enough free time during the past weeks. So I ended up writing a gnome-shell extension which would show information about your current location as provided [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=515&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>TL;DR: </strong><em>Show location information retrieved directly from ModemManager in a gnome-shell indicator.</em></p>
<div class="wp-caption aligncenter" style="width: 483px"><a href="https://extensions.gnome.org/extension/569/location-indicator/"><img alt="" src="https://extensions.gnome.org/static/extension-data/screenshots/screenshot_569.png" width="473" height="593" /></a><p class="wp-caption-text">Location Indicator in gnome-shell</p></div>
<p>I&#8217;ve been wanting to try to write a gnome-shell extension from some time, and I ended up finding enough free time during the past weeks. So I ended up writing a gnome-shell extension which would show information about your current location as provided by your modem. Note that this information is <strong>not coming from GeoClue</strong>; the new ModemManager1 interface is <a href="https://bugs.freedesktop.org/show_bug.cgi?id=58952" target="_blank">not integrated yet</a> there.</p>
<p>ModemManager exposes these types of information in the <a href="http://www.lanedo.com/~aleksander/modem-manager/api-20121005/api/gdbus-org.freedesktop.ModemManager1.Modem.Location.html" target="_blank">Location interface</a>:</p>
<ul>
<li><strong> 3GPP location</strong>, which is given as a set of 4 parameters, and specifies which is the current network cell which is giving mobile coverage to the modem:
<ul>
<li><a href="http://en.wikipedia.org/wiki/Mobile_country_code" target="_blank">MCC/MNC</a>: Identifies the &#8216;mobile country code&#8217; and the &#8216;mobile network code&#8217;; i.e. country and operator.</li>
<li><a href="http://en.wikipedia.org/wiki/Location_area#Location_area" target="_blank">LAC</a> and <a href="http://en.wikipedia.org/wiki/Cell_ID" target="_blank">Cell ID</a>: Identifies the &#8216;location area code&#8217; and &#8216;cell id&#8217; pair.</li>
</ul>
<p>  Once all these items are known, a query to <a href="http://en.wikipedia.org/wiki/Cell_ID#Public_Cell_ID_databases" target="_blank">an open database of cell IDs</a> can give us the exact location of the tower giving us coverage, and therefore a good approximation of where we are located.</li>
<li><strong>GPS location</strong>, given if the modem has a built-in GPS. Currently <a href="https://sigquit.wordpress.com/2012/03/29/enabling-gps-location-in-modemmanager/" target="_blank">Option/HSO</a> modems are supported, as well as QMI-powered modems with the &#8216;PDS&#8217; service implemented.</li>
<li><strong>CDMA Base Station location</strong>, given as Latitude/Longitude coordinates, and available in QMI-powered modems prepared for CDMA networks. As with the 3GPP one, this location information specifies where the station giving coverage to your modem is located, which is a good approximation of where you are located.</li>
</ul>
<p>Beware! You&#8217;ll need <strong>ModemManager &gt;= 0.7 (i.e. git master)</strong> in order for this extension to work.</p>
<p>You can download and install the extension in the following link:<br />
<a href="https://extensions.gnome.org/extension/569/location-indicator/" target="_blank">https://extensions.gnome.org/extension/569/location-indicator</a></p>
<p>The sources are kept in a git repository in gitorious.org:<br />
<a href="https://gitorious.org/aleksander/gnome-shell-location-indicator" target="_blank">https://gitorious.org/aleksander/gnome-shell-location-indicator</a></p>
<p>If you find the extension itself mostly useless, you may still want to take a look at the source code to see <a href="https://gitorious.org/aleksander/gnome-shell-location-indicator/blobs/master/modemWatcher.js" target="_blank">yet another example</a> of how to talk to DBus interfaces from within gnome-shell, including the use of the new standard <a href="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager" target="_blank">ObjectManager interface</a> with a <strong>Gio.DBusObjectManagerClient</strong>.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnome-planet/'>GNOME Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/3gpp/'>3gpp</a>, <a href='http://sigquit.wordpress.com/tag/cdma/'>cdma</a>, <a href='http://sigquit.wordpress.com/tag/extension/'>extension</a>, <a href='http://sigquit.wordpress.com/tag/gnome/'>gnome</a>, <a href='http://sigquit.wordpress.com/tag/gnome-shell/'>gnome-shell</a>, <a href='http://sigquit.wordpress.com/tag/gps/'>gps</a>, <a href='http://sigquit.wordpress.com/tag/location/'>location</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/qmi/'>QMI</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/515/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=515&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2013/01/03/modemmanager-powered-location-indicator-for-gnome-shell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="https://extensions.gnome.org/static/extension-data/screenshots/screenshot_569.png" medium="image" />
	</item>
		<item>
		<title>Integrating the new ModemManager in GNOME3</title>
		<link>http://sigquit.wordpress.com/2012/11/13/integrating-the-new-modemmanager-in-gnome3/</link>
		<comments>http://sigquit.wordpress.com/2012/11/13/integrating-the-new-modemmanager-in-gnome3/#comments</comments>
		<pubDate>Tue, 13 Nov 2012 13:53:38 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome-control-center]]></category>
		<category><![CDATA[gnome-shell]]></category>
		<category><![CDATA[libqmi]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>
		<category><![CDATA[rpm]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=505</guid>
		<description><![CDATA[It was something like September 2011, shortly after the last Desktop Summit in Berlin, when I started the work improving ModemManager with the new DBus API, GDBus-based DBus support, port-type-agnostic implementations, dynamic DBus interfaces, built-in org.freedesktop.DBus.ObjectManager interface support, built-in org.freedesktop.DBus.Properties.PropertiesChanged signal support, the new libmm-glib client library, the new mmcli command line tool&#8230; Took me [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=505&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_508" class="wp-caption aligncenter" style="width: 605px"><a href="http://sigquit.files.wordpress.com/2012/11/6483141309_d02fb18a50_z.jpg"><img src="http://sigquit.files.wordpress.com/2012/11/6483141309_d02fb18a50_z.jpg?w=595&#038;h=333" alt="" title="6483141309_d02fb18a50_z" width="595" height="333" class="size-full wp-image-508" /></a><p class="wp-caption-text">(C) allenran917@ Flickr &#8211; CC by-nc-nd</p></div>
<p>It was something like September 2011, shortly after the last Desktop Summit in Berlin, when I started the work improving <strong>ModemManager</strong> with the new <a href="http://www.lanedo.com/~aleksander/modem-manager/api-20121005/api/" target="_blank">DBus API</a>, GDBus-based DBus support, port-type-agnostic implementations, dynamic DBus interfaces, built-in <a href="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager" target="_blank">org.freedesktop.DBus.ObjectManager interface</a> support, built-in <a href="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties" target="_blank">org.freedesktop.DBus.Properties.PropertiesChanged signal</a> support, the new <a href="http://www.lanedo.com/~aleksander/modem-manager/api-20121005/libmm-glib" target="_blank">libmm-glib</a> client library, the new <a href="http://www.lanedo.com/~aleksander/modem-manager/api-20121005/mmcli.html" target="_blank">mmcli</a> command line tool&#8230; Took me around half a year to port most of the core stuff, and some more months to port all the plugins we had. And then, suddenly, <a href="http://cgit.freedesktop.org/ModemManager/ModemManager/log/" target="_blank">git master</a> wasn&#8217;t <strong>that unfinished thing</strong> any more, and we were even implementing lots of new features like GPS support in the Location interface, improved SMS Messaging capabilities, ability to switch Firmware on supported modems, and last but definitely not least, support for new <strong>QMI</strong>-enabled modems through the <a href="http://lists.freedesktop.org/archives/libqmi-devel/2012-November/000335.html">just officially released <strong>libqmi</strong></a>&#8230;</p>
<p>And when I thought it was all done already, I woke up from my dream and realized that not even me was really using the new ModemManager as it wasn&#8217;t integrated in the desktop&#8230; not even in NetworkManager. So there I was again, with a whole new set of things to fix&#8230;</p>
<h4>NetworkManager integration</h4>
<p>There is already <a href="https://mail.gnome.org/archives/networkmanager-list/2012-November/msg00077.html" target="_blank">a set of patches</a> available to include integration of the new ModemManager interface in NetworkManager; pending for review in the NM mailing list. This is the second iteration already, after having some of the patches from the <a href="https://mail.gnome.org/archives/networkmanager-list/2012-October/msg00104.html" target="_blank">first iteration</a> already merged in git master.</p>
<p>This integration is probably the most complex one in the list, as it really has to deal with quite different DBus interfaces, but the overall look of it seems to be quite good from my point of view. With the patches on, NetworkManager exposes a new <em>&#8211;with-modem-manager-1</em> configure switch which defaults to &#8216;auto&#8217; (compile the MM1 support if <em>libmm-glib</em> found). Note that both the old and new ModemManager would be supported in this case, to easier fallback to the old version if the user experiences problems with the new ModemManager.</p>
<p>All in all, the required changes to NetworkManager are quite well defined, implemented mainly as a new &#8216;NMModemBroadband&#8217; object and some additional bits to monitor added/removed modems through the <a href="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager" target="_blank">org.freedesktop.DBus.ObjectManager interface</a>.</p>
<h4>gnome-shell integration</h4>
<p>A proper integration in my desktop of choice (gnome-shell based GNOME 3) required to integrate the new interface in the Network indicator of the shell. As in every good day, I first had to deal with <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687356" target="_blank">several</a> <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688144" target="_blank">issues</a> I found, but I ended up <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687359" target="_blank">submitting a patch</a> that properly talks to the new ModemManager1 interface when needed. As with NetworkManager, this patch would support both the old and the new interfaces at the same time.</p>
<p>Not that this was a big change, anyway. The Network indicator only uses the ModemManager interface to grab Operator Name, MCCMNC and/or SID, and signal strength. Something that could even be included directly in the NMDevice exposed by NetworkManager actually&#8230;</p>
<p>Right now the only big issue pending here is to <a href="https://bugzilla.gnome.org/show_bug.cgi?id=687855" target="_blank">properly unlock the modem</a> when it gets enabled, something that I still need to check how to do it or where to do it.</p>
<p>Truth be told, hacking the shell has ended up being quite nice, even with my total lack of knowledge in JavaScript. My only suggestion here would be: get a new enough distribution with a recent enough GNOME3 (e.g. the unreleased Fedora 18) and <em>jhbuild buildone</em> from there. I think I&#8217;ve never seen a clean jhbuild from scratch succeed&#8230; maybe it&#8217;s just bad luck.</p>
<p>And then came the applet&#8230;</p>
<h4>network-manager-applet integration</h4>
<p>Why the hell would Bluetooth DUN not work with my implementation, I was thinking, until I found that even if GNOME3 doesn&#8217;t rely on nm-applet, it still uses some of its functionality through libnm-gtk/libnma, like the code to decide which kind of modem we&#8217;re dealing with and launch the appropriate mobile connection wizard. Ended up also <a href="https://mail.gnome.org/archives/networkmanager-list/2012-November/msg00072.html" target="_blank">submitting patches</a> to include the missing functionality in network-manager-applet.</p>
<p>For those not using GNOME3 and gnome-shell; note that I didn&#8217;t implement the support for the new ModemManager1 interface in the nm-applet itself; I just did the bluetooth-guess-my-modem-type bits required in libnma. If I feel in the mood I may even try to implement the proper support in the applet, but I wouldn&#8217;t mind some help with this&#8230; <strong>patches welcome!</strong> Same goes for other desktops relying on NetworkManager (KDE, xfce&#8230;); I wouldn&#8217;t mind to update those myself as well, but I truly don&#8217;t have that much free time.</p>
<h4>gnome-control-center integration</h4>
<p>Ok, so gnome-shell integration is more or less ready now; we should be finished, right? Well, not just yet. gnome-control-center also talks to ModemManager, in this case to get Operator Name and Equipment Identifier, which btw were <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688211" target="_blank">not getting properly loaded and updated</a>. Once that fixed, I finally got <a href="https://bugzilla.gnome.org/show_bug.cgi?id=688238" target="_blank">a new patch</a> to have the control center talk to the new interface.</p>
<h4>Fedora 18 packages</h4>
<p>I bet you won&#8217;t go one by one to all the patches I linked before and apply them in your custom compiled NetworkManager, gnome-shell, network-manager-applet and gnome-control-center&#8230; but for all those brave Fedora 18 users, you can try with the 64-bit packages that I built for me, all available here:</p>
<ul>
<li><a href="http://www.lanedo.com/~aleksander/fedora-packages/20121112/" target="_blank">http://www.lanedo.com/~aleksander/fedora-packages/20121112/</a></li>
</ul>
<p>If you want to rebuild these packages yourself, you&#8217;ll find the source tarballs <a href="http://www.lanedo.com/~aleksander/fedora-packages/sources/" target="_blank">here</a> and the packaging repositories <a href="https://gitorious.org/lanedo/fedora-packages" target="_blank">here</a>. The packaging is really awful &#8211; I <em>suck</em> at it &#8211; so you&#8217;ll probably need to install the RPMs with <em>&#8211;force</em> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Note that the git repo for packaging has several git submodules, one for each item packaged, so remember to &#8220;<em>git submodule init</em>&#8221; and &#8220;<em>git submodule update</em>&#8220;.</p>
<h4>We done yet?</h4>
<p>Are these all the patches needed to have the best ModemManager experience in GNOME3? No! The list of pending tasks for this purpose grows a bit every day&#8230;</p>
<ul>
<li><a href="https://bugzilla.gnome.org/show_bug.cgi?id=688206" target="_blank">Common code to parse the mobile broadband providers database</a>, exposed in libnm-gtk and used by the wizard, the control center and the shell</li>
<li><a href="https://bugzilla.gnome.org/show_bug.cgi?id=687918" target="_blank">Link mobile connection profiles to a specific SIM/modem</a></li>
<li><a href="https://bugzilla.gnome.org/show_bug.cgi?id=687855" target="_blank">Ensure modems are PIN-unlocked when they get enabled</a></li>
<li><a href="https://bugzilla.gnome.org/show_bug.cgi?id=658230" target="_blank">Rework the logic behind the Network indicator in gnome-shell</a>, trying to make it easier to connect to a default connection profile. The same logic would then be need to be applied to the control center&#8230;</li>
<li>Proper IPv6 support in mobile broadband connections</li>
<li>Connection profiles with multiple APN/bearers</li>
<li>SMS messaging</li>
<li>Location information integration</li>
<li>An independent UI application to manage advanced settings in ModemManager?</li>
<li>&#8230;</li>
<ul>
<p>Help!</p>
<h4>Thanks</h4>
<p>Special thanks go to <strong>my employer</strong> <a href="http://www.lanedo.com/" target="_blank">Lanedo GmbH</a>, which sponsors quite a lot of the GNOME integration work; as well as to <strong>my girlfriend&#8217;s employer</strong>, which sends her 400km away from home from Monday to Thusday. Without them this job would have been impossible!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/fedora/'>fedora</a>, <a href='http://sigquit.wordpress.com/tag/gnome/'>gnome</a>, <a href='http://sigquit.wordpress.com/tag/gnome-control-center/'>gnome-control-center</a>, <a href='http://sigquit.wordpress.com/tag/gnome-shell/'>gnome-shell</a>, <a href='http://sigquit.wordpress.com/tag/libqmi/'>libqmi</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a>, <a href='http://sigquit.wordpress.com/tag/rpm/'>rpm</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/505/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=505&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/11/13/integrating-the-new-modemmanager-in-gnome3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2012/11/6483141309_d02fb18a50_z.jpg" medium="image">
			<media:title type="html">6483141309_d02fb18a50_z</media:title>
		</media:content>
	</item>
		<item>
		<title>SMS goodies in ModemManager</title>
		<link>http://sigquit.wordpress.com/2012/09/14/sms-goodies-in-modemmanager/</link>
		<comments>http://sigquit.wordpress.com/2012/09/14/sms-goodies-in-modemmanager/#comments</comments>
		<pubDate>Fri, 14 Sep 2012 10:46:36 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[mmcli]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>
		<category><![CDATA[QMI]]></category>
		<category><![CDATA[SMS]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=488</guid>
		<description><![CDATA[Lots of new SMS-related features have landed in ModemManager this week, and as I have as much memory as a fish used to have, I need to write down all the commands I&#8217;ve used to test all this; hence this post. Note that all the stuff I talk about here applies to both AT and [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=488&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_500" class="wp-caption aligncenter" style="width: 610px"><a href="http://sigquit.files.wordpress.com/2012/09/fish.jpg"><img src="http://sigquit.files.wordpress.com/2012/09/fish.jpg?w=595" alt="" title="Fish memory"   class="size-full wp-image-500" /></a><p class="wp-caption-text">(C) josullivan.59 @ Flickr &#8211; CC by-nc-sa</p></div>
<p>Lots of new SMS-related features have landed in ModemManager this week, and as I have as much memory as a fish <a href="http://www.dailymail.co.uk/sciencetech/article-1106884/Three-second-memory-myth-Fish-remember-months.html" target="_blank">used to have</a>, I need to write down all the commands I&#8217;ve used to test all this; hence this post.</p>
<p>Note that all the stuff I talk about here applies to <strong>both AT and QMI based</strong> modems.</p>
<p>&nbsp;</p>
<h4>Multiple storages</h4>
<p>The current stable 0.5/0.6 releases will only use the core/plugin defined &#8216;default&#8217; storages for reading and sending short messages. This means that if you happen to have stored SMS in another non-default storage ModemManager won&#8217;t show them to you.</p>
<p>In the new 0.7 codebase, ModemManager reads the messages from <strong>all the available storages</strong>. It is able to read not only DELIVER-type PDUs from received SMS, but also SUBMIT-type PDUs from user-created SMS which got stored. The &#8220;<code>Sms.Store()</code>&#8221; method in the interface now allows (optionally) specifying in which storage the SMS should be kept.</p>
<p>The following commands allow to create a new SMS and store it in the &#8220;sm&#8221; (SIM) storage:<br />
<code><br />
$&gt; <em>sudo mmcli -m 0 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>--messaging-create-sms</strong>="text='Hello world',number='+1234567890'</em><br />
Successfully created new SMS:<br />
&nbsp;&nbsp;&nbsp;&nbsp;/org/freedesktop/ModemManager1/SMS/21 (unknown)<br />
&nbsp;<br />
$&gt; <em>sudo mmcli -s 21 <strong>--store-in-storage</strong>="sm"</em><br />
successfully stored the SMS<br />
&nbsp;<br />
$&gt; <em>sudo mmcli -s 21</em><br />
SMS '/org/freedesktop/ModemManager1/SMS/21'<br />
&nbsp;&nbsp;-----------------------------------<br />
&nbsp;&nbsp;Content&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number:&nbsp;'+1234567890'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:&nbsp;'Hello&nbsp;world'<br />
&nbsp;&nbsp;-----------------------------------<br />
&nbsp;&nbsp;Properties&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDU&nbsp;type:&nbsp;'submit'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state:&nbsp;'stored'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smsc:&nbsp;'unknown'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validity:&nbsp;'0'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class:&nbsp;'0'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storage:&nbsp;'sm'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delivery&nbsp;report:&nbsp;'not requested'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;message&nbsp;reference:&nbsp;'0'<br />
</code></p>
<p>Note that you can create, store and send SMS objects regardless of what storage you&#8217;re using for each, ModemManager will take care of properly synchronizing the access to each of them.</p>
<p>The Messaging interface also defines new properties to list all the supported storages and to specify which is the default storage being used for received messages (and for stored ones when no specific one given in &#8220;<code>Sms.Store()</code>&#8220;):</p>
<p><code><br />
$&gt; <em>sudo mmcli -m 0 <strong>--messaging-status</strong></em><br />
/org/freedesktop/ModemManager1/Modem/0<br />
&nbsp;&nbsp;----------------------------<br />
&nbsp;&nbsp;Messaging&nbsp;|&nbsp;supported&nbsp;storages:&nbsp;'sm,&nbsp;me'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;storage:&nbsp;'me'<br />
</code></p>
<p>&nbsp;</p>
<h4>Text multipart SMS</h4>
<p>We support <em>receiving</em> text multipart messages in ModemManager since some stable releases ago; but support for <em>sending</em> multipart messages was still missing. Not any more! Roberto Majadas of <a href="http://www.openshine.com" target="_blank"><strong>OpenShine</strong></a> started this work some months ago with a patch for MM 0.6, which I took over and ported to git master and the new 0.7 codebase.</p>
<p>Of course, we support both the default GSM 7-bit alphabet, as well as UCS-2:</p>
<ul>
<li><strong>GSM 7 encoded multipart messages:</strong> If the message is less or equal than 160 septets a singlepart SMS will be used; otherwise the input text will be split into chunks of 153 septets and sent as a multipart message.</li>
<li><strong>UCS-2 encoded multipart messages:</strong> The GSM 7 alphabet and its extensions are not enough to cover all scripts available out there. Luckily, we can send PDUs with UCS-2 encoded text (UCS-2 covers all the basic plane of Unicode, and is equivalent to UTF-16 in that range). When using this encoding, if the input text is less or equal than 70 UCS-2 characters (140 bytes) a singlepart SMS will be used; otherwise the input text will be split into chunks of 67 UCS-2 characters (134 bytes) and sent as a multipart message. Note anyway that this doesn&#8217;t mean that we only allow 70-byte long input strings to fit into a singlepart message; as the conversion from the input UTF-8 text to UCS-2 isn&#8217;t always increasing the required number of bytes. As an example, we can now send 210 bytes of UTF-8 encoded chinese text into a single SMS with 140-bytes of UCS-2.</li>
</ul>
<p>Note that from the API user&#8217;s point of view, the SMS objects are not considered multipart or singlepart; that is taken as internal information only required for the PDU-based implementation.</p>
<p>Multipart messages can be created by writing a long enough &#8216;<code>text</code>&#8216; value passed in the &#8216;<code>--messaging-create-sms</code>&#8216; command, as shown before.</p>
<p>&nbsp;</p>
<h4>Raw data multipart SMS</h4>
<p>In addition to text short messages we now also properly support raw binary data singlepart and multipart messages (reported as 8bit encoded). This means that both the sender and receiver can agree in any text encoding to be used between them, or even send in one or more SMS whatever raw binary stream you have.</p>
<p>The &#8216;mmcli&#8217; command line utility was improved with several commands to test this feature. For example, you can now send using just SMS messages whatever file you have in your system, just doing:<br />
<code><br />
$&gt; <em>sudo mmcli -m 0 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>--messaging-create-sms</strong>="number='+1234567890'" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>--messaging-create-sms-with-data</strong>=/path/to/your/file</em><br />
Successfully created new SMS:<br />
&nbsp;&nbsp;&nbsp;&nbsp;/org/freedesktop/ModemManager1/SMS/22 (unknown)<br />
&nbsp;<br />
$&gt; <em>sudo mmcli -s 22 <strong>--send</strong></em><br />
successfully sent the SMS<br />
</code></p>
<p>When the receiver gets all the parts of the message, she can now recover the sent file with another &#8216;mmcli&#8217; command in her ModemManager setup:<br />
<code><br />
$&gt; <em>sudo mmcli -m 0 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>--messaging-list-sms</strong></em><br />
Found 1 SMS messages:<br />
&nbsp;&nbsp;&nbsp;&nbsp;/org/freedesktop/ModemManager1/SMS/0 (received)<br />
&nbsp;<br />
$&gt; <em>sudo mmcli -s 0 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>--create-file-with-data</strong>=/path/to/the/output/file</em><br />
</code></p>
<p>But beware! The file is sent in chunks of <strong>134 bytes</strong>, and there is a maximum of <strong>255 parts</strong> in a given multipart SMS, so this leaves you with a maximum size of around 33 Kbytes <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  And not only that, if you&#8217;re paying e.g. 0.10€ for each SMS sent, you would be paying more than 25€ for those 33 Kbytes. Yes, needless to say, this is therefore <em>the most useless use case ever</em>. But still, works as a proof of concept.</p>
<p>&nbsp;</p>
<h4>Delivery reports</h4>
<p>Last and least, you can now also request delivery reports when sending an SMS, by passing the &#8216;<code><strong>delivery-report-request=yes</strong></code>&#8216; key/value pair in the &#8216;<code>--messaging-create-sms</code>&#8216; command.</p>
<p><code><br />
$&gt; <em>sudo mmcli -m 0 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>--messaging-create-sms</strong>="text='你好',\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number='+1234567890',\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delivery-report-request=yes"</em><br />
Successfully&nbsp;created&nbsp;new&nbsp;SMS:<br />
&nbsp;&nbsp;/org/freedesktop/ModemManager1/SMS/0&nbsp;(unknown)<br />
&nbsp;<br />
$&gt; <em>sudo mmcli -s 0 <strong>--send</strong></em><br />
successfully sent the SMS<br />
&nbsp;<br />
$&gt; <em>sudo mmcli -m 0 <strong>--messaging-list-sms</strong></em><br />
Found 21 SMS messages:<br />
&nbsp;&nbsp;/org/freedesktop/ModemManager1/SMS/0&nbsp;(sent)<br />
&nbsp;&nbsp;/org/freedesktop/ModemManager1/SMS/1&nbsp;(received)<br />
&nbsp;<br />
$&gt; sudo mmcli -s 1<br />
SMS '/org/freedesktop/ModemManager1/SMS/1'<br />
&nbsp;&nbsp;-----------------------------------<br />
&nbsp;&nbsp;Content&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number:&nbsp;'+1234567890'<br />
&nbsp;&nbsp;-----------------------------------<br />
&nbsp;&nbsp;Properties&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDU&nbsp;type:&nbsp;'status-report'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state:&nbsp;'received'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smsc:&nbsp;'+9876543210'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validity:&nbsp;'0'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class:&nbsp;'0'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storage:&nbsp;'unknown'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;message&nbsp;reference:&nbsp;'137'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timestamp:&nbsp;'120914120619+02'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delivery&nbsp;state:&nbsp;'temporary-error-sc-specific-reason'&nbsp;(0x30)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;discharge&nbsp;timestamp:&nbsp;'120914120619+02'<br />
</code></p>
<p>You can then match the delivery report with the message sent by using the &#8216;<strong>message reference</strong>&#8216; value, which should be the same in both. This also applies to multipart messages, where the &#8216;message reference&#8217; of our SMS object is the one reported when sending the last part, and therefore we only request the delivery report in the last part sent.</p>
<p>Enjoy!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/mmcli/'>mmcli</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a>, <a href='http://sigquit.wordpress.com/tag/qmi/'>QMI</a>, <a href='http://sigquit.wordpress.com/tag/sms/'>SMS</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/488/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=488&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/09/14/sms-goodies-in-modemmanager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2012/09/fish.jpg" medium="image">
			<media:title type="html">Fish memory</media:title>
		</media:content>
	</item>
		<item>
		<title>QMI-powered broadband connections in OpenWRT</title>
		<link>http://sigquit.wordpress.com/2012/08/20/qmi-powered-broadband-connections-in-openwrt/</link>
		<comments>http://sigquit.wordpress.com/2012/08/20/qmi-powered-broadband-connections-in-openwrt/#comments</comments>
		<pubDate>Mon, 20 Aug 2012 10:53:56 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[libqmi]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[qmi4g]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=477</guid>
		<description><![CDATA[Linux 3.2 kernel with QMI support When I started to develop the QMI support in OpenWRT, latest trunk was based on the 3.2 kernel series. By the time you read this, OpenWRT may already have a recent enough kernel (&#62;= 3.4), so this custom setup may not be needed any more, so keep it just [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=477&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h4>Linux 3.2 kernel with QMI support</h4>
<p>When I started to develop the QMI support in OpenWRT, latest trunk was based on the 3.2 kernel series. By the time you read this, OpenWRT may already have a recent enough kernel (&gt;= 3.4), so this custom setup may not be needed any more, so keep it just for reference.</p>
<p>The <strong>&#8216;v3.2.5-qmi&#8217; branch </strong> in the <a href="https://gitorious.org/lanedo/linux-stable" target="_blank"><strong>Lanedo</strong> stable kernel tree </a>contains a set of patches on top of the 3.2.5. Linux kernel release. These patches add support for QMI ports (updated &#8216;cdc-wdm&#8217; and new &#8216;qmi_wwan&#8217; driver) in the 3.2 stable series:<br />
  <code>git://gitorious.org/lanedo/linux-stable.git</code></p>
<p>&nbsp;</p>
<h4>OpenWRT with QMI support</h4>
<p>The same set of patches was then added to the <strong>&#8216;qmi-support&#8217; branch</strong> of the <a href="https://gitorious.org/lanedo/openwrt" target="_blank">Lanedo openwrt tree</a>, enabling OpenWRT builds with QMI support:<br />
  <code>git://gitorious.org/lanedo/openwrt.git</code></p>
<p>When you compile this OpenWRT build, make sure you configure the kernel with the QMI-specific requirements enabled:</p>
<p><code>CONFIG_PACKAGE_kmod-qmi-wwan=m<br />
CONFIG_PACKAGE_kmod-usb-wdm=m<br />
...<br />
</code></p>
<p>For reference, you can find <a href="http://www.lanedo.com/~aleksander/openwrt/latest/config" target="_blank">here</a> the .config I used for the <a href="http://www.lanedo.com/~aleksander/openwrt/latest/" target="_blank">ar71xx-nand builds</a> (installable in a RouterBoard 433UAH).</p>
<p>&nbsp;</p>
<h4>libqmi-glib and qmi4g</h4>
<p>&#8216;libqmi-glib&#8217; and &#8216;qmi4g&#8217; are two new packages added to the <strong>&#8216;qmi-support&#8217; branch</strong> of the <a href="https://gitorious.org/lanedo/openwrt-packages" target="_blank">Lanedo openwrt-packages tree</a>:<br />
  <code>git://gitorious.org/lanedo/openwrt-packages.git</code></p>
<p>This repository can be added to your OpenWRT build by creating a new &#8216;<code>feeds.conf</code>&#8216; with the following contents:<br />
<code>src-git packages git://gitorious.org/lanedo/openwrt-packages.git;qmi-support</code></p>
<p>The new packages, in detail:</p>
<ul>
<li><strong>libqmi-glib:</strong> This package provides a preliminary version of <code>libqmi-glib</code>, <a href="http://www.lanedo.com/~aleksander/libqmi-glib/" target="_blank">as released</a> unofficially by me. This package will provide the <code>libqmi-glib</code> library, the <code>qmicli</code> command line utility and the <code>qmi-network</code> script.</li>
<li><strong>qmi4g:</strong> This package registers a new &#8216;<code>qmi4g</code>&#8216; network protocol, which takes care of launching the network start/stop requests through QMI.</li>
</ul>
<p>If you&#8217;re using the precompiled OpenWRT images I gave above, you can just install these packages using &#8216;opkg&#8217; once you&#8217;ve added <a href="http://www.lanedo.com/~aleksander/openwrt/latest" target="_blank">the &#8216;latest&#8217; Lanedo repository</a>.</p>
<p>&nbsp;</p>
<h4>Configuring qmi4g</h4>
<p>Once the <code>qmi4g</code> package is installed, you are then allowed to include the<br />
following configuration under /etc/config/network:<br />
<code><br />
config 'interface' 'broadband'<br />
        option 'ifname' 'wwan0'<br />
        option 'proto' 'dhcp'<br />
        option 'auto' '0'</p>
<p>config 'interface' 'wdm0'<br />
        option 'proto' 'qmi4g'<br />
        option 'wdmif' '/dev/cdc-wdm0'<br />
        option 'wwanif' 'broadband'<br />
</code></p>
<p>The configuration is split into 2 interfaces:</p>
<ol>
<li>First, the configuration for the &#8216;<code>wwan0</code>&#8216; interface. This interface needs to be set with &#8216;<code>auto</code>&#8216; equal to &#8216;<code>0</code>&#8216;, so that it is never brought up automatically; and with &#8216;<code>dhcp</code>&#8216; as the protocol to be used. You should <strong>never</strong> ifup/ifdown this interface manually.</li>
<li>Second, a virtual interface using the new &#8216;<code>qmi4g</code>&#8216; protocol, which needs 2 options set: &#8216;<code>wdmif</code>&#8216; with the cdc-wdm port to use for the QMI protocol, and &#8216;<code>wwanif</code>&#8216; with the uci-interface-name of the wwan iface to use.</li>
</ol>
<p>&nbsp;</p>
<h4>Start/Stop the network</h4>
<p>Once the qmi4g setup is added in /etc/config/network, you can now then just:<br />
 <code>$&gt; ifup wdm0</code></p>
<p>That command will internally first launch the network start QMI command, and if succeeds it will itself ifup wwan0. The wwan interface can be used as any other eth-based interface now, it can be added as part of multiwan or in a vlan or in a bonding, or anything.</p>
<p>Once the connection is no longer wanted, you can just:<br />
 <code>$&gt; ifdown wdm0</code></p>
<p>That command will stop the network with QMI and also ifdown wwan0.</p>
<p>&nbsp;</p>
<h4>LUCI</h4>
<p>Once the network configuration is in place, the connection can also be started via web. Just log in to LUCI, go to Network interfaces and you&#8217;ll see both the wwan interface (&#8220;<em>broadband</em>&#8220;) and the virtual &#8220;<em>wdm0</em>&#8220;. Starting/Stopping the &#8220;<em>wdm0</em>&#8221; interface via LUCI should work. As said before, you shouldn&#8217;t touch the wwan interface directly.</p>
<p>Enjoy!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/libqmi/'>libqmi</a>, <a href='http://sigquit.wordpress.com/tag/linux/'>linux</a>, <a href='http://sigquit.wordpress.com/tag/openwrt/'>openwrt</a>, <a href='http://sigquit.wordpress.com/tag/qmi4g/'>qmi4g</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/477/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=477&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/08/20/qmi-powered-broadband-connections-in-openwrt/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>An introduction to libqmi</title>
		<link>http://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi/</link>
		<comments>http://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi/#comments</comments>
		<pubDate>Mon, 20 Aug 2012 07:27:38 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[libqmi]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=472</guid>
		<description><![CDATA[What is QMI? QMI is a binary protocol designed to replace the AT command based communication with modems, and is available in devices with Qualcomm chipsets from multiple vendors (Novatel, Huawei, Sierra Wireless, ZTE&#8230; and of course Qualcomm itself). The protocol defines different &#8216;services&#8216;, each of them related to different actions that may be requested [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=472&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h4>What is QMI?</h4>
<p>QMI is a binary protocol designed to replace the AT command based communication with modems, and is available in devices with Qualcomm chipsets from multiple vendors (Novatel, Huawei, Sierra Wireless, ZTE&#8230; and of course Qualcomm itself).</p>
<p>The protocol defines different &#8216;<strong>services</strong>&#8216;, each of them related to different actions that may be requested to the modem. For example, the &#8216;DMS&#8217; (Device Management) service provides actions to load device information; while the &#8216;NAS&#8217; (Network Access) service provides actions to register in the network. Similarly, other services will allow the user to request data connections (WDS), setup GPS location reporting (PDS), or manage internals of the user identity module (UIM service). The user needs to handle the creation of &#8216;clients&#8217; for those services by allocating/deallocating &#8216;client IDs&#8217; using the generic always-on &#8216;control&#8217; (CTL) service.</p>
<p>Each service in the protocol defines &#8216;<strong>Request and Responses</strong>&#8216; as well as &#8216;<strong>Indications</strong>&#8216;. Each pair of request/response has a maching ID which lets the user concatenate multiple requests and get out-of-order responses that can be afterwards matched through the common ID. Indications arrive as unsolicited messages, sent either to a specific client or as a broadcast message to all the clients of a given service. Usually the user needs to request the enabling of the indications to receive via some request/response.</p>
<p>Finally, each message in the protocol defines a set of input (in requests) and output (in responses and indications) arguments, which we name as <strong>TLVs</strong>. Some of these are defined to be mandatory, others are optional, and others are only mandatory if some other argument is available and has a given value. For example, some output arguments in response messages are only mandatory if the result of the response (given as a TLV) is SUCCESS.</p>
<p>&nbsp;</p>
<h4>Using the QMI protocol</h4>
<p>This protocol is easily accessible in recent enough Linux kernels (&gt;= 3.4), through the <strong>cdc-wdm</strong> and <strong>qmi_wwan</strong> drivers. Once these drivers are in place and the modem gets plugged in, the kernel will expose a new <code>/dev/cdc-wdm</code> device which can talk QMI, along with a <code>wwan</code> interface associated to each QMI port.</p>
<p>&nbsp;</p>
<h4>libqmi</h4>
<p>libqmi is an on-going effort to get a library providing easy access to Qualcomm&#8217;s &#8216;QMI&#8217; protocol. The current libqmi available is based on the <strong>GLib/GObject/GIO</strong>-powered &#8216;libqmi-glib&#8217;. libqmi tries to ease the use of the protocol by providing:</p>
<ul>
<li>A &#8216;<code>QmiDevice</code>&#8216; object to control the access to the /dev/cdc-wdm device. This object allows creating new per-service &#8216;QmiClient&#8217;s. It also hides the use of the implicit &#8216;CTL&#8217; service client.</li>
<li>The &#8216;<code>QmiClient</code>&#8216; object provides an interface to the set of request/responses of a given service. Users of the library will just need to execute a GIO-asynchronous method to send the request and get the processed response.</li>
<li>The &#8216;<code>QmiClient</code>&#8216; object also provides signals for each of the indications given in the service.</li>
<li>The input and output arguments needed in requests, responses and indications are compiled into &#8216;bundles&#8217;. These bundles are opaque structs with accessors for their elements, which allow us to add new TLVs to a given message in the future without breaking API/ABI.</li>
</ul>
<p>The protocol is written in the library as a <strong>JSON dictionary</strong> of rules, and most of the code to handle the protocol in the library is autogenerated during compilation. If you want to take a look at the currently available interface, check the (work in progress) gtk-doc documentation at: <a href="http://www.lanedo.com/~aleksander/libqmi/html" target="_blank">http://www.lanedo.com/~aleksander/libqmi/html</a></p>
<p>&nbsp;</p>
<h4>qmicli</h4>
<p>The libqmi project comes with a command line utility (<code>qmicli</code>) primarily used as a developer tool for testing the libqmi-glib library. Just run the program with &#8216;<code>--help-all</code>&#8216; to get all possible actions it can run. A quick example of usage:<br />
<code><br />
$&gt; sudo qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer<br />
[/dev/cdc-wdm0] Device manufacturer retrieved:<br />
Manufacturer: 'Qualcomm Incorporated'<br />
</code></p>
<p><em>Hint</em>: If you compile the project passing <code>-DMESSAGE_ENABLE_TRACE</code> to <code>CFLAGS</code>, it will dump as DEBUG logs the content and translation of all the QMI messages passed in both directions. You&#8217;ll also need &#8216;<code>--verbose</code>&#8216; or just &#8216;<code>-v</code>&#8216; to show the debug logs when running <code>qmicli</code>.</p>
<p>&nbsp;</p>
<h4>Other utilities</h4>
<p>The project also comes with a small bash script called &#8216;<code><strong>qmi-network</strong></code>&#8216;, which allows you to launch a broadband connection using <code>libqmi-glib</code> and <code>qmicli</code>. This script requires two arguments; first the cdc-wdm device to talk to, and secondly the action (start|stop|status) to execute. The script can definitely be improved in multiple ways (e.g. send PIN), so if anyone wants to do it patches are very welcome.</p>
<p>&nbsp;</p>
<h4>Where do I get it?</h4>
<p>The project is currently available in the <strong>freedesktop.org</strong> infrastructure:</p>
<ul>
<li><strong>git:</strong> <a href="http://cgit.freedesktop.org/libqmi" target="_blank">http://cgit.freedesktop.org/libqmi</a></li>
<li><strong>mailing list:</strong> <a href="http://lists.freedesktop.org/mailman/listinfo/libqmi-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/libqmi-devel</a></li>
<li><strong>bugzilla:</strong> <a href="https://bugs.freedesktop.org/buglist.cgi?product=libqmi" target="_blank">https://bugs.freedesktop.org/buglist.cgi?product=libqmi</a></li>
</ul>
<p>&nbsp;</p>
<h4>ModemManager</h4>
<p>Last but not least, the beloved ModemManager is getting improved with <strong>QMI support</strong> through libqmi-glib. If you want to give it a try (still work in progress), just grab the <a href="http://cgit.freedesktop.org/ModemManager/ModemManager/log/?h=qmi-support" target="_blank">&#8216;qmi-support&#8217; branch</a> in the upstream ModemManager repository.</p>
<p>&nbsp;<br />
Enjoy it!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/libqmi/'>libqmi</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/472/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=472&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>GNOME.Asia 2012</title>
		<link>http://sigquit.wordpress.com/2012/06/25/gnome-asia-2012/</link>
		<comments>http://sigquit.wordpress.com/2012/06/25/gnome-asia-2012/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 15:08:43 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[devhelp]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome-asia]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[tracker]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=463</guid>
		<description><![CDATA[Finally back home after attending GNOME.Asia 2012 and some vacation time afterwards. &#160; The conference started on Friday afternoon, with a design workshop managed by Allan Day, Jakub Steiner and William Jon McCann. It was pretty interesting, truth be told, and I particularly enjoyed how Jakub played with Inkscape to create the icon of &#8220;GNOME [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=463&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="https://sigquit.files.wordpress.com/2012/05/gnome-asia.jpg"><img class="aligncenter size-full wp-image-455" title="gnome-asia" src="https://sigquit.files.wordpress.com/2012/05/gnome-asia.jpg?w=595" alt=""   /></a></p>
<p>Finally back home after attending <a title="GNOME.Asia 2012" href="http://2012.gnome.asia">GNOME.Asia 2012</a> and some vacation time afterwards.</p>
<p>&nbsp;</p>
<div id="attachment_466" class="wp-caption aligncenter" style="width: 510px"><a href="http://sigquit.files.wordpress.com/2012/06/pre-event.jpg"><img class="size-full wp-image-466" title="Design workshop" src="http://sigquit.files.wordpress.com/2012/06/pre-event.jpg?w=595" alt=""   /></a><p class="wp-caption-text">CC BY-NC-SA 2.0, Sammy Fung</p></div>
<p>The conference started on Friday afternoon, with a design workshop managed by <a href="http://afaikblog.wordpress.com">Allan Day</a>, <a href="http://jimmac.musichall.cz">Jakub Steiner</a> and <a href="http://blogs.gnome.org/mccann">William Jon McCann</a>. It was pretty interesting, truth be told, and I particularly enjoyed how Jakub played with Inkscape to create the icon of &#8220;GNOME Ball&#8221; (now we just need a program for the icon). I truly want to spend more time with Inkscape now, and try to draw something better than <a title="Unofficial GNU PDF logo" href="http://www.es.gnu.org/~aleksander/drawings/gnupdflogo.jpg">my previous attempts</a> to draw an icon/logo.</p>
<p>&nbsp;</p>
<div id="attachment_468" class="wp-caption aligncenter" style="width: 510px"><a href="http://sigquit.files.wordpress.com/2012/06/7183876857_bac7f39762.jpg"><img class="size-full wp-image-468" title="Tracker talk" src="http://sigquit.files.wordpress.com/2012/06/7183876857_bac7f39762.jpg?w=595" alt=""   /></a><p class="wp-caption-text">CC BY-NC-SA 2.0, Sammy Fung</p></div>
<p>I gave two talks during the first day of the conference, one about <strong>Tracker</strong> (<a href="http://www.lanedo.com/~aleksander/talks/GNOMEASIA2012%20-%20Introduction%20to%20Tracker.pdf">slides here</a>) and another one about <strong>ModemManager</strong> (<a href="http://www.lanedo.com/~aleksander/talks/GNOMEASIA2012%20-%20ModemManager%20revamped.pdf">slides here</a>). The talks were recorded, but official videos of the talks are not yet available on the Internet.</p>
<p>&nbsp;</p>
<p><a href="http://sigquit.files.wordpress.com/2012/06/devhelp-application-menu.png"><img class="aligncenter size-full wp-image-469" title="Devhelp Application Menu" src="http://sigquit.files.wordpress.com/2012/06/devhelp-application-menu.png?w=595" alt=""   /></a></p>
<p>Thanks to the usual jet lag, I also found time to develop the application-menu support for Devhelp during my stay in Hong Kong. The code is currently available in the <a href="http://git.gnome.org/browse/devhelp/log/?h=application-menu">&#8216;application-menu&#8217; branch</a> in the gnome git repo, and tracked at <a href="https://bugzilla.gnome.org/show_bug.cgi?id=677927">GB#677927</a>.</p>
<p>&nbsp;</p>
<p><a href="http://sigquit.files.wordpress.com/2012/06/lanedologo.png"><img class="aligncenter size-full wp-image-470" title="Lanedo Logo" src="http://sigquit.files.wordpress.com/2012/06/lanedologo.png?w=595" alt=""   /></a></p>
<p>Finally, thanks to my employer, <a href="http://www.lanedo.com">Lanedo GmbH</a>, for sponsoring my attendance to this great conference!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/meetings/'>Meetings</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/devhelp/'>devhelp</a>, <a href='http://sigquit.wordpress.com/tag/gnome/'>gnome</a>, <a href='http://sigquit.wordpress.com/tag/gnome-asia/'>gnome-asia</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/tracker/'>tracker</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=463&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/06/25/gnome-asia-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="https://sigquit.files.wordpress.com/2012/05/gnome-asia.jpg" medium="image">
			<media:title type="html">gnome-asia</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2012/06/pre-event.jpg" medium="image">
			<media:title type="html">Design workshop</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2012/06/7183876857_bac7f39762.jpg" medium="image">
			<media:title type="html">Tracker talk</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2012/06/devhelp-application-menu.png" medium="image">
			<media:title type="html">Devhelp Application Menu</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2012/06/lanedologo.png" medium="image">
			<media:title type="html">Lanedo Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Looking for a ModemManager logo</title>
		<link>http://sigquit.wordpress.com/2012/06/06/looking-for-a-modemmanager-logo/</link>
		<comments>http://sigquit.wordpress.com/2012/06/06/looking-for-a-modemmanager-logo/#comments</comments>
		<pubDate>Wed, 06 Jun 2012 11:11:40 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=458</guid>
		<description><![CDATA[Hey designers! ModemManager (a.k.a &#8220;MM&#8220;) is a small daemon which takes care of controlling your broadband devices in your GNU/Linux system. We currently don&#8217;t have a logo for ModemManager, so if you&#8217;re a designer with some free time, share your ideas! Something simple, similar to the NetworkManager logo would be great, actually. Filed under: Development, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=458&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Hey designers!</p>
<p><strong>ModemManager</strong> (a.k.a &#8220;<strong>MM</strong>&#8220;) is a small daemon which takes care of controlling your broadband devices in your GNU/Linux system. We currently don&#8217;t have a logo for ModemManager, so if you&#8217;re a designer with some free time, <span style="color:#ff0000;">share your ideas</span>! Something simple, similar to the <a href="http://projects.gnome.org/NetworkManager/">NetworkManager</a> logo would be great, actually.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/458/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=458&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/06/06/looking-for-a-modemmanager-logo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Speaking at GNOME.Asia 2012 (Hong Kong)</title>
		<link>http://sigquit.wordpress.com/2012/05/22/speaking-at-gnome-asia-2012-hong-kong/</link>
		<comments>http://sigquit.wordpress.com/2012/05/22/speaking-at-gnome-asia-2012-hong-kong/#comments</comments>
		<pubDate>Tue, 22 May 2012 18:22:24 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[FreeDesktop Planet]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[gnome-asia]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[tracker]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=452</guid>
		<description><![CDATA[Only 3 weeks left for GNOME.Asia, this year in the beautiful city of Hong Kong. According to the current schedule I&#8217;ll be giving two talks on Saturday June 9th: An introduction to Tracker, SPARQL and whatnot: Tracker is not (only) a search engine: it is a semantic data storage, powered by RDF ontologies, Nepomuk, and [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=452&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Only 3 weeks left for <a href="http://2012.gnome.asia/" title="GNOME.Asia" target="_blank">GNOME.Asia</a>, this year in the beautiful city of <strong>Hong Kong</strong>.</p>
<p><a href="http://2012.gnome.asia/"><img src="https://sigquit.files.wordpress.com/2012/05/gnome-asia.jpg?w=595" alt="" title="gnome-asia"   class="aligncenter size-full wp-image-455" /></a></p>
<p>According to the <a href="http://2012.gnome.asia/schedule" title="GNOME.Asia 2012 Schedule" target="_blank">current schedule</a> I&#8217;ll be giving two talks on Saturday June 9th:</p>
<ul>
<li>
<strong>An introduction to Tracker, SPARQL and whatnot</strong>:<br />
<a href="http://projects.gnome.org/tracker" title="Gnome Tracker" target="_blank">Tracker</a> is not (only) a search engine: it is a semantic data storage, powered by RDF ontologies, Nepomuk, and the SPARQL protocol. Tracker is one of the core building blocks of the MeeGo Harmattan operating system; and since release 2.30, it is also a blessed external dependency in GNOME. But it wasn’t until GNOME 3 and the first release of GNOME Documents that it started to get some really good attention&#8230; and there is more to come!
</li>
</ul>
<ul>
<li>
<strong>ModemManager revamped: now supporting LTE/4G modems</strong>:<br />
ModemManager, along with <a href="http://projects.gnome.org/NetworkManager/" title="NetworkManager" target="_blank">NetworkManager</a>, provides easy-to-use broadband modem connections in the GNOME desktop. With new requirements coming along with the new LTE (4G) communication standards, ModemManager got not only a face-lift, but also a deep surgery to improve its codebase and the way it supports vendor-specific plugins.</p>
<p>The new ModemManager comes with a new GDBus-powered interface; built-in support for LTE and mixed CDMA+LTE devices; dynamic interfaces and per-interface state machines; helper libmm-common and libmm-glib libraries; a handy “mmcli” command line interface utility; and a new plugin development strategy which is port-type agnostic and based on GIO async calls.</p>
<p>This talk is an introduction to ModemManager, with special focus on LTE and all the new details and features coming with the new codebase.
</li>
</ul>
<p>Thanks to my employer, <a href="http://www.lanedo.com" title="Lanedo Website" target="_blank">Lanedo GmbH</a>, for sponsoring my attendance!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/freedesktop-planet/'>FreeDesktop Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/meetings/'>Meetings</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gnome-asia/'>gnome-asia</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/tracker/'>tracker</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/452/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=452&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/05/22/speaking-at-gnome-asia-2012-hong-kong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="https://sigquit.files.wordpress.com/2012/05/gnome-asia.jpg" medium="image">
			<media:title type="html">gnome-asia</media:title>
		</media:content>
	</item>
		<item>
		<title>Look ma&#8217;, I&#8217;m flying!</title>
		<link>http://sigquit.wordpress.com/2012/05/13/look-ma-im-flying/</link>
		<comments>http://sigquit.wordpress.com/2012/05/13/look-ma-im-flying/#comments</comments>
		<pubDate>Sun, 13 May 2012 17:13:13 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[microlight aircraft]]></category>
		<category><![CDATA[ultralight aircraft]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=448</guid>
		<description><![CDATA[I&#8217;ve always wanted to try to fly in a small airplane, and this weekend my girlfriend got me as birthday present a short introduction into ultra/microlight aircrafts, including a 30-min flight. I operated the aircraft during the whole trip, except for takeoff and engine-less landing, and I even got a video of it! The flight [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=448&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve always wanted to try to fly in a small airplane, and this weekend my girlfriend got me as birthday present a short introduction into <strong>ultra/microlight aircrafts</strong>, including a 30-min flight. I operated the aircraft during the whole trip, except for takeoff and engine-less landing, and I even got a video of it!</p>
<p>The flight started from the small town of <a href="http://g.co/maps/kgnv6" target="_blank">Camarenilla</a>, and we ended up flying over the beautiful city of <a href="http://en.wikipedia.org/wiki/Toledo,_Spain" title="Toledo" target="_blank">Toledo</a>, one of the former capitals of the Spanish Empire.</p>
<p>This short video comes with the original audio:<br />
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='595' height='365' src='http://www.youtube.com/embed/RrNDIm1KXS0?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>This long video comes with music, and includes the recording of most of the trip, including landing.<br />
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='595' height='365' src='http://www.youtube.com/embed/2IM3TXD46Uw?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/personal/'>Personal</a> Tagged: <a href='http://sigquit.wordpress.com/tag/microlight-aircraft/'>microlight aircraft</a>, <a href='http://sigquit.wordpress.com/tag/ultralight-aircraft/'>ultralight aircraft</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/448/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=448&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/05/13/look-ma-im-flying/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Enabling GPS location in ModemManager</title>
		<link>http://sigquit.wordpress.com/2012/03/29/enabling-gps-location-in-modemmanager/</link>
		<comments>http://sigquit.wordpress.com/2012/03/29/enabling-gps-location-in-modemmanager/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 09:33:40 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[Programs]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>
		<category><![CDATA[option]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=431</guid>
		<description><![CDATA[Location information in ModemManager Since MM 0.5 at least, ModemManager comes with a Location interface which is defined to expose not only 3GPP-specific location information (operator MMC/MNC + Location area code + Cell ID), but also GPS-specific location information (cached NMEA traces and raw location information). In MM 0.7, this Location interface will actually work [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=431&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h4>Location information in ModemManager</h4>
<p>Since MM 0.5 at least, ModemManager comes with a Location interface which is defined to expose not only 3GPP-specific location information (operator MMC/MNC + Location area code + Cell ID), but also GPS-specific location information (cached NMEA traces and raw location information). <strong>In MM 0.7, this Location interface will actually work for GPS location, at least for Option modems with GPS capabilities.</strong></p>
<h4>The HSO plugin</h4>
<p>The High-Speed Option plugin is probably one of the most complex plugins being handled in ModemManager. In the new ModemManager 0.7 codebase, HSO modems (<code>MMBroadbandModemHso</code>) are implemented as a subclass of the standard Option modems (<code>MMBroadbandModemOption</code>), as they share lots of common features (allowed modes management, access technology and signal quality reporting&#8230;); but they also implement lots of connection related HSO-specific features (e.g. success of a connection establishment gets notified via unsolicited messages), which are most of them handled in a new HSO-specific bearer. Some of these advanced Option modems come with additional surprises: GPS-specific ports (AT port for control, raw serial port for NMEA traces).</p>
<p>The HSO modems provide detailed information about the type of each port being exposed in the USB interface; and so during the probing phase we are able to easily grab the GPS-control AT port and the additional serial port for NMEA traces (handled by a new MMGpsSerialPort port type). Once the HSO modem knows it has these two ports, it will allow to enable or disable any of the two GPS-specific location sources (NMEA or raw), or both at the same time. The NMEA location source will enable the modem to expose the last cached NMEA traces; while the raw location source will tell the modem to just expose generic location information such as time, latitude, longitude and altitude. In the case of the HSO modem (and possibly in every other case), both location sources are actually implemented based on the same NMEA traces received (raw information is parsed from <code>$GTGGA</code> traces). In addition to the core GPS location handling and the HSO-specific implementation, <strong>libmm-glib</strong> and <strong>mmcli</strong> where also improved to easily play with the new features.</p>
<h4>Trying the GPS location retrieval with your Option modem</h4>
<p>If you want to give a quick try to these capabilities, grab ModemManager git master, compile, install and plug in your modem. You first need to check whether the modem has GPS-specific location capabilities. Note that we&#8217;ll assume the modem is exposed as index 0; if you have more than one modem, just use <code>--list-modems</code> to check the proper modem index:<br />
<code><br />
$ mmcli -m 0 --location-status<br />
/org/freedesktop/ModemManager1/Modem/0<br />
&nbsp;&nbsp;----------------------------<br />
&nbsp;&nbsp;Location | capabilities: '3gpp-lac-ci, gps-raw, gps-nmea'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enabled: 'none'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signals: 'no'<br />
</code></p>
<p>The output says that the modem supports 3GPP Location area code/Cell ID, GPS raw and GPS-NMEA location sources. None is enabled yet, as we didn&#8217;t enable the modem, which we can do issuing:<br />
<code><br />
$ sudo mmcli -m 0 --enable<br />
successfully enabled the modem</p>
<p>$ mmcli -m 0 --location-status<br />
/org/freedesktop/ModemManager1/Modem/0<br />
&nbsp;&nbsp;----------------------------<br />
&nbsp;&nbsp;Location | capabilities: '3gpp-lac-ci, gps-raw, gps-nmea'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enabled: '3gpp-lac-ci'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signals: 'no'<br />
</code></p>
<p>The 3GPP location source will always be enabled by default if it is supported by the modem, while the GPS-specific ones will always be disabled by default. The reasoning behind this is that the 3GPP LAC/CI comes <em>for free</em> in C(G)REG notifications when C(G)REG=2 is supported, while the GPS location is usually an additional module in the modem, with high power consumption. Using mmcli, we can now enable both GPS raw and NMEA location sources:<br />
<code><br />
$ sudo mmcli -m 0 \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--location-enable-gps-raw \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--location-enable-gps-nmea<br />
successfully setup location gathering<br />
</code></p>
<p>If we do check again the status, we&#8217;ll see the GPS-specific locations are enabled:<br />
<code><br />
$ mmcli -m 0 --location-status<br />
/org/freedesktop/ModemManager1/Modem/0<br />
&nbsp;&nbsp;----------------------------<br />
&nbsp;&nbsp;Location | capabilities: '3gpp-lac-ci, gps-raw, gps-nmea'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enabled: '3gpp-lac-ci, gps-raw, gps-nmea'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signals: 'no'<br />
</code></p>
<p>Once they are enabled, ModemManager will start receiving NMEA traces in the GPS raw port, and will start to cache and process them. mmcli allows to show location-source-specific information with <code>--location-get-3gpp</code>, <code>--location-get-gps-nmea</code> and <code>--location-get-gps-raw</code>; but it also allows to query for all at the same time:<br />
<code><br />
$ sudo mmcli -m 0 --location-get<br />
/org/freedesktop/ModemManager1/Modem/0<br />
&nbsp;&nbsp;-------------------------<br />
&nbsp;&nbsp;3GPP location&nbsp;&nbsp;&nbsp;|&nbsp;Mobile country code: '214'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Mobile network code: '3'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;Location area code: '21071'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cell ID: '7033737'<br />
&nbsp;&nbsp;-------------------------<br />
&nbsp;&nbsp;GPS NMEA traces | $GPGGA,,,,,,0,,,,,,,,*66<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPRMC,,V,,,,,,,,,,N*53<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPGSA,A,1,,,,,,,,,,,,,,,*1E<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPGSV,4,1,16,24,,,,29,,,,05,,,,18,,,*7A<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPGSV,4,2,16,22,,,,14,,,,11,,,,17,,,*7B<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPGSV,4,3,16,03,,,,12,,,,30,,,,13,,,*78<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPGSV,4,4,16,23,,,,15,,,,27,,,,07,,,*79<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| $GPVTG,,T,,M,,N,,K,N*2C<br />
&nbsp;&nbsp;-------------------------<br />
&nbsp;&nbsp;Raw GPS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Not available<br />
</code></p>
<p>Note that ModemManager will expose only the last received NMEA traces of each kind, except for those (<code>$GPGSV</code> here) that are actually building a sequence.</p>
<p>Once the GPS module fixes a position, we&#8217;ll process the <code>$GPGGA</code> NMEA trace to get valid GPS location information:<br />
<code><br />
$ sudo mmcli -m 0 --location-get-gps-raw<br />
/org/freedesktop/ModemManager1/Modem/0<br />
&nbsp;&nbsp;-------------------------<br />
&nbsp;&nbsp;Raw GPS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;UTC time: '155142.2'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Longitude: '-3.513941'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;Latitude: '40.502603'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;Altitude: '18.000000'<br />
</code></p>
<h4>What about other modems?</h4>
<p>Well, if the modem exposes GPS-specific ports in the same USB interface, it shouldn&#8217;t be difficult to add support for them, specially now that all the core/libmm-glib/mmcli work is already available.</p>
<p>A special case is when the modem exposes a single AT port via USB and the GPS port via RS232 (e.g. Sierra Wireless FXT009 with GPS extension). This case is a bit more tricky as there is no easy way for ModemManager to tell that the RS232 port is to be managed by the same modem object created after grabbing the AT port. In this case, the user may need to explicitly set some magic udev tags to let ModemManager handle the needed logic, but that also may get tricky if the user has more than one such modem plugged in (not sure for what, but anyway).</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a>, <a href='http://sigquit.wordpress.com/category/programs/'>Programs</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gps/'>gps</a>, <a href='http://sigquit.wordpress.com/tag/location/'>location</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a>, <a href='http://sigquit.wordpress.com/tag/option/'>option</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/431/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/431/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=431&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/03/29/enabling-gps-location-in-modemmanager/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>7 years of PVOL</title>
		<link>http://sigquit.wordpress.com/2012/03/22/years-of-pvol/</link>
		<comments>http://sigquit.wordpress.com/2012/03/22/years-of-pvol/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 10:10:02 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[PVOL]]></category>
		<category><![CDATA[iopw]]></category>
		<category><![CDATA[jupiter]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=422</guid>
		<description><![CDATA[The Planetary Virtual Observatory and Laboratory (PVOL) is an online database of amateur images of the outer planets (Jupiter, Saturn, Uranus and Neptune). It was developed in early September 2004, during my attendance to the first NVO Summer School in Aspen (Co, USA). It was first put online during November 2004, so we already celebrated [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=422&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://www.pvol.ehu.es" title="PVOL" target="_blank">Planetary Virtual Observatory and Laboratory (<strong>PVOL</strong>)</a> is an online database of <strong>amateur</strong> images of the outer planets (Jupiter, Saturn, Uranus and Neptune). It was developed in early September 2004, during my attendance to the first NVO Summer School in Aspen (Co, USA). It was first put online during <strong>November 2004</strong>, so we already celebrated its 7th birthday.</p>
<p><a href="http://www.pvol.ehu.es"><img src="https://sigquit.files.wordpress.com/2012/03/pvol-logo.gif?w=595" alt="" title="PVOL LOGO"   class="aligncenter size-full wp-image-426" /></a></p>
<p>After a bit more than 7 years online, it was time to prepare some charts showing the evolution in the number of images published. The following graph shows the number of images of Jupiter available since year 2000 (PVOL inherited the images already available in the <a href="http://www.ehu.es/iopw/jupiter_images.htm" target="_blank">previous IOPW page</a>).</p>
<p><a href="https://sigquit.files.wordpress.com/2012/03/chart2.png"><img src="https://sigquit.files.wordpress.com/2012/03/chart2.png?w=500" alt="" title="Jupiter images 2000-2012" width="500" class="aligncenter size-medium wp-image-423" /></a></p>
<p>And the 2011-2012 apparition of Jupiter <strong>didn&#8217;t even finish yet</strong>!</p>
<p>So, thanks to the growing community of amateur astronomers (260 listed today) publishing images in the PVOL, and special thanks to the <a href="http://www.ajax.ehu.es/members.en.html" target="_blank"><strong>Planetary Sciences Group of the UPV-EHU</strong></a> for the great work they&#8217;re doing managing the system.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/development/projects/'>Projects</a>, <a href='http://sigquit.wordpress.com/category/development/projects/pvol/'>PVOL</a> Tagged: <a href='http://sigquit.wordpress.com/tag/iopw/'>iopw</a>, <a href='http://sigquit.wordpress.com/tag/jupiter/'>jupiter</a>, <a href='http://sigquit.wordpress.com/tag/pvol/'>PVOL</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/422/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=422&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/03/22/years-of-pvol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="https://sigquit.files.wordpress.com/2012/03/pvol-logo.gif" medium="image">
			<media:title type="html">PVOL LOGO</media:title>
		</media:content>

		<media:content url="https://sigquit.files.wordpress.com/2012/03/chart2.png?w=500" medium="image">
			<media:title type="html">Jupiter images 2000-2012</media:title>
		</media:content>
	</item>
		<item>
		<title>Help wanted in ModemManager/NetworkManager development!</title>
		<link>http://sigquit.wordpress.com/2012/03/02/help-wanted-in-modemmanagernetworkmanager-development/</link>
		<comments>http://sigquit.wordpress.com/2012/03/02/help-wanted-in-modemmanagernetworkmanager-development/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 13:02:41 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[glib]]></category>
		<category><![CDATA[gobject]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=417</guid>
		<description><![CDATA[If you have free time, and experience with gtk-doc documentation or man pages, ModemManager developers will thank you [1] if you help writing the new libmm-common, libmm-glib and mmcli documentation: [MM 0.6] Documentation If you have free time, basic GLib/GIO development knowledge, and a broadband modem (either USB dongle or internal) to play with, ModemManager [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=417&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If you have free time, and <strong>experience with gtk-doc documentation or man pages</strong>, ModemManager developers will thank you [1] if you help writing the new libmm-common, libmm-glib and mmcli documentation:<br />
<a href="https://mail.gnome.org/archives/networkmanager-list/2012-March/msg00021.html" title="[MM 0.6] Documentation" target="_blank">[MM 0.6] Documentation</a></p>
<p>If you have free time, <strong>basic GLib/GIO development knowledge</strong>, and a broadband modem (either USB dongle or internal) to play with, ModemManager developers will thank you [2] if you port any of the missing plugins to the new codebase in the 06-api branch:<br />
<a href="https://mail.gnome.org/archives/networkmanager-list/2012-March/msg00022.html" title="[MM 0.6] Plugins" target="_blank">[MM 0.6] Plugins</a></p>
<p>If you have free time, <strong>NetworkManager installed</strong> [3] and basic GLib/GIO development knowledge,  ModemManager developers will thank you [4] if you help providing support for the new ModemManager1 interface in NetworkManager:<br />
<a href="https://mail.gnome.org/archives/networkmanager-list/2012-March/msg00023.html" title="[MM 0.6] NM integration" target="_blank">[MM 0.6] NM integration</a></p>
<p>[1] You&#8217;ll get one beer for free if we ever meet.<br />
[2] You&#8217;ll get two beers for free if we ever meet.<br />
[3] This already leaves out Jose, Luca and Alfred.<br />
[4] You&#8217;ll get three! beers for free if we ever meet.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/glib/'>glib</a>, <a href='http://sigquit.wordpress.com/tag/gobject/'>gobject</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/417/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=417&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/03/02/help-wanted-in-modemmanagernetworkmanager-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>FOSDEM talk slides online</title>
		<link>http://sigquit.wordpress.com/2012/02/08/fosdem-talk-slides-online/</link>
		<comments>http://sigquit.wordpress.com/2012/02/08/fosdem-talk-slides-online/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 11:28:07 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[LTE]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=412</guid>
		<description><![CDATA[The slides of my talk about LTE and ModemManager in FOSDEM are now online at the Lanedo articles website: LTE is here and ModemManager is (almost) ready for it Filed under: GNU Planet, Lanedo Planet, Meetings, Planets Tagged: FOSDEM, LTE, ModemManager, slides<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=412&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The slides of <a href="http://fosdem.org/2012/schedule/event/lte_modemmanager" target="_blank">my talk about LTE and ModemManager in FOSDEM</a> are now online at the <a title="Lanedo articles" href="http://www.lanedo.com/articles.html" target="_blank">Lanedo articles</a> website:</p>
<ul>
<li><a href="http://www.lanedo.com/~aleksander/talks/FOSDEM2012%20-%20LTE%20and%20ModemManager.pdf" target="_blank">LTE is here and ModemManager is (almost) ready for it</a></li>
</ul>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/meetings/'>Meetings</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/fosdem/'>FOSDEM</a>, <a href='http://sigquit.wordpress.com/tag/lte/'>LTE</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/slides/'>slides</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/412/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=412&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/02/08/fosdem-talk-slides-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>FOSDEM 2012</title>
		<link>http://sigquit.wordpress.com/2012/01/30/fosdem-2012/</link>
		<comments>http://sigquit.wordpress.com/2012/01/30/fosdem-2012/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 20:54:07 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[LTE]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=407</guid>
		<description><![CDATA[Only some days left for FOSDEM 2012; which this [1] year is organized in Brussels (Belgium). For anyone interested, I&#8217;ll be giving a talk about LTE and ModemManager in the Telephony devroom (room H.2213), in the best time slot possible: Sunday 5th at 09:00 am. If you wake up that early just to attend the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=407&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Only some days left for <a href="http://fosdem.org/2012" target="_blank">FOSDEM 2012</a>; which this [1] year is organized in Brussels (Belgium).</p>
<p>For anyone interested, I&#8217;ll be giving a talk about <a href="http://fosdem.org/2012/schedule/event/lte_modemmanager" target="_blank">LTE and ModemManager</a> in the Telephony devroom (room H.2213), in the best time slot possible: Sunday 5th at 09:00 am. If you wake up that early just to attend the talk, you&#8217;ll get cookies for free!! [2].</p>
<p>Some GNU hackers will also attend the conference, but this year there won&#8217;t be a GNU devroom. If you want to suggest a place for dinner on Friday or Saturday, please do so in the <a href="http://lists.gnu.org/archive/html/ghm-discuss/2012-01/msg00002.html" target="_blank">ghm-discuss mailing list</a>.</p>
<p>Cheers and see you there!</p>
<p><a href="http://www.fosdem.org"><img src="http://www.fosdem.org/promo/going-to" alt="I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting" /></a></p>
<p>[1] (and every)<br />
[2] no, this is not true</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/meetings/'>Meetings</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/fosdem/'>FOSDEM</a>, <a href='http://sigquit.wordpress.com/tag/lte/'>LTE</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/407/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=407&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2012/01/30/fosdem-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://www.fosdem.org/promo/going-to" medium="image">
			<media:title type="html">I&#039;m going to FOSDEM, the Free and Open Source Software Developers&#039; European Meeting</media:title>
		</media:content>
	</item>
		<item>
		<title>FSCONS 2011 and GNU get-together</title>
		<link>http://sigquit.wordpress.com/2011/11/04/fscons-2011-and-gnu-get-together/</link>
		<comments>http://sigquit.wordpress.com/2011/11/04/fscons-2011-and-gnu-get-together/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 13:08:30 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[fscons]]></category>
		<category><![CDATA[ghm]]></category>
		<category><![CDATA[gnu]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=402</guid>
		<description><![CDATA[I&#8217;ll be attending FSCONS 2011 in Göteborg (Sweden) next week (11/11/11), which also holds a GNU get-together, with lots of usual suspects. Carlos Garnacho, another Lanedian, will be giving a talk about Theming GTK+ applications with CSS, which you shouldn&#8217;t miss. So, if you are interested in developing custom GTK+, LibreOffice, NetworkManager, ModemManager or Tracker [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=402&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ll be attending <a href="http://fscons.org/" title="FSCONS website" target="_blank"><strong>FSCONS 2011</strong></a> in Göteborg (Sweden) next week (11/11/11), which also holds a <a href="http://www.gnu.org/ghm/2011/fscons/GHM.html" title="GNU get-together" target="_blank">GNU get-together</a>, with lots of usual suspects.</p>
<p><a href="http://blogs.gnome.org/carlosg" target="_blank">Carlos Garnacho</a>, another Lanedian, will be giving a talk about <a href="http://my.fscons.org/schedule/session/67" target="_blank">Theming GTK+ applications with CSS</a>, which you shouldn&#8217;t miss.</p>
<p>So, if you are interested in developing custom <a href="http://www.gtk.org" target="_blank">GTK+</a>, <a href="http://www.libreoffice.org" target="_blank">LibreOffice</a>, <a href="http://projects.gnome.org/NetworkManager" target="_blank">NetworkManager, ModemManager</a> or <a href="http://projects.gnome.org/tracker" target="_blank">Tracker</a> features; or any <a href="http://www.lanedo.com/services.html" target="_blank">other services</a> provided by <a href="http://www.lanedo.com/" target="_blank"><strong>Lanedo GmbH</strong></a>, just email me and we&#8217;ll be able to talk in Göteborg.</p>
<p>See you there!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/meetings/'>Meetings</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/fscons/'>fscons</a>, <a href='http://sigquit.wordpress.com/tag/ghm/'>ghm</a>, <a href='http://sigquit.wordpress.com/tag/gnu/'>gnu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/402/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=402&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/11/04/fscons-2011-and-gnu-get-together/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Your custom kernel in MeeGo</title>
		<link>http://sigquit.wordpress.com/2011/09/02/your-custom-kernel-in-meego/</link>
		<comments>http://sigquit.wordpress.com/2011/09/02/your-custom-kernel-in-meego/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 09:20:58 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[MeeGo]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=387</guid>
		<description><![CDATA[In my last post I covered the steps needed to create custom MeeGo images and play with them. One of the things you may also want to do is to try new or modified kernels in your MeeGo images. You can do this either installing RPMs or directly compiling the kernel yourself. The following steps [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=387&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In my last post I covered the <a href="http://sigquit.wordpress.com/2011/09/01/your-custom-meego-builds/">steps needed to create custom MeeGo images</a> and play with them.</p>
<p>One of the things you may also want to do is to try new or modified kernels in your MeeGo images. You can do this either installing RPMs or directly compiling the kernel yourself. The following steps will cover this last case.</p>
<h4>1. Where to compile the kernel</h4>
<p>No, do not try to compile the kernel directly in a raw image launched within KVM/QEMU.</p>
<p>The easiest way to compile your own kernel is to <strong>prepare a loop image and chroot into it</strong> (See section <em>&#8220;6. Create a loop image and chroot into it&#8221;</em> in <a href="http://sigquit.wordpress.com/2011/09/01/your-custom-meego-builds/">Your custom MeeGo builds</a>).</p>
<p><em>Note: In order to completely compile the kernel, you will need quite a lot of empty space in the chroot. In order to easily get this, just use a big enough root partition size (given in MBytes) in the Kickstart file used to create the loop image.</em></p>
<h4>2. Get into the chroot</h4>
<p>Assuming <code>meego-core-ia32.img</code> is a loop image created, just:<br />
<code><br />
$&gt; sudo mic-chroot meego-core-ia32.img<br />
</code></p>
<h4>3. Ensure only one kernel is available</h4>
<p>The MeeGo Image Creation tools will expect to have exactly only one kernel available. Therefore, if you just created the loop image, you will need to remove the default kernel RPM installed.<br />
<code><br />
# rpm -e kernel<br />
</code></p>
<h4>4. Install the MeeGo kernel source and build dependencies</h4>
<p>You will need to enable the source repositories in zypper first:<br />
First, list the available repositories in zypper:<br />
<code><br />
#  zypper lr -u<br />
</code></p>
<p><em>Note that these repositories were initially configured in the Kickstart file used to create the loop image.</em></p>
<p>Then, enable the source repositories if not already done.<br />
<code><br />
# zypper mr -e 1.2.0-non-oss-source<br />
# zypper mr -e 1.2.0-oss-source<br />
# zypper mr -e 1.2.0-updates-non-oss-source<br />
# zypper mr -e 1.2.0-updates-oss-source<br />
</code></p>
<p>Once you have these enabled, you can install the kernel source, and all the build dependencies will also get installed:<br />
<code><br />
# zypper si kernel<br />
</code></p>
<p>Install additional required packages which were not listed in the build dependencies (not sure why not listed).<br />
<code><br />
# zypper in gcc<br />
</code></p>
<h4>5. Get your new kernel, configure, compile and install</h4>
<p>First, download the tarball and decompress it:<br />
<code><br />
# cd /root<br />
# wget <a href="http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2" rel="nofollow">http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2</a><br />
# tar -jxvf linux-3.0.4.tar.bz2 -C /usr/src<br />
</code></p>
<p>Prepare the kernel <strong>configuration file</strong>, based on the one from the MeeGo kernel packaging. In this case we&#8217;re using a newer kernel version, so you will be prompted for the values of the new configuration parameters. You can just try use the default ones if you don&#8217;t know what they mean.<br />
<code><br />
# cd /usr/src/linux-3.0.4<br />
# cat /root/rpmbuild/SOURCES/config-generic /root/rpmbuild/SOURCES/config-x86 &gt; .config<br />
# make oldconfig<br />
</code></p>
<p><em>Note: Of course, you can fully skip using the MeeGo kernel configuration file and fully configure it yourself with, for example, <code>make menuconfig</code>.</em></p>
<p>Then, compile the new kernel and the kernel modules, and install them.<br />
<code><br />
# make -j8<br />
# make -j8 modules<br />
# make modules_install<br />
# make install<br />
</code></p>
<p><em>Note: In addition to the specific kernel configuration, MeeGo packaging also provides several kernel <strong>patches</strong>. In this case, we are not including them.</em></p>
<h4>6. Make the kernel bootable</h4>
<p>In order to make the kernel bootable in the image, you will need to create an <a href="http://en.wikipedia.org/wiki/Initrd" target="_blank">initial ramdisk</a> under <code>/boot</code>. But you shouldn&#8217;t use <code><em>mkinitrd</em></code> for that, <strong>use the provided <code>mkliveinitrd</code> instead</strong>:<br />
<code><br />
# /usr/libexec/mkliveinitrd -f /boot/initrd.img-3.0.4 3.0.4<br />
</code></p>
<p>Once done, just exit the chroot:<br />
<code><br />
# exit<br />
</code></p>
<h4>7. Create a LiveUSB image to test the new kernel</h4>
<p>The steps to convert a loop image to a LiveUSB image and write it into an external USB disk are explained in my previous post about <a href="http://sigquit.wordpress.com/2011/09/01/your-custom-meego-builds/">Your custom MeeGo builds</a>, so I won&#8217;t explain much more about it.</p>
<p>Just a warning: always make sure that you have <strong>ONLY ONE</strong> <code>kernel</code> available under <code>/boot</code>. If you happen to have more than one, for example when <code>make install</code>-ing twice (old ones get renamed with a <em>.old</em> extension), <code>mic-image-convertor</code> won&#8217;t like it and will exit with an error message like this one:<br />
<code><br />
Error: Unable to copy valid kernels or initrds, please check the repo<br />
</code></p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/operating-systems/meego-operating-systems/'>MeeGo</a>, <a href='http://sigquit.wordpress.com/category/operating-systems/'>Operating Systems</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/kernel/'>kernel</a>, <a href='http://sigquit.wordpress.com/tag/meego/'>MeeGo</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=387&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/09/02/your-custom-kernel-in-meego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Your custom MeeGo builds</title>
		<link>http://sigquit.wordpress.com/2011/09/01/your-custom-meego-builds/</link>
		<comments>http://sigquit.wordpress.com/2011/09/01/your-custom-meego-builds/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 16:27:04 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[MeeGo]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Planets]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=381</guid>
		<description><![CDATA[NOTE! For the long and detailed explanation on how to create custom MeeGo images, just jump to the MeeGo wiki: http://wiki.meego.com/Image_Creation These steps shown here are the minimum set required in an Ubuntu 11.04 host to be able to create MeeGo images easily. They do not try to be extensive, or very explanatory, these are [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=381&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>NOTE! </strong>For the long and detailed explanation on how to create custom MeeGo images, just jump to the MeeGo wiki: <a href="http://wiki.meego.com/Image_Creation" title="MeeGo Image Creation" target="_blank">http://wiki.meego.com/Image_Creation</a></p>
<p>These steps shown here are the minimum set required in an <strong>Ubuntu 11.04 host</strong> to be able to create MeeGo images easily. They do not try to be extensive, or very explanatory, these are just my personal notes on how to do it <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h4>1. Install MeeGo Image Creator</h4>
<p>Include the MeeGo tools and SDK repositories to your APT configuration, by adding the following lines to your /etc/apt/sources.list:<br />
<code><br />
deb <a href="http://repo.meego.com/MeeGo/tools/repos/ubuntu/10.10/" rel="nofollow">http://repo.meego.com/MeeGo/tools/repos/ubuntu/10.10/</a> /<br />
deb <a href="http://repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.10/" rel="nofollow">http://repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.10/</a> /<br />
</code></p>
<p>Add the MeeGo repository key:<br />
<code><br />
$&gt; gpg --keyserver subkeys.pgp.net --recv 0BC7BEC479FC1F8A<br />
$&gt; gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add -<br />
</code></p>
<p>Update the APT cache:<br />
<code><br />
$&gt; sudo apt-get update<br />
</code></p>
<p>Install the mic2 package:<br />
<code><br />
$&gt; sudo apt-get install mic2<br />
</code></p>
<p><em>Note: &#8216;mic2&#8242; is also in natty/universe, just not the latest version.</em></p>
<h4>2. Prepare a MIC bootstrap</h4>
<p>In order to be able to create images from within your Ubuntu 11.04, <strong>you will need</strong> to use a MIC bootstrap. If you&#8217;re using one of the supported platforms (Ubuntu 10.10 for example), you can possibly skip using it. The generated bootstrap will be a chroot-able location which contains MIC and all its exact dependencies.<br />
<code><br />
$&gt; sudo mic-create-bootstrap \<br />
-n trunk \<br />
-k /opt/meego/repo-cache \<br />
-r <a href="http://repo.meego.com/MeeGo/builds/trunk/latest/repos/oss/ia32/packages" rel="nofollow">http://repo.meego.com/MeeGo/builds/trunk/latest/repos/oss/ia32/packages</a> \<br />
-o /opt/meego/ia32-bootstrap<br />
</code><br />
This previous command will create a <em>trunk</em> named bootstrap in <code>/opt/meego/ia32-bootstrap</code> using <code>/opt/meego/repo-cache</code> as path to store cached packages. </p>
<h4>3. Prepare a kickstart file</h4>
<p>Kickstart files are the ones defining the contents of the image to be built. Not only what packages will be installed, but also which default users will be created, the default root password, the default locale settings, the default keyboard layout&#8230;</p>
<p>Preparing a new kickstart file is best done by taking an officially used one, and modifying it as you like (a.k.a. <em>the autotools way</em>):<br />
<a href="http://repo.meego.com/MeeGo/releases/1.2.0/builddata/image-configs/" title="MeeGo Kickstart files" target="_blank">http://repo.meego.com/MeeGo/releases/1.2.0/builddata/image-configs/</a></p>
<p>The kickstart files I&#8217;ve been using are based on the upstream official ones, but with updated repo URLs and bigger root partition sizes. You can find them here:</p>
<ul>
<li><a href="http://www.lanedo.com/~aleksander/meego/meego-core-ia32-1.2.0.ks" target="_blank">http://www.lanedo.com/~aleksander/meego/meego-core-ia32-1.2.0.ks</a> <strong>(Core)</strong></li>
<li><a href="http://www.lanedo.com/~aleksander/meego/meego-netbook-ia32-1.2.0.ks" target="_blank">http://www.lanedo.com/~aleksander/meego/meego-netbook-ia32-1.2.0.ks</a> <strong>(Netbook)</strong></li>
</ul>
<p><em>Note: If you want to know more about the format of kickstart files, what they do and such, just <a href="http://fedoraproject.org/wiki/Anaconda/Kickstart" target="_blank">check the Fedora wiki</a>.</em></p>
<h4>4. Create a raw image and launch it under KVM</h4>
<p>The MeeGo Image Creator can build &#8216;raw&#8217; images which can be then launched under QEMU/KVM. The following command will build one of such &#8216;raw&#8217; images, using the previously created bootstrap and one of the kickstart files we prepared. Note that the command also defines a <em>cache path</em>, where the RPMs downloaded from the MeeGo online repos will be stored (and therefore available for new images created afterwards).<br />
<code><br />
$&gt; sudo mic-image-creator \<br />
--bootstrap=/opt/meego/ia32-bootstrap \<br />
--format=raw \<br />
--config=meego-core-ia32-1.2.0.ks \<br />
--cache=/opt/meego/repo-cache<br />
</code></p>
<p>You can then use <code>mic-vm-launcher</code> as follows to launch the image under QEMU/KVM:<br />
<code><br />
$&gt; sudo mic-vm-launcher meego-core-ia32-raw/meego-core-ia32-sda.raw<br />
</code></p>
<p>Or call kvm directly and tweak the parameters used to launch the image:<br />
<code><br />
$&gt; sudo kvm \<br />
-s \<br />
-m 1024 \<br />
-hda meego-core-ia32-raw/meego-core-ia32-sda.raw \<br />
-vga std<br />
</code></p>
<p><em>Note: Ensure that virtualization is enabled in your BIOS, or KVM won&#8217;t be able to work properly. You can use &#8216;<code>$&gt; sudo kvm-ok</code>&#8216; to check whether it is enabled or not.</em></p>
<h4>5. Create a LiveUSB image and write it to a USB dongle</h4>
<p>You will probably want to test your MeeGo build in the real hardware, and for that using LiveUSB images is one of the best options. The MeeGo Image Creator also allows building LiveCD and LiveUSB images directly from kickstart files; again, just changing the &#8216;<em>format</em>&#8216; argument:<br />
<code><br />
$&gt; sudo mic-image-creator \<br />
--bootstrap=/opt/meego/ia32-bootstrap \<br />
--format=liveusb \<br />
--config=meego-core-ia32-1.2.0.ks \<br />
--cache=/opt/meego/repo-cache<br />
</code></p>
<p>Once you get the image, you can use &#8216;<code>mic-image-writer</code>&#8216; to directly copy it to a connected USB disk. This tool will scan all available external disks, and prompt a menu to select the one where you want to write the image to. The &#8216;<code>-c</code>&#8216; switch (<code>--console</code>) just tells the tool to avoid launching any GUI, and present the menu directly in the console. During this step, the USB disk is also prepared with sysconfig/isolinux to boot the newly written image.<br />
<code><br />
$&gt; sudo mic-image-writer -c meego-core-ia32.usbimg<br />
</code></p>
<p>Now you&#8217;re ready to boot your hardware with the LiveUSB image.</p>
<h4>6. Create a loop image and chroot into it</h4>
<p>With the MeeGo Image Creator, you can also build loop images, just changing the &#8216;<em>format</em>&#8216; parameter in the call to <code>mic-image-creator</code>:<br />
<code><br />
$&gt; sudo mic-image-creator \<br />
--bootstrap=/opt/meego/ia32-bootstrap \<br />
--format=loop \<br />
--config=meego-core-ia32-1.2.0.ks \<br />
--cache=/opt/meego/repo-cache<br />
</code></p>
<p>Once you have the loop image built, you can chroot into it:<br />
<code><br />
$&gt; sudo mic-chroot meego-core-ia32.img<br />
</code></p>
<p>While in the chroot, you can remove or update existing packages, and even add new ones. When you are done, just type <code>$&gt; exit</code> to leave the chroot.</p>
<p><em>Note: If you want to use zypper inside the chroot, ensure that you included &#8216;@MeeGo Base Development&#8217; group of packages in your kickstart file.</em></p>
<h4>7. Convert loop images to LiveUSB images</h4>
<p>Once you have your loop image modified as you wanted, you can then convert it to a LiveUSB image so that it can be written to an external USB disk, as in the previous step. Converting between image types is done with the &#8216;<code>mic-image-convertor</code>&#8216; tool:<br />
<code><br />
$&gt; sudo mic-image-convertor \<br />
--source-image=meego-core-ia32.img \<br />
--target-format=liveusb<br />
</code></p>
<h4>Additional notes</h4>
<ul>
<li>Be careful with <code>mic-chroot</code>.</li>
<li>The Meego Image Creation set of tools make a hard use of disk space under <code>/var/tmp</code>. If you (like me) usually don&#8217;t have much space left in your root partition, you&#8217;d better symlink that path to a partition without disk space worries.</li>
<li>I&#8217;ve found several times that when I try to build new images, the tools tell me that the packages downloaded in the cache are corrupted, and need to be re-downloaded. Just make sure you have a good connection <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Again, visit <a href="http://wiki.meego.com/Image_Creation" title="MeeGo Image Creation" target="_blank">http://wiki.meego.com/Image_Creation</a> if you want to have further details on these tools.</li>
<ul>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/operating-systems/meego-operating-systems/'>MeeGo</a>, <a href='http://sigquit.wordpress.com/category/operating-systems/'>Operating Systems</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/meego/'>MeeGo</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=381&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/09/01/your-custom-meego-builds/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Unaccenting words, or at least trying to&#8230;</title>
		<link>http://sigquit.wordpress.com/2011/07/21/unaccenting-words-or-at-least-trying-to/</link>
		<comments>http://sigquit.wordpress.com/2011/07/21/unaccenting-words-or-at-least-trying-to/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 14:57:50 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[diacritics]]></category>
		<category><![CDATA[normalization]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[unaccenting]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=376</guid>
		<description><![CDATA[So today I found that Tracker in MeeGo packaging was still depending on libunac, while it shouldn&#8217;t. And that has reminded me that I had a blog post still unfinished about why and how we removed the libunac dependency in Tracker&#8230; so here it goes One of the features supported in Tracker is doing FTS [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=376&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So today I found that Tracker in MeeGo packaging was still depending on libunac, while it shouldn&#8217;t. And that has reminded me that I had a blog post still unfinished about why and how we removed the libunac dependency in Tracker&#8230; so here it goes <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>One of the features supported in <a href="http://projects.gnome.org/tracker" target="_blank">Tracker</a> is doing <a href="https://live.gnome.org/Tracker/Documentation/Examples/SPARQL/FTS" target="_blank">FTS</a> searches for words without considering &#8216;accents&#8217;. Of course, we&#8217;re not talking about accent as in the <a href="http://en.wikipedia.org/wiki/Accent_%28linguistics%29" target="_blank">specific pronunciation of words</a> relative to a location or nation. Our &#8216;unaccenting&#8217; mechanism, as we call it, refers to the process of removing combining <a href="http://en.wikipedia.org/wiki/Diacritic" target="_blank">diacritical</a> marks from characters, so that users can look for words with or without these marks. Therefore, this &#8216;unaccenting&#8217; applies not only to diacritics in Latin alphabets, but also to other alphabets like Arabic, Greek, Hebrew or Korean which also have special combining diacritical marks.</p>
<p>In the previous 0.8 stable series of Tracker, the unaccenting mechanism was completely done by the <a href="http://www.nongnu.org/unac/unac-man3.en.html" target="_blank">&#8216;unac&#8217; library</a>. We were not really convinced that unac was a good option in our case, as it involved extra conversions from UTF-8 to UTF-16 and back, and measurements showed that it was one of the most time consuming steps during FTS parsing. In order to improve the situation, and as we already did ourselves some Unicode normalization work before passing the work to unac, we ended up writing <a href="https://mail.gnome.org/archives/commits-list/2010-June/msg04595.html" target="_blank">our own unaccenting mechanism in Tracker</a> for 0.10.</p>
<p>The method is applied to all our three Unicode-support backends (GNU libunistring, ICU and GLib), and roughly involves just two steps:</p>
<ul>
<li>Apply a compatibility decomposition to the word (<a href="http://unicode.org/reports/tr15" target="_blank">NFKD normalization</a>).</li>
<li>Remove all combining diacritical marks, this is, all Unicode points within the following ranges:
<ul>
<li>Basic range: [U+0300,U+036F]</li>
<li>Supplement: [U+1DC0,U+1DFF]</li>
<li>For Symbols: [U+20D0,U+20FF]</li>
<li>Half marks: [U+FE20,U+FE2F]</li>
</ul>
</li>
</ul>
<p>Instead of NFKD, NFD decomposition can also be used in the method, but as the main purpose of the unaccenting is a Full Text Search in Tracker, compatibility of Unicode points is also a desired feature which we could get in the same step.</p>
<p>Looking at an example may explain it easier. Consider the French word &#8220;école&#8221;, which has a diacritic on top of the first &#8216;e&#8217; character. This accented &#8216;e&#8217; character can be encoded in UTF-8 in either a composed or decomposed way:</p>
<ul>
<li>(NFC, composed) <strong>[0xC3 0xA9]</strong> 0&#215;63 0x6F 0x6C 0&#215;65</li>
<li>(NFD, decomposed) <strong>0&#215;65 [0xCC 0x81]</strong> 0&#215;63 0x6F 0x6C 0&#215;65</li>
</ul>
<p>The UTF-8 encoding of the composed way (NFC or NFKC) will (probably) always need less bytes than the decomposed (NFD or NFKD) counterpart. This is because the accented &#8216;e&#8217; character will be represented in composed way as a single Unicode point: <strong>&#8216;é&#8217; U+00E9</strong> (UTF-8: [0xC3 0xA9]). In the decomposed way, the same accented &#8216;e&#8217; character is represented as a base character <strong>&#8216;e&#8217; U+0065</strong> (UTF-8: 0&#215;65) plus a combining mark <strong>&#8216; ́ &#8216; U+0301</strong> (UTF-8: [0xCC 0x81]).</p>
<p>For either of the previous two representations of &#8216;école&#8217;, the removal of combining diacritical marks is as we have already described:</p>
<ul>
<li>First, get the word NFKD-normalized (or NFD if point compatibility is not needed):
<ul>
<li>(NFC) <span style="color:#ff0000;">[0xC3 0xA9]</span> 0&#215;63 0x6F 0x6C 0&#215;65 &#8212;&gt; <br />
(NFKD) <span style="color:#0000ff;">0&#215;65 [0xCC 0x81]</span> 0&#215;63 0x6F 0x6C 0&#215;65</li>
<li>(NFD) <span style="color:#ff0000;">0&#215;65 [0xCC 0x81]</span> 0&#215;63 0x6F 0x6C 0&#215;65 &#8212;&gt; <br />
(NFKD) <span style="color:#0000ff;">0&#215;65 [0xCC 0x81]</span> 0&#215;63 0x6F 0x6C 0&#215;65</li>
</ul>
</li>
<li>Once we have the word decomposed, we can now just walk each unicode point found in the string, and remove those which end up falling into one of the ranges applicable to diacritics. In this case, only the accent on top of the &#8216;e&#8217; character is found and removed: U+0301 (UTF-8: [0xCC 0x81]):
<ul>
<li>(NFKD) 0&#215;65 <span style="color:#ff0000;">[0xCC 0x81]</span> 0&#215;63 0x6F 0x6C 0&#215;65 &#8212;&gt; <br />
            (unaccented) <span style="color:#0000ff;">0&#215;65 0&#215;63 0x6F 0x6C 0&#215;65</span></li>
</ul>
</li>
</ul>
<p>This new method not only worked perfectly in all the test cases we could think of, it was even <a href="https://mail.gnome.org/archives/tracker-list/2010-May/msg00165.html" target="_blank">much faster than using the unac library</a> (up to 73% faster in the best case, and same speed in more complex cases).</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/diacritics/'>diacritics</a>, <a href='http://sigquit.wordpress.com/tag/normalization/'>normalization</a>, <a href='http://sigquit.wordpress.com/tag/tracker/'>tracker</a>, <a href='http://sigquit.wordpress.com/tag/unaccenting/'>unaccenting</a>, <a href='http://sigquit.wordpress.com/tag/unicode/'>unicode</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=376&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/07/21/unaccenting-words-or-at-least-trying-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>ModemManager, now with Iridium satellite network support</title>
		<link>http://sigquit.wordpress.com/2011/07/14/modemmanager-now-with-iridium-satellite-network-support/</link>
		<comments>http://sigquit.wordpress.com/2011/07/14/modemmanager-now-with-iridium-satellite-network-support/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 11:01:47 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[iridium]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[network config]]></category>
		<category><![CDATA[NetworkManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=370</guid>
		<description><![CDATA[ModemManager and the Iridium satellite network I recently sent a new &#8216;iridium&#8217; plugin for review upstream, this time for Iridium modems. The plugin was developed using a Iridium 9522B Satellite Transceiver modem connected through RS232, properly handled by ModemManager&#8217;s plugin system thanks to the extended RS232 support available in git master. The &#8216;iridium&#8217; plugin handles [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=370&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>ModemManager and the Iridium satellite network</strong></p>
<p>I recently sent a <a href="https://mail.gnome.org/archives/networkmanager-list/2011-June/msg00158.html" target="_blank"><strong>new &#8216;iridium&#8217; plugin</strong></a> for review upstream, this time for Iridium modems. The plugin was developed using a Iridium 9522B Satellite Transceiver modem connected through RS232, properly handled by ModemManager&#8217;s plugin system thanks to the extended RS232 support available in git master. The &#8216;iridium&#8217; plugin handles these modems as any other GSM modem, even if it has nothing to do with GSM technologies.</p>
<p>Iridium is a constellation of 66 active (plus spares) LEO satellites orbiting at an altitude of 781 km, which gives phone and network coverage to every point in Earth. It was initially thought to be a constellation of 77 satellites, therefore named &#8216;Iridium&#8217; after <a href="http://en.wikipedia.org/wiki/Iridium" target="_blank">the chemical element with atomic number 77</a>. The name didn&#8217;t change to &#8216;<a href="http://en.wikipedia.org/wiki/Dysprosium" target="_blank">Dysprosium</a>&#8216; when it was redesigned to maintain only 66 active satellites, no wonder why.</p>
<p>Even if the Iridium modems expose a GSM-modem like AT command set, several special things needed to be considered. For example, IP address setup via PPP needed more than the 20s hardcoded in NetworkManager, due to the extreme latency of the satellite network. Therefore, <a href="https://gitorious.org/lanedo/networkmanager/commit/4e2d10816d0cfbbbebd3502718664e1116385dae" target="_blank">NM was also updated</a> to allow ModemManager plugins to specify a specific &#8216;IpTimeout&#8217; value.</p>
<p>See <a href="https://mail.gnome.org/archives/networkmanager-list/2011-June/msg00158.html" target="_blank">my email to the NM mailing list</a> for further information on how to use ModemManager with Iridium support.</p>
<p><strong>Ammonit Measurement GmbH sponsoring some hardware for ModemManager development</strong></p>
<p>In <a href="http://www.lanedo.com/networkmanager.html" target="_blank"><strong>Lanedo</strong></a> we have worked with <a href="http://www.ammonit.com" target="_blank"><strong>Ammonit Measurement GmbH</strong></a> to help them with the improvement of ModemManager to handle Wavecom, Cinterion and Iridium modems. The guys at Ammonit were kind enough to sponsor some modems, so that I can spend my free time in developing and improving ModemManager, as well as in testing the modems before stable releases (<a href="http://blogs.gnome.org/dcbw" target="_blank">Dan</a> will probably be happy for that):</p>
<ul>
<li>Sierra Wireless Fastrack Xtend FXT009 (GPRS modem, USB, handled by the &#8216;wavecom&#8217; plugin)</li>
<li>Cinterion TC63i (GPRS modem, RS232, handled by the &#8216;cinterion&#8217; plugin)</li>
</ul>
<p>So, thanks Ammonit!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gnulinux/'>gnu/linux</a>, <a href='http://sigquit.wordpress.com/tag/iridium/'>iridium</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/network-config/'>network config</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/370/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=370&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/07/14/modemmanager-now-with-iridium-satellite-network-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>GNU PDF, MeeGo conference in San Francisco, new Cinterion plugin for ModemManager&#8230;</title>
		<link>http://sigquit.wordpress.com/2011/06/02/gnu-pdf-meego-conference-in-san-francisco-new-cinterion-plugin-for-modemmanager/</link>
		<comments>http://sigquit.wordpress.com/2011/06/02/gnu-pdf-meego-conference-in-san-francisco-new-cinterion-plugin-for-modemmanager/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 14:09:55 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[gnu pdf]]></category>
		<category><![CDATA[MeeGo]]></category>
		<category><![CDATA[ModemManager]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=360</guid>
		<description><![CDATA[So, May has ended up being a very very busy month. GNU PDF After more than 2 months and tons of hours spent in trying not to break the thing (and fixing it when I did break it), I finally finished refactoring the API of the Streams module in GNU PDF in order to use [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=360&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So, May has ended up being a very very busy month.</p>
<p><strong>GNU PDF</strong><br />
After more than 2 months and tons of hours spent in trying not to break the thing (and fixing it when I did break it), I finally finished refactoring the API of the Streams module in GNU PDF in order to use the new error reporting methods. <a href="http://www.jemarch.net">Jose</a> is still reviewing the branch with the changes, so meanwhile I started refactoring the API of the Filesystem module. The Filesystem module is supposed to be just a small layer of abstraction on top of different filesystem backends, but not even the disk backend is fully implemented yet, with some basic pieces still missing. So as part of the API rework, I&#8217;ll try to include all missing bits in both the disk and http filesystem backends. Luckily, we got quite a lot of new people coming around the mailing list and providing <a href="http://lists.gnu.org/archive/html/pdf-devel/2011-04/msg00010.html">patches</a> and <a href="http://lists.gnu.org/archive/html/pdf-devel/2011-04/msg00013.html">useful comments</a> for these tasks, so it should be just a matter of time.</p>
<p><strong>ModemManager</strong><br />
Another month hacking ModemManager, working on <a href="https://mail.gnome.org/archives/networkmanager-list/2011-May/msg00127.html">a new Cinterion plugin</a>. After several changes in the generic code base of the daemon, plugins can now also implement specific features for RS232 modems. The new Cinterion plugin is not available in git master yet, so if you want to give it a try with Cinterion/Siemens USB or RS232 modems, get the following git repo: <a href="https://gitorious.org/lanedo/modemmanager">git://gitorious.org/lanedo/modemmanager.git</a> and checkout the &#8216;plugin-cinterion&#8217; branch from there.</p>
<p><strong>MeeGo Conference 2011</strong><br />
<a href="http://www.lanedo.com">Lanedo GmbH</a> was one of the sponsors of the <a href="http://sf2011.meego.com">MeeGo Conference 2011 in San Francisco</a>, so I had the opportunity to visit the US(of)A again. And I was not the only Spanish guy around: <a href="http://luisbg.blogalia.com/">Luis de Bethencourt</a> (Collabora), <a href="http://blogs.igalia.com/itoral/">Iago del Toral</a> (Igalia) and <a href="http://flors.wordpress.com/">Quim Gil</a> (Nokia) where also in the conference. With Nokia focusing on &#8220;that Harmattan thing&#8221; as some call it, Intel seems to be the one pushing MeeGo forward (even if not <a href="http://lists.meego.com/pipermail/meego-dev/2011-March/481890.html">all decisions taken</a> are shared by everyone). It is nice to see that the world didn&#8217;t end neither on February 11th (<a href="http://bethesignal.org/wp-content/uploads/2011/02/steve-ballmer.jpg">Elopocalypse</a>) nor on May 21st (The Judgment Day, which now seems <a href="http://judgementday2011.com">postponed until October</a>) <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Oh, I also turned 30 this past month&#8230; I keep on trying to forget it.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/meetings/'>Meetings</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gnu-pdf/'>gnu pdf</a>, <a href='http://sigquit.wordpress.com/tag/meego/'>MeeGo</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/360/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=360&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/06/02/gnu-pdf-meego-conference-in-san-francisco-new-cinterion-plugin-for-modemmanager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>ModemManager is fun</title>
		<link>http://sigquit.wordpress.com/2011/05/05/modemmanager-is-fun/</link>
		<comments>http://sigquit.wordpress.com/2011/05/05/modemmanager-is-fun/#comments</comments>
		<pubDate>Thu, 05 May 2011 15:56:39 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU Planet]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Planets]]></category>
		<category><![CDATA[freedesktop]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[ModemManager]]></category>
		<category><![CDATA[NetworkManager]]></category>
		<category><![CDATA[sierra-wireless]]></category>
		<category><![CDATA[wavecom]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=355</guid>
		<description><![CDATA[These last weeks I&#8217;ve been out of my usual Tracker work, and have been hacking on NetworkManager/ModemManager so that they can work properly with Sierra Wireless Airlink Fastrack Xtend modems. Ended up writing a new wavecom plugin for this purpose (Wavecom was bought by Sierra Wireless in 2009), which Dan already merged in the master [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=355&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>These last weeks I&#8217;ve been out of my usual <a href="http://www.tracker-project.org" title="Tracker" target="_blank">Tracker</a> work, and have been hacking on <a href="http://projects.gnome.org/NetworkManager" title="NetworkManager website" target="_blank"><strong>NetworkManager/ModemManager</strong></a> so that they can work properly with <a href="http://www.sierrawireless.com/productsandservices/AirLink/Programmable_Modems/Fastrack_Xtend_EDGE.aspx" target="_blank">Sierra Wireless Airlink Fastrack Xtend</a> modems.</p>
<p>Ended up writing a new <strong><em>wavecom</em></strong> plugin for this purpose (<a href="http://en.wikipedia.org/wiki/Wavecom" target="_blank">Wavecom</a> was bought by Sierra Wireless in 2009), which <a href="http://blogs.gnome.org/dcbw" target="_blank">Dan</a> already <a href="http://cgit.freedesktop.org/ModemManager/ModemManager/commit/?id=5dadfa4c214be79e704eb61c135893f93a705d3a" target="_blank">merged in the master branch of ModemManager</a>.</p>
<p>The changes in the new <em>wavecom</em> plugin with respect to the generic GSM plugin are:</p>
<ol>
<li><strong>AT+CPIN?</strong> replies are not ended with OK. A custom regex match was added to support CPIN? replies without OK (also had to hack the generic MM code to handle plugin-provided regular expressions).</li>
<li>Disabled default power-up comand, <strong>AT+CFUN=1</strong>. This command does a full software reset in the device, including the USB stack, so the connection is closed. No additional command seems to be needed, as the modem wakes up by default in CFUN=1 (full functionality) mode. Anyway, an additional check was added during initialization so that this mode is ensured.</li>
<li>Enabled <strong>RTS/CTS</strong> instead of XOFF/XON flow control.</li>
<li>Implemented access technology retrieval using <strong>AT+WGPRS=9,2</strong> to query network capabilities</li>
<li>Ensure the modem uses the highest possible mobile class. These modems can be configured to use different mobile classes. For each kind of modem, the best mobile class is the highest one available, in the following order:
<ul>
<li>Class A  (3G only mode)</li>
<li>Class B  (PS or CS, GPRS/EDGE or GSM)</li>
<li>Class CG (PS only, GPRS/EDGE)</li>
<li>Class CC (CS only, GSM)</li>
</ul>
</li>
<li>Implemented setting and getting allowed mode, for both 2G and 3G based modems (using <strong>AT+WWSM</strong> command in the 3G case).</li>
<li>Implemented setting and getting frequency bands for 2G modems (with <strong>AT+WMBS</strong>) and 3G modems (with <strong>AT+WUBS</strong>).</li>
</ol>
<p>Still, the plugin could be improved even more. For example, there is no secondary port handling in the current plugin implementation, which means that signal strength value will not be updated while the modem is in connected state. This kind of modems support setting up virtual ports by multiplexing the serial channel (<strong>CMUX</strong>), but ModemManager doesn&#8217;t handle this yet.</p>
<p>If anyone has one of this Wavecom/SierraWireless modems at home, please test it with latest ModemManager and report any errors found.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/gnu-planet/'>GNU Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/planets/'>Planets</a> Tagged: <a href='http://sigquit.wordpress.com/tag/freedesktop/'>freedesktop</a>, <a href='http://sigquit.wordpress.com/tag/gnome/'>gnome</a>, <a href='http://sigquit.wordpress.com/tag/modemmanager/'>ModemManager</a>, <a href='http://sigquit.wordpress.com/tag/networkmanager/'>NetworkManager</a>, <a href='http://sigquit.wordpress.com/tag/sierra-wireless/'>sierra-wireless</a>, <a href='http://sigquit.wordpress.com/tag/wavecom/'>wavecom</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/355/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=355&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/05/05/modemmanager-is-fun/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Why &#8211;&#8211;as&#8211;needed doesn&#8217;t work as expected for your libraries on your autotools project</title>
		<link>http://sigquit.wordpress.com/2011/02/16/why-asneeded-doesnt-work-as-expected-for-your-libraries-on-your-autotools-project/</link>
		<comments>http://sigquit.wordpress.com/2011/02/16/why-asneeded-doesnt-work-as-expected-for-your-libraries-on-your-autotools-project/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 15:10:21 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu ld]]></category>
		<category><![CDATA[gnu libtool]]></category>
		<category><![CDATA[gnu linker]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=334</guid>
		<description><![CDATA[Introduction to &#8211;&#8211;as&#8211;needed Quoting from the Gentoo Linux documentation for &#8211;&#8211;as&#8211;needed [1]: The &#8211;as-needed flag is passed to the GNU linker (GNU ld). The flag tells the linker to link in the produced binary only the libraries containing symbols actually used by the binary itself. This binary can be either a final executable or another [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=334&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>Introduction to &ndash;&ndash;as&ndash;needed</strong><br />
Quoting from the Gentoo Linux documentation for &ndash;&ndash;as&ndash;needed [1]:</p>
<blockquote><p>The &#8211;as-needed flag is passed to the GNU linker (GNU ld). The flag tells the linker to link in the produced binary only the libraries containing symbols actually used by the binary itself. This binary can be either a final executable or another library.</p></blockquote>
<p>In a brief, this means that if you pass unneeded libraries to link to when linking your program, the linker will skip those dependencies when that flag is used.<br />
&nbsp;<br />
<strong>Example, without &ndash;&ndash;as&ndash;needed</strong><br />
Imagine an example where you want to have a &#8220;libb.so&#8221; shared library, which needs glib-2.0. You&#8217;re lazy, and you don&#8217;t want to check whether that library will need gthread-2.0, gio-2.0 or gmodule-2.0, so you just compile and link assuming they are used:<br />
<code><br />
$&gt; gcc `pkg-config --cflags glib-2.0 gthread-2.0 gio-2.0 gmodule-2.0` -c src/libb/b.c -fPIC -DPIC -o b.o<br />
&nbsp;<br />
$&gt; gcc -shared b.o `pkg-config --libs glib-2.0 gthread-2.0 gio-2.0 gmodule-2.0` -o libb.so<br />
</code></p>
<p>Where &#8220;b.c&#8221; just contains:<br />
<code><br />
#include "glib.h"<br />
int<br />
test_b (int number)<br />
{<br />
&nbsp;&nbsp;g_debug ("Hello world from libb: %d", number);<br />
}<br />
</code></p>
<p>If you now show all unused direct dependencies of libb.so, with ldd, you get all unneeded ones:<br />
<code><br />
$&gt; ldd -u -r libb.so<br />
Unused direct dependencies:<br />
&nbsp;&nbsp;/usr/lib/libgio-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgobject-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgthread-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgmodule-2.0.so.0<br />
&nbsp;&nbsp;/lib/librt.so.1<br />
&nbsp;&nbsp;/lib/libpthread.so.0<br />
</code><br />
&nbsp;<br />
<strong>Example, with &ndash;&ndash;as&ndash;needed</strong><br />
Lets compile and link now with the &ndash;&ndash;as&ndash;needed linker flag (note that you need to tell gcc to pass the option to the linker, so you&#8217;ll need to use &#8220;<strong>&ndash;Wl,&ndash;&ndash;as&ndash;needed</strong>&#8220;):<br />
<code><br />
$&gt; gcc `pkg-config --cflags glib-2.0 gthread-2.0 gio-2.0 gmodule-2.0` -c src/libb/b.c -fPIC -DPIC -o b.o<br />
$&gt; gcc -shared <strong>-Wl,--as-needed</strong> b.o `pkg-config --libs glib-2.0 gthread-2.0 gio-2.0 gmodule-2.0` -o libb.so<br />
</code></p>
<p>And check the list of unused dependencies:<br />
<code><br />
$&gt; ldd -u -r libb.so<br />
Unused direct dependencies:<br />
&nbsp;&nbsp;/lib/libpthread.so.0<br />
</code></p>
<p>So it really seems that the &ndash;&ndash;as&ndash;needed linker option worked here and cleaned up all unneeded dependencies, nice!</p>
<p>But wait! Be careful with this statement in the GNU Linker manpage [2]:</p>
<blockquote><p>
This option affects ELF DT_NEEDED tags for dynamic libraries mentioned on the command line <strong>after</strong> the &ndash;&ndash;as&ndash;needed option.
</p></blockquote>
<p>You should thus, consider &ndash;&ndash;as&ndash;needed not as a global option to the GNU Linker, but as a specific option for specific dependencies. You could for example apply the option only to some of the libraries you&#8217;re linking to:<br />
<code><br />
$&gt; gcc -shared b.o -pthread -Wl,--export-dynamic -lgio-2.0 -lgobject-2.0 <strong>-Wl,--as-needed </strong>-lgthread-2.0 -lgmodule-2.0 -lrt -lglib-2.0 -o libb.so<br />
&nbsp;<br />
$&gt; ldd -u -r libb.so<br />
Unused direct dependencies:<br />
&nbsp;&nbsp;/usr/lib/libgio-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgobject-2.0.so.0<br />
&nbsp;&nbsp;/lib/libpthread.so.0<br />
</code><br />
&nbsp;<br />
<strong>Example, with autotools</strong><br />
You probably don&#8217;t compile and link your libraries using plain gcc, and instead use some GNU automagic (<a href="http://www.gnu.org/software/autoconf">autoconf</a>, <a href="http://www.gnu.org/software/automake">automake</a>, <a href="http://www.gnu.org/software/libtool">libtool</a>&#8230;). If that is the case, and following the previous example, you would probably use PKG_CHECK_MODULES in your <a href="http://www.es.gnu.org/~aleksander/as-needed/configure.ac">configure.ac</a>:<br />
<code><br />
[configure.ac]<br />
...<br />
PKG_CHECK_MODULES(GLIB,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[glib-2.0 gthread-2.0 gmodule-2.0 gio-2.0])<br />
</code></p>
<p>And you&#8217;ll probably create your shared library using libtool, so in your <a href="http://www.es.gnu.org/~aleksander/as-needed/Makefile.am">Makefile.am</a> you will have:<br />
<code><br />
[Makefile.am]<br />
lib_LTLIBRARIES = lib/libb.la<br />
&nbsp;<br />
lib_libb_la_SOURCES = src/libb/b.c<br />
lib_libb_la_CFLAGS = $(GLIB_CFLAGS)<br />
lib_libb_la_LIBADD = $(GLIB_LIBS)<br />
</code></p>
<p>If you compile this autotools project without any additional option, you will end up having &#8220;ldd -u -r&#8221; report the same unused dependencies as before (gio, gobject, gthread&#8230;)</p>
<p>&nbsp;<br />
<strong>Example, with autotools and &ndash;&ndash;as&ndash;needed</strong><br />
Once you have your autotools project ready, you can <strong>try to</strong> enable the &ndash;&ndash;as&ndash;needed linker flag passing it in LDFLAGS during configure:<br />
<code><br />
$&gt; ./configure LDFLAGS="-Wl,--as-needed"<br />
</code></p>
<p>This should pass LDFLAGS during the linking operation while running `make&#8217; &#8230; and it does pass it, but <em>in a way where it doesn&#8217;t have any effect</em>&#8230; libtool will call gcc like this:<br />
<code><br />
libtool: link: gcc -shared  .libs/lib_libb_la-b.o   /usr/lib/libgio-2.0.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libgthread-2.0.so -lrt /usr/lib/libglib-2.0.so  -pthread <strong>-Wl,--as-needed</strong> -pthread -Wl,--export-dynamic   -pthread -Wl,-soname -Wl,libb.so.0 -o lib/.libs/libb.so.0.0.0<br />
</code></p>
<p>As you can see,<strong> &ndash;&ndash;as&ndash;needed is given after all libraries to link to, which is like doing nothing</strong>. If you check for unused dependencies in the generated shared library, you will get:<br />
<code><br />
$&gt; ldd -u -r lib/.libs/libb.so<br />
Unused direct dependencies:<br />
&nbsp;&nbsp;/usr/lib/libgio-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgobject-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgmodule-2.0.so.0<br />
&nbsp;&nbsp;/usr/lib/libgthread-2.0.so.0<br />
&nbsp;&nbsp;/lib/librt.so.1<br />
&nbsp;&nbsp;/lib/libpthread.so.0<br />
</code></p>
<p>Now, what is the correct way then to enable &ndash;&ndash;as&ndash;needed in this project? Said previously that this option shouldn&#8217;t be considered global, and thus passing it in LDFLAGS when running configure doesn&#8217;t seem to be a good choice.</p>
<p><strong>This issue is an <a href="http://lists.gnu.org/archive/html/bug-libtool/2009-12/msg00038.html">already known bug in GNU Libtool</a> [4]</strong>, and while <a href="http://maemo.gitorious.org/maemo-af/libcontentaction/blobs/master/ltmain-asneeded.patch">some</a> <a href="http://meego.gitorious.org/tracker/tracker/commit/cf2ca3414aeba146dceacc5ecd84765f4c08a06f">projects</a> patch their ltmain.sh [5], there are already<a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347650"> efforts to push a patch upstream</a> [6].</p>
<p><strong>What about &ndash;&ndash;as&ndash;needed when linking programs?</strong><br />
This is a whole different story. Assume we also have a &#8220;a.c&#8221; program which uses &#8220;libb.so&#8221;, and which also has all previous glib, gio and friends as dependencies (but doesn&#8217;t use them):<br />
<code><br />
[Makefile.am]<br />
bin_PROGRAMS = bin/a<br />
&nbsp;<br />
bin_a_SOURCES = src/a/a.c<br />
bin_a_CPPFLAGS = -I$(top_srcdir)/src/libb<br />
bin_a_CFLAGS = $(GLIB_CFLAGS)<br />
bin_a_LDADD = lib/libb.la $(GLIB_LIBS)<br />
</code></p>
<p>We do again try to pass the linker option in LDFLAGS during configure:<br />
<code><br />
$&gt; ./configure LDFLAGS="-Wl,--as-needed"<br />
</code></p>
<p>We check how libtool passes the option when linking:<br />
<code><br />
libtool: link: gcc -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 <strong>-Wl,--as-needed</strong> -o bin/.libs/a bin_a-a.o -pthread -Wl,--export-dynamic  lib/.libs/libb.so /usr/lib/libgio-2.0.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libgthread-2.0.so -lrt /usr/lib/libglib-2.0.so -pthread<br />
</code></p>
<p>In this case, the option is passed before all linking dependencies, so &ndash;&ndash;as&ndash;needed should take effect. We check with ldd the unused dependencies in the generated binary program:<br />
<code><br />
$&gt; ldd -u -r bin/.libs/a<br />
Unused direct dependencies:<br />
&nbsp;&nbsp;/lib/libpthread.so.0<br />
</code></p>
<p>So, even if we couldn&#8217;t tell the linker to remove all unused dependencies from the generated shared libraries, <strong>the removal takes place in case of generated programs</strong>.</p>
<p>You could arguably say that you don&#8217;t need to remove unneeded dependencies on shared libraries that you compile, as the programs linking with your library may really need them. In this example, if a program links to our &#8220;libb.so&#8221; and the program needs gio libraries, if we didn&#8217;t remove the unneeded dependencies in &#8220;libb.so&#8221;, the program would satisfy the gio dependency directly from &#8220;libb.so&#8221;. But that is definitely not the way to go, if the program needs gio because it uses some of its symbols, it should explicitly link to it, not assume that &#8220;libb.so&#8221; will force the dependency.</p>
<p>References:<br />
[1] <a href="http://www.gentoo.org/proj/en/qa/asneeded.xml">Gentoo Linux documentation for &ndash;&ndash;as&ndash;needed</a><br />
[2] <a href="http://linux.die.net/man/1/ld">ld(1) GNU Linker</a><br />
[3] <a href="http://www.es.gnu.org/~aleksander/as-needed">Full autotools-based example</a><br />
[4] <a href="http://lists.gnu.org/archive/html/bug-libtool/2009-12/msg00038.html">GNU libtool bug report for &#8211;as-needed failing with libraries</a><br />
[5] <a href="http://maemo.gitorious.org/maemo-af/libcontentaction/blobs/master/ltmain-asneeded.patch">Meego libcontentaction patch</a> and <a href="http://meego.gitorious.org/tracker/tracker/commit/cf2ca3414aeba146dceacc5ecd84765f4c08a06f">Meego Tracker patch</a><br />
[6] <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347650">Debian bug #347650</a></p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gcc/'>gcc</a>, <a href='http://sigquit.wordpress.com/tag/gnu/'>gnu</a>, <a href='http://sigquit.wordpress.com/tag/gnu-ld/'>gnu ld</a>, <a href='http://sigquit.wordpress.com/tag/gnu-libtool/'>gnu libtool</a>, <a href='http://sigquit.wordpress.com/tag/gnu-linker/'>gnu linker</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/334/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=334&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2011/02/16/why-asneeded-doesnt-work-as-expected-for-your-libraries-on-your-autotools-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>PVOL in the AstronomíA magazine</title>
		<link>http://sigquit.wordpress.com/2010/11/15/pvol-in-the-astronomia-magazine/</link>
		<comments>http://sigquit.wordpress.com/2010/11/15/pvol-in-the-astronomia-magazine/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 14:38:25 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[PVOL]]></category>
		<category><![CDATA[Astronomy]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=324</guid>
		<description><![CDATA[I started writing the PVOL (Planetary Virtual Observatory and Laboratory) system during the first NVO Summer School which took place in Aspen (Colorado, USA) in the summer of 2004. The system is up and running since November 2004 in the Ajax Cluster of the Planetary Sciences Group, in the University of the Basque Country, and [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=324&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I started writing the <strong>PVOL</strong> (Planetary Virtual Observatory and Laboratory) system during the <a href="http://www.us-vo.org/summer-school/2004/index.cfm">first NVO Summer School</a> which took place in Aspen (Colorado, USA) in the summer of 2004. The system is up and running since November 2004 in the <a href="http://www.ajax.ehu.es/computation/AboutAjax.html">Ajax Cluster</a> of the <a href="http://www.ajax.ehu.es">Planetary Sciences Group</a>, in the University of the Basque Country, and available at <a href="http://www.pvol.ehu.es"><strong>www.pvol.ehu.es</strong></a>.</p>
<p><a href="http://www.pvol.ehu.es"><img alt="PVOL Logo" src="http://www.pvol.ehu.es/resources/PVOL-LOGO.gif" title="PVOL" class="alignnone" width="496" height="130" /></a></p>
<p>We currently have more than <strong>200 registered contributors</strong> (50 of them allowed to directly publish new images), more than <strong>9200 images of Jupiter</strong> (first one from year 2000) and more than <strong>1800 images of Saturn</strong>. Last image received was just from yesterday:</p>
<p><img alt="" src="http://bppx90.bp.ehu.es:8080/iopwimages/jupiter/dpa20101114_0246.jpg" title="Jupiter on Nov 14th 2010, by D. Parker" class="alignnone" width="711" /></p>
<p>Good news is that not only amateur observers are publishing <a href="http://www.pvol.ehu.es/index.jsp?action=iopw">lots of new images of Giant Planets every day</a> (mainly Jupiter and Saturn), but also that two of the guys in the Planetary Sciences Group also wrote an article about the <strong>PVOL</strong> system and how it helps on the research of the atmospheres of these planets. The publication is not available online, it seems, so if you want to take a look at it you&#8217;ll need to buy the magazine (Spanish only):</p>
<p>&#8220;<strong>Pequeños telescopios al estudio de los planetas gigantes</strong>&#8220;, por Jon Legarreta y <a href="http://www.ajax.ehu.es/rhueso/index.html">Ricardo Hueso</a>, <a href="http://www.astronomia-e.com/index.php?option=com_sobi2&amp;sobi2Task=sobi2Details&amp;catid=6&amp;sobi2Id=359&amp;Itemid=196"><strong>AstronomíA, November 2010</strong></a>. </p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/projects/'>Projects</a>, <a href='http://sigquit.wordpress.com/category/development/projects/pvol/'>PVOL</a> Tagged: <a href='http://sigquit.wordpress.com/tag/astronomy/'>Astronomy</a>, <a href='http://sigquit.wordpress.com/tag/pvol/'>PVOL</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=324&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/11/15/pvol-in-the-astronomia-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://www.pvol.ehu.es/resources/PVOL-LOGO.gif" medium="image">
			<media:title type="html">PVOL</media:title>
		</media:content>

		<media:content url="http://bppx90.bp.ehu.es:8080/iopwimages/jupiter/dpa20101114_0246.jpg" medium="image">
			<media:title type="html">Jupiter on Nov 14th 2010, by D. Parker</media:title>
		</media:content>
	</item>
		<item>
		<title>m4 macro to check if SQLite was compiled thread-safe</title>
		<link>http://sigquit.wordpress.com/2010/10/05/m4-macro-to-check-if-sqlite-was-compiled-thread-safe/</link>
		<comments>http://sigquit.wordpress.com/2010/10/05/m4-macro-to-check-if-sqlite-was-compiled-thread-safe/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 18:38:35 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[autoconf]]></category>
		<category><![CDATA[m4]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[thread-safe]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=318</guid>
		<description><![CDATA[If your application is using SQLite, you may be assuming it is always compiled thread-safe, but this is not true. It will only be compiled thread-safe (with proper mutexes enabled) if the SQLITE_THREADSAFE preprocessor macro is set to 1 (serialized) or 2 (multi-threaded) (1/serialized is the default if not explicitly stated). If SQLITE_THREADSAFE is set [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=318&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If your application is using SQLite, <a href="http://www.sqlite.org/faq.html#q6">you may be assuming it is always compiled thread-safe</a>, but this is not true. It will only be compiled thread-safe (with proper mutexes enabled) if the SQLITE_THREADSAFE preprocessor macro is set to 1 (serialized) or 2 (multi-threaded) (1/serialized is the default if not explicitly stated). If SQLITE_THREADSAFE is set to 0 during compilation of SQLite, it will <strong>not be thread-safe</strong>. Also note that if compiled thread-safe (1 or 2), the thread-safety mode (serialized or multi-threaded) can later be changed in runtime. See <a href="http://www.sqlite.org/threadsafe.html">SQLite and Multiple Threads</a> for more information.</p>
<p>SQLite provides the <a href="http://www.sqlite.org/c3ref/threadsafe.html">sqlite3_threadsafe()</a> method to check whether the library was compiled thread-safe, but if your application really needs a thread-safe SQLite, you don&#8217;t want to check it during runtime. Thus, I wrote a small m4 macro that you can use in your configure.ac to check it when running ./configure</p>
<p>Just add this file in your m4 directory:<br />
<a href="http://es.gnu.org/~aleksander/sqlite/sqlite-threadsafe.m4">http://es.gnu.org/~aleksander/sqlite/sqlite-threadsafe.m4</a></p>
<p>And then, in your configure.ac:<br />
<code><br />
AX_SQLITE_THREADSAFE<br />
if test "x$ax_cv_sqlite_threadsafe" != "xyes"; then<br />
&nbsp;&nbsp;AC_MSG_ERROR([sqlite3 is not compiled thread-safe])<br />
fi<br />
</code></p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a> Tagged: <a href='http://sigquit.wordpress.com/tag/autoconf/'>autoconf</a>, <a href='http://sigquit.wordpress.com/tag/m4/'>m4</a>, <a href='http://sigquit.wordpress.com/tag/sqlite/'>sqlite</a>, <a href='http://sigquit.wordpress.com/tag/thread-safe/'>thread-safe</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=318&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/10/05/m4-macro-to-check-if-sqlite-was-compiled-thread-safe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Trisquel Taranis is here, including a MINI edition!</title>
		<link>http://sigquit.wordpress.com/2010/09/29/trisquel-taranis-is-here-including-a-mini-edition/</link>
		<comments>http://sigquit.wordpress.com/2010/09/29/trisquel-taranis-is-here-including-a-mini-edition/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 16:46:56 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[taranis]]></category>
		<category><![CDATA[trisquel]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=309</guid>
		<description><![CDATA[After a great job done during several months by Rubén and the rest of the Trisquel team, the long-waited Trisquel 4.0 Taranis&#8221; was published during the Software Freedom Day. This new release of Trisquel is based on Ubuntu 10.04 &#8220;Lucid&#8221;, and provides a fully-free distribution of GNU/Linux, running the 100% free Linux-libre 2.6.32 kernel. This [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=309&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>After a great job done during several months by <a href="http://quidam.cc">Rubén</a> and the rest of the <a href="http://trisquel.info">Trisquel</a> team, the long-waited Trisquel 4.0 <strong><a href="http://en.wikipedia.org/wiki/Taranis">Taranis</a></strong>&#8221; was published during the <a href="http://softwarefreedomday.org">Software Freedom Day</a>.</p>
<p>This new release of Trisquel is based on <a href="http://www.ubuntu.com">Ubuntu</a> 10.04 &#8220;Lucid&#8221;, and provides a fully-free distribution of GNU/Linux, running the 100% free <a href="http://www.fsfla.org/svnwiki/selibre/linux-libre">Linux-libre</a> 2.6.32 kernel. This release comes in two different primary versions, the &#8220;Standard Edition&#8221; and the &#8220;Mini Edition&#8221;.</p>
<p>The &#8220;Standard Edition&#8221; is meant for standard desktop computers, and includes:</p>
<ul>
<li><a href="http://www.gnome.org">GNOME</a> 2.30</li>
<li><a href="http://www.openoffice.org/">OpenOffice.org</a> 3.2</li>
<li><a href="http://www.gimp.org"><strong>Gimp</strong> 2.6</a></li>
<li>ABrowser 3.6.9 (<a href="http://www.mozilla.com/firefox/">Firefox</a>-based web browser)</li>
</ul>
<p>The &#8220;Mini Edition&#8221;, focused on computers with CPU/RAM limitations like Netbooks, includes:</p>
<ul>
<li>LXDE 0.5</li>
<li><a href="http://www.twotoasts.de/index.php?/pages/midori_summary.html"><strong>Midori</strong> 0.2</a></li>
</ul>
<p>I&#8217;ve been using Trisquel Taranis Standard Edition since some months ago, while it was not even in beta stage; but also wanted to check the look and feel and performance of the <strong>Mini version</strong>, so I decided to try it in a VM.</p>
<p>The boot menu when installing Trisquel Taranis is really appealing:</p>
<p><a href="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-install.png"><img class="aligncenter size-medium wp-image-313" title="trisquel-mini-install" src="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-install.png?w=300&#038;h=224" alt="Boot menu in Trisquel Mini installation CD" width="300" height="224" /></a></p>
<p>Remember that <strong>you can try Trisquel GNU/Linux without installing it</strong>!</p>
<p>This is the initial look and feel of Trisquel Taranis Mini after installing it and logging in the user account. Note to Windows users, what&#8217;s the difference between a fresh Windows installation and a GNU/Linux installation? Just check the image&#8230;</p>
<p><a href="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-desktop-1.png"><img class="aligncenter size-medium wp-image-312" title="trisquel-mini-desktop-1" src="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-desktop-1.png?w=300&#038;h=225" alt="The Trisquel Taranis Mini desktop" width="300" height="225" /></a></p>
<p>Answer: The &#8220;welcome&#8221; popup in GNU/Linux tells you about new software updates, it <strong>doesn&#8217;t</strong> tell you &#8220;<span style="color:#ff0000;">Your computer is at risk!!!</span>&#8221; because you didn&#8217;t install the antivirus or whatever. GNU/Linux doesn&#8217;t need an antivirus, and a fresh install is just <strong>SECURE</strong>, not like a Windows one.</p>
<p>The lightweight Mini edition will use <strong>only ~90MB of RAM when booted</strong>, which makes it perfect for netbooks and laptops without much memory:</p>
<p><a href="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-top.png"><img src="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-top.png?w=300&#038;h=224" alt="Top" title="trisquel-mini-top" width="300" height="224" class="aligncenter size-medium wp-image-315" /></a></p>
<p>So, if you want to give it a try, <strong><a href="http://trisquel.info/en/download">Download Trisquel Taranis</a></strong>! And if you like it, you can also <a href="http://trisquel.info/en/donate">Donate to the project</a>, or <a href="http://trisquel.info/en/store">buy some nice Trisquel Merchandise</a>&#8230;</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/operating-systems/'>Operating Systems</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gnulinux/'>gnu/linux</a>, <a href='http://sigquit.wordpress.com/tag/taranis/'>taranis</a>, <a href='http://sigquit.wordpress.com/tag/trisquel/'>trisquel</a>, <a href='http://sigquit.wordpress.com/tag/ubuntu/'>ubuntu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/309/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=309&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/09/29/trisquel-taranis-is-here-including-a-mini-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-install.png?w=300" medium="image">
			<media:title type="html">trisquel-mini-install</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-desktop-1.png?w=300" medium="image">
			<media:title type="html">trisquel-mini-desktop-1</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2010/09/trisquel-mini-top.png?w=300" medium="image">
			<media:title type="html">trisquel-mini-top</media:title>
		</media:content>
	</item>
		<item>
		<title>The Octopus Library 0.0.1 released</title>
		<link>http://sigquit.wordpress.com/2010/09/10/the-octopus-library-0-0-1-released-2/</link>
		<comments>http://sigquit.wordpress.com/2010/09/10/the-octopus-library-0-0-1-released-2/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 10:48:45 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Octopus]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[lgplv3]]></category>
		<category><![CDATA[octopus]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=299</guid>
		<description><![CDATA[This is the first version of the Octopus Library, a C library providing advanced file system crawling and monitoring capabilities on top of GLib&#8217;s GIO. This library, released under the LGPLv3+, is a full rewrite of some of the features provided by Gnome Tracker&#8216;s libtracker-miner library. Online documentation is available in: http://es.gnu.org/~aleksander/octopus/doc The sources can [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=299&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img src="http://sigquit.files.wordpress.com/2010/09/lgplv3-147x51.png?w=595" alt="LGPLv3 logo" title="lgplv3-147x51"   class="alignright size-full wp-image-300" /></p>
<p>This is the first version of <a href="http://gitorious.org/goctopus">the Octopus Library</a>, a C library providing advanced file system crawling and monitoring capabilities on top of GLib&#8217;s GIO. This library, released under the <a href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html">LGPLv3+</a>, is a full rewrite of some of the features provided by <a href="http://projects.gnome.org/tracker">Gnome Tracker</a>&#8216;s <a href="http://git.gnome.org/browse/tracker/tree/src/libtracker-miner">libtracker-miner</a> library.</p>
<p>Online <strong>documentation</strong> is available in:<br />
<a href="http://es.gnu.org/~aleksander/octopus/doc">http://es.gnu.org/~aleksander/octopus/doc</a></p>
<p>The <strong>sources</strong> can be downloaded from:<br />
<a href="http://es.gnu.org/~aleksander/octopus/releases/octopus-0.0.1.tar.gz">http://es.gnu.org/~aleksander/octopus/releases/octopus-0.0.1.tar.gz</a></p>
<p>The <strong>mdsum</strong> is:<br />
cca4e5152e9586abc57d330bad7bee09  octopus-0.0.1.tar.gz</p>
<p>This release is also <strong>GPG signed</strong>. You can download the signature from:<br />
<a href="http://es.gnu.org/~aleksander/octopus/releases/octopus-0.0.1.tar.gz.sig">http://es.gnu.org/~aleksander/octopus/releases/octopus-0.0.1.tar.gz.sig</a></p>
<p>Some of the <strong>features</strong> provided by this new library are:<br />
 * Recursive crawling on a set of configured directories. For example, it may be configured to recursively crawl /home and /media.<br />
 * Directories inside the tree to recurse can be set to be ignored. For example, it may be configured to recursively crawl /home/user but not /home/user/.private.<br />
 * Directories may be configured to be crawled, but not recursively. For example, /home may be configured to be non-recursively crawled.<br />
 * Any possible combination of crawled, recursively-crawled and ignored is supported, as long as the same path is not added with different options.<br />
 * For every file or directory found during the crawling operation, a new event will be notified to configured signal listeners.<br />
 * During the filesystem crawling, monitors may be enabled in directories.<br />
 * Event merging; so that multiple events of the same type on the same file are all combined in a single event. Event merging will also act on different event types, trying to combine them in the best possible way. For example, if a file is CREATED, UPDATED and then REMOVED no event will be notified.<br />
 * Real-Time event notification. Both merged or raw events can be set to be notified in real-time.<br />
 * On-Demand iteration of events. If enabled, the monitor will store all received events in a proper order, so that afterwards they can be iterated. You could for example, configure a timeout every 30 minutes to iterate all raw or merged events which happened since the last iteration.<br />
 * Proper order of events. When notifying or iterating events the order may not be exactly the same as the one in the original events, but it is assured that if followed all events in the order given by the Octopus Monitor, the result is exactly the same as if followed in the original order.</p>
<p>In the <strong>roadmap</strong> for next versions:<br />
 * Asynchronous API will be available in release 0.0.2.<br />
 * A &#8216;database&#8217; of already crawled directories will be optional, storing mtimes of each found file, so that when the program starts and re-crawls a common directory structure, it will check if the files in the tree changed since the last time crawled. This will be available in release 0.0.3.</p>
<p>Please send <strong>bug reports and suggestions</strong> to aleksander (at) gnu.org or aleksander (at) lanedo.com</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/development/projects/octopus/'>Octopus</a>, <a href='http://sigquit.wordpress.com/category/development/projects/'>Projects</a> Tagged: <a href='http://sigquit.wordpress.com/tag/lgplv3/'>lgplv3</a>, <a href='http://sigquit.wordpress.com/tag/octopus-2/'>octopus</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/299/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=299&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/09/10/the-octopus-library-0-0-1-released-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://sigquit.files.wordpress.com/2010/09/lgplv3-147x51.png" medium="image">
			<media:title type="html">lgplv3-147x51</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu packaging updates: dbus 1.3.1, sqlite 3.7.1 and gnu psychosynth 0.1.5</title>
		<link>http://sigquit.wordpress.com/2010/08/24/ubuntu-packaging-updates/</link>
		<comments>http://sigquit.wordpress.com/2010/08/24/ubuntu-packaging-updates/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:25:16 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Packaging]]></category>
		<category><![CDATA[dbus]]></category>
		<category><![CDATA[ghm]]></category>
		<category><![CDATA[gnu psychosynth]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[trisquel]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=285</guid>
		<description><![CDATA[SQLite and DBus I&#8217;ve been lately packaging the latest releases of several programs for Ubuntu Lucid (or Trisquel Taranis), mainly due to our bleeding-edge requirements in Tracker. You can find them in my personal PPAs in Launchpad: SQLite 3.7.1 (enabling Write-Ahead logging): https://launchpad.net/~aleksander-m/+archive/sqlite3 dbus 1.3.1 (enabling file descriptor passing): https://launchpad.net/~aleksander-m/+archive/dbus-development The real packaging work was [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=285&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>SQLite and DBus</strong></p>
<p>I&#8217;ve been lately packaging the latest releases of several programs for Ubuntu Lucid (or <a href="http://trisquel.info/en"><strong>Trisquel</strong></a> <strong>Taranis</strong>), mainly due to our bleeding-edge requirements in <a href="http://projects.gnome.org/tracker">Tracker</a>. You can find them in my personal PPAs in Launchpad:</p>
<ul>
<li><strong>SQLite 3.7.1</strong> (enabling <a href="http://www.sqlite.org/draft/wal.html">Write-Ahead logging</a>): <br /><a href="https://launchpad.net/~aleksander-m/+archive/sqlite3">https://launchpad.net/~aleksander-m/+archive/sqlite3</a></li>
<li><strong>dbus 1.3.1</strong> (enabling file descriptor passing): <br /><a href="https://launchpad.net/~aleksander-m/+archive/dbus-development">https://launchpad.net/~aleksander-m/+archive/dbus-development</a></li>
</ul>
<p>The real packaging work was done by the Debian guys, of course (kudos to them!); I just prepared the necessary bits to make them get compiled as Ubuntu packages.</p>
<p><strong>GNU Psychosynth</strong></p>
<p>In addition to this, during the last <a href="http://www.gnu.org/ghm/2010/denhaag">GNU Hackers Meeting in The Hague</a>, I also changed the Ubuntu packaging of <a href="http://www.psychosynth.com">GNU Psychosynth</a>, the most entertaining music synthesizer I&#8217;ve ever played with. The latest packages are now available in the <a href="https://launchpad.net/~gnu-psychosynth-team/+archive/ppa">GNU Psychosynth Team&#8217;s PPA</a>, and right now only Ubuntu versions &gt;= Lucid will be supported (as they <strong>no longer</strong> require <a href="https://launchpad.net/~andrewfenn/+archive/ogredev">Andrew Fenn&#8217;s Ogre Development PPA</a>).</p>
<p>More information in: <a href="http://www.psychosynth.com/index.php/Ubuntu_Repository">http://www.psychosynth.com/index.php/Ubuntu_Repository</a></p>
<p>Oh, and <a href="https://www.ohloh.net/accounts/raskolnikov">Juan Pedro</a> was able to do another demonstration of GNU Psychosynth during the meeting, which got recorded, so that you can understand what this great program does&#8230; <strong>watch it and enjoy!</strong><br />
<a href="http://audio-video.gnu.org/video/ghm2010/GNU_Psycosynth.ogv">http://audio-video.gnu.org/video/ghm2010/GNU_Psycosynth.ogv</a></p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/packaging/'>Packaging</a> Tagged: <a href='http://sigquit.wordpress.com/tag/dbus/'>dbus</a>, <a href='http://sigquit.wordpress.com/tag/ghm/'>ghm</a>, <a href='http://sigquit.wordpress.com/tag/gnu-psychosynth/'>gnu psychosynth</a>, <a href='http://sigquit.wordpress.com/tag/sqlite/'>sqlite</a>, <a href='http://sigquit.wordpress.com/tag/trisquel/'>trisquel</a>, <a href='http://sigquit.wordpress.com/tag/ubuntu/'>ubuntu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/285/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=285&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/08/24/ubuntu-packaging-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://audio-video.gnu.org/video/ghm2010/GNU_Psycosynth.ogv" length="69931061" type="video/ogg" />
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>My pictures from Aspen here and there</title>
		<link>http://sigquit.wordpress.com/2010/07/16/my-pictures-from-aspen-here-and-there/</link>
		<comments>http://sigquit.wordpress.com/2010/07/16/my-pictures-from-aspen-here-and-there/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:35:58 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=282</guid>
		<description><![CDATA[Sometime ago the people organizing the Boostcon contacted me to see if they could publish a picture I took in Aspen during my participation in the NVOSS. Even if I&#8217;m a pure ANSI C guy, I accepted This last week, the german online magazine ScienceGarden contacted me for exactly the same reason, but they chose [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=282&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Sometime ago the people organizing the <a href="http://www.boostcon.com">Boostcon</a> contacted me to see if they could <a href="http://www.boostcon.com/location/lodging">publish a picture I took in Aspen</a> during my participation in the <a href="http://www.us-vo.org/summer-school">NVOSS</a>. Even if I&#8217;m a pure ANSI C guy, I accepted <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><img src="http://es.gnu.org/~aleksander/web/images/aspen_001.jpg" alt="Aspen Meadows resort" /></p>
<p>This last week, the german online magazine <a href="http://sciencegarden.de">ScienceGarden</a> contacted me for exactly the same reason, but <a href="http://sciencegarden.de/content/2010-07/gipfelstuerme-der-physik">they chose different pictures</a>:</p>
<p><img src="http://es.gnu.org/~aleksander/web/images/aspen_008.jpg" alt="Aspen Center for Physics" /><br />
<img src="http://es.gnu.org/~aleksander/web/images/aspen_010.jpg" alt="Beautiful Aspen" /></p>
<p>So, if any other person wants to publish <a href="http://es.gnu.org/~aleksander/web/pictures_nvoss.html">more images of Aspen</a>, feel free, and a reference is always appreciated!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/personal/'>Personal</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/282/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=282&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/07/16/my-pictures-from-aspen-here-and-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://es.gnu.org/~aleksander/web/images/aspen_001.jpg" medium="image">
			<media:title type="html">Aspen Meadows resort</media:title>
		</media:content>

		<media:content url="http://es.gnu.org/~aleksander/web/images/aspen_008.jpg" medium="image">
			<media:title type="html">Aspen Center for Physics</media:title>
		</media:content>

		<media:content url="http://es.gnu.org/~aleksander/web/images/aspen_010.jpg" medium="image">
			<media:title type="html">Beautiful Aspen</media:title>
		</media:content>
	</item>
		<item>
		<title>Lanedo, Tracker, Devhelp, GHM, GUADEC&#8230;</title>
		<link>http://sigquit.wordpress.com/2010/07/16/lanedo-tracker-devhelp-ghm-guadec/</link>
		<comments>http://sigquit.wordpress.com/2010/07/16/lanedo-tracker-devhelp-ghm-guadec/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 09:06:49 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Lanedo Planet]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[devhelp]]></category>
		<category><![CDATA[ghm]]></category>
		<category><![CDATA[guadec]]></category>
		<category><![CDATA[lanedo]]></category>
		<category><![CDATA[tracker]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=278</guid>
		<description><![CDATA[So, starting on April 1st (not a fools&#8217; day joke!), I&#8217;m now employed by Lanedo GmbH, and full-time working on the Gnome Tracker project, mainly involved in FTS and the filesystem miner. It was great to work with everyone in Azetti Networks. Keep Jardin and Waterfall alive! I also hacked a new feature for Gnome [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=278&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So, starting on April 1st (not a fools&#8217; day joke!), I&#8217;m now employed by <a href="http://www.lanedo.com"><strong>Lanedo GmbH</strong></a>, and full-time working on the <a href="http://projects.gnome.org/tracker"><strong>Gnome Tracker</strong></a> project, mainly involved in FTS and the filesystem miner.</p>
<p>It was great to work with everyone in <a href="http://www.azetti.com"><strong>Azetti Networks</strong></a>. Keep <a href="https://launchpad.net/eljardin">Jardin</a> and <a href="https://launchpad.net/waterfall">Waterfall</a> alive!</p>
<p>I also hacked a new feature for <a href="http://live.gnome.org/devhelp">Gnome Devhelp</a>, the possibility of <a href="https://bugzilla.gnome.org/show_bug.cgi?id=619202">enabling or disabling specific books</a>, which <a href="http://git.gnome.org/browse/devhelp/commit/?id=a9b25d74b596886307c7a724a71d36d0c68be8e2">was integrated into git master last week</a>, and will make it for the 3.0 release.</p>
<p>Oh, and I&#8217;ll be attending both the <a href="http://www.gnu.org/ghm/2010/denhaag">GHM</a> and <a href="http://www.guadec.org/index.php/guadec/2010">GUADEC</a> in The Hague!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/planets/lanedo-planet/'>Lanedo Planet</a>, <a href='http://sigquit.wordpress.com/category/personal/'>Personal</a> Tagged: <a href='http://sigquit.wordpress.com/tag/devhelp/'>devhelp</a>, <a href='http://sigquit.wordpress.com/tag/ghm/'>ghm</a>, <a href='http://sigquit.wordpress.com/tag/guadec/'>guadec</a>, <a href='http://sigquit.wordpress.com/tag/lanedo/'>lanedo</a>, <a href='http://sigquit.wordpress.com/tag/tracker/'>tracker</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/278/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=278&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/07/16/lanedo-tracker-devhelp-ghm-guadec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Gaztea Irratia &amp; Rhythmbox</title>
		<link>http://sigquit.wordpress.com/2010/03/12/gaztea-irratia-rhythmbox/</link>
		<comments>http://sigquit.wordpress.com/2010/03/12/gaztea-irratia-rhythmbox/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 11:25:38 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Programs]]></category>
		<category><![CDATA[gaztea irratia]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[internet radio]]></category>
		<category><![CDATA[rhythmbox]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=273</guid>
		<description><![CDATA[First thing when I go back to the Basque Country to visit my family is to tune Gaztea Irratia in my car&#8217;s radio. Now, I can listen to it from anywhere using Gnome&#8217;s Rhythmbox and the Shoutcast live stream. Just add a new radio station in Rhythmbox with this URL: http://yp.shoutcast.com/sbin/tunein-station.pls?id=77647 And enjoy! Filed under: [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=273&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>First thing when I go back to the Basque Country to visit my family is to tune <a href="http://www.eitb.com/gaztea/">Gaztea Irratia</a> in my car&#8217;s radio.</p>
<p>Now, I can listen to it from anywhere using Gnome&#8217;s <a href="http://projects.gnome.org/rhythmbox/">Rhythmbox</a> and the <a href="http://www.shoutcast.com/Internet-Radio/gaztea">Shoutcast live stream</a>. Just add a new radio station in Rhythmbox with this URL:</p>
<p><a href="http://yp.shoutcast.com/sbin/tunein-station.pls?id=77647">http://yp.shoutcast.com/sbin/tunein-station.pls?id=77647</a></p>
<p>And enjoy!</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/programs/'>Programs</a> Tagged: <a href='http://sigquit.wordpress.com/tag/gaztea-irratia/'>gaztea irratia</a>, <a href='http://sigquit.wordpress.com/tag/gnome/'>gnome</a>, <a href='http://sigquit.wordpress.com/tag/internet-radio/'>internet radio</a>, <a href='http://sigquit.wordpress.com/tag/rhythmbox/'>rhythmbox</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/273/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=273&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/03/12/gaztea-irratia-rhythmbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://yp.shoutcast.com/sbin/tunein-station.pls?id=77647" length="0" type="audio/x-scpls" />
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Understanding Valgrind memory leak reports</title>
		<link>http://sigquit.wordpress.com/2010/02/04/understanding-valgrind-memory-leak-reports/</link>
		<comments>http://sigquit.wordpress.com/2010/02/04/understanding-valgrind-memory-leak-reports/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 00:42:44 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Writting]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[valgrind]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=267</guid>
		<description><![CDATA[I tried to write a tutorial focusing on the type of memory leaks as detected internally by Valgrind and the generated output leak reports. The PDF is available in the following URL: http://es.gnu.org/~aleksander/valgrind/valgrind-memcheck.pdf And the simple C tester to generate each type of memory leak (cases 1 to 9 in the Valgrind Manual) is available [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=267&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I tried to write a tutorial focusing on the type of memory leaks as detected internally by Valgrind and the generated output leak reports.</p>
<p>The PDF is available in the following URL:<br />
<a href="http://es.gnu.org/%7Ealeksander/valgrind/valgrind-memcheck.pdf" target="_blank">http://es.gnu.org/~aleksander/valgrind/valgrind-memcheck.pdf</a></p>
<p>And the simple C tester to generate each type of memory leak (cases 1 to 9 in the Valgrind Manual) is available here:<br />
<a href="http://es.gnu.org/%7Ealeksander/valgrind/valgrind-memcheck.c" target="_blank">http://es.gnu.org/~aleksander/valgrind/valgrind-memcheck.c</a></p>
<p>Comments, fixes, whatever&#8230; highly appreciated. You could even send me a diff file to the original LaTeX source, available in:<br />
<a href="http://es.gnu.org/%7Ealeksander/valgrind/valgrind-memcheck.tex" target="_blank">http://es.gnu.org/~aleksander/valgrind/valgrind-memcheck.tex</a></p>
<p>The document is licensed under the GFDL 1.3, and the tester is published in the public domain.</p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/development/'>Development</a>, <a href='http://sigquit.wordpress.com/category/writting/'>Writting</a> Tagged: <a href='http://sigquit.wordpress.com/tag/c/'>c</a>, <a href='http://sigquit.wordpress.com/tag/gnulinux/'>gnu/linux</a>, <a href='http://sigquit.wordpress.com/tag/valgrind/'>valgrind</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=267&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/02/04/understanding-valgrind-memory-leak-reports/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>The Pirate Banana</title>
		<link>http://sigquit.wordpress.com/2010/02/02/the-pirate-banana/</link>
		<comments>http://sigquit.wordpress.com/2010/02/02/the-pirate-banana/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 19:20:00 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Drawing]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[pirate banana]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=263</guid>
		<description><![CDATA[This is probably the weirdest drawing I&#8217;ve ever made&#8230; My brother-in-law asked me if I could draw a &#8220;Pirate Banana&#8221; to be used in the Carnival party soon in February&#8230; yeah, don&#8217;t ask me why he asked for that. But here is what it came up after a couple of hours&#8230; (click image to see [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=263&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is probably the weirdest drawing I&#8217;ve ever made&#8230; My brother-in-law asked me if I could draw a &#8220;<strong>Pirate Banana</strong>&#8221; to be used in the Carnival party soon in February&#8230; yeah, don&#8217;t ask me why he asked for that.</p>
<p>But here is what it came up after a couple of hours&#8230; (click image to see it bigger).</p>
<div class="wp-caption aligncenter" style="width: 310px"><a href="http://es.gnu.org/~aleksander/drawings/pirate_banana_big.png"><img title="The Pirate Banana" src="http://es.gnu.org/~aleksander/drawings/pirate_banana_small.png" alt="The Pirate Banana" width="300" height="413" /></a><p class="wp-caption-text">The Pirate Banana</p></div>
<p>Licensed under the <a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">Creative Commons Attribution-Share Alike 3.0 License</a></p>
<br />Filed under: <a href='http://sigquit.wordpress.com/category/drawing/'>Drawing</a>, <a href='http://sigquit.wordpress.com/category/personal/'>Personal</a> Tagged: <a href='http://sigquit.wordpress.com/tag/drawing/'>Drawing</a>, <a href='http://sigquit.wordpress.com/tag/pirate-banana/'>pirate banana</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/263/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=263&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/02/02/the-pirate-banana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://es.gnu.org/~aleksander/drawings/pirate_banana_small.png" medium="image">
			<media:title type="html">The Pirate Banana</media:title>
		</media:content>
	</item>
		<item>
		<title>See you at FOSDEM!</title>
		<link>http://sigquit.wordpress.com/2010/01/18/see-you-at-fosdem/</link>
		<comments>http://sigquit.wordpress.com/2010/01/18/see-you-at-fosdem/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 19:35:56 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Meetings]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=257</guid>
		<description><![CDATA[This year, I will be attending FOSDEM 2010 in Brussels (Belgium). See you there! Posted in Meetings<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=257&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This year, I will be attending <a href="http://www.fosdem.org/2010">FOSDEM 2010</a> in Brussels (Belgium).</p>
<p><a href="http://www.fosdem.org"><img src="http://www.fosdem.org/promo/going-to" alt="I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting" /></a></p>
<p>See you there!</p>
<br />Posted in Meetings  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/257/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=257&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/01/18/see-you-at-fosdem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>

		<media:content url="http://www.fosdem.org/promo/going-to" medium="image">
			<media:title type="html">I&#039;m going to FOSDEM, the Free and Open Source Software Developers&#039; European Meeting</media:title>
		</media:content>
	</item>
		<item>
		<title>Knight&#8217;s Tour brute force algorithm example</title>
		<link>http://sigquit.wordpress.com/2010/01/13/knights-tour-brute-force-algorithm-example/</link>
		<comments>http://sigquit.wordpress.com/2010/01/13/knights-tour-brute-force-algorithm-example/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 23:50:22 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[glib]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=249</guid>
		<description><![CDATA[(From Wikipedia) The Knight&#8217;s Tour is a mathematical problem involving a knight on a chessboard. The knight is placed on the empty board and, moving according to the rules of chess, must visit each square exactly once. A knight&#8217;s tour is called a closed tour if the knight ends on a square attacking the square [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=249&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<blockquote><p> (From Wikipedia) <a href="http://en.wikipedia.org/wiki/Knight%27s_tour">The Knight&#8217;s Tour</a> is a mathematical problem involving a knight on a chessboard. The knight is placed on the empty board and, moving according to the rules of chess, must visit each square exactly once. A knight&#8217;s tour is called a closed tour if the knight ends on a square attacking the square from which it began (so that it may tour the board again immediately with the same path). Otherwise the tour is open. </p></blockquote>
<p>Just developed my brute-force algorithm implementation, using GLib and based on a simple recursive function.</p>
<p><a href="http://es.gnu.org/~aleksander/glib/knightstour-glib.c">Download and try it here!</a></p>
<p>As an example of result, this is the open Knight&#8217;s Tour found by the algorithm in a <strong>5&#215;5 board</strong>, starting from position [0,0]:<br />
[0,0][1,2][2,4][4,3][3,1][1,0][2,2][0,3][1,1][3,0][4,2][3,4][1,3][0,1][2,0][4,1][3,3][1,4][0,2][2,1][4,0][3,2][4,4][2,3][0,4]</p>
<p>And this one, the first Knight&#8217;s Tour found by the algorithm in a <strong>8&#215;8 board</strong>, starting from position [0,0]:<br />
[0,0][1,2][2,4][3,6][5,7][7,6][6,4][7,2][6,0][4,1][5,3][6,5][7,7][5,6][7,5][6,3][7,1][5,0][6,2][7,4][5,5][6,7][4,6][5,4][6,6][4,5][3,3][5,2][7,3][6,1][4,0][2,1][4,2][3,0][1,1][0,3][2,2][0,1][2,0][3,2][4,4][2,3][0,4][1,6][3,7][2,5][1,7][0,5][1,3][3,4][1,5][0,7][2,6][4,7][3,5][2,7][0,6][1,4][0,2][1,0][3,1][4,3][5,1][7,0]</p>
<p>Both examples above show <em>open</em> Knight&#8217;s Tours.</p>
<br />Posted in Development Tagged: algorithms, glib <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/249/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=249&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/01/13/knights-tour-brute-force-algorithm-example/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple LaTeX template for Books</title>
		<link>http://sigquit.wordpress.com/2010/01/12/simple-latex-template-for-books/</link>
		<comments>http://sigquit.wordpress.com/2010/01/12/simple-latex-template-for-books/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 00:51:12 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Writting]]></category>
		<category><![CDATA[eBook]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[texinfo]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=240</guid>
		<description><![CDATA[I prepared a simple LaTeX template for Books and/or eBooks (&#8220;book&#8221; document class), showing the usage of several common packages (&#8220;geometry&#8221;, &#8220;inputenc&#8221;, &#8220;setspace&#8221;, &#8220;fancyhdr&#8221;, &#8220;tocloft&#8221;}. You can download the source LaTeX template here! And get a PDF using GNU Texinfo.. $&#62; texi2pdf book_template.tex Resulting PDF can be seen here! Posted in Development, Writting Tagged: eBook, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=240&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I prepared a simple <a href="http://en.wikipedia.org/wiki/LaTeX">LaTeX</a> template for Books and/or eBooks (&#8220;<strong>book</strong>&#8221; document class), showing the usage of several common packages (&#8220;geometry&#8221;, &#8220;inputenc&#8221;, &#8220;setspace&#8221;, &#8220;fancyhdr&#8221;, &#8220;tocloft&#8221;}.</p>
<p>You can download the source LaTeX template <a href="http://es.gnu.org/~aleksander/latex/book_template.tex">here!</a></p>
<p>And get a PDF using GNU Texinfo..<br />
<code>$&gt; texi2pdf book_template.tex</code></p>
<p>Resulting PDF can be seen <a href="http://es.gnu.org/~aleksander/latex/book_template.pdf">here!</a></p>
<br />Posted in Development, Writting Tagged: eBook, LaTeX, texinfo <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=240&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/01/12/simple-latex-template-for-books/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Fools rush in where angels fear to tread</title>
		<link>http://sigquit.wordpress.com/2010/01/05/fools-rush-in-where-angels-fear-to-tread/</link>
		<comments>http://sigquit.wordpress.com/2010/01/05/fools-rush-in-where-angels-fear-to-tread/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 21:59:00 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=234</guid>
		<description><![CDATA[I really had to write an email (quoted below) to the author of this blog post regarding the old GNU/Linux vs Linux battle&#8230; Just wanted to tell you that you are sooooo wrong in most of the things you say&#8230; and that it is very very funny how you say you can remove all GNU [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=234&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I really had to write an email (quoted below) to the author of  <a href="http://profarius.com/content/i-use-linux-get-it-right">this blog post regarding the old GNU/Linux vs Linux battle</a>&#8230;</p>
<blockquote><p>Just wanted to tell you that you are sooooo wrong in most of the things<br />
you say&#8230; and that it is very very funny how you say you can remove all<br />
GNU apps from several distros.</p>
<p>Did you remove GNU coreutils? Then how can you for example do a simple<br />
&#8220;ls&#8221; in the command line?</p>
<p>Oh, and do you know what the &#8220;G&#8221; means in GNOME?<br />
<a href="http://en.wikipedia.org/wiki/GNOME">http://en.wikipedia.org/wiki/GNOME</a></p>
<p>Glib? GTK+? All GNU packages.</p>
<p>And you&#8217;re part of an Ubuntu LoCo team &#8212;&gt; What about Bazaar, widely<br />
used in Ubuntu, as it is written by Canonical people&#8230; Also a GNU<br />
package!!<br />
<a href="https://lists.ubuntu.com/archives/bazaar-announce/2008-February/000135.html">https://lists.ubuntu.com/archives/bazaar-announce/2008-February/000135.html</a></p>
<p>Tell me now what you get if you remove all GNU packages from Ubuntu (if<br />
theoretically possible). Including GLib, GTK+ (and of course all their<br />
dependencies); including coreutils, bash, gdb, gcc&#8230; including the<br />
glibc (GNU C library)!</p>
<p>Now what you will probably get?</p>
<p>Probably *nothing*. Even the Linux kernel depends on the glibc.</p>
<p>Now, next time, I would suggest you just read a little bit more and<br />
understand what GNU means, before writing such wrong post.</p>
<p>Check which is the whole list of GNU packages here:<br />
<a href="http://directory.fsf.org/GNU">http://directory.fsf.org/GNU</a>
</p></blockquote>
<br />Posted in Operating Systems Tagged: gnu, gnu/linux, linux <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/234/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=234&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/01/05/fools-rush-in-where-angels-fear-to-tread/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>g_source_unref() and g_source_destroy() are your friends</title>
		<link>http://sigquit.wordpress.com/2010/01/05/g_source_unref-and-g_source_destroy-are-your-friends/</link>
		<comments>http://sigquit.wordpress.com/2010/01/05/g_source_unref-and-g_source_destroy-are-your-friends/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 21:05:31 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[glib]]></category>
		<category><![CDATA[gsource]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=227</guid>
		<description><![CDATA[After almost 2 years developing GLib-based applications, I understood the proper way of using GSource objects. Yes, quite a shame, but better now than never. Now, after re-reading carefully the GLib Reference Manual, I see that it is quite clearly explained the difference between g_source_destroy() and g_source_unref(). So the typical suggestion is still the best [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=227&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>After almost 2 years developing GLib-based applications, I understood the proper way of using GSource objects. Yes, quite a shame, but better now than never.</p>
<p>Now, after re-reading carefully the <a href="http://library.gnome.org/devel/glib/unstable/">GLib Reference Manual</a>, I see that it is quite clearly explained the difference between <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-source-destroy">g_source_destroy()</a> and <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-source-unref">g_source_unref()</a>. So the typical suggestion is still the best one: <a href="http://en.wikipedia.org/wiki/Rtfm">RTFM!!</a></p>
<p>In our applications, we usually need to attach timeout operations to the context of an specific thread, not to the main thread context. Thus, we cannot use <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-timeout-add">g_timeout_add()</a> or the pretty new <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-timeout-add-seconds">g_timeout_add_seconds()</a>.</p>
<p>For example, you could create a GThreadPool, and in the function to be executed in each thread, you could create a specific context for the thread, plus a main loop in the context:</p>
<pre>
    /* Create a GLib Main Context */
    context = g_main_context_new();

    /* Create a Main Loop in the context*/
    main_loop = g_main_loop_new(context,
                                FALSE);
</pre>
<p>Once you have a new context and main loop, you can just create a new GSource, and attach it to the main loop. As soon as you create the GSource, its reference count is 1, and as soon as you attach it to the main loop, its reference count will be 2.</p>
<pre>
    /* Create new timeout source to be called
     * every 5 seconds.
     * Reference count of source is 1 once created */
    source = g_timeout_source_new(TIMEOUT_MSECS);

    /* Set callback to be called in each timeout */
    g_source_set_callback(source,
                          (GSourceFunc)__timeout_func,
                          main_loop,
                          NULL);

    /* Attach the GSource in the GMainContext.
     * Reference count of source is 2 after this call */
    g_source_attach(source,
                    context);
</pre>
<p>Of, course, you will be now running the main loop:</p>
<pre>
    /* Run the main loop, until it is stopped */
    g_main_loop_run(main_loop);
</pre>
<p>The key now is how to destroy the GSource properly. When calling <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-source-destroy">g_source_destroy()</a>, you are doing 2 things: first, telling the main loop to forget about the GSource; and second, decrementing the reference count of the GSource. Then, you still need to call <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-source-unref">g_source_unref()</a> to fully decrement the reference counter so that the GSource is disposed.</p>
<pre>
    /* We did an attach() with the GSource, so we need to
     * destroy() it */
    g_source_destroy(source);

    /* We need to unref() the GSource to end the last reference
     * we got */
    g_source_unref(source);
</pre>
<p>To end the example, once the main loop is stopped, you will also need to properly dispose the GMainContext and GMainLoop objects:</p>
<pre>
    /* The main loop should be destroyed before the context */
    g_main_loop_unref(main_loop);

    /* Finally, destroy the context */
    g_main_context_unref(context);
</pre>
<p>This is just one way of keeping the GSource references properly managed:</p>
<ol>
<li>You get one reference when you create the GSource</li>
<li>You get a new reference when you attach it in the context</li>
<li>You release one reference when you destroy it from the context</li>
<li>You release last reference when you unref the final one</li>
</ol>
<p>Of course, you could also choose to avoid storing the &#8220;extra&#8221; reference, and leave alive only the one inside the main context:</p>
<ol>
<li>You get one reference when you create the GSource</li>
<li>You get a new reference when you attach it in the context</li>
<li>You release one reference when you unref the the GSource &#8212;&gt; Now, the only reference is inside the GMainContext</li>
<li>You release last reference when you destroy it from the context</li>
</ol>
<p>You can check this simple example in the following program I prepared, released into public domain:<br />
<a href="http://es.gnu.org/~aleksander/glib/test-gsource.c">http://es.gnu.org/~aleksander/glib/test-gsource.c</a></p>
<p>Hope it helps someone out there to fully understand the difference between <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-source-destroy">g_source_destroy()</a> and <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-source-unref">g_source_unref()</a>.</p>
<p>As last comment&#8230; I would really rename the following functions in the library, so that no one else is confused with the &#8220;unref&#8221; and &#8220;destroy&#8221; terms:</p>
<ul>
<li>Rename <strong>g_source_attach()</strong> to <strong>g_source_attach_to_context()</strong></li>
<li>Rename <strong>g_source_destroy()</strong> to <strong>g_source_destroy_from_context()</strong></li>
</ul>
<p>The main reason is that these two operations actually act on the GMainContext, while the name of the functions do not suggest that fact.</p>
<br />Posted in Development Tagged: glib, gsource <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/227/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=227&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2010/01/05/g_source_unref-and-g_source_destroy-are-your-friends/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Stack corruption: improper use of FD_SET</title>
		<link>http://sigquit.wordpress.com/2009/12/24/stack-corruption-improper-use-of-fd_set/</link>
		<comments>http://sigquit.wordpress.com/2009/12/24/stack-corruption-improper-use-of-fd_set/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 22:53:24 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[gdb]]></category>
		<category><![CDATA[jardin]]></category>
		<category><![CDATA[poll]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[stack corruption]]></category>
		<category><![CDATA[valgrind]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=202</guid>
		<description><![CDATA[So here is a very simple way of corrupting your stack when using select() to poll a given file descriptor. In El Jardin library, we used to use select() to see if incoming data was available for reading in a given socket. Using select() allows to have a maximum wait time so that the execution [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=202&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So here is a very simple way of corrupting your stack when using <code>select()</code> to poll a given file descriptor.  In <a href="https://launchpad.net/eljardin">El Jardin</a> library, we used to use <code>select()</code> to see if incoming data was available for reading in a given socket. Using <code>select()</code> allows to have a maximum wait time so that the execution in the thread is not blocked until the data arrives.  The code was just something like this (assuming &#8220;fd&#8221; an integer specifying the file descriptor number in the process): </p>
<pre>
fd_set rset;
struct timeval tv;

/* Initialize the array of flags, specifying the
 * FD we want to monitor */
FD_ZERO(&amp;rset);
FD_SET(fd, &amp;rset);

/* Set max wait time to 1 second */
tv.tv_sec = 1;
tv_tv_usec = 0;

/* Run select! */
if(select(fd+1, &amp;rset, NULL, NULL, &amp;tv) &lt; 0)
{
    /* Check errno */
}
</pre>
<p>
You may see this kind of code in lots of examples of usage for <code>select()</code>. But please, read the constraints carefully also!  Some things you need to understand:</p>
<ul>
<li><code>fd_set</code> is an array of bits, of <code>FD_SETSIZE</code> elements.</li>
<li><code>FD_ZERO</code> is a macro clearing (setting to &#8217;0&#8242; all bits in the <code>fd_set</code> array).</li>
<li><code>FD_SET</code> is a macro setting to &#8217;1&#8242; the bit for the specific file descriptor you want <code>select()</code> to check.</li>
</ul>
<p>And the most important thing once you understood the previous ones:</p>
<ul>
<li><code>FD_SETSIZE</code> is usually defined to 1024 in GNU/Linux systems</li>
</ul>
<p>This clearly means that <strong>the maximum file descriptor number to be used in <code>select()</code> must be 1024</strong>.
</p>
<p>The <a href="http://www.delorie.com/gnu/docs/glibc/libc_248.html">GNU C Library documentation</a> actually explains it perfectly:</p>
<blockquote><p>
The value of this macro is the maximum number of file descriptors<br />
that a <code>fd_set</code> object can hold information about.  On systems with<br />
a fixed maximum number, <code>FD_SETSIZE</code> is at least that number.  On<br />
some systems, including GNU, there is no absolute limit on the<br />
number of descriptors open, but this macro still has a constant<br />
value which controls the number of bits in an <code>fd_set</code>; <b>if you get<br />
a file descriptor with a value as high as <code>FD_SETSIZE</code>, you cannot<br />
put that descriptor into an <code>fd_set</code></b>.
</p></blockquote>
<p>Now, if you actually do what the GNU C Library documentation tells you not to do (using a FD with value higher than 1024 in this case), what you get 100% sure is a stack corruption. Why?</p>
<ol>
<li>In the above example, the <code>fd_set</code> array is in the stack</li>
<li><code>FD_SET</code> macro apparently doesn&#8217;t know about the <code>FD_SETSIZE</code> value, so even if you pass a FD greater than 1024, it will actually set to &#8220;1&#8243; the corresponding bit in the <code>fd_set</code> array of bits, which actually is <b>OUTSIDE</b> the array. Thus, corrupting the stack.</li>
</ol>
<p>Did it happen this to you?</p>
<ul>
<li>In our case, we first noticed using the GNU Debugger that some pointers in the stack magically changed their value, and only in a single bit (new address was previous address plus a multiple of 2). Also, that bit was different in different core files analyzed (depending on the FD number being used).</li>
<li>In some other cases, the stack was so corrupted that GDB was not even able of showing a proper backtrace</li>
</ul>
<p>But anyway, this problem was not only because of an improper use of <code>select()</code>. We also discovered a FD leak (socket open, never closed) which was making the FD number go up and up until being greater than 1024 after some hours. So best suggestion in this case: use Valgrind and track FDs:</p>
<pre>
# valgrind --track-fds=yes ./my-program
</pre>
</p>
<p>In El Jardin, we solved it (<a href="https://bugs.launchpad.net/eljardin/+bug/497570">LP#497570</a>) avoiding the use of <code>select()</code>, and <a href="http://bazaar.launchpad.net/~azetti/eljardin/main/revision/14">using <code>poll()</code> instead</a>, which doesn&#8217;t have this hard-coded limit of 1024. Other options are using <code>epoll()</code>, or defining your own FD_SETSIZE value after having included the system headers.</p>
<br />Posted in Development Tagged: gdb, jardin, poll, select, stack corruption, valgrind <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/202/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=202&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/12/24/stack-corruption-improper-use-of-fd_set/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>gNewSense in my home server</title>
		<link>http://sigquit.wordpress.com/2009/06/04/gnewsense-in-my-home-server/</link>
		<comments>http://sigquit.wordpress.com/2009/06/04/gnewsense-in-my-home-server/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 19:23:09 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[gnewsense]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=197</guid>
		<description><![CDATA[Decided to drop Fedora10 in my home Asus PX24 server, and installed gNewSense, one of the full-free distributions promoted by the Free Software Foundation and the GNU project. Go download it! http://www.gnewsense.org/ In order to have all components working perfectly, Wireless networking among them, I needed to download latest linux-libre kernel. This kernel doesn&#8217;t ship [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=197&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Decided to drop <strong>Fedora10</strong> in my home Asus PX24 server, and installed <strong>gNewSense</strong>, one of the full-free distributions promoted by the Free Software Foundation and the GNU project.</p>
<p>Go download it!<br />
<a href="http://www.gnewsense.org/">http://www.gnewsense.org/</a></p>
<p>In order to have all components working perfectly, Wireless networking among them, I needed to download latest <a href="http://linux-libre.fsfla.org/">linux-libre</a> kernel. This kernel doesn&#8217;t ship <strong>any</strong> proprietary type of driver, not even those trying to seem free software but hiding the real source code into unintelligible hex characters, which are the ones GPL-ed.</p>
<p>Free your server!! </p>
<br />Posted in Operating Systems Tagged: fedora, gnewsense, gnu, gnu/linux <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=197&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/06/04/gnewsense-in-my-home-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Jazztel vs Ya.Com</title>
		<link>http://sigquit.wordpress.com/2009/04/07/jazztel-vs-yacom/</link>
		<comments>http://sigquit.wordpress.com/2009/04/07/jazztel-vs-yacom/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 21:56:28 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[ISP spain]]></category>
		<category><![CDATA[Jazztel]]></category>
		<category><![CDATA[Spanish]]></category>
		<category><![CDATA[Ya.Com]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=188</guid>
		<description><![CDATA[I guess this is only interesting for spanish people&#8230; &#8212;&#8212;&#8212;&#8212;&#8211; Por fin, Ya.Com no me da servicio de internet. Y digo por fin porque llevaba desde comienzos de Enero con un servicio de ADSL pésimo. Un resumen (casi) corto: * Comienzos de Enero: Mi ADSL de repente se comporta de forma extraña. El enlace cae [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=188&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I guess this is only interesting for spanish people&#8230;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Por fin, <strong>Ya.Com no me da servicio de internet</strong>. Y digo por fin porque llevaba desde comienzos de Enero con un servicio de ADSL pésimo. Un resumen (casi) corto:</p>
<p>* Comienzos de Enero: Mi ADSL de repente se comporta de forma extraña. El enlace cae constantemente, intenta sincronizar a velocidades altas (tenía contrato hasta 20 Mbps), y vuelve a caer, con lo que intenta sincronizar a menor velocidad. Y así, hasta que el enlace cae a 300/400 Kbps (a veces hasta 1Mbps como máximo).</p>
<p>* Como mi contrato es de 20Mbps, el mínimo por ley que te deben garantizar es el 10%, esto es, 2Mbps.</p>
<p>* Llamo al servicio de Ya.Com. Después de 1 hora de charla, el técnico llega a la conclusión de que <strong>el problema es del router</strong>, que hay que comprar uno nuevo.</p>
<p>* Como el router originalmente era el que me mandó Ya.Com, intento que Ya.Com me mande uno nuevo, ya que ese era defectuoso, según el técnico. El técnico me asegura que no será ningún problema que me den un router nuevo.</p>
<p>* Tras 4 días esperando a que alguien se decida a llamarme, llamo de nuevo. No hay router nuevo. Sólo me lo dan con un contrato de permanencia de 12 meses.</p>
<p>* Llamo al teléfono de bajas de Ya.Com y digo que me quiero dar de baja. <strong>Oh, sorpresa</strong>, me ofrecen 6 meses a mitad de precio si me quedo, y que me pasarán con un técnico de nivel 2. Consejo: si alguna vez os dicen eso, daros por engañados. Después de minutos de espera con una música horrible, <strong>el técnico te descuelga, dice cuatro palabras y la comunicación se corta</strong>. Esto es más que común. En tres meses de llamadas me ha pasado día sí y día también.</p>
<p>* Consiguen convencerme con lo de la oferta a mitad de precio y el técnico de nivel 2. Se ve que si no les pasan un técnico de nivel 2 al momento a la gente de bajas, te dicen que te llaman ellos y que te pasan al técnico. Mira, esto sí es verdad. La gente del departamento de bajas te llama, y te dice que te pasa con el técnico de nivel 2. Y hasta ahi. Pasan minutos de música y cuando el técnico de nivel 2 te coge, dice 4 palabras y te cuelga. <strong>Oh, sorpresa</strong>.</p>
<p>* Como el servicio ténico era imposible, decidí comprar un router nuevo. El primer técnico que me atendió estaba bastante seguro de que era el problema&#8230; así que me compré uno nuevo (más de 100 euros), lo enchufo, lo configuro y&#8230; voilá! Pasa lo mismo&#8230; intentos de sincronización de ADSL hasta que se queda estable en menos de 1Mbps&#8230;</p>
<p>* Más llamadas al servicio técnico. Que mirarán en la central y me llaman. Que harán una prueba conjunta con Telefónica (la que me daba la línea) y me llaman&#8230;</p>
<p>* Más llamadas al servicio técnico, me dicen que no ven ningún problema en la central, y que confirman que la sincronización de ADSL se reintenta hasta que queda estable por debajo de 1Mbps. Si configuro el router para no utilizar ADSL2+, sino sólo ADSL2 es más estable, pero la velocidad no supera 1Mbps.</p>
<p>* <strong>Cambio cables de telefonía</strong>. Desde enero el router estaba directamente empalmado al PTR de Telefónica, para asegurarnos que no era la instalación interna.</p>
<p>* Finalmente me llama un técnico muy agradable. Mira oye, que <strong>va a ser problema del PTR de Telefónica</strong>, que llame a Telefónica para que me lo cambien y que no me cobrarán nada. Que en Ya.Com han hecho ya todo todo lo que estaba en sus manos, y que ellos no pueden hacer más, que es el PTR fijo. Lo que nos faltaba, vamos. Se ve que les dan un curso de forwardear marrones a los técnicos de Ya.Com.</p>
<p>* Telefónica viene y me planta un PTR nuevo. Y, <strong>oh sorpresa, sigue pasando lo mismo&#8230;<br />
</strong><br />
* Después de alguna semana más, me llama una técnica y me planta lo siguiente: Que la solución para mi problema es que cambie mi contrato de 20Mbps a 10Mbps, y entonces se soluciona todo. Parece razonable? No. Recordemos que por ley te deben garantizar el <strong>10% de lo contratado</strong>. Con mi contrato de 20Mbps estaban fastidiados porque el 10% eran 2Mbps, y desde Enero mi conexión no superaba 1Mbps. No tiene sentido que por un simple cambio de contrato, los problemas en la línea se solucionen. Yo le dije que si esa era la solución, primero me diesen 10Mbps, que yo los vea, y luego me cambiaba de contrato. Insistía que eso no podía ser, que primero era el cambio de contrato (algo <strong>absurdo</strong>). O sea, que me cambio a 10Mbps y se me solucionan los problemas? Mejor dicho, se les solucionan a ellos! Si paso a 10Mbps de contrato, por ley me tienen que garantizar 1Mbps, cosa que sí tenía! Tócate los pies!!! Si me llego a cambiar de contrato, ellos ya se lavan las manos con mi problema.</p>
<p>* <strong>Relleno</strong> el formulario para darme de baja en la web de Ya.Com, <strong>espero</strong> 24h, y <strong>llamo</strong> al departamento de bajas para confirmarlo (después de 3 meses estos pasos ya los tenía claros).</p>
<p>* Hoy, más de 3 meses después de empezar con los problemas, y tras decenas de llamadas, he visto que la luz de sincronización en el router estaba fija, y la de datos apagada. El router de <strong>Jazztel</strong> lo tienen todavía en Seur, así que como ya tengo uno en casa, he llamado a Jazztel para que me den los datos de conexión (PPPoE en este caso necesita usuario y password, no como en Ya.Com).</p>
<p>* Después de 5 minutos con el servicio técnico de Jazztel, ya tengo internet. Y no sólo eso&#8230; la conexión de Ya.Com, en su mejor momento me sincronizaba a 13Mbps&#8230; la conexión de Jazztel me sincroniza a <strong>20Mbps</strong>! Estupendo vamos.</p>
<p>En resumen: Si dudas entre Ya.Com y Jazztel&#8230; mi experiencia es que <strong>Jazztel mejor</strong>&#8230; (por ahora! cruzo dedos&#8230;)</p>
<br />Posted in Personal Tagged: ISP spain, Jazztel, Spanish, Ya.Com <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=188&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/04/07/jazztel-vs-yacom/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>The Core Pattern (core_pattern), or how to specify filename and path for core dumps</title>
		<link>http://sigquit.wordpress.com/2009/03/13/the-core-pattern/</link>
		<comments>http://sigquit.wordpress.com/2009/03/13/the-core-pattern/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 20:41:51 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[coreutils]]></category>
		<category><![CDATA[core_pattern]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=179</guid>
		<description><![CDATA[1. Introduction to Core Dumps In most GNU/Linux systems (all of those I personally have used, at least), core dump files generated after an uncaught signal in a process (as a SIGSEGV or SIGQUIT), are generated in the base directory where the program was executed, and named as &#8220;core&#8221; or &#8220;core.PID&#8221;. For example: $&#62; cd [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=179&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>1. Introduction to Core Dumps</strong></p>
<p>In most GNU/Linux systems (all of those I personally have used, at least), core dump files generated after an uncaught signal in a process (as a SIGSEGV or SIGQUIT), are generated in the base directory where the program was executed, and named as &#8220;core&#8221; or &#8220;core.PID&#8221;.</p>
<p>For example:<br />
<code><br />
$&gt; cd /home/user<br />
$&gt; ulimit -c unlimited<br />
$&gt; kill -s SIGSEGV $$<br />
</code></p>
<p>This will trigger a segmentation fault in your current shell (you probably guessed it after seeing that the shell session where you executed it was closed), and generate a core file in:<br />
<strong>/home/user/core</strong></p>
<p>Now&#8230; is it possible to change where that file is generated by default instead of the current directory? And is it possible to change the name of that generated file? The answer is YES! to both. Let&#8217;s see how we can get this.</p>
<p><strong>2. The Core Pattern in Kernel</strong></p>
<p>Since some years ago, the kernel configuration includes a file named &#8220;core_pattern&#8221;:<br />
<strong>/proc/sys/kernel/core_pattern</strong></p>
<p>In my system, that file contains just this single word:<br />
<code>core</code></p>
<p>As expected, this pattern shows how the core file will be generated. Two things can be understood from the previous line: The filename of the core dump file generated will be &#8220;core&#8221;; and second, the current directory will be used to store it (as the path specified is completely relative to the current directory).</p>
<p>Now, if we change the contents of that file&#8230; (as root, of course)<br />
<code><br />
$&gt; mkdir -p /tmp/cores<br />
$&gt; chmod a+rwx /tmp/cores<br />
$&gt; echo "/tmp/cores/core.%e.%p.%h.%t" &gt; /proc/sys/kernel/core_pattern<br />
</code></p>
<p>And we run the same as before:<br />
<code><br />
$&gt; cd /home/user<br />
$&gt; ulimit -c unlimited<br />
$&gt; $&gt; kill -s SIGSEGV $$<br />
</code></p>
<p>We get&#8230; voilá!<br />
<strong>/tmp/cores/core.bash.8539.drehbahn-mbp.1236975953</strong></p>
<p>Not only the program name (&#8220;<strong>bash</strong>&#8220;) or the PID (&#8220;<strong>8539</strong>&#8220;), but also the hostname (&#8220;<strong>drehbahn-mbp</strong>&#8220;) and the unix time (&#8220;<strong>1236975953</strong>&#8220;) are appended in the name of the core file!! And of course, it is stored in the absolute path we specified (&#8220;<strong>/tmp/cores/</strong>&#8220;).</p>
<p>You can use the following pattern elements in the core_pattern file:<br />
<code><br />
%p:       pid<br />
%:   '%' is dropped<br />
%%:       output one '%'<br />
%u:       uid<br />
%g:       gid<br />
%s:       signal number<br />
%t:       UNIX time of dump<br />
%h:       hostname<br />
%e:       executable filename<br />
%: both are dropped<br />
</code></p>
<p>Isn&#8217;t is great?! Imagine that you have a cluster of machines and you want to use a NFS directory to store all core files from all the nodes. You will be able to detect which node generated the core file (with the hostname), which program generated it (with the program name), and also when did it happen (with the unix time).</p>
<p><strong>3. Configure it forever</strong></p>
<p>The changes done before are only applicable until the next reboot. In order to make the change in all future reboots, you will need to add the following in &#8220;<strong>/etc/sysctl.conf</strong>&#8220;:<br />
<code><br />
# Own core file pattern...<br />
kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t<br />
</code></p>
<p>sysctl.conf is the file controlling every configuration under /proc/sys</p>
<br />Posted in Development Tagged: core, coreutils, core_pattern, gnu/linux, kernel <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=179&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/03/13/the-core-pattern/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Fedora 10 in Asus Mini Nova Lite PX24 (2): Wireless Networking</title>
		<link>http://sigquit.wordpress.com/2009/03/11/fedora-10-in-asus-mini-nova-lite-px24-2-wireless-networking/</link>
		<comments>http://sigquit.wordpress.com/2009/03/11/fedora-10-in-asus-mini-nova-lite-px24-2-wireless-networking/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 20:32:10 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[chkconfig]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[network config]]></category>
		<category><![CDATA[NetworkManager]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[system-config-*]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=167</guid>
		<description><![CDATA[My friend Tomasz gave me yesterday the configuration to enable Wireless Networking at system-level (skipping NetworkManager) for Ubuntu. It&#8217;s just modifying /etc/network/interfaces to setup the Wireless device directly there: auto lo iface lo inet loopback &#160; iface wlan0 inet dhcp wireless-key s:your_f****_password_here wireless-essid your_f****_essid_here I wanted the same in my home Fedora 10 server, but [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=167&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>My friend <a href="http://myitcorner.com/">Tomasz</a> gave me yesterday the configuration to enable Wireless Networking at system-level (skipping NetworkManager) for Ubuntu. It&#8217;s just modifying /etc/network/interfaces to setup the Wireless device directly there:<br />
<code><br />
auto lo<br />
iface lo inet loopback<br />
&nbsp;<br />
iface wlan0 inet dhcp<br />
wireless-key s:your_f****_password_here<br />
wireless-essid your_f****_essid_here<br />
</code></p>
<p>I wanted the same in my home <strong>Fedora 10</strong> server, but as you already may know, Fedora 10 is based on Red Hat, so forget about the debian-like network configuration, and welcome to the system-config-* scripts!</p>
<p>You can edit your system-level network configuration, executing, as root:<br />
<code><br />
$&gt; system-config-network<br />
</code><br />
(or clicking on System-&gt;Administration-&gt;Network)</p>
<p>In the Wireless Settings tab you should select &#8220;<strong>Managed</strong>&#8221; mode, and I also specified the correct SSID of my home wireless network. Be really careful if adding the WEP key in HEX, as you must prepend &#8220;0x&#8221; to the whole key or it won&#8217;t work.</p>
<p>I thought that this would be enough, but nope. NetworkManager is launched by default at system startup, not the /etc/init.d/network script, which is disabled by default. You just need to disable NetworkManager, and enable the standard &#8220;network&#8221; script in order to have the system-level wireless configuration, executing, as root:<br />
<code><br />
$&gt; service NetworkManager stop<br />
$&gt; chkconfig --level 35 NetworkManager off<br />
$&gt; service network start<br />
$&gt; chkconfig --level 35 network on<br />
</code></p>
<p>I really like <strong>chkconfig</strong>, but not sure if the &#8220;<strong>service</strong>&#8221; command is a needed replacement of executing the script from /etc/init.d directly.</p>
<br />Posted in Operating Systems Tagged: chkconfig, fedora, network config, NetworkManager, service, system-config-*, wireless <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/167/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=167&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/03/11/fedora-10-in-asus-mini-nova-lite-px24-2-wireless-networking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Fedora 10 in Asus Mini Nova Lite PX24 (1)</title>
		<link>http://sigquit.wordpress.com/2009/03/11/fedora-10-in-asus-mini-nova-lite-px24-1/</link>
		<comments>http://sigquit.wordpress.com/2009/03/11/fedora-10-in-asus-mini-nova-lite-px24-1/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 20:10:31 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=162</guid>
		<description><![CDATA[I recently bought a small Asus Mini Nova Lite PX24 and of course, installed GNU/Linux on it. I chose Fedora 10 because at that time, it was the only distro I tested with the required driver for the Wireless interface: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter Other distros I have tried in [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=162&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I recently bought a small <a href="http://www.asus.com/news_show.aspx?id=11565">Asus Mini Nova Lite PX24</a> and of course, installed GNU/Linux on it. I chose <strong>Fedora 10</strong> because at that time, it was the only distro I tested with the required driver for the Wireless interface:<br />
Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter</p>
<p>Other distros I have tried in the Asus PX24 are:<br />
 * <a href="https://lists.ubuntu.com/archives/ubuntu-devel-announce/2007-August/000336.html">Ubuntu 8.04 Hardy Heron</a> [Doesn't work]<br />
 * <a href="http://www.opensuse.org/en/">OpenSUSE-11.1-GNOME</a> [Doesn't work]<br />
 * <a href="http://sigquit.wordpress.com/2009/02/22/debian-50-lenny-is-now-stable/">Debian 5.0 Lenny</a> [Doesn't work]<br />
 * <a href="https://lists.ubuntu.com/archives/ubuntu-devel-announce/2008-September/000481.html">Ubuntu 9.04 Jaunty Jackalope</a> Alpha-5 <strong>[Works]</strong></p>
<p>I was a Kubuntu fan until release 8.10, which completely destroyed the usability and stability of the distribution when shipping a non-stable version of KDE4. Switched then back to Gnome in Ubuntu 8.10, far more stable than the KDE counterpart. So now that I know that next stable version of Ubuntu also makes the Wireless networking work out-of-the-box, I thought of changing the PX24 back to Ubuntu.</p>
<p>But I won&#8217;t&#8230; I want to try yum, RH&#8217;s system-config-whatever scripts, SELinux&#8230; all those things that are not available in Ubuntu.</p>
<br />Posted in Operating Systems Tagged: fedora, gnu/linux, kubuntu, suse, ubuntu, wireless <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=162&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/03/11/fedora-10-in-asus-mini-nova-lite-px24-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Save my time &amp; bandwidth: Think before replying in HTML</title>
		<link>http://sigquit.wordpress.com/2009/03/10/save-my-time-bandwidth-think-before-replying-in-html/</link>
		<comments>http://sigquit.wordpress.com/2009/03/10/save-my-time-bandwidth-think-before-replying-in-html/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 22:18:33 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=158</guid>
		<description><![CDATA[I get in tons of emails the following text appended to the sender&#8217;s signature (or similar): Save a tree: Think before you print this email Usually, that text is included along with some big JPEG image included within an HTML-formatted colourful email, which of course, takes its time to render in my email desktop application [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=158&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I get in tons of emails the following text appended to the sender&#8217;s signature (or similar):<br />
<strong>Save a tree: Think before you print this email</strong></p>
<p>Usually, that text is included along with some big JPEG image included within an HTML-formatted colourful email, which of course, takes its time to render in my email desktop application or even worse, shown as attached image in GMail interface.</p>
<p>Now I am thinking in adding this other text after my signature in the emails:<br />
<strong>Save my time &amp; bandwidth: Think before you reply to this email in HTML</strong></p>
<br />Posted in Personal Tagged: email, html <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=158&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/03/10/save-my-time-bandwidth-think-before-replying-in-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Nokia Phonebook exported via Bluetooth to my car</title>
		<link>http://sigquit.wordpress.com/2009/03/02/nokia-phonebook-exported-via-bluetooth-to-my-car/</link>
		<comments>http://sigquit.wordpress.com/2009/03/02/nokia-phonebook-exported-via-bluetooth-to-my-car/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 22:05:10 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Programs]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[car]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[phonebook]]></category>
		<category><![CDATA[S60]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=151</guid>
		<description><![CDATA[I bought a new car last week, and I wanted to connect my Nokia N78 with the Bluetooth call manager in the car to be able to get the Phonebook (a.k.a. Contact list) of my phone accessible from my car&#8217;s screen and controls. After googleing a lot for the solution, I found the &#8220;Nokia 810 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=151&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I bought a new car last week, and I wanted to connect my Nokia N78 with the Bluetooth call manager in the car to be able to get the Phonebook (a.k.a. Contact list) of my phone accessible from my car&#8217;s screen and controls. After googleing a lot for the solution, I found the &#8220;<a href="http://europe.nokia.com/A4143881">Nokia 810 Contact Download Application for Nokia S60 3rd edition devices</a>&#8221; available in Nokia&#8217;s support website.</p>
<p>This program is supposed to work in the following Nokia phones: Nokia E50, E60, E61, E61i, E62, E66, E70, E71, E90 Communicator, N71, N73, N77, N75, N76, N80, N91, N91 8GB, N92, N93, N95, 3250, 5500 Sport, 5700 XpressMusic, and 6290.</p>
<p>I downloaded it and installed, and voilà, now I have my phone&#8217;s address book (only that in the SIM card, anyway), accessible from the controls in my car! So even if the N78 is not in the list provided in Nokia&#8217;s website, I can confirm it works nice.</p>
<p><a href="http://europe.nokia.com/A4164022?url=http://nds1.nokia.com/phones/files/software/Nokia_810_Contacts_Download_S60_3rd.sis">Download the SYS file</a><br />
<a href="http://europe.nokia.com/A4164044?url=http://nds1.nokia.com/phones/files/software/Nokia_810_contacts_sync_instruction_guide.pdf">Download the manual in PDF</a></p>
<br />Posted in Programs Tagged: bluetooth, car, nokia, phonebook, S60 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=151&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/03/02/nokia-phonebook-exported-via-bluetooth-to-my-car/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>ARTE</title>
		<link>http://sigquit.wordpress.com/2009/02/28/arte/</link>
		<comments>http://sigquit.wordpress.com/2009/02/28/arte/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 14:09:30 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[arte]]></category>
		<category><![CDATA[gplv3]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=147</guid>
		<description><![CDATA[Not so long ago, I asked my first employer if they were still using the Unit Testing framework I developed for them while I was still in University. It was simple, with lots of hardcoded stuff and not very professional, but it worked perfectly for the needs in that moment. They told me they were [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=147&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Not so long ago, I asked my <a href="http://www.pandasecurity.com">first employer</a> if they were still using the Unit Testing framework I developed for them while I was still in University. It was simple, with lots of hardcoded stuff and not very professional, but it worked perfectly for the needs in that moment. They told me they were not really using it, so I asked them to make it Free Software and they agreed.</p>
<p>A couple of weeks ago, <a href="http://arte.sourceforge.net">ARTE</a> was released licensed under the <a href="http://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> license, fully copyrighted by <a href="http://www.pandasecurity.com">Panda Security S.L.</a>.</p>
<p>I now started to improve ARTE, with better documentation and based on <a href="http://library.gnome.org/devel/glib/stable">GLib</a> library. ARTE is hosted <a href="http://sourceforge.net/projects/arte">in SourceForge</a>, and you can download the first stable release <a href="http://sourceforge.net/project/platformdownload.php?group_id=250598">here</a>.</p>
<br />Posted in Projects Tagged: arte, gplv3 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=147&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/02/28/arte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
		<item>
		<title>Having fun with an A380</title>
		<link>http://sigquit.wordpress.com/2009/02/25/having-fun-with-an-a380/</link>
		<comments>http://sigquit.wordpress.com/2009/02/25/having-fun-with-an-a380/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 19:06:55 +0000</pubDate>
		<dc:creator>aleksander</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Gnu Bazaar]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://sigquit.wordpress.com/?p=142</guid>
		<description><![CDATA[So imagine that you are a pilot of small aeroplanes. Really small ones, like the ones for two people with propellers. You have piloted that aeroplane tons of times. One day, you find yourself in a holiday trip flying in a big A380, and both main pilots get ill and can&#8217;t pilot the aircraft. You [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=142&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So imagine that you are a pilot of small aeroplanes. Really small ones, like the ones for two people with propellers. You have piloted that aeroplane tons of times.</p>
<p>One day, you find yourself in a holiday trip flying in a big A380, and both main pilots get ill and can&#8217;t pilot the aircraft. You are an experienced pilot of small aeroplanes, so you decide to pilot the huge A380 yourself.</p>
<p>Now, what do you do?</p>
<ol>
<li>Ask for help to the people in the airport to guide you with the aeroplane details and how to pilot it</li>
<li><a href="http://en.wikipedia.org/wiki/RTFM">RTFM</a>, even if you know it may take some time to learn it</li>
<li>Fuck everything! You are a pilot! You have done it tons of times! This big A380 shouldn&#8217;t be too different, right?</li>
</ol>
<p>Oh, alright, you chose last option, hum? Then, as it is normal, your experience with the small aeroplanes has nothing to do with the A380. Even if at the end the result is the same (an aeroplane flies), they are different in nature. Engines are different, power is different, size is different, everything is different. So the plane starts to go down, and you continue trying different things&#8230; you press this button, then that one, oh shit&#8230; it&#8217;s going down&#8230; then you push that lever, nothing, oh maybe that red button there&#8230;<br />
Shit it doesn&#8217;t work! Do I have a manual? Oh yes, there it is&#8230; ok&#8230; where is the chapter &#8220;how to start the propellers&#8221;? Humm.. where is it? Humm&#8230; Can&#8217;t find it!!! How is this possible! There is no chapter where it explains how to start the propellers!!? </p>
<p>Nice, so you realized it doesn&#8217;t work the way you thought it should (A380 doesn&#8217;t have propellers, among others). Again, what do you do?</p>
<ol>
<li>Ask for help to the people in the airport to guide you with the aeroplane details and how to pilot it</li>
<li><a href="http://en.wikipedia.org/wiki/RTFM">RTFM</a> carefully, not only looking for the chapter explaining how to start the propellers, as you already noticed that maybe the A380 doesn&#8217;t have propellers</li>
<li>Blame every engineer who built the aircraft</li>
<li>Blame not only every engineer who built it, but also the one who wrote the manual</li>
<li>Blame every engineer who built it, the one who wrote the manual AND also say that your small aeroplane is also much much better than this A380 you don&#8217;t understand</li>
</ol>
<p>How will this end? Of course, not well.</p>
<p>What&#8217;s the moral in this? If you don&#8217;t know how to do something, even if you think you know it, better ask someone or read the manual carefully.</p>
<p>Now, why this post? Because of this one: <a href="http://0pointer.de/blog/projects/bizarre-fun.html">Having fun with bzr</a></p>
<p>And yes I know that Git is not a small aeroplane and neither GNU Bazaar a huge A380. But no one can say that Git is easier to understand than Bazaar. You just need to understand that even if both are Distributed VCS, their way to work is different, their interface is different&#8230; in a brief, they are completely different VCS.</p>
<p>P.S.: The command you were looking for so desperately was &#8220;branch&#8221;, neither &#8220;get&#8221; nor &#8220;waldo&#8221; nor any other thing. A380 doesn&#8217;t have propellers! Don&#8217;t look for how to start them in the manual!</p>
<p>P.P.S.: Also, the URL of the repository you were using was probably not the good one: <a href="http://www.mega-nerd.com/Bzr/libsndfile-pub/">http://www.mega-nerd.com/Bzr/libsndfile-pub/</a> doesn&#8217;t exist (404 Not Found). A good choice would have been to go to an upper directory and look for the existing URLs&#8230; <a href="http://www.mega-nerd.com/Bzr/libsndfile-pub/">http://www.mega-nerd.com/Bzr</a></p>
<br />Posted in Development Tagged: Git, Gnu Bazaar, VCS <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sigquit.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sigquit.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sigquit.wordpress.com&#038;blog=4751666&#038;post=142&#038;subd=sigquit&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sigquit.wordpress.com/2009/02/25/having-fun-with-an-a380/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/56af7e00abf1e9a285f7149bf4d5bd52?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">drehbahn</media:title>
		</media:content>
	</item>
	</channel>
</rss>
