<?xml version="1.0" encoding="iso-8859-15"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Content tagged deforaos</title>
		<link>http://people.defora.org/~khorben/place/category/35/deforaos</link>
		<atom:link href="http://people.defora.org/~khorben/place/category/rss/35/deforaos" rel="self" type="application/rss+xml"/>
		<description></description>
		<language>en</language>
		<item>
			<title>Releasing a new snapshot of the DeforaOS smartphone environment on hackable:1</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Mon, 30 Aug 2010 14:57:56 +0200</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/95/Releasing-a-new-snapshot-of-the-DeforaOS-smartphone-environment-on-hackable:1</link>
			<guid>http://people.defora.org/~khorben/place/blog/95/Releasing-a-new-snapshot-of-the-DeforaOS-smartphone-environment-on-hackable:1</guid>
			<description><![CDATA[I have managed yesterday to release a new snapshot of the DeforaOS smartphone environment, as found packaged on top of the hackable:1 distribution. Unfortunately, there is still one obvious blocker bug before it can be easily tested as a real phone at the moment: as it seems, the modem &quot;forgets&quot; the PIN code a few seconds after accepting it, and is then unable to register correctly.<br/>
Of course, my current plan is to investigate and fix this as soon as possible (with a new snapshot). Yet, among the changes since the last release of the environment, you will already find:<br/>
<ul>
<li>a new finger keyboard, with popup keys (and using Gtk+' theme)</li>
<li>the addition of a phone log;</li>
<li>preferences windows for the phone application;</li>
<li>the return of the background picture, and a preferences window to easily change it;</li>
<li>last but not least, the final version of my initial attempt at SMS encryption.</li>
</ul>
With this, I will continue my work on the user experience:<br/>
<ul>
<li>fix and update the web browser (broken since the switch to Debian testing);</li>
<li>continue improvements to the finger keyboard (bigger keys, multiple layouts)</li>
<li>nicer Gtk+ theme and artwork if I manage (screenshots!)</li>
<li>more actual tests and usability improvements to the phone application;</li>
<li>power management;</li>
<li>GPRS support.</li>
</ul>
I have also begun to implement an application to configure access to wireless networks, with wpa_supplicant's help. It will take another while though.<br/>
<br/>
For more information, as always, check either <a href="http://www.defora.org/,">http://www.defora.org/,</a> the IRC channel of hackable:1 (#hackable1 on Freenode), the respective mailing-lists (devel@lists.defora.org, hackable1-dev@lists.hackable1.org...) or even, feel free to contact me directly of course: <a href="http://people.defora.org/~khorben/place/wiki/13/Contact">http://people.defora.org/~khorben/place/wiki/13/Contact</a><br/>
<br/>
And before I forget, the snapshot itself is announced and available there: <a href="http://www.defora.org/os/news/3394/New-snapshot-of-the-DeforaOS-smartphone">http://www.defora.org/os/news/3394/New-snapshot-of-the-DeforaOS-smartphone</a><br/>
]]></description>
		</item>
		<item>
			<title>Improvizing a talk at Debienna</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Thu, 26 Aug 2010 18:54:19 +0200</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/91/Improvizing-a-talk-at-Debienna</link>
			<guid>http://people.defora.org/~khorben/place/blog/91/Improvizing-a-talk-at-Debienna</guid>
			<description><![CDATA[I have been staying a few days in Vienna a couple weeks ago, where I happened to join a Debienna [1] meeting. As things went it felt appropriate to introduce hackable:1 [2] (and my current work on it) to this fine crowd. I have therefore quickly prepared a presentation, of which slides can be found there [3].<br/>
<br/>
It was called &quot;hackable:1 (and then more)&quot;, and I really appreciated this opportunity. See you guys!<br/>
<br/>
[1] <a href="http://www.debienna.at/">http://www.debienna.at/</a><br/>
[2] <a href="http://trac.hackable1.org/">http://trac.hackable1.org/</a><br/>
[3] <a href="http://people.defora.org/~khorben/papers/h1more/h1.html">http://people.defora.org/~khorben/papers/h1more/h1.html</a><br/>
]]></description>
		</item>
		<item>
			<title>News from the hackable:1 front</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Fri, 30 Jul 2010 16:00:45 +0200</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/89/News-from-the-hackable:1-front</link>
			<guid>http://people.defora.org/~khorben/place/blog/89/News-from-the-hackable:1-front</guid>
			<description><![CDATA[About the DeforaOS smartphone environment, I have just uploaded a first image for tests, as presented here:<br/>
<a href="https://www.defora.org/os/news/3380/Snapshot-of-the-DeforaOS-smartphone-available-for-tests">https://www.defora.org/os/news/3380/Snapshot-of-the-DeforaOS-smartphone-available-for-tests</a><br/>
<br/>
It directly benefits from the recent switch to Debian Squeeze/testing, as the default version of Debian on which hackable:1's development is now based. Like before, images are generated daily and found here:<br/>
<a href="http://build.hackable1.org/">http://build.hackable1.org/</a><br/>
<br/>
Last but not least, you may have heard of OsmocomBB, a Free Software GSM Baseband software implementation:<br/>
<a href="http://www.osmocom.org/">http://www.osmocom.org/</a><br/>
Good news is, I have started to package it for use within hackable:1. A few things are left to be fixed before they can be pushed automatically online, but I have been able to cross-compile libosmocore and the layer23 set of tools already.<br/>
]]></description>
		</item>
		<item>
			<title>The DeforaOS smartphone environment</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Sat, 12 Jun 2010 21:46:31 +0200</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/88/The-DeforaOS-smartphone-environment</link>
			<guid>http://people.defora.org/~khorben/place/blog/88/The-DeforaOS-smartphone-environment</guid>
			<description><![CDATA[I'll change my habits a bit here, and write a personal note about what I've been working on recently. Some of you may know about it already, since I have begun to announce it, but probably to a smaller audience this far [1].<br/>
<br/>
It's probably relevant to begin with some background information about all this, although even then it's difficult to know where to start.<br/>
<br/>
<pre>Reinventing the wheel</pre>
For some reason I found the urge to start an Operating System project of my own, which began with a modified version of Debian GNU/Linux [2]. This goes as far back as 2001, which may seem like yesterday to many experienced UNIX users, but was just a year after my first installation of a distribution on my own computer. This turned into a LFS-based project [3], before becoming the DeforaOS project as it is today [4], with more or less the goal to re-implement a complete kernel and user environment.<br/>
<br/>
That is to say, you may see a pattern here, and remind me that such time may be better spent improving the existing projects. While I would definitely agree that many Open Source projects need help (quite logically, otherwise I wouldn't have started my own), I will briefly summarize the reasons behind my choices:<br/>
<ul>
<li>I am having fun, and learning in the process;</li>
<li>back then, I did not have the technical means (eg cheap Internet access), let alone political power to influence much of the things I really wanted;</li>
<li>with my projects evolving, I stuck with this work and choices rather than give it all up;</li>
<li>frankly I still do not see myself having any political power now in the community, to do what I really want anyway;</li>
<li>last but not least, I am essentially trying to implement a different design, which I believe is worth a try.</li>
</ul>
Of course this doesn't mean that I always make the same choices as a professional [5]. This experience has always been useful, even though a compromise in design I made to implement a working solution unfortunately hasn't succeeded to date [6]. But I have then been focusing a full year on the hackable:1 project instead [7], with a few releases along the way.<br/>
<br/>
<pre>The Openmoko Freerunner</pre>
This is clearly another illustration of the &quot;reinventing the wheel&quot; approach. Why go all the way and create an Open Source smartphone from scratch [8]? It sure must be tedious, and from my experience and the information I have obtained in the process, I can say it sure was. And I can't say it was a clear, undisputed success either.<br/>
<br/>
I'll be honest: I never liked the device itself. I found it ugly and bulky at best. I encountered the most annoying hardware bugs and subsequent frustration rushes. No need to mention the community fragmentation, which didn't help either. But today still, it sure has its uses, and is actually useful in plenty of ways.<br/>
<br/>
<pre>Coding again</pre>
Burning out, having new opportunities, I parted ways and resumed work as a security consultant instead [9]. I could afford to take a first break in far-away land (thanks a.) and have fun creating software again, rather than feel like a packaging robot for what seemed to me as being broken code anyway.<br/>
<br/>
I could manage to get a few bugs fixed in my current Operating System of choice (NetBSD [10]), and then turn a few more sub-projects of DeforaOS to be good enough that I began to (finally) use many of them on a daily basis.<br/>
<br/>
<pre>The motive(s)</pre>
Owning a Sharp Zaurus [11] for a few years, I had already been thinking about an embedded version of the desktop environment while writing it. But I could do better; I could take my revenge on the Openmoko Freerunner instead. Still bitter from the outcome of my efforts while working with the device, I was convinced that I could do better. Be it true or not, as always there is only one way to know: trying it hard, whatever the reason.<br/>
<br/>
After a quick glance at the Openmoko community, to no surprise I found its activity to be declining. Maybe this is not true and I was simply expecting it, but I think it's fair to say that the hardware is aging. Nonetheless, combined with hackable:1 it has the advantage to easily letting me run my own native environment. This is certainly not true of the more popular mobile platforms.<br/>
<br/>
<pre>Trying a different way</pre>
As mentioned, I thought I could turn this phone into something more useful than it already was. This was based on the following assumptions, based on my personal appreciation:<br/>
<ul>
<li>the existing projects are over-engineered;</li>
<li>they have no global coherence concerning usability;</li>
<li>they are often developed as regular applications, regardless of the hardware constraints.</li>
</ul>
Better then, some interesting and unusual features of the hardware are available and documented [12], some of which could turn into interesting security developments. I cannot pretend to have actually been able to do better, or implement all these fancy features, especially within this other month break; but here is where I am now.<br/>
<br/>
<pre>The DeforaOS embedded desktop environment</pre>
First, I have spent some time improving and adapting my existing desktop applications to fit the Freerunner. I won't copy and paste what I have already written about it [13]. Instead, here is a summary of its current status:<br/>
<ul>
<li>neither hardware buttons are required (nor currently used) for regular operation, as everything can be done on-screen;</li>
<li>both panels are fully functional, with an integrated application launcher, and displaying the clock, hardware status (including registration, signal level and operator) and of course an application switcher;</li>
<li>the on-screen keyboard is fast, although definitely not finger-friendly at the moment (xkbd embedded in the panel), and will be re-implemented from scratch;</li>
<li>the contextual menus (as offered through a Gtk+ extension) could be more intuitively found;</li>
<li>the file manager is functional, but could be better integrated with the freedesktop.org standards;</li>
<li>the clipboard and drag&amp;drop features from the same project could be improved as well;</li>
<li>the homescreen functionality cannot be enabled at the moment due to how matchbox-window-manager handles it;</li>
<li>DeforaOS' own window manager is not mature enough to be used instead at this point;</li>
<li>the latest versions of the web browser cannot be packaged on hackable:1 at the moment, as it depends on a more recent version of WebKit.</li>
</ul>
I think this reflects quite well what is to be expected there.<br/>
<pre>The DeforaOS smartphone environment</pre>
Meanwhile, I have implemented a complete telephony application from scratch [14]. The design goals were:<br/>
<ul>
<li>use Gtk+ and the glib libraries in C, and only relying on them and DeforaOS' libDesktop;</li>
<li>embed the GSM daemon directly inside it;</li>
<li>implement the core application with all the required functionality built-in (eg contacts, messages, phone calls, preferences...)</li>
<li>let this application be as reactive as possible (eg single process)</li>
<li>extend it through optional plug-ins;</li>
<li>support hardware modems as broken as on the Openmoko Freerunner.</li>
</ul>
It's still far from being eligible as a regular mobile phone sold with a contract, but as of today this first set of goals was mostly met. Some essential features are still missing:<br/>
<ul>
<li>adding, editing and deleting contacts;</li>
<li>maintaining a phone log;</li>
<li>sending DTMF codes during calls;</li>
<li>storing the messages sent;</li>
<li>support for delivery reports;</li>
<li>preferences dialogs;</li>
<li>entering the PUK/PIN2/PUK2 codes;</li>
<li>switching to data mode;</li>
<li>call forwarding...</li>
</ul>
Most of them are not challenging anymore, and are just a matter of taking a few hours this and there to get them done.<br/>
<pre>Where is gets interesting</pre>
One of the first parts I believe I should emphasize in this post is the plug-in support. First, it allows full integration with the actual, underlying hardware platform with all the code clearly separated. This is the case on the Openmoko, where:<br/>
<ul>
<li>a first plug-in takes care of supporting profiles, by requesting a ring tone, triggering the vibrator and so on;</li>
<li>the hardware plug-in catches these events and turns the relevant components on and off.</li>
</ul>
Secondly, it allows extending the functionality in lots of different ways, from PulseAudio support to DBUS and potentially FSO integration [15], without mentioning webcams, GPS positioning [16] and then more.<br/>
<br/>
And there's more.<br/>
<br/>
<pre>SMS encryption</pre>
One of the first additional security features I have been thinking about is SMS encryption [17]. While not being specific to the Freerunner, it is certainly an interesting platform for such a feature. My current implementation, while not being cryptographically strong at the moment, can already be demonstrated as a working Proof-of-Concept [18].<br/>
<br/>
More than that, it is maybe time to think about a common, interoperable way to implement this feature. It looks like things could be moving towards this direction, with new projects emerging like TextSecure [19].<br/>
<br/>
<pre>Cell tracking and geotagging</pre>
Not unlike some other phones, but probably in a more accessible way, the Freerunner supports an &quot;engineering mode&quot;. It is basically a monitoring mode [20][21], much like the one on your regular 802.11abgn wireless card (except you can't sniff traffic, yet [22][23][24]).<br/>
<br/>
While not being as featureful and polished as kismet [25], my current implementation (couple of days old) can already illustrate this concept.<br/>
<br/>
<pre>The future</pre>
With a project as promising as Osmocombb [26] able to run on the Freerunner, I can only let you guess where all of this can be going. There are still many things to be done with this hardware, and of course I am also hoping to run my software on other devices as well, like the ones from ROAD [27], GizmoForYou [28], Nokia [29], Glofiish [30], HTC [31] and Palm [32] among others.<br/>
<br/>
If you would feel interested in any of this, do not hesitate to let me know [33]. Better, you can use the development infrastructure directly [34]. I will welcome your feedback and ideas, free patches and hardware, consider contracted projects.<br/>
<br/>
<pre>Thank yous</pre>
To conclude, I have omitted one of the reasons behind all of this in this post. I had the pleasure to be invited to the Nokia Hackfest in Berlin mid-March this year [35], and then be honoured with a free N97 and N900 device. They have both proven very helpful while developing this software already.<br/>
<br/>
Of course there's a number of people and projects who are also a great help to me every day. I can only hope to be helpful to you, too. Cheers!<br/>
<br/>
[1] <a href="http://www.defora.org/os/news/3363/Introducing-the-DeforaOS-smartphone">http://www.defora.org/os/news/3363/Introducing-the-DeforaOS-smartphone</a><br/>
[2] <a href="http://www.debian.org/">http://www.debian.org/</a><br/>
[3] <a href="http://www.linuxfromscratch.org/">http://www.linuxfromscratch.org/</a><br/>
[4] <a href="http://www.defora.org/">http://www.defora.org/</a><br/>
[5] <a href="http://people.defora.org/~khorben/cv.en.html">http://people.defora.org/~khorben/cv.en.html</a><br/>
[6] <a href="http://runningbear.org/">http://runningbear.org/</a><br/>
[7] <a href="http://trac.hackable1.org/">http://trac.hackable1.org/</a><br/>
[8] <a href="http://www.openmoko.org/">http://www.openmoko.org/</a><br/>
[9] <a href="http://www.duekin.com/">http://www.duekin.com/</a><br/>
[10] <a href="http://www.netbsd.org/">http://www.netbsd.org/</a><br/>
[11] <a href="http://www.trisoft.de/slc3200.htm">http://www.trisoft.de/slc3200.htm</a><br/>
[12] <a href="http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem">http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem</a><br/>
[13] <a href="http://www.defora.org/os/news/3362/DeforaOS-as-an-embedded-desktop-environment">http://www.defora.org/os/news/3362/DeforaOS-as-an-embedded-desktop-environment</a><br/>
[14] <a href="http://www.defora.org/os/project/3343/Phone">http://www.defora.org/os/project/3343/Phone</a><br/>
[15] <a href="http://www.freesmartphone.org/">http://www.freesmartphone.org/</a><br/>
[16] <a href="http://realtimeblog.free.fr/">http://realtimeblog.free.fr/</a><br/>
[17] <a href="http://www.cryptosms.org/">http://www.cryptosms.org/</a><br/>
[18] <a href="http://www.passageenseine.org/hackevents/confidences-par-sms">http://www.passageenseine.org/hackevents/confidences-par-sms</a><br/>
[19] <a href="http://www.whispersys.com/">http://www.whispersys.com/</a><br/>
[20] <a href="http://nobbi.com/monitor/index.html">http://nobbi.com/monitor/index.html</a><br/>
[21] <a href="http://www.gnokii.org/screenshots.shtml">http://www.gnokii.org/screenshots.shtml</a><br/>
[22] <a href="http://www.gnuradio.org/">http://www.gnuradio.org/</a><br/>
[23] <a href="http://cryptome.org/jya/crack-a5.htm">http://cryptome.org/jya/crack-a5.htm</a><br/>
[24] <a href="http://reflextor.com/trac/a51">http://reflextor.com/trac/a51</a><br/>
[25] <a href="http://www.kismetwireless.net/">http://www.kismetwireless.net/</a><br/>
[26] <a href="http://bb.osmocom.org/">http://bb.osmocom.org/</a><br/>
[27] <a href="http://www.road.de/">http://www.road.de/</a><br/>
[28] <a href="http://www.gizmoforyou.net/">http://www.gizmoforyou.net/</a><br/>
[29] <a href="http://www.nokia.com/">http://www.nokia.com/</a><br/>
[30] <a href="http://www.glofiish.com/">http://www.glofiish.com/</a><br/>
[31] <a href="http://www.htc.com/">http://www.htc.com/</a><br/>
[32] <a href="http://www.palm.com/">http://www.palm.com/</a><br/>
[33] <a href="http://people.defora.org/~khorben/place/wiki/13/Contact">http://people.defora.org/~khorben/place/wiki/13/Contact</a><br/>
[34] <a href="http://www.defora.org/os/project/bug_list/3343/Phone">http://www.defora.org/os/project/bug_list/3343/Phone</a><br/>
[35] <a href="http://www.youtube.com/watch?v=5jW3VDqvzLs">http://www.youtube.com/watch?v=5jW3VDqvzLs</a><br/>
]]></description>
		</item>
		<item>
			<title>A graphical mixer for NetBSD</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Fri, 18 Dec 2009 18:16:29 +0100</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/75/A-graphical-mixer-for-NetBSD</link>
			<guid>http://people.defora.org/~khorben/place/blog/75/A-graphical-mixer-for-NetBSD</guid>
			<description><![CDATA[On my way to making some noise about it, I'd like to mention a few things about the Mixer program I just wrote [1].<br/>
<br/>
Some background information: NetBSD [2] has an audio API of its own [3][4], which I'll call &quot;audioio&quot; because it sits in /usr/include/sys/audioio.h [5]. It seems to be based on Solaris' historical audio sub-system, but I've always had a hard time obtaining decent documentation about Solaris [6] on the web so I'll skip this part.<br/>
<br/>
To the point: NetBSD thankfully provides an OSS emulation layer [7]. Unfortunately, it is outdated (version 3), and assumes that controls are always fixed and resemble those of the &quot;historical&quot; cards (eg the SoundBlaster 16 [8]). Therefore, fewer and fewer controls are actually functional, since they are implemented in totally different ways in newer sound cards.<br/>
<br/>
Therefore, until recently, I had to use the native NetBSD tool, mixerctl [9], to operate with the mixer (volume controls). Just for fun, I'll paste here what it looks like on my laptop:<br/>
<pre>$ mixerctl -avoutputs.spdif.source=os  [ os adc ]outputs.lineout.source=dac  [ dac mixerout ]outputs.lineout.mute=off  [ off on ]outputs.lineout=240,240  delta=4record.lineout=85,85  delta=85outputs.lineout.dir=output  [ input output ]outputs.lineout.boost=off  [ off on ]outputs.lineout.eapd=on  [ off on ]outputs.headphones.src=dac  [ dac mixerout ]outputs.headphones.mute=off  [ off on ]outputs.headphones=124,124  delta=4outputs.headphones.boost=off  [ off on ]outputs.mono.mute=off  [ off on ]outputs.mono=124  delta=4record.mic=85,85  delta=85outputs.linein.source=dac  [ dac mixerout ]outputs.linein.mute=off  [ off on ]outputs.linein=124,124  delta=4record.linein=85,85  delta=85outputs.linein.dir=output  [ input output ]outputs.mono.source=dac  [ dac mixedmic linein mixerout lineout mic2 ]inputs.beep.source=digitalbeep  [ digitalbeep beep ]inputs.beep.mute=off  [ off on ]inputs.beep=119  delta=17inputs.dac.mute=off  [ off on ]inputs.dac=248,248  delta=8inputs.mic.mute=off  [ off on ]inputs.mic=120,120  delta=8inputs.linein.mute=off  [ off on ]inputs.linein=120,120  delta=8record.source=mixedmic  [ mixedmic linein mixerout mono cd lineout mic2 aux ]record.mute=off  [ off on ]record.master=255,255  delta=17outputs.mic2.source=dac  [ dac mixerout ]outputs.mic2.mute=off  [ off on ]outputs.mic2=124,124  delta=4record.mic2=85,85  delta=85outputs.mic2.dir=output  [ input output ]inputs.lineout.mute=off  [ off on ]inputs.lineout=120,120  delta=8inputs.aux.mute=off  [ off on ]inputs.aux=120,120  delta=8inputs.mic2.mute=off  [ off on ]inputs.mic2=120,120  delta=8inputs.cd.mute=off  [ off on ]inputs.cd=120,120  delta=8record.mixedmic.mute1=off  [ off on ]record.mixedmic.mute2=off  [ off on ]playback.mode=analog  [ analog spdif ]</pre>
That's 49 lines of cryptic controls indeed. To be fair, the mixerctl tool is great for scripts, but totally impractical when poking at the different controls just to understand what they mean and how they work.<br/>
<br/>
Although, looking at the code, I found the API very interesting. In fact, it describes the different controls in terms of groups of values, sets or switches, providing their different names every time. I then imagined that I could generate an interface on the fly, based on Gtk+ [10], using sliders, checkboxes and radio buttons. It doesn't solve the whole problem understanding your own sound card, but I guess it would be much more practical this way.<br/>
<br/>
It looks like this:<br/>
<ul>
<li><a href="http://people.defora.org/~khorben/share/mixer-ad1981hd.png">http://people.defora.org/~khorben/share/mixer-ad1981hd.png</a> (ThinkPad T60, default view)</li>
<li><a href="http://people.defora.org/~khorben/share/mixer-realtek-alc888-all.png">http://people.defora.org/~khorben/share/mixer-realtek-alc888-all.png</a> (Sun Ultra 24, all controls)</li>
<li><a href="http://people.defora.org/~khorben/share/mixer-realtek-alc888-all-vbox.png">http://people.defora.org/~khorben/share/mixer-realtek-alc888-all-vbox.png</a> (Sun Ultra 24, all controls, vertical layout)</li>
</ul>
I think it's quite funny actually :)<br/>
<br/>
To conclude about alternatives, I don't know how well pulseaudio [11] and others are working on NetBSD, since I'm not an avid GNOME/KDE/XFCE/etc fan. But if you have any idea or suggestion about mine, please do not hesitate! [12]<br/>
<br/>
[1] <a href="http://www.defora.org/os/project/display/3305/Mixer">http://www.defora.org/os/project/display/3305/Mixer</a><br/>
[2] <a href="http://www.netbsd.org/">http://www.netbsd.org/</a><br/>
[3] <a href="http://netbsd.gw.com/cgi-bin/man-cgi?audio+4+NetBSD-5.0">http://netbsd.gw.com/cgi-bin/man-cgi?audio+4+NetBSD-5.0</a><br/>
[4] <a href="http://netbsd.gw.com/cgi-bin/man-cgi?audio+9+NetBSD-5.0">http://netbsd.gw.com/cgi-bin/man-cgi?audio+9+NetBSD-5.0</a><br/>
[5] <a href="http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/audioio.h?only_with_tag=netbsd-5">http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/audioio.h?only_with_tag=netbsd-5</a><br/>
[6] <a href="http://www.opensolaris.com/get/index.jsp">http://www.opensolaris.com/get/index.jsp</a><br/>
[7] <a href="http://netbsd.gw.com/cgi-bin/man-cgi?ossaudio+3+NetBSD-5.0">http://netbsd.gw.com/cgi-bin/man-cgi?ossaudio+3+NetBSD-5.0</a><br/>
[8] <a href="http://en.wikipedia.org/wiki/Sound_Blaster_16">http://en.wikipedia.org/wiki/Sound_Blaster_16</a><br/>
[9] <a href="http://netbsd.gw.com/cgi-bin/man-cgi?mixerctl+1+NetBSD-5.0">http://netbsd.gw.com/cgi-bin/man-cgi?mixerctl+1+NetBSD-5.0</a><br/>
[10] <a href="http://www.gtk.org/">http://www.gtk.org/</a><br/>
[11] <a href="http://pulseaudio.org/">http://pulseaudio.org/</a><br/>
[12] <a href="http://people.defora.org/~khorben/place/wiki/13/Contact">http://people.defora.org/~khorben/place/wiki/13/Contact</a><br/>
]]></description>
		</item>
		<item>
			<title>gputty on Sourceforge</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Sun, 29 Nov 2009 19:07:20 +0100</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/67/gputty-on-Sourceforge</link>
			<guid>http://people.defora.org/~khorben/place/blog/67/gputty-on-Sourceforge</guid>
			<description><![CDATA[About a week ago, I had the pleasure to have a discussion on IRC [1] with a user of gputty [2]. In fact, this person had translated my project page into German and placed it on a domain of its own, gputty.de [3]!<br/>
<br/>
Even though I'm not actively working on this project anymore, I was really pleased to see that is has some kind of community, with people spontaneously working on it. Therefore, I have created a project for gputty on Sourceforge [4], where hopefully more people will volunteer for this project!<br/>
<br/>
Just create yourself a Sourceforge account and tell me [1] if you want access to the project. I'll happily let you contribute :)<br/>
<br/>
I have already moved the project page and downloadable files to Sourceforge, and I have every intention to move its upstream source code repository over there as well. I suppose it'll be using the default SVN source code management platform in place [5].<br/>
<br/>
To conclude, I'll let you know my current plan about gputty:<br/>
<ul>
<li>release 1.0.0 mostly as-is, to mark this event;</li>
<li>plan 2.0.0 to be using OpenSSH' own configuration files: ~/.ssh/config instead of the INI-style parser from DeforaOS.</li>
</ul>
I didn't really look for it, but I don't know any other tools doing it. Could be neat.<br/>
[1] <a href="http://people.defora.org/~khorben/place/wiki/12/About">http://people.defora.org/~khorben/place/wiki/12/About</a><br/>
[2] <a href="http://people.defora.org/~khorben/projects/gputty/">http://people.defora.org/~khorben/projects/gputty/</a><br/>
[3] <a href="http://www.gputty.de/">http://www.gputty.de/</a><br/>
[4] <a href="http://sourceforge.net/projects/gputty/">http://sourceforge.net/projects/gputty/</a><br/>
[5] svn co <a href="https://gputty.svn.sourceforge.net/svnroot/gputty">https://gputty.svn.sourceforge.net/svnroot/gputty</a> gputty <br/>
]]></description>
		</item>
		<item>
			<title>Working on the VFS again</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Sat, 31 Oct 2009 19:02:46 +0100</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/66/Working-on-the-VFS-again</link>
			<guid>http://people.defora.org/~khorben/place/blog/66/Working-on-the-VFS-again</guid>
			<description><![CDATA[I have just committed a bunch of rather heavy modifications to the AppInterface secure-RPC system from DeforaOS.<br/>
<br/>
Among the significant changes:<br/>
<ul>
<li>introduced distinct interface definition files; currently expected to be installed in $(SYSCONFDIR)/AppInterface, they contain the definitions of the calls exported (they were previously hard-coded within the library)</li>
<li>the exported functions are still obtained automatically with dlopen(NULL)+dlsym(), but they now need to be prefixed with the name of the interface implemented (and a '_' character)</li>
</ul>
I haven't had the time to thoroughly test these changes, but I hope I will get to use this code again soon. I really want to be playing with the VFS and monitoring applications again.<br/>
<br/>
About the VFS in particular, the directory listing functions should be implemented soon. Finally :)<br/>
]]></description>
		</item>
		<item>
			<title>DeforaOS Project</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Thu, 30 Jul 2009 00:20:16 +0200</pubDate>
			<link>http://people.defora.org/~khorben/place/bookmark/50/DeforaOS-Project</link>
			<guid>http://people.defora.org/~khorben/place/bookmark/50/DeforaOS-Project</guid>
			<description><![CDATA[<br/>
]]></description>
		</item>
		<item>
			<title>Surfing and cross-compiling glib for RunningBear</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Sun, 29 Mar 2009 05:24:06 +0200</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/4/Surfing-and-cross-compiling-glib-for-RunningBear</link>
			<guid>http://people.defora.org/~khorben/place/blog/4/Surfing-and-cross-compiling-glib-for-RunningBear</guid>
			<description><![CDATA[Yeah, it's late, we lose an hour, I was tired already, and with a broken back on top of that. I got an external patch for my back (greets to Thom), and of course when coming back home I felt like coding again.<br/>
<br/>
First, I continued to work on the Gtk+ WebKit version of DeforaOS Web Surfer, which is now almost as good as it used to be. By the way, there is even a reference manual using gtk-doc.<br/>
<br/>
Then, thanks to the valuable experience acquired below, I managed to fix the compilation of Xynth in RunningBear, and then I learned to cross-compile glib correctly. I was in a relatively bad mood, anticipating being homesick again in the next couple of weeks, but it turned into a quite productive evening at home :)<br/>
<br/>
While I'm at it, here are a couple of (outdated) screenshots of the Web Surfer, running on hackable:1.<br/>
<br/>
With the GtkHtml2 engine:<br/>
<a href="http://people.defora.org/~khorben/share/DeforaOS/surfer/surfer-hackable1-daily-gtkhtml.png">http://people.defora.org/~khorben/share/DeforaOS/surfer/surfer-hackable1-daily-gtkhtml.png</a><br/>
<br/>
The same, fullscreen:<br/>
<a href="http://people.defora.org/~khorben/share/DeforaOS/surfer/surfer-hackable1-daily-gtkhtml-fullscreen.png">http://people.defora.org/~khorben/share/DeforaOS/surfer/surfer-hackable1-daily-gtkhtml-fullscreen.png</a><br/>
]]></description>
		</item>
		<item>
			<title>Some issues with the libc on ARM</title>
			<author>khorben@defora.org (khorben)</author>
			<pubDate>Wed, 18 Mar 2009 01:18:28 +0100</pubDate>
			<link>http://people.defora.org/~khorben/place/blog/8/Some-issues-with-the-libc-on-ARM</link>
			<guid>http://people.defora.org/~khorben/place/blog/8/Some-issues-with-the-libc-on-ARM</guid>
			<description><![CDATA[Funnily enough, I currently have trouble cross-compiling applications on ARM with my libc. It used to work, but maybe I was doing things differently and I don't remember it (static linking? manual patches? less code?). Anyway, I am coming across these two problems now.<br/>
<br/>
&laquo; hidden symbol `__name_here' in /some/library/path.a(_filename.o) is referenced by DSO &raquo;<br/>
<br/>
This one made me lose an incredible amount of time. It usually occurs when you overrule the linker's default libraries and object files, because then a plethora of compiler-specific functions are not linked in anymore, whereas often (not always) used in the compiled code. This happens typically with &quot;complex&quot; mathematical functions on RISC platforms, like ARM.<br/>
<br/>
Here is an illustration of the problem:<br/>
(compiling as root as I'm testing hackable:1's cross compiler in a chroot)<br/>
<br/>
<pre># ./build.sh CC=arm-linux-gnueabi-gcc allarm-linux-gnueabi-gcc -o sh token.o scanner.o parser.o builtin.o job.o sh.o  -nostdlib -L /root/DeforaOS/destdir-Linux-i386/usr/local/lib -Wl,-rpath-link,/usr/local/lib -l c -l gcc /root/DeforaOS/destdir-Linux-i386/usr/local/lib/start.o/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: sh: hidden symbol `__aeabi_uidiv' in /usr/lib/gcc/arm-linux-gnueabi/4.3.2/libgcc.a(_udivsi3.o) is referenced by DSO/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: finallink failed: Nonrepresentable section on outputcollect2: ld returned 1 exit statusmake[1]: *** [sh] Error 1make[1]: Leaving directory `/home/khorben/DeforaOS/Apps/Unix/src/sh/src'make: *** [subdirs] Error 2</pre>
In this case, the problem is usually solved by adding either &quot;-l gcc&quot; or &quot;`gcc -print-libgcc-file-name`&quot; to the linking flags (LDFLAGS). However, unlike my other regular platforms (i386, amd64, sparc64) here it wasn't enough. After a lot of head-banging (to be fair, it also comes from the music) I realized that this flag is necessary both when linking the libc *and* the final executable file.<br/>
&laquo; warning: type and size of dynamic symbol `choose_your_poison' are not defined &raquo;<br/>
<br/>
So yeah, problem solved, right? Until the next one :(<br/>
(after hacking System/src/libc/src/Makefile so that LDFLAGS are used when linking the libc too)<br/>
<br/>
<pre># ./build.sh CC=arm-linux-gnueabi-gcc allarm-linux-gnueabi-gcc -o du du.o  -nostdlib -L /root/DeforaOS/destdir-Linux-i386/usr/local/lib -Wl,-rpath-link,/usr/local/lib -l c -l gcc /root/DeforaOS/destdir-Linux-i386/usr/local/lib/start.o/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: warning: type and size of dynamic symbol `lstat' are not defined/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: dynamic variable `lstat' is zero size/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: warning: type and size of dynamic symbol `stat' are not defined /usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: dynamic variable `stat' is zero size/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: du.o(.text+0x208): unresolvable R_ARM_ABS32 relocation against symbol `lstat'/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/bin/ld: finallink failed: Nonrepresentable section on outputcollect2: ld returned 1 exit statusmake[1]: *** [du] Error 1make[1]: Leaving directory `/root/DeforaOS/Apps/Unix/src/utils/src'make: *** [subdirs] Error 2</pre>
Unfortunately, this one still eludes me: the fault seems to be within my libc, as it compiles fine against the glibc. Here is the incriminated code:<br/>
<br/>
Apps/Unix/src/utils/src/du.c:<br/>
<br/>
<pre>64 static int _du_do(Prefs * prefs, char const * filename)65 {66         int (* _stat)(const char * filename, struct stat * buf) = lstat;67         struct stat st;68 69         if(*prefs &amp; PREFS_H)70                 _stat = stat;71         if(_stat(filename, &amp;st) != 0)72                 return _du_error(filename);73         if(!S_ISDIR(st.st_mode))74         {75                 _du_print(prefs, st.st_blocks, filename);76                 return 0;77         }78         return _du_do_recursive(prefs, filename);79 }</pre>
System/src/libc/src/kernel/linux/arm/syscalls.S:<br/>
<br/>
<pre>32 /* macros */33 #define SYSCALL(name) \34 .global name; \35 name:; \36         mov     %ip, %r7; \37         ldr     %r7, =SYS_ ## name; \38         b       _syscall;</pre>
System/src/libc/src/syscalls.S:<br/>
<br/>
<pre>217 #ifdef SYS_lstat218 SYSCALL(lstat)219 #endif</pre>
I tried different combinations of extra assembly-level information, like &quot;.type name,@function; \&quot;, but only unsuccessfully so far. If you know what I should do, feel free to contact me.<br/>
]]></description>
		</item>
	</channel>
</rss>
