<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://www.hermann-uwe.de">
<channel>
 <title>Uwe Hermann - A slightly paranoid Debian developer</title>
 <link>http://www.hermann-uwe.de</link>
 <description />
 <language>en</language>
<feedburner:info uri="uwehermann" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://www.hermann-uwe.de/node/feed" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
 <title>libopenstm32 - a Free Software firmware library for STM32 ARM Cortex-M3 microcontrollers</title>
 <link>http://www.hermann-uwe.de/blog/libopenstm32-a-free-software-firmware-library-for-stm32-arm-cortex-m3-microcontrollers</link>
 <description>&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1539"&gt;&lt;img src="http://hermann-uwe.de/files/images/olimex_stm32_h103.preview.jpg" width="320" height="240" align="right" hspace="5" alt="Olimex STM32-H103 eval board" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I guess it's time to finally announce &lt;a href="http://sourceforge.net/projects/libopenstm32/"&gt;libopenstm32&lt;/a&gt;, a Free Software firmware library for &lt;a href="http://www.st.com/mcu/familiesdocs-110.html"&gt;STM32 ARM Cortex-M3 microcontrollers&lt;/a&gt; me and a few other people have been working on in recent weeks. The library is licensed under the &lt;strong&gt;GNU GPL, version 3 or later&lt;/strong&gt; (yes, that's an intentional decision after some discussions we had).&lt;/p&gt;
&lt;p&gt;The code is available &lt;a href="http://libopenstm32.git.sourceforge.net/git/gitweb.cgi?p=libopenstm32/libopenstm32;a=shortlog"&gt;via git&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;git clone &lt;a href="git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32"&gt;git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32&lt;/a&gt;&lt;/strong&gt;
 $ &lt;strong&gt;cd libopenstm32&lt;/strong&gt;
 $ &lt;strong&gt;make&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Building is done using a standard ARM gcc cross-compiler (arm-elf or arm-none-eabi for instance), see the &lt;a href="http://github.com/esden/summon-arm-toolchain"&gt;summon-arm-toolchain&lt;/a&gt; script for the basic idea about how to build one.&lt;/p&gt;
&lt;p&gt;The current status of the library is listed &lt;a href="http://sourceforge.net/apps/mediawiki/libopenstm32/index.php?title=Status"&gt;in the wiki&lt;/a&gt;. In short: some parts of GPIOs, UART, I2C, SPI, RCC, Timers and some other basic stuff works and has register definitions (and some convenience functions, but not too many, yet). We're working on adding support for more subsystems, any help with this is highly welcome of course! Luckily ARM stuff (and especially the STM32) has pretty good (and freely available) datasheets.&lt;/p&gt;
&lt;p&gt;We have a few simple example programs, e.g. for the &lt;a href="http://olimex.com/dev/stm32-h103.html"&gt;Olimex STM32-H103 eval board&lt;/a&gt; (see photo). JTAG flashing can be done using &lt;a href="http://hermann-uwe.de/blog/openocd-a-free-software-jtag-utility-with-arm-and-mips-support"&gt;OpenOCD&lt;/a&gt;, for example.&lt;/p&gt;
&lt;p&gt;Feel free to join &lt;a href="http://sourceforge.net/mail/?group_id=269563"&gt;the mailing lists&lt;/a&gt; and/or the &lt;strong&gt;&lt;a href="irc://chat.freenode.net/libopenstm32"&gt;#libopenstm32&lt;/a&gt;&lt;/strong&gt; IRC channel on &lt;a href="http://www.freenode.net"&gt;Freenode&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The current list of projects where we plan to use this library is &lt;a href="http://open-bldc.org"&gt;Open-BLDC&lt;/a&gt; (an Open Hardware / Free Software brushless motor controller project by &lt;a href="http://www.esden.net"&gt;Piotr Esden-Tempski&lt;/a&gt;), &lt;a href="http://openmulticopter.org"&gt;openmulticopter&lt;/a&gt; (an Open Hardware / Free Software quadrocopter/UAV project), &lt;a href="http://randomprojects.org/wiki/Openbiosprog"&gt;openbiosprog&lt;/a&gt; (an Open Hardware / Free Software BIOS chip flash programmer I'm in the process of designing using &lt;a href="http://www.gpleda.org"&gt;gEDA/PCB&lt;/a&gt;), and probably a few more.&lt;/p&gt;
&lt;p&gt;If you plan to work on any new (or existing) microcontroller hardware- or software-projects involving an STM32 microcontroller, please consider using libopenstm32 (it's the only Free Software library for this microcontroller family I know of) and help us make it better and more complete. Thanks!&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/libopenstm32-a-free-software-firmware-library-for-stm32-arm-cortex-m3-microcontrollers#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2017">arm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2168">cortex</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2334">cortex-m3</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2021">embedded</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1664">firmware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/723">gpl</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1529">gpl3</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2333">st</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2332">stm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2292">stm32</category>
 <pubDate>Thu, 04 Mar 2010 14:20:36 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1540 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>How to setup an encrypted USB-disk software-RAID-1 on Debian GNU/Linux using mdadm and cryptsetup</title>
 <link>http://www.hermann-uwe.de/blog/how-to-setup-an-encrypted-usb-disk-software-raid-1-on-debian-gnu-linux-using-mdadm-and-cryptsetup</link>
 <description>&lt;p&gt;This is what I set up for backups recently using &lt;a href="http://raidsonic.de/de/pages/products/external_cases.php?we_objectID=5235"&gt;a cheap USB-enclosure which can house 2 SATA disks&lt;/a&gt; and shows them as 2 USB mass-storage devices to my system (using only one USB cable). Without any further introduction, here goes the HOWTO:&lt;/p&gt;
&lt;p&gt;First, create one big partition on each of the two disks (/dev/sdc and /dev/sdd in my case) of the exact same size. The cfdisk details are omitted here.&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cfdisk /dev/sdc&lt;/strong&gt;
  $ &lt;strong&gt;cfdisk /dev/sdd&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Then, create a new RAID array using the &lt;strong&gt;mdadm&lt;/strong&gt; utility:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
The array is named &lt;strong&gt;md0&lt;/strong&gt;, consists of the two devices (&lt;strong&gt;--raid-devices=2&lt;/strong&gt;) /dev/sdc1 and /dev/sdd1, and it's a RAID-1 array, i.e. data is simply mirrored on both disks so if one of them fails you don't lose data (&lt;strong&gt;--level=1&lt;/strong&gt;). After this has been done the array will be synchronized so that both disks contain the same data (this process will take a long time). You can watch the current status via:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cat /proc/mdstat&lt;/strong&gt;
  Personalities : [raid1]
  md0 : active raid1 sdd1[1] sdc1[0]
        1465135869 blocks super 1.1 [2/2] [UU]
        [&gt;....................]  resync =  &lt;strong&gt;0.0%&lt;/strong&gt; (70016/1465135869) finish=2440.6min speed=10002K/sec
  unused devices: &lt;none&gt;
&lt;/pre&gt;&lt;p&gt;
Some more info is also available from mdadm:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;mdadm --detail --scan&lt;/strong&gt;
  ARRAY /dev/md0 metadata=1.01 name=foobar:0 UUID=1234578:1234578:1234578:1234578

  $ &lt;strong&gt;mdadm --detail /dev/md0&lt;/strong&gt;&lt;small&gt;
  /dev/md0:
          Version : 1.01
    Creation Time : Sat Feb  6 23:58:51 2010
       Raid Level : raid1
       Array Size : 1465135869 (1397.26 GiB 1500.30 GB)
    Used Dev Size : 1465135869 (1397.26 GiB 1500.30 GB)
     Raid Devices : 2
    Total Devices : 2
      Persistence : Superblock is persistent
      Update Time : Sun Feb  7 00:03:21 2010
            State : active, resyncing
   Active Devices : 2
  Working Devices : 2
   Failed Devices : 0
    Spare Devices : 0
   Rebuild Status : 0% complete
             Name : foobar:0  (local to host foobar)
             UUID : 1234578:1234578:1234578:1234578
           Events : 1
      Number   Major   Minor   RaidDevice State
         0       8       33        0      active sync   /dev/sdc1
         1       8       49        1      active sync   /dev/sdd1
&lt;/small&gt;&lt;/pre&gt;&lt;p&gt;
Next, you'll want to create a big partition on the RAID device (cfdisk details omitted)...&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cfdisk /dev/md0&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
...and then encrypt all the (future) data on the device using &lt;strong&gt;dm-crypt+LUKS and cryptsetup&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cryptsetup --verbose --verify-passphrase luksFormat /dev/md0p1&lt;/strong&gt;
  &lt;em&gt;Enter your desired pasphrase here (twice)&lt;/em&gt;
  $ &lt;strong&gt;cryptsetup luksOpen /dev/md0p1 myraid&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
After opening the encrypted container with &lt;strong&gt;cryptsetup luksOpen&lt;/strong&gt; you can create a filesystem on it (ext3 in my case):&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;mkfs.ext3 -j -m 0 /dev/mapper/myraid&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
That's about it. In future you can access the RAID data by using the steps below.&lt;/p&gt;
&lt;p&gt;Starting the RAID and mouting the drive:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1&lt;/strong&gt;
  $ &lt;strong&gt;cryptsetup luksOpen /dev/md0p1 myraid&lt;/strong&gt;
  $ &lt;strong&gt;mount -t ext3 /dev/mapper/myraid /mnt&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Shutting down the RAID:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;umount /mnt&lt;/strong&gt;
  $ &lt;strong&gt;cryptsetup luksClose myraid&lt;/strong&gt;
  $ &lt;strong&gt;mdadm --stop /dev/md0&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
That's all. Performance is shitty due to all the data being shoved out over one USB cable (and USB itself being too slow for these amounts of data), but I don't care too much about that as this setup is meant for backups, not performance-critical stuff.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/how-to-setup-an-encrypted-usb-disk-software-raid-1-on-debian-gnu-linux-using-mdadm-and-cryptsetup#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/148">backup</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1144">backups</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1588">cryptsetup</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1503">disk</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1298">dm-crypt</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/95">encryption</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/527">ext3</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1277">ide</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1299">luks</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2108">mdadm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2331">mdstat</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1810">raid</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2329">raid-1</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2330">redundancy</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1727">sata</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/38">security</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/958">usb</category>
 <pubDate>Thu, 25 Feb 2010 18:10:57 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1538 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>FOSDEM 2010: coreboot and flashrom devroom and talks</title>
 <link>http://www.hermann-uwe.de/blog/fosdem-2010-coreboot-and-flashrom-devroom-and-talks</link>
 <description>&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1395"&gt;&lt;img src="http://hermann-uwe.de/files/images/coreboot.png" width="200" height="154" align="right" hspace="5" alt="coreboot logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quick public service announcement (which probably comes a bit too late, sorry):&lt;/p&gt;
&lt;p&gt;There's a &lt;a href="http://fosdem.org/2010/schedule/tracks/coreboot"&gt;coreboot developer room&lt;/a&gt; at this year's &lt;a href="http://www.fosdem.org"&gt;FOSDEM&lt;/a&gt; (Free and Open-Source Software Developer's European Meeting), which starts roughly... um... today. In 20 minutes, actually. Unfortunately I cannot be there, hopefully there will be video archives of the talks. If you're at FOSDEM already, here's the list of talks:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Sat  13:00-14:00  	coreboot introduction   	(Peter Stuge)&lt;br /&gt;
Sat  14:00-15:00 	coreboot and PC technical details 	(Peter Stuge)&lt;br /&gt;
Sat  15:00-16:00 	ACPI and Suspend/Resume under coreboot 	(Rudolf Marek)&lt;br /&gt;
Sat  16:00-17:00 	coreboot board porting 	(Rudolf Marek)&lt;br /&gt;
Sat  17:00-18:00 	Flashrom, the universal flash tool 	(Carl-Daniel Hailfinger)&lt;br /&gt;
Sat  18:00-19:00 	Flash enable BIOS reverse engineering 	(Luc Verhaegen)
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Highly recommended stuff if you're interested in &lt;a href="http://www.coreboot.org"&gt;an open-source BIOS&lt;/a&gt; and/or &lt;a href="http://wwww.flashrom.org"&gt;open-source, cross-platform flash EEPROM programmer software&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/fosdem-2010-coreboot-and-flashrom-devroom-and-talks#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2323">2010</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2327">acpi</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2325">board</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1845">coreboot</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2324">devroom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2326">enable</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1795">flashrom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2322">fosdem</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2328">suspend</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/352">talk</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/173">video</category>
 <pubDate>Sat, 06 Feb 2010 12:31:20 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1537 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Roda RK886EX (Rocky III+) first laptop/notebook being supported by coreboot</title>
 <link>http://www.hermann-uwe.de/blog/roda-rk886ex-rocky-iii-first-laptop-notebook-being-supported-by-coreboot</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1395"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/coreboot.png" width="200" height="154" align="right" hspace="5" alt="coreboot logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Only few days ago &lt;a href="http://tracker.coreboot.org/trac/coreboot/ticket/12"&gt;a long-standing bug&lt;/a&gt; in &lt;a href="http://www.coreboot.org"&gt;coreboot&lt;/a&gt;, the Free Software x86 BIOS/fimware project, has been fixed: Adding support for a laptop/notebook.&lt;/p&gt;
&lt;p&gt;The code was developed by &lt;a href="http://www.coresystems.de"&gt;coresystems GmbH&lt;/a&gt; (thanks a lot!). Quoting from &lt;a href="http://www.coreboot.org/pipermail/coreboot-announce/2010-January/000006.html"&gt;the announcement&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
coreboot&amp;reg; is running on a multitude of different computers, ranging from tiny embedded systems as small as the palm of your hand over desktop and server systems to super computers with thousands of nodes. However, one might say that in the area of mobile computers coreboot has to catch up, compared to &lt;a href="http://www.coreboot.org/Supported_Motherboards"&gt;its support of other devices&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thus, I am especially glad to announce that &lt;a href="http://www.coresystems.de/&lt;br /&gt;
"&gt;coresystems GmbH&lt;/a&gt; is releasing coreboot&amp;reg; for the &lt;a href="http://www.roda-computer.com/en/products/notebooks/rocky-iii-rk886ex.html"&gt;Roda RK886EX a.k.a Rocky III+&lt;/a&gt; notebook today. It's a rugged notebook, protected against shock, vibration, dust and humidity:&lt;br /&gt;
&lt;a href="http://www.roda-computer.com/en/products/notebooks/rocky-iii-rk886ex.html"&gt;http://www.roda-computer.com/en/products/notebooks/rocky-iii-rk886ex.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We have been testing &lt;strong&gt;various Linux distributions as well as Windows XP and Windows 7&lt;/strong&gt; booting on this nice notebook.&lt;/p&gt;
&lt;p&gt;I want to sincerely thank those who made this project possible with their funding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;secunet Security Networks AG&lt;/li&gt;
&lt;li&gt;Bundesamt für Sicherheit in der Informationstechnologie (Federal Office for Information Security, BSI)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A big thank you also goes to everyone who worked with coresystems on this project.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The committed &lt;a href="http://tracker.coreboot.org/trac/coreboot/timeline?from=01%2F17%2F10&amp;amp;daysback=0&amp;amp;changeset=on&amp;amp;update=Update"&gt;patch series&lt;/a&gt; includes improved support for the Intel i945 / ICH7 chipset (which was also written by coresystems), the SMSC LPC47N227 Super I/O, the Texas Instruments Cardbus+Firewire bridge TI PCI7420, and finally the Renesas M3885x Embedded Controller (EC).&lt;/p&gt;
&lt;p&gt;Btw, the latter, the so-called &lt;em&gt;embedded controller&lt;/em&gt; (sometimes integrated in the &lt;a href="http://en.wikipedia.org/wiki/Super_I/O"&gt;Super I/O&lt;/a&gt;, sometimes it's an extra chip) is one of the major problems for coreboot support on laptops. They are almost always undocumented (i.e., no public datasheets are available), but they have low-level control over power/battery management, early power-up sequence, and often include keyboard controller functionality and other important stuff. Luckily, for this notebook &lt;a href="http://www.coreboot.org/pipermail/coreboot/2010-January/055243.html"&gt;an EC datasheet is available&lt;/a&gt;. Checkout the &lt;a href="http://tracker.coreboot.org/trac/coreboot/browser/trunk/src/mainboard/roda/rk886ex/m3885.c"&gt;coreboot EC support code for the Renesas M3885x&lt;/a&gt; for an impression of what this stuff is all about.&lt;/p&gt;
&lt;p&gt;Anyway, there is hope that this laptop will only be the first in a row of multiple supported ones in the future. Interested developers and contributors are of course always welcome &lt;a href="http://www.coreboot.org/Mailinglist"&gt;on the coreboot mailing list&lt;/a&gt; :-)&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/roda-rk886ex-rocky-iii-first-laptop-notebook-being-supported-by-coreboot#comments</comments>
 <pubDate>Tue, 26 Jan 2010 12:43:00 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1536 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Note to self: Missing lvm2 and cryptsetup packages lead to non-working initrd very, very soon</title>
 <link>http://www.hermann-uwe.de/blog/note-to-self-missing-lvm2-and-cryptsetup-packages-lead-to-non-working-initrd-very-very-soon</link>
 <description>&lt;p&gt;I recently almost died from a heart attack because after a really horrible crash (don't ask), Debian unstable on my laptop wouldn't boot anymore. The system hung at "Waiting for root filesystem...", and I was in panic mode as I feared I lost all my data (and as usual my backups were waaay too old).&lt;/p&gt;
&lt;p&gt;At first I was suspecting that something actually got erased or mangled due to the crash, either at the dm-crypt layer, or the LVM layer, or the ext3 filesystem on top of those. After various hours of messing with live CDs, cryptsetup, lvm commands (such as pvscan, pvs, vgchange, vgs, vgck) and finally fsck I still had not managed to successfully boot my laptop.&lt;/p&gt;
&lt;p&gt;I finally was able to boot by changing the initrd from &lt;strong&gt;initrd.img-2.6.30-2-686&lt;/strong&gt; to &lt;strong&gt;initrd.img-2.6.30-2-686.bak&lt;/strong&gt; in the GRUB2 menu (at boot-time), at which point it was clear that something was wrong with my current initrd. A bit of debugging and some initrd comparisons revealed the cause:&lt;/p&gt;
&lt;p&gt;Both, the &lt;strong&gt;cryptsetup&lt;/strong&gt; and &lt;strong&gt;lvm2&lt;/strong&gt; packages were no longer installed on my laptop, which made all &lt;strong&gt;update-initramfs&lt;/strong&gt; invokations (e.g. upon kernel package updates) create initrds which did not contain the proper dm-crypt and lvm functionality support. Hence, no booting for me. I only noticed because of the crash, as I usually do not reboot the laptop very often (two or three times per year maybe).&lt;/p&gt;
&lt;p&gt;Now, as to &lt;em&gt;why&lt;/em&gt; those packages were removed I have absolutely no idea. I did not remove them knowingly, so I suspect some dist-upgrade did it and I didn't notice (but I &lt;em&gt;do&lt;/em&gt; carefully check which packages dist-upgrade tries to remove, usually)...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/note-to-self-missing-lvm2-and-cryptsetup-packages-lead-to-non-working-initrd-very-very-soon#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1588">cryptsetup</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1298">dm-crypt</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/95">encryption</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/527">ext3</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/36">free software</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2180">fsck</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1872">initrd</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/335">kernel</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1571">lvm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2314">lvm2</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/38">security</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2315">update-initramfs</category>
 <pubDate>Tue, 24 Nov 2009 00:00:14 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1532 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>coreboot on the cover of the Linux Journal</title>
 <link>http://www.hermann-uwe.de/blog/coreboot-on-the-cover-of-the-linux-journal</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1528"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/Coreboot_linuxjournal.preview.jpg" width="160" height="176" align="right" hspace="5" alt="coreboot on Linux Journal" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nice &lt;a href="http://www.coreboot.org"&gt;coreboot&lt;/a&gt; news &amp;mdash; the Free Software x86 firmware ("BIOS") is featured on the cover of &lt;a href="http://www.linuxjournal.com/issue/186"&gt;issue 186&lt;/a&gt; of the &lt;a href="http://www.linuxjournal.com"&gt;Linux Journal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anton Borisov's article &lt;a href="http://www.linuxjournal.com/article/10447"&gt;Coreboot at Your Service!&lt;/a&gt; explains the basic ideas behind coreboot, how to build an image for &lt;a href="http://www.coreboot.org/Supported_Motherboards"&gt;your board&lt;/a&gt;, which &lt;a href="http://www.coreboot.org/Payloads"&gt;payloads&lt;/a&gt; are available and how they are used, e.g. GRUB2, SeaBIOS if you need legacy BIOS callbacks  (e.g. for booting Windows), Etherboot/GPXE, or more fun stuff such as space invaders or tint (a tetris clone) in your flash ROM chip...&lt;/p&gt;
&lt;p&gt;If you read the article and think the build process is a bit complicated and ugly, do not despair! We're currently in the process of converting the whole coreboot code base to use kconfig (the widely-known configuration tool used by the Linux kernel, busybox, and other projects), so in the very near future the whole process for building a coreboot image will work like this:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;make menuconfig&lt;/strong&gt;
  $ &lt;strong&gt;make&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
&lt;a href="http://www.hermann-uwe.de/node/1529"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/coreboot_menuconfig.png" width="320" height="227" align="right" hspace="5" alt="coreboot menuconfig" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flashing the image can then be done using an EEPROM programmer and/or via the user-space utility &lt;a href="http://www.coreboot.org/Flashrom"&gt;flashrom&lt;/a&gt; (available for Linux, Mac OS X, FreeBSD, etc.)...&lt;/p&gt;
&lt;p&gt;It's nice to see that coreboot is getting more and more coverage in "mainstream" media and is growing both in number of deployments and in number of supported chipsets and boards.&lt;/p&gt;
&lt;p&gt;We are desperately in need of more &lt;strong&gt;developers&lt;/strong&gt; though, there are just way too many chipsets, boards, and datasheets out there; we're happy about every patch and every new tester or developer who likes to mess with code that runs in the very first few (micro)seconds after power-on.&lt;/p&gt;
&lt;p&gt;If you think kernel hacking and related low-level development is nice, you might also be interested in writing code where there's no RAM yet (as coreboot has to initialize it), there's no serial port for debugging (coreboot has to initialize it), no PCI devices have been set up, most of your auxiliary hardware is not yet up (ethernet NIC, parallel port, audio, IDE, SATA, USB, you name it). It's a fun environment to work in and you'll learn a &lt;strong&gt;lot&lt;/strong&gt; about PC hardware, even if you (so far) thought you knew everything there is to know.&lt;/p&gt;
&lt;p&gt;Feel free to join us on the &lt;a href="http://www.coreboot.org/Mailinglist"&gt;mailing list&lt;/a&gt; or on IRC in &lt;strong&gt;#coreboot&lt;/strong&gt; on &lt;a href="http://freenode.net/"&gt;Freenode&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/coreboot-on-the-cover-of-the-linux-journal#comments</comments>
 <pubDate>Fri, 16 Oct 2009 20:29:00 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1530 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Using CRM114 for spam filtering on Debian GNU/Linux</title>
 <link>http://www.hermann-uwe.de/blog/using-crm114-for-spam-filtering-on-debian-gnu-linux</link>
 <description>&lt;p&gt;I've been using &lt;a href="http://crm114.sourceforge.net/"&gt;CRM114&lt;/a&gt; as spam filter for a while now, and I'm quite happy with it. Due to &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=529720"&gt;bug #529720&lt;/a&gt; though (incompatible upstream file format changes) I decided to start my setup from scratch with a recent CRM114 version from unstable. Here's a short HOWTO, hope it's useful for others.&lt;/p&gt;
&lt;p&gt;First you need to install crm114 and set up a few files in your $HOME directory.&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;sudo apt-get install crm114&lt;/strong&gt;
  $ &lt;strong&gt;mkdir ~/.crm114&lt;/strong&gt;
  $ &lt;strong&gt;cd ~/.crm114&lt;/strong&gt;
  $ &lt;strong&gt;cp /usr/share/doc/crm114/examples/mailfilter.cf.gz .&lt;/strong&gt;
  $ &lt;strong&gt;gunzip mailfilter.cf.gz&lt;/strong&gt;
  $ &lt;strong style="color:red"&gt;cp /usr/share/crm114/mailtrainer.crm .&lt;/strong&gt;
  $ &lt;strong&gt;touch rewrites.mfp priolist.mfp&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Edit &lt;strong&gt;~/.crm114/mailfilter.cf&lt;/strong&gt; and set the following variables (some are optional, but that's what I currently use):&lt;/p&gt;
&lt;pre&gt;
  :spw: /&lt;strong&gt;mypassword&lt;/strong&gt;/
  :add_verbose_stats: /no/
  :add_extra_stuff: /no/
  :rewrites_enabled: /no/
  :spam_flag_subject_string: //
  :unsure_flag_subject_string: //
  :log_to_allmail.txt: /no/
&lt;/pre&gt;&lt;p&gt;
The &lt;strong&gt;:log_to_allmail.txt: /no/&lt;/strong&gt; option should probably stay at "yes" for the first few days until you have tested your setup and everything works OK. The &lt;strong&gt;~/.crm114/allmail.txt&lt;/strong&gt; file will contain all your mails, in case something goes wrong.&lt;/p&gt;
&lt;p&gt;Now set up empty spam and nonspam files like this:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cssutil -b -r spam.css&lt;/strong&gt;
  $ &lt;strong&gt;cssutil -b -r nonspam.css&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Test the setup by invoking &lt;strong&gt;mailreaver.crm&lt;/strong&gt; as follows, typing some test text and then pressing &lt;strong&gt;CTRL+d&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;/usr/share/crm114/mailreaver.crm -u ~/.crm114&lt;/strong&gt;
  test
  &lt;strong&gt;[CTRL-d]&lt;/strong&gt;
  ** ACCEPT: CRM114 PASS osb unique microgroom Matcher **
  CLASSIFY fails; success probability: 0.5000  pR: 0.0000
  Best match to file #0 (nonspam.css) prob: 0.5000  pR: 0.0000
  Total features in input file: 8
  #0 (nonspam.css): features: 1, hits: 0, prob: 5.00e-01, pR:   0.00
  #1 (spam.css): features: 1, hits: 0, prob: 5.00e-01, pR:   0.00
  X-CRM114-Version: 200904023-BlameSteveJobs ( TRE 0.7.6 (BSD) ) MF-35EB8B9A [pR: 0.0000]
  X-CRM114-CacheID: sfid-20090920_151224_574131_D290E589
  X-CRM114-Status: UNSURE (0.0000) This message is 'unsure'; please train it!
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;The output should look similar to the above. If there are errors instead, you should check your settings in &lt;strong&gt;~/.crm114/mailfilter.cf&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now you have to setup a &lt;a href="http://www.procmail.org/"&gt;procmail&lt;/a&gt; rule for crm114:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  :0fw: crm114.lock
  | /usr/share/crm114/mailreaver.crm -u /home/uwe/.crm114

  :0:
  * ^X-CRM114-Status: SPAM.*
  IN.spam-crm114
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;In my case this rule is also followed by a &lt;a href="http://spamassassin.apache.org/"&gt;spamassassin&lt;/a&gt; rule, so all my mail goes through two different spam filters (will look into &lt;a href="http://www.nuclearelephant.com/"&gt;dspam&lt;/a&gt; and &lt;a href="http://bogofilter.sourceforge.net/"&gt;bogofilter&lt;/a&gt; also I guess, the more the better).&lt;/p&gt;
&lt;p&gt;Finally, in &lt;a href="http://hermann-uwe.de/files/muttrc"&gt;.muttrc&lt;/a&gt; I have the following configs so I can press &lt;strong&gt;SHIFT+x&lt;/strong&gt; to mark a mail as spam, and &lt;strong&gt;SHIFT+h&lt;/strong&gt; to mark it as non-spam (ham).&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
macro index X '| formail -I X-CRM114-Status -I X-CRM114-Action -I X-CRM114-Version | /usr/share/crm114/mailreaver.crm -u /home/uwe/.crm114/ &lt;span style="color:red"&gt;--spam&lt;/span&gt;'
macro index H '| formail -I X-CRM114-Status -I X-CRM114-Action -I X-CRM114-Version | /usr/share/crm114/mailreaver.crm -u /home/uwe/.crm114/ &lt;span style="color:red"&gt;--good&lt;/span&gt;'
macro pager X '| formail -I X-CRM114-Status -I X-CRM114-Action -I X-CRM114-Version | /usr/share/crm114/mailreaver.crm -u /home/uwe/.crm114/ &lt;span style="color:red"&gt;--spam&lt;/span&gt;'
macro pager H '| formail -I X-CRM114-Status -I X-CRM114-Action -I X-CRM114-Version | /usr/share/crm114/mailreaver.crm -u /home/uwe/.crm114/ &lt;span style="color:red"&gt;--good&lt;/span&gt;'
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Important: crm114 is most effective if you start with empty CSS files (as shown above) and only train it by marking mails as spam/ham when it gets them wrong. The process will take a few hours or maybe a day (depending on how many mails per day you get), then the misclassification rate gets very low...&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:red"&gt;Update 2009-09-23:&lt;/strong&gt; Changed --spam/--nonspam to the correct options for mailreaver/mailtrainer, --spam/--good.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/using-crm114-for-spam-filtering-on-debian-gnu-linux#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2309">bogofilter</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2307">crm114</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2308">dspam</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2257">email</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2311">filter</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2312">folder</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/638">mail</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/560">spam</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2310">spamassassin</category>
 <pubDate>Tue, 22 Sep 2009 15:10:04 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1526 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Help add subtitle support for Miro</title>
 <link>http://www.hermann-uwe.de/blog/help-add-subtitle-support-for-miro</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1443"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/miro2_feeds.preview.jpg" width="240" height="170" align="right" hspace="5" alt="Miro 2.0 feed list" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you ever wanted to support an open-source project but you are not a programmer, here's one (of many possible) ways to help:&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.getmiro.com"&gt;Miro&lt;/a&gt; project (Internet TV  / Video and Audio Podcast application for Linux, Windows, and Mac OS X) is &lt;a href="http://www.kickstarter.com/projects/1116615214/subtitles-in-miro-translations-and-support-for-t"&gt;seeking for pledges/donations&lt;/a&gt; that will be used to add &lt;strong&gt;subtitles support&lt;/strong&gt; in Miro.&lt;/p&gt;
&lt;p&gt;To quote from the &lt;a href="http://www.getmiro.com/blog/2009/09/help-add-subtitle-support-for-miro/"&gt;announcement&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
We’re hoping to build real subtitle support into Miro in the next couple months, but we need your help! So we’ve started a Kickstarter project to raise $1,000 to develop this feature for Miro on all three platforms: Windows, Mac, and Linux. Can you pledge to help make it happen? One of the great things about the Kickstarter model is that unless we can reach $1,000, your pledge won’t be charged.&lt;br /&gt;
[...]&lt;br /&gt;
(if you live in the United States, donations are tax deductible &amp;mdash; we are a 501c3 non-profit)
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;There are 11 days left to &lt;a href="http://www.kickstarter.com/projects/1116615214/subtitles-in-miro-translations-and-support-for-t"&gt;make a pledge&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/help-add-subtitle-support-for-miro#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/165">donations</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/398">internet</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/308">miro</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2092">opensource</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/266">podcast</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2304">subtitles</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/179">tv</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/173">video</category>
 <pubDate>Sun, 20 Sep 2009 21:55:44 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1523 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>A simple DLP-USB1232H based JTAG programmer with OpenOCD support</title>
 <link>http://www.hermann-uwe.de/blog/a-simple-dlp-usb1232h-based-jtag-programmer-with-openocd-support</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/photoblog/dlp-usb1232h-and-openocd-based-jtag-adapter"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/Dlp_usb1232h_jtag1.preview.jpg" width="320" height="240" align="right" hspace="5" alt="DLP-USB1232H and OpenOCD based JTAG adapter" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here's a quick introduction to using a cheap FTDI FT2232H based module (left-hand side on the photo) as a JTAG programmer together with the &lt;a href="http://openocd.berlios.de/web/"&gt;OpenOCD&lt;/a&gt; JTAG software for ARM and MIPS devices. The module I am using for thіs purpose is a &lt;a href="http://www.dlpdesign.com/usb/usb1232h.shtml"&gt;DLP Design DLP-USB1232H&lt;/a&gt;, which is available from various sources (Digikey, Mouser, Saelig, and probably others) for 20-30 bucks plus shipping, depending on where you live.&lt;/p&gt;
&lt;p&gt;By properly connecting the correct pins of the DLP-USB1232H to the target JTAG&lt;br /&gt;
device (I used an &lt;a href="http://www.olimex.com/dev/stm32-h103.html"&gt;Olimex STM32-H103&lt;/a&gt; eval board for testing) you can easily abuse the DLP-USB1232H as JTAG programmer. As I chose the proper DLP-USB1232H GPIOs for the TRST and (S)RST pins, OpenOCD even worked out of the box, without having to change a single line of code.&lt;/p&gt;
&lt;p&gt;The only thing that's required is to provide OpenOCD with an interface config file that uses the &lt;strong&gt;usbjtag&lt;/strong&gt; "layout". I have already &lt;a href="http://lists.berlios.de/pipermail/openocd-development/2009-September/010466.html"&gt;submitted that config file upstream&lt;/a&gt;, I guess it should be merged soonish.&lt;/p&gt;
&lt;p&gt;The usage is then pretty simple:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;openocd -f interface/dlp-usb1232h.cfg -f board/olimex_stm32_h103.cfg&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
And in another xterm:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;telnet localhost 4444&lt;/strong&gt;
  &amp;gt; &lt;strong&gt;init&lt;/strong&gt;
  &amp;gt; &lt;strong&gt;reset halt&lt;/strong&gt;
  &amp;gt; &lt;strong&gt;flash write_image erase fancyblink.bin 0x08000000&lt;/strong&gt;
  &amp;gt; &lt;strong&gt;reset&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
This flashes the given &lt;strong&gt;fancyblink.bin&lt;/strong&gt; image onto the STM32-H103 eval board via the DLP-USB1232H JTAG programmer, where &lt;strong&gt;fancyblink.bin&lt;/strong&gt; is an example program from my &lt;a href="http://sourceforge.net/projects/libopenstm32/"&gt;libopenstm32&lt;/a&gt; project (that aims to create a full-blown firmware library for ST STM32 microcontrollers, similar to what avr-libc does for AVRs). Contributions for libopenstm32 (license is GPLv3 or later) are highly welcome btw., hint hint...&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;git clone git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Full schematics, datasheets, and detailed instructions for the JTAG programmer are available from a small page I created in my &lt;a href="http://randomprojects.org"&gt;Random Projects wiki&lt;/a&gt;, which is intended for the various smaller projects I'm working on that don't warrant getting their own domain, wiki, etc:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter"&gt;http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Random Projects wiki is open-for-all btw, feel free to use it for any freeish, software or hardware projects of your own if you want.&lt;/p&gt;
&lt;p&gt;Anyway, the DLP-USB1232H is a really nice device as it can also be used for many other purposes, such as USB-to-Serial or &lt;a href="http://www.coreboot.org/Flashrom/FT2232SPI_Programmer"&gt;SPI BIOS chip programming&lt;/a&gt;, but more on that in another blog post...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/a-simple-dlp-usb1232h-based-jtag-programmer-with-openocd-support#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2017">arm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1026">bios</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2295">breadboard</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2296">circuit</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2294">debugging</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/499">design</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2289">dlp</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/199">flash</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2288">ft2232h</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2287">ftdi</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2015">jtag</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2293">libopenstm32</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2018">mips</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2291">olimex</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2014">openocd</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1066">patch</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/163">programming</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2224">spi</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2292">stm32</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2290">usb1232h</category>
 <pubDate>Sat, 12 Sep 2009 11:00:59 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1517 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>identi.ca - a microblogging service based on Free Software, AGPL, and Creative Commons</title>
 <link>http://www.hermann-uwe.de/blog/identica-a-microblogging-service-based-on-free-software-agpl-and-creative-commons</link>
 <description>&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1511"&gt;&lt;img src="http://hermann-uwe.de/files/images/identica_logo.thumbnail.png" width="100" height="76" align="right" hspace="5" alt="identi.ca logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After a long time of ignoring (or at least not using) &lt;a href="http://en.wikipedia.org/wiki/Micro-blogging"&gt;micro-blogging&lt;/a&gt; services such as Twitter, I recently tried the Free-Software based &lt;a href="http://identi.ca"&gt;identi.ca&lt;/a&gt; service, and I'm beginning to like it.&lt;/p&gt;
&lt;p&gt;The choice of service was pretty obvious &amp;mdash; while Twitter uses proprietary software and has custom Terms of Service, identi.ca is based on software under the &lt;a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html"&gt;GNU Affero General Public License&lt;/a&gt;, and the contents are &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;CC-BY 3.0&lt;/a&gt; licensed.&lt;/p&gt;
&lt;p&gt;The code behind identi.ca is called &lt;a href="http://status.net/wiki/Source"&gt;Laconica&lt;/a&gt; (recently &lt;a href="http://status.net/2009/08/28/laconica-is-now-statusnet/"&gt;renamed to StatusNet&lt;/a&gt;) and is &lt;a href="http://gitorious.org/laconica"&gt;hosted at gitorious&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;git clone git://gitorious.org/laconica/mainline.git&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
My account details are available under &lt;a href="http://identi.ca/uwehermann"&gt;http://identi.ca/uwehermann&lt;/a&gt;, where I'm posting smaller announcements and notes about random technical stuff I'm working on (slightly more regularly than in this blog). Sometimes I use the web interface for posting, but using the &lt;a href="http://www.jabber.org"&gt;Jabber&lt;/a&gt; integration available at identi.ca is even more convenient. You can both be notified of new posts ("dents") in real time via Jabber, as well as post your own dents from within your Jabber client, which is nice.&lt;/p&gt;
&lt;p&gt;identi.ca seems to become &lt;a href="http://identi.ca/attachment/2177247"&gt;more popular every day&lt;/a&gt;, which will hopefully make the proprietary Twitter pretty much irrelevant sooner or later.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/identica-a-microblogging-service-based-on-free-software-agpl-and-creative-commons#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2278">agpl</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2275">blogging</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/361">cc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1170">creativecommons</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/970">git</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2279">gitorious</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2271">identi.ca</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2272">identica</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2276">jabber</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2280">laconica</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2274">microblogging</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2282">pidgin</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/455">rss</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2281">statusnet</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2273">twitter</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2277">xmpp</category>
 <pubDate>Sun, 06 Sep 2009 19:09:11 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1512 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Open-Source software for LightScribe CDs and DVDs?</title>
 <link>http://www.hermann-uwe.de/blog/open-source-software-for-lightscribe-cds-and-dvds</link>
 <description>&lt;p&gt;Dear Lazyweb,&lt;/p&gt;
&lt;p&gt;is there any &lt;em&gt;Free Software&lt;/em&gt; utility for putting those nice logos/images on &lt;a href="http://lightscribe.com/gettingstarted/index.aspx?id=95"&gt;LightScribe&lt;/a&gt; CDs or DVDs? I'm considering buying such a CD/DVD burner, but only if there's open-source software to control the device. I guess burning CDs/DVDs should be no problem using wodim/cdrecord, but adding images as labels on the CD/DVD is likely not possible without special software.&lt;/p&gt;
&lt;p&gt;I know about the &lt;a href="http://www.lightscribe.com/downloadSection/linux/index.aspx"&gt;LightScribe Linux software&lt;/a&gt; (which is binary-only and not open-source, it seems) and &lt;a href="http://www.lacie.com/de/products/product.htm?pid=10803"&gt;LaCie LightScribe Labeler for Linux&lt;/a&gt; (which only creates labels but does not write them to the CD/DVD, and is not open-source either, I think).&lt;/p&gt;
&lt;p&gt;Anyone aware of a Free Software utility for this? Or at least a public specification/datasheet which could be used for creating one? I might even be willing to join development if datasheets are available.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/open-source-software-for-lightscribe-cds-and-dvds#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2259">burn</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1863">cd</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2260">datasheet</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/895">dvd</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1321">lazyweb</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2258">lightscribe</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2092">opensource</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/750">oss</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/175">software</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2261">specs</category>
 <pubDate>Thu, 03 Sep 2009 15:14:54 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1509 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Qi Hardware: Freedom Redefined - New Open Hardware company to ship Ben NanoNote device in fall 2009</title>
 <link>http://www.hermann-uwe.de/blog/qi-hardware-freedom-redefined--new-open-hardware-company-to-ship-ben-nanonote-device-in-fall-2009</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1504"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/nanonote_front.preview.png" width="160" height="213" align="right" hspace="5" alt="Qi Hardware Ben NanoNote" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I recently stumbled over a neat new Open Hardware and Free Software friendly company &amp;mdash; &lt;a href="http://www.qi-hardware.com"&gt;Qi Hardware&lt;/a&gt; &amp;mdash; founded by &lt;a href="http://www.qi-hardware.com/2009/07/01/hello-world/"&gt;former OpenMoko developers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To quote from the website:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;a href="http://www.qi-hardware.com"&gt;Qi Hardware&lt;/a&gt;, founded on the belief in open hardware, produces mass market quality hardware applying free software principles to consumer electronics. The three fundamental elements in our development are copyleft hardware, upstream kernels and community driven software.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;They have put up a &lt;a href="http://www.qi-hardware.com/products/"&gt;timeline for upcoming products&lt;/a&gt;, where the &lt;a href="http://www.qi-hardware.com/products/ben-nanonote/"&gt;本 NanoNote™ (Ben NanoNote™)&lt;/a&gt; &amp;mdash; a fully open multifunction ultra small form factor computing device &amp;mdash; is the first entry product that is supposed to ship in &lt;strong&gt;fall 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The Ben NanoNote is based on an &lt;a href="http://www.ingenic.cn/eng/default.aspx"&gt;Ingenic&lt;/a&gt; SoC (336 MHz XBurst Jz4720 MIPS-compatible CPU) with 3.0” color TFT (320x240), 2GB NAND flash, 32 MB SDRAM, SDHC microSD, micro-USB 2.0. The whole device, including the 850mAh Li-ion battery, weighs only 126g. Detailed specs &lt;a href="http://www.qi-hardware.com/products/ben-nanonote/"&gt;are available&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Their currently planned setup includes a Linux kernel, &lt;a href="http://git.denx.de/?p=u-boot.git;a=summary"&gt;u-boot&lt;/a&gt;, and &lt;a href="http://nanl.de/blog/2009/08/openwrt-on-the-ben-nanonote/"&gt;OpenWRT&lt;/a&gt; as software basis. &lt;a href="http://lists.qi-hardware.com/pipermail/developer/2009-August/000315.html"&gt;Personally&lt;/a&gt;, I'd like to see a stock Debian running on the hardware sooner or later, of course. The 2GB of flash and 32MB of RAM should be fine for a small Debian system (for instance, &lt;a href="http://www.hermann-uwe.de/blog/playing-audio-on-the-nslu2"&gt;my NSLU2&lt;/a&gt; runs off a 1GB thumb drive and has 32MB RAM, and is still very useful).&lt;/p&gt;
&lt;p&gt;The code is all GPL'd and available from &lt;a href="http://www.qi-hardware.com/resources/"&gt;various git repos&lt;/a&gt;, hardware will be &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/"&gt;CC-BY-SA 3.0&lt;/a&gt; licensed, &lt;em&gt;and&lt;/em&gt; they try to use Free Software design and development tools also, including &lt;a href="http://kicad.sourceforge.net"&gt;KiCAD&lt;/a&gt; for schematics and PCB layout, and probably &lt;a href="http://code.google.com/p/heekscad/"&gt;HeeksCAD&lt;/a&gt; as CAD tool for mechanical stuff.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1507"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/geda.png" width="160" height="44" align="right" hspace="5" alt="gEDA/PCB logo" /&gt;&lt;/a&gt;&lt;br /&gt;
I'm really tired of seeing more and more self-proclaimed "Open Hardware" projects that often don't even mention any license for their schematics and PCBs, or use crappy, self-invented "open" licenses that are not even remotely open in any way. Probably even worse, many hardware related projects use closed-source, proprietary electronic design tools such as EAGLE or OrCAD, thereby ruining the whole project from the beginning by forcing everyone who likes to contribute or adapt the hardware to use non-free software. That's why I was really happy to see the Qi people thrive to use open tools from the beginning! I hope to see more hardware projects use KiCAD or &lt;a href="http://www.gpleda.org"&gt;gEDA/PCB&lt;/a&gt; for their designs in future...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/qi-hardware-freedom-redefined--new-open-hardware-company-to-ship-ben-nanonote-device-in-fall-2009#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2248">ben</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2250">freehardware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/970">git</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1042">hardware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/335">kernel</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2247">nanonote</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2249">openhardware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2254">openmoko</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2252">qi</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2253">qihardware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2251">uboot</category>
 <pubDate>Sat, 29 Aug 2009 19:47:56 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1508 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Converting Mailman "Gzip'd Text" archive files to proper mbox files</title>
 <link>http://www.hermann-uwe.de/blog/converting-mailman-gzipd-text-archive-files-to-proper-mbox-files</link>
 <description>&lt;p&gt;Mailman archives are often only available in the pretty useless "Gzip'd Text" format, which you cannot easily download and view locally (and threaded) in a MUA such as &lt;a href="http://www.mutt.org"&gt;mutt&lt;/a&gt;. But that is exactly what I want to do from time to time (e.g. because I want to read the discussions of the past weeks on mailing lists where I'm newly subscribed).&lt;/p&gt;
&lt;p&gt;After some searching I found &lt;a href="http://www.mail-archive.com/gossip@jab.org/msg01219.html"&gt;one way to do it&lt;/a&gt; which I stripped down to my needs:&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;cat mailman2mbox&lt;/strong&gt;
 #!/usr/bin/perl
 while (&amp;lt;STDIN&amp;gt;) {
   s/^(From:? .*) (at|en) /\1\@/;
   s/^Date: ([A-Z][a-z][a-z]) +([A-Z][a-z][a-z]) +([0-9]+) +([0-9:]+) +([0-9]+)/Date: \1, \3 \2 \5 \4 +0000/; 
   print;
 }
&lt;/pre&gt;&lt;p&gt;
Example run on &lt;a href="http://participatoryculture.org/pipermail/develop/"&gt;some random mail archive&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;wget http://participatoryculture.org/pipermail/develop/2009-August.txt.gz&lt;/strong&gt;
 $ &lt;strong&gt;gunzip 2009-August.txt.gz&lt;/strong&gt;
 $ &lt;strong&gt;./mailman2mbox &lt; 2009-August.txt &gt; 2009-August.mbox&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
You can then view the mbox as usual in &lt;a href="http://www.mutt.org"&gt;mutt&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;mutt -f 2009-August.mbox&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Suggestions for a simpler method to do this are highly welcome. Maybe some mbox related Debian package already ships with a script to do this?&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/converting-mailman-gzipd-text-archive-files-to-proper-mbox-files#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1647">archive</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2257">email</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/638">mail</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2255">mailman</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2256">mbox</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/124">perl</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1190">script</category>
 <pubDate>Mon, 24 Aug 2009 01:31:34 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1506 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>AMD RS780 chipset documentation released, coreboot support upcoming</title>
 <link>http://www.hermann-uwe.de/blog/amd-rs780-chipset-documentation-released-coreboot-support-upcoming</link>
 <description>&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1395"&gt;&lt;img src="http://hermann-uwe.de/files/images/coreboot.png" width="160" height="123" align="right" hspace="5" alt="coreboot logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Good news for kernel hackers, and especially &lt;a href="http://www.coreboot.org"&gt;coreboot&lt;/a&gt; developers like me: AMD has released the chipset documentation for the &lt;a href="http://en.wikipedia.org/wiki/AMD_700_chipset_series#780G.2F780V"&gt;RS780 chipset&lt;/a&gt;, including the BIOS Developer's Guide. And these documents are being released freely and openly to the public, no NDAs required, which is great!&lt;/p&gt;
&lt;p&gt;Quoting from the &lt;a href="http://www.coreboot.org/pipermail/coreboot-announce/2009-August/000003.html"&gt;original announcement&lt;/a&gt; on the &lt;a href="http://www.coreboot.org/pipermail/coreboot-announce/"&gt;coreboot-announce&lt;/a&gt; mailing list:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The coreboot community, which includes government organizations, corporations, research labs and individuals from around the world, is very excited to expand on our existing and decade-long collaboration with AMD. This collaboration has, over the years, resulted in the inclusion of coreboot into everything from some of the largest AMD-based supercomputers in the world to some of the smallest embedded systems.&lt;/p&gt;
&lt;p&gt;Together with the recent SB700/SB710/SB750 documentation release, the Developer Guide release for the RS780 family of Integrated Chipset/Graphics Processors enables the coreboot community to support any board with AMD chipsets out there, from embedded to enthusiast desktop and high-end server boards.&lt;/p&gt;
&lt;p&gt;This new release once again demonstrates AMD's commitment to open standards and software that provides an improved user experience and Total Cost of Ownership for users in every walk of life. One cornerstone of this openness is the availability of documentation without NDA, enabling everyone to contribute.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;Coreboot is open source, so every interested developer or user can modify, tweak and extend it to their heart's content.&lt;/p&gt;
&lt;p&gt;An additional benefit of this documentation release is &lt;a href="http://www.coreboot.org/Flashrom"&gt;flashrom&lt;/a&gt; support for all AMD chipsets which enables users to reflash their BIOS/firmware/coreboot from within Linux and *BSD without rebooting.&lt;/p&gt;
&lt;p&gt;Coreboot code for the SB700 and 780 chipset family is already being worked on by Zheng Bao at AMD in his spare time and the coreboot community is happy to work with him on finishing and integrating the code into the official coreboot codebase.&lt;/p&gt;
&lt;p&gt;We'd like to thank Sharon Troia at AMD for making these documentation releases possible.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The exact download URLs are listed at &lt;a href="http://www.coreboot.org/Datasheets#AMD_RS780"&gt;http://www.coreboot.org/Datasheets&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/amd-rs780-chipset-documentation-released-coreboot-support-upcoming#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2241">amd</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1026">bios</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1834">chipset</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1845">coreboot</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2243">datasheets</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1795">flashrom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/36">free software</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1525">linuxbios</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2244">lowlevel</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2242">rs780</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2245">sb700</category>
 <pubDate>Thu, 20 Aug 2009 17:59:08 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1501 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>How to run 65535 web servers on a single laptop</title>
 <link>http://www.hermann-uwe.de/blog/how-to-run-65535-web-servers-on-a-single-laptop</link>
 <description>&lt;p&gt;OK, so here's what crazy computer geeks come up with when they're bored of just sitting in the subway and staring out of the window.&lt;/p&gt;
&lt;p&gt;Web servers usually run on port 80. &lt;a href="http://en.wikipedia.org/wiki/TCP_and_UDP_port"&gt;TCP/UDP ports&lt;/a&gt; range from 1 to 65535 (&lt;a href="http://www.faqs.org/rfcs/rfc1700.html"&gt;port 0 is reserved&lt;/a&gt;). You can run multiple web servers on different ports at the same time... Do you think what I think?&lt;/p&gt;
&lt;p&gt;Well, first you need a web server (duh). I decided to use &lt;a href="http://www.lighttpd.net/"&gt;lighttpd&lt;/a&gt;, as it's said to be small and memory-efficient (which sounded pretty important given what I was trying to do). Apache would probably not be a good choice here. Mind you, I have &lt;em&gt;not&lt;/em&gt; done any benchmarks at all, I'm just guessing...&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;apt-get install lighttpd&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Then, I wrote a little shell script containing a loop, which invoked lighttpd on port 1, 2, 3, 4, ..., 65535. That's it ;)&lt;/p&gt;
&lt;pre&gt;
  #!/bin/bash
  TMPDIR=/tmp
  CONFFILE="server.document-root       = \"/var/www/\"
           index-file.names           = ( \"index.html\" )"
  for ((i = 1; i &lt; 300; i = i + 1)) do
    echo "+++ Starting web server on port $i"
    echo $CONFFILE &gt; $TMPDIR/lighttpd.conf
    echo "server.port = $i" &gt;&gt; $TMPDIR/lighttpd.conf
    /usr/sbin/lighttpd -f $TMPDIR/lighttpd.conf
    rm -f $TMPDIR/lighttpd.conf
  done 
&lt;/pre&gt;&lt;p&gt;
I'm sure this can be optimized a lot, but it's sufficient for now, and it works.&lt;/p&gt;
&lt;p&gt;You can test any of the web servers by running "&lt;code&gt;wget http://localhost:3556/&lt;/code&gt;" (for example). You can kill them all with &lt;code&gt;killall lighttpd&lt;/code&gt;. If you already run some other daemons on some ports, you cannot start a lighttpd on the same port, so you'll end up with fewer than 65535 servers.&lt;/p&gt;
&lt;p&gt;In case you try this on your hardware, make sure you have lots of RAM and lots of swap. Don't run this on production hardware. Feel free to post your experiences in the comments.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/how-to-run-65535-web-servers-on-a-single-laptop#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1475">65535</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/271">crazy</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1479">daemon</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/53">funny</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/203">laptop</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1478">lighttpd</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/989">port</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1190">script</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/845">shell</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1476">web server</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1477">webserver</category>
 <pubDate>Wed, 19 Aug 2009 14:36:03 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1499 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>How to find copies or modified versions of your photos online, e.g. using TinEye</title>
 <link>http://www.hermann-uwe.de/blog/how-to-find-copies-or-modified-versions-of-your-photos-online-e-g-using-tineye</link>
 <description>&lt;p&gt;&lt;a href="http://hermann-uwe.de/photoblog/sugar"&gt;&lt;img src="http://hermann-uwe.de/files/images/sugar.preview.jpg" width="120" height="90" align="right" hspace="5" alt="Sugar" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I found out about &lt;a href="http://tineye.com"&gt;TinEye&lt;/a&gt; a few minutes ago. It's a nice little search engine which allows you to find exact copies of a photo or even similar versions of it. You can either upload an image for comparison with their database, or point TinEye to a URL of the image you want to check.&lt;/p&gt;
&lt;p&gt;For instance, checkout this &lt;a href="http://tineye.com/search/cad8339514a68e30bcadf9a1dab943ed062ed991"&gt;this search&lt;/a&gt; for my &lt;a href="http://hermann-uwe.de/blog/list-of-my-creative-commons-licensed-photos-being-used-elsewhere"&gt;unreasonably popular&lt;/a&gt; "&lt;a href="http://hermann-uwe.de/photoblog/sugar"&gt;Sugar&lt;/a&gt;" photo. Or have a look at &lt;a href="http://tineye.com/cool_searches"&gt;this list of sample searches&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The site is also &lt;a href="http://commons.wikimedia.org/wiki/User:Sz-iwbot/tineye"&gt;used in Wikipedia&lt;/a&gt; for detecting the original source of uploaded images.&lt;/p&gt;
&lt;p&gt;I know there is some other website which also allows similarity search of images, but I just can't remember the URL. Please leave a comment if you know of other such sites, thanks!&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/how-to-find-copies-or-modified-versions-of-your-photos-online-e-g-using-tineye#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/361">cc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1342">clone</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2239">copy</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1170">creativecommons</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2238">find</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1726">image</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2240">modified</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/537">photo</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/33">search</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2237">tinyeye</category>
 <pubDate>Tue, 28 Jul 2009 15:21:57 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1495 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Counting pages in multiple PDFs from the command line, using pdfinfo or pdftk</title>
 <link>http://www.hermann-uwe.de/blog/counting-pages-in-multiple-pdfs-from-the-command-line-using-pdfinfo-or-pdftk</link>
 <description>&lt;p&gt;Say you have a bunch of PDFs and you want to know how many pages each of them has. You could of course use some graphical software to display every single PDF and check the page count (xpdf, evince, whatever), but that gets tedious very fast.&lt;/p&gt;
&lt;p&gt;So here's (mostly as a reminder for myself) one way to count pages of many PDFs (in the current directory) using &lt;strong&gt;pdfinfo&lt;/strong&gt; from the &lt;a href="http://packages.debian.org/sid/xpdf-utils"&gt;xpdf-utils&lt;/a&gt; package:&lt;/p&gt;
&lt;pre&gt;
$ &lt;strong&gt;cat countpdfpages&lt;/strong&gt;
#!/bin/sh
for f in *.pdf; do
        echo -n "$f: "
        pdfinfo "$f" 2&gt;/dev/null | grep Pages | cut -d ":" -f 2
done
&lt;/pre&gt;&lt;p&gt;
A sample run:&lt;/p&gt;
&lt;pre&gt;
$ &lt;strong&gt;./countpdfpages&lt;/strong&gt;
S71147.pdf:           25
S71226.pdf:           38
S71242-01.pdf:        25
S71258.pdf:           26
S71315.pdf:           35
S72045.pdf:           2
&lt;/pre&gt;&lt;p&gt;
I'm sure there are many other ways to do this, e.g. using &lt;strong&gt;pdftk foo.pdf dump_data&lt;/strong&gt; (in the &lt;a href="http://packages.qa.debian.org/p/pdftk.html"&gt;pdftk&lt;/a&gt; package), please leave a comment if you know a simpler way to achieve this. Especially so if you don't need an extra script to do it (i.e. if there's a PDF command line tool which can already count pages in multiple PDFs). Thanks!&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/counting-pages-in-multiple-pdfs-from-the-command-line-using-pdfinfo-or-pdftk#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/217">command line</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2232">count</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1368">document</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2233">multiple</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2234">pages</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1006">pdf</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2235">pdfinfo</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1581">pdftk</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1190">script</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/845">shell</category>
 <pubDate>Sat, 20 Jun 2009 19:17:50 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1491 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Flashrom 0.9 release - Flashing your BIOS from the Unix/Linux command line</title>
 <link>http://www.hermann-uwe.de/blog/flashrom-0-9-release-flashing-your-bios-from-the-unix-linux-command-line</link>
 <description>&lt;p&gt;I have &lt;a href="http://hermann-uwe.de/blog/flashing-a-bios-the-linux-way-tm-using-flashrom"&gt;mentioned&lt;/a&gt; the &lt;a href="http://www.coreboot.org/Flashrom"&gt;flashrom&lt;/a&gt; utility in my blog in the past. This is a small command line tool which allows you to update your BIOS/&lt;a href="http://www.coreboot.org"&gt;coreboot&lt;/a&gt;/firmware chips without opening the computer and without any special boot procedures.&lt;/p&gt;
&lt;p&gt;Yesterday, flashrom 0.9 was finally released. Here's a short passage from the &lt;a href="http://www.coreboot.org/pipermail/coreboot/2009-May/047636.html"&gt;release announcement&lt;/a&gt;:&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
&lt;blockquote&gt;
After nine years of development and constant improvement, we have added support for every BIOS flash ROM technology present on x86 mainboards and every flash ROM chip we ever saw in the wild.&lt;/p&gt;
&lt;p&gt;Highlights of flashrom include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parallel, LPC, FWH and SPI flash interfaces.&lt;/li&gt;
&lt;li&gt;157 flash chip families and half a dozen variants of each family.&lt;/li&gt;
&lt;li&gt;Flash chip package agnostic. DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40 and more have all been verified to work.&lt;/li&gt;
&lt;li&gt;75 different chipsets, some with multiple flash controllers.&lt;/li&gt;
&lt;li&gt;Special mainboard enabling code for dozens of nonstandard mainboards.&lt;/li&gt;
&lt;li&gt;No physical access needed. root access is sufficient.&lt;/li&gt;
&lt;li&gt;No bootable floppy disk, bootable CD-ROM or other media needed.&lt;/li&gt;
&lt;li&gt;No keyboard or monitor needed. Simply reflash remotely via SSH.&lt;/li&gt;
&lt;li&gt;No instant reboot needed. Reflash your ROM in a running system, verify it, be happy. The new firmware will be present next time you boot.&lt;/li&gt;
&lt;li&gt;Crossflashing and hotflashing is possible as long as the flash chips are electrically and logically compatible (same protocol). Great for recovery.&lt;/li&gt;
&lt;li&gt;Scriptability. Reflash a whole pool of identical machines at the same time from the command line. It is recommended to check flashrom output and error codes.&lt;/li&gt;
&lt;li&gt;Speed. flashrom is much faster than vendor flash tools.&lt;/li&gt;
&lt;li&gt;Supports Linux, FreeBSD, DragonFly BSD, Solaris, Mac OS X. Please refer to the README for build instructions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please note that rewriting your flash chip can be dangerous and flashrom developers make no guarantees whatsoever. That said, many users have successfully replaced proprietary tools such as awdflash, amiflash and afudos with flashrom.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Download: &lt;a href="http://qa.coreboot.org/releases/flashrom-0.9.0.tar.gz"&gt;flashrom-0.9.0.tar.gz&lt;/a&gt;&lt;br /&gt;
SVN: &lt;strong&gt;svn co svn://coreboot.org/flashrom/trunk flashrom&lt;/strong&gt;&lt;br /&gt;
Debian: &lt;strong&gt;apt-get install &lt;a href="http://packages.qa.debian.org/f/flashrom.html"&gt;flashrom&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Do yourself a favor and try flashrom next time you want to upgrade your BIOS. No more floppies or bootable CD-ROMs with DOS/Windows binaries or similar crap. Run flashrom conveniently from the Linux command line, or even via SSH or serial console if you want...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/flashrom-0-9-release-flashing-your-bios-from-the-unix-linux-command-line#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1026">bios</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1246">cdrom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1845">coreboot</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2227">dos</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1665">efi</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/199">flash</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1795">flashrom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2093">freesoftware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2223">fwh</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2222">lpc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2225">parallel</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2197">plcc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2226">programmer</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1796">rom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2224">spi</category>
 <pubDate>Tue, 05 May 2009 16:41:08 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1487 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Using Debian GNU/Linux on the IBM/Lenovo Thinkpad T40p</title>
 <link>http://www.hermann-uwe.de/blog/using-debian-gnu-linux-on-the-ibm-lenovo-thinkpad-t40p</link>
 <description>&lt;p&gt;&lt;a href="http://tuxmobil.org/ibm.html"&gt;&lt;img src="/misc/icons/tuxmobil.png" stle="width:88; height:31; border:0" alt="TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones"&gt;&lt;/a&gt; &lt;!--&lt;a href="http://www.linux-on-laptops.com/ibm.html"&gt;&lt;img src="/misc/icons/linux-on-laptops.png" alt="Linux On Laptops" style="width:110; height:36; border:0" /&gt;&lt;/a&gt; --&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1485"&gt;&lt;img src="http://hermann-uwe.de/files/images/ibm_thinkpad_t40p.preview.jpg" width="320" height="240" align="right" hspace="5" alt="IBM/Lenovo Thinkpad T40p" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I recently got a new (well, refurbished) laptop as a replacement for &lt;a href="/hardware/debian-gnu-linux-on-a-toshiba-satellite-a80-117"&gt;my old Toshiba A80-117 laptop&lt;/a&gt; which has more or less died. It's an IBM/Lenovo T40p laptop (model &lt;strong&gt;2373-CG6&lt;/strong&gt;), with an Intel Pentim M at 1.5 GHz. I chose this laptop for multiple reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Robustness (which is supposedly one of the main advantages of Thinkpads).&lt;/li&gt;
&lt;li&gt;Relatively cheap, as it's an older refurbished model (I paid less than 280 Euros).&lt;/li&gt;
&lt;li&gt;Resolution of &lt;strong&gt;1400x1050&lt;/strong&gt; (the usual 1024x768 of similar models is definately not enough for my purposes).&lt;/li&gt;
&lt;li&gt;It can use up to &lt;strong&gt;2 GB&lt;/strong&gt; of DDR RAM (many similar models have a chipset-limitation of 1 GB). I swiftly replaced the shipped 512 MB of RAM with the 2 GB from my old laptop. The &lt;a href="http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-46464"&gt;hardware maintainance manual&lt;/a&gt; has very useful instructions on opening the laptop, btw.&lt;/li&gt;
&lt;li&gt;Gigabit Ethernet.&lt;/li&gt;
&lt;li&gt;Non-glossy screen (very important!).&lt;/li&gt;
&lt;li&gt;Pretty long battery life (even though it's refurbished), I get more that 2 hours or so.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Downsides and missing hardware features (nothing too important, though):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No HDAPS unfortunately, which would have been fancy.&lt;/li&gt;
&lt;li&gt;No support for burning DVDs, only CDs (but that's possible through an upgrade, I think).&lt;/li&gt;
&lt;li&gt;Only two USB ports, more of them would have been nice.&lt;/li&gt;
&lt;li&gt;No Firewire, but that's not really critical for me.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pretty much all of the hardware works flawlessly out of the box with a recent distro/kernel, see below for details.&lt;br /&gt;
&lt;!--&lt;/p&gt;
&lt;h3&gt;BIOS&lt;/h3&gt;
&lt;p&gt;TODO: Test boot from USB&lt;br /&gt;
--&gt;&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;Not needed, I simply popped out the 40 GB drive from the T40p and inserted my 160 GB (PATA) drive from my old laptop and that was it. Pretty much everything worked out of the box (see below), even though this is a totally different manufacturer, model, chipset, graphics card, wireless card, and so on. The only exception being (of course) my small Windows partition on that disk, which is now unusable as the drive is on different hardware and Microsoft doesn't like me to do that. Free Software: 1, Microsoft: 0.&lt;/p&gt;
&lt;h3&gt;Audio&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;snd_intel8x0&lt;/strong&gt; driver. The hardware is onboard audio in the southbridge (82801DB / ICH4) and uses the &lt;strong&gt;Analog Devices AD1981B&lt;/strong&gt; codec.&lt;/p&gt;
&lt;h3&gt;Bluetooth&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;bluetooth&lt;/strong&gt; and &lt;strong&gt;hci_usb&lt;/strong&gt; driver. The laptop's Bluetooth device is USB-attached internally and shows up in lsusb as:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lsusb&lt;/strong&gt;
  Bus 003 Device 004: ID 1668:0441 Actiontec Electronics, Inc. [hex] IBM Integrated Bluetooth II
&lt;/pre&gt;&lt;p&gt;
The device is not enabled per default though (which is a good thing), you can enable it like this:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;echo enable &amp;gt; /proc/acpi/ibm/bluetooth&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Disabling is equally simple:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;echo disable &amp;gt; /proc/acpi/ibm/bluetooth&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;!-- TODO: map it to FN keys. --&gt;After that, you can use &lt;strong&gt;hcitool / hciconfig&lt;/strong&gt; etc. as usual, and/or enable more related stuff with &lt;strong&gt;/etc/init.d/bluetooth restart&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Modem&lt;/h3&gt;
&lt;p&gt;Untested, I don't need it.&lt;/p&gt;
&lt;h3&gt;IrDA&lt;/h3&gt;
&lt;p&gt;Untested so far.&lt;/p&gt;
&lt;h3&gt;Sensors&lt;/h3&gt;
&lt;p&gt;Works out of the box.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;sensors&lt;/strong&gt;
  acpitz-virtual-0
  Adapter: Virtual device
  temp1:       +51.0°C  (crit = +93.0°C)                  

  thinkpad-isa-0000
  Adapter: ISA adapter
  fan1:       3698 RPM
  temp1:       +51.0°C                                    
  temp2:       +42.0°C                                    
  temp3:       +32.0°C                                    
  temp4:       +49.0°C                                    
  temp5:       +33.0°C                                    
  ERROR: Can't get value of subfeature temp6_input: Can't read
  temp6:        +0.0°C                                    
  temp7:       +28.0°C                                    
  ERROR: Can't get value of subfeature temp8_input: Can't read
  temp8:        +0.0°C                                    
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;HPET&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/I/O_Controller_Hub#ICH4"&gt;Intel ICH4-M southbridge&lt;/a&gt; in this laptop supports &lt;a href="http://en.wikipedia.org/wiki/High_Precision_Event_Timer"&gt;High Performance Event Timers (HPET)&lt;/a&gt; which allows for more power savings and thus improved battery life.&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;dmesg | grep -i hpet&lt;/strong&gt;
  pci 0000:00:1f.0: Force enabled HPET at 0xfed00000
  hpet clockevent registered
  HPET: 3 timers in total, 0 timers will be used for per-cpu timer
  hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
  hpet0: 3 comparators, 64-bit 14.318180 MHz counter
&lt;/pre&gt;&lt;p&gt;
You can check with &lt;a href="http://packages.qa.debian.org/p/powertop.html"&gt;powertop&lt;/a&gt; that the number of wakeups-from-idle is drastically reduced (from 70 to less than 10) when adding &lt;strong&gt;hpet=force&lt;/strong&gt; to the kernel command line.&lt;/p&gt;
&lt;h3&gt;Network card&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;e1000&lt;/strong&gt; driver.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;modprobe e1000&lt;/strong&gt;
  Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
  Copyright (c) 1999-2006 Intel Corporation.
  ACPI: PCI Interrupt 0000:02:01.0[A] -&gt; Link [LNKA] -&gt; GSI 11 (level, low) -&gt; IRQ 11
  e1000: 0000:02:01.0: e1000_probe: (PCI:33MHz:32-bit) 00:11:22:33:44:55
  e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;Touchpad&lt;/h3&gt;
&lt;p&gt;Works out of the box, both in X as well as in the console using &lt;strong&gt;gpm&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;TrackPoint&lt;/h3&gt;
&lt;p&gt;Works out of the box, both in X as well as in the console using &lt;strong&gt;gpm&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Suspend-to-disk and suspend-to-RAM&lt;/h3&gt;
&lt;p&gt;Both work out of the box (on 2.6.26 or 2.6.29 kernels), or at least it used to; I think I'm seeing some hangs upon resume nowadays (Capslock LED is blinking, schreen is blank. I'll investigate.). I'm using the &lt;a href="http://packages.qa.debian.org/h/hibernate.html"&gt;hibernate Debian package&lt;/a&gt;. You can explicitly force the usage of either method in &lt;strong&gt;/etc/hibernate/hibernate.conf&lt;/strong&gt; by uncommenting the respective lines.&lt;/p&gt;
&lt;pre&gt;
# TryMethod suspend2.conf
TryMethod disk.conf
# TryMethod ram.conf
&lt;/pre&gt;&lt;h3&gt;Wireless&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;ath5k&lt;/strong&gt; driver. I tested WEP as well as WPA.&lt;/p&gt;
&lt;h3&gt;CPU frequency scaling&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;acpi_cpufreq&lt;/strong&gt; driver.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
$ &lt;strong&gt;cpufreq-info&lt;/strong&gt;
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which need to switch frequency at the same time: 0
  hardware limits: &lt;strong&gt;600 MHz - 1.50 GHz&lt;/strong&gt;
  available frequency steps: 1.50 GHz, 1.40 GHz, 1.20 GHz, 1000 MHz, 800 MHz, 600 MHz
  available cpufreq governors: userspace, powersave, ondemand, conservative, performance
  current policy: frequency should be within 800 MHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).
  cpufreq stats: 1.50 GHz:69.76%, 1.40 GHz:0.11%, 1.20 GHz:0.13%, 1000 MHz:0.16%, 800 MHz:29.83%, 600 MHz:0.00%  (4010)
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Use &lt;strong&gt;cpufreq-set -g performance&lt;/strong&gt; if you need full CPU power, &lt;strong&gt;cpufreq-set -g powersave&lt;/strong&gt; otherwise.&lt;/p&gt;
&lt;h3&gt;PC Speaker&lt;/h3&gt;
&lt;p&gt;Works fine out of the box, tested with &lt;a href="http://packages.qa.debian.org/b/beep.html"&gt;beep&lt;/a&gt;.&lt;br /&gt;
&lt;!--&lt;br /&gt;
short, short, pause, short&lt;br /&gt;
echo 2 &gt; /proc/acpi/ibm/beep&lt;/p&gt;
&lt;p&gt;short beep:&lt;br /&gt;
echo 3 &gt; /proc/acpi/ibm/beep&lt;/p&gt;
&lt;p&gt; echo 4 &gt; /proc/acpi/ibm/beep&lt;/p&gt;
&lt;p&gt;5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
--&gt;&lt;/p&gt;
&lt;h3&gt;CDRW/DVD&lt;/h3&gt;
&lt;p&gt;Works out of the box. You can play DVDs or CD-ROMs, and burn CDs (but not DVDs):&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;wodim foo.iso&lt;/strong&gt;
  [...]
  Device type    : Removable CD-ROM
  Version        : 0
  Response Format: 2
  Capabilities   :
  Vendor_info    : 'MATSHITA'
  Identification : 'UJDA745 DVD/CDRW'
  Revision       : '1.02'
  Device seems to be: Generic mmc2 DVD-ROM.
  Using generic SCSI-3/mmc   CD-R/CD-RW driver (mmc_cdr).
  Driver flags   : MMC-3 SWABAUDIO BURNFREE
  Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R96R
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Ejecting a CD-ROM/DVD using the &lt;strong&gt;eject&lt;/strong&gt; command line tool also works fine.&lt;/p&gt;
&lt;h3&gt;Graphics card&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;radeon&lt;/strong&gt; driver. &lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;xrandr&lt;/strong&gt;
  Screen 0: minimum 320 x 200, current 1400 x 1050, maximum 1400 x 2048
  &lt;strong&gt;VGA-0&lt;/strong&gt; disconnected (normal left inverted right x axis y axis)
  &lt;strong&gt;DVI-0&lt;/strong&gt; disconnected (normal left inverted right x axis y axis)
  &lt;strong&gt;LVDS&lt;/strong&gt; connected &lt;strong&gt;1400x1050+0+0&lt;/strong&gt; (normal left inverted right x axis y axis) 0mm x 0mm
     &lt;strong&gt;1400x1050      50.0*+&lt;/strong&gt;
     1280x800       60.0  
     1280x768       60.0  
     1024x768       60.0  
     800x600        60.3  
     640x480        59.9  
  &lt;strong&gt;S-video&lt;/strong&gt; disconnected (normal left inverted right x axis y axis)
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;DRI works out of the box with the (mainline, open-source) driver:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;glxinfo | grep direct&lt;/strong&gt;
  direct rendering: Yes
&lt;/pre&gt;&lt;p&gt;
If you attach an external monitor or projector, you can enable it using &lt;strong&gt;xrandr&lt;/strong&gt; as usual:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;xrandr --output VGA-0 --auto&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;!--&lt;br /&gt;
TODO: map to key combination.&lt;br /&gt;
--&gt;&lt;/p&gt;
&lt;p&gt;You can also use a dual-head setup by adding this to your "Screen" section in &lt;strong&gt;/etc/X11/xorg.conf&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;
  SubSection "Display"
    # Virtual 2048 2048
    Virtual 1400 2048
  EndSubSection
&lt;/pre&gt;&lt;p&gt;
After restarting the X server, you can play with xrandr and move the external screen (VGA-0) "below" the laptop's LCD screen (LVDS) for a simple dual-head setup. The GUI tools arandr or grandr are probably a bit simpler to use than plain command line xrandr.&lt;/p&gt;
&lt;p&gt;The maximum size for the "Virtual" line is &lt;strong&gt;2048x2048&lt;/strong&gt; if you want to keep DRI enabled (you can use higher values if you don't care about DRI).&lt;/p&gt;
&lt;h3&gt;S-Video&lt;/h3&gt;
&lt;p&gt;Untested so far.&lt;/p&gt;
&lt;h3&gt;Parallel port&lt;/h3&gt;
&lt;p&gt;Yes, this model still has an actual parallel port, which is nice as I can use it for random JTAG stuff (e.g. &lt;a href="http://openocd.berlios.de/web/"&gt;OpenOCD&lt;/a&gt;) with several cheapo parallel port JTAG adapters I own.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hermann-uwe.de/photoblog/jtag-adapter-for-parallel-port"&gt;&lt;img src="http://hermann-uwe.de/files/images/jtag_parallel_port.preview.jpg" width="160" height="120" align="right" hspace="5" alt="JTAG adapter for parallel port" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;PCMCIA&lt;/h3&gt;
&lt;p&gt;This laptop has a type II/III PCMCIA slot which works out of the box using the &lt;strong&gt;pcmcia&lt;/strong&gt; and &lt;strong&gt;yenta_socket&lt;/strong&gt; drivers. You can probe/handle PCMCIA cards using the &lt;strong&gt;pccardctl&lt;/strong&gt; tool:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;pccardctl status&lt;/strong&gt;
  Socket 0:
    no card
  Socket 1:
    no card
&lt;/pre&gt;&lt;h3&gt;USB&lt;/h3&gt;
&lt;p&gt;Works fine, of course. Luckily it's USB 2.0 (not USB 1.1) so I can successfully do high-speed stuff, e.g. watching DVB-T using &lt;a href="http://packages.qa.debian.org/k/kaffeine.html"&gt;kaffeine&lt;/a&gt;. The only small problem is that there are only two USB ports, more would have been better.&lt;/p&gt;
&lt;h3&gt;Disk drive&lt;/h3&gt;
&lt;p&gt;Works fine, of course, it's just a normal PATA drive. You can check if DMA gets properly enabled with &lt;strong&gt;hdparm /dev/hda | grep dma&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;ThinkLight&lt;/h3&gt;
&lt;p&gt;Works out of the box (&lt;strong&gt;Fn + PgUp&lt;/strong&gt;). This is a tiny, but useful light embedded in the screen, which is helpful if you're working in dark rooms or in trains during the night etc.&lt;/p&gt;
&lt;h3&gt;Special keys&lt;/h3&gt;
&lt;p&gt;What works out of the box: brightness control buttons, audio volume control + mute buttons, thinklight button.&lt;/p&gt;
&lt;p&gt;TODO: Access IBM, F3, F4, F5, F7, F12, left/right special keys, Fn+Space.&lt;/p&gt;
&lt;h3&gt;LEDs&lt;/h3&gt;
&lt;p&gt;All of them seem to work fine, including the Bluetooth on/off and Wireless on/off LEDs, as well as the suspend LED.&lt;/p&gt;
&lt;h3&gt;Detailed system information&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;lspci -tvnn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
-[0000:00]-+-00.0  Intel Corporation 82855PM Processor to I/O Controller [8086:3340]
           +-01.0-[0000:01]----00.0  ATI Technologies Inc Radeon RV250 [Mobility FireGL 9000] [1002:4c66]
           +-1d.0  Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 [8086:24c2]
           +-1d.1  Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 [8086:24c4]
           +-1d.2  Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 [8086:24c7]
           +-1d.7  Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller [8086:24cd]
           +-1e.0-[0000:02-08]--+-00.0  Texas Instruments PCI1520 PC card Cardbus Controller [104c:ac55]
           |                    +-00.1  Texas Instruments PCI1520 PC card Cardbus Controller [104c:ac55]
           |                    +-01.0  Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) [8086:101e]
           |                    \-02.0  Atheros Communications Inc. AR5212 802.11abg NIC [168c:1014]
           +-1f.0  Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge [8086:24cc]
           +-1f.1  Intel Corporation 82801DBM (ICH4-M) IDE Controller [8086:24ca]
           +-1f.3  Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller [8086:24c3]
           +-1f.5  Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller [8086:24c5]
           \-1f.6  Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller [8086:24c6]
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;cat /proc/cpuinfo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 9
model name      : Intel(R) Pentium(R) M processor 1500MHz
stepping        : 5
cpu MHz         : 1500.000
cache size      : 1024 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 tm pbe up bts est tm2
bogomips        : 2997.72
clflush size    : 64
power management:
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;!--&lt;/p&gt;
&lt;h3&gt;ACPI&lt;/h3&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;acpitool&lt;/strong&gt;
  Battery #1     : charging, 91.15%, 00:40:19
  AC adapter     : on-line 
  Thermal zone 1 : ok, 57 C

  $ &lt;strong&gt;acpitool -e&lt;/strong&gt;
  Kernel version : 2.6.28-1-686   -    ACPI version : 20080926
  -----------------------------------------------------------
  Battery #1     : present
    Remaining capacity : 24440 mWh, 94.47%, 00:33:10
    Design capacity    : 71280 mWh
    Last full capacity : 25870 mWh, 36.29% of design capacity
    Capacity loss      : 63.71%
    Present rate       : 2586 mW
    Charging state     : charging
    Battery type       : rechargeable, LION
    Model number       : IBM-08K8198
    Serial number      :   500

  AC adapter     : on-line 
  Fan            : enabled
  Fan Speed      : 3699 RPM

  CPU type               : Intel(R) Pentium(R) M processor 1500MHz 
  Min/Max frequency      : 800/1500 MHz
  Current frequency      : 800 MHz
  Frequency governor     : ondemand 
  Freq. scaling driver   : acpi-cpufreq 
  Cache size             : 1024 KB
  Bogomips               : 1598.72 
  Processor ID           : 0
  Bus mastering control  : yes
  Power management       : yes
  Throttling control     : yes
  Limit interface        : yes
  Active C-state         : C0
  C-states (incl. C0)    : 4
  Usage of state C1      : 5864 (0.0 %)
  Usage of state C2      : 13243351 (100.0 %)
  Usage of state C3      : 5 (0.0 %)
  T-state count          : 8
  Active T-state         : T0


  Thermal zone 1 : ok, 49 C
  Trip points : 
  ------------- 
  critical (S5):           93 C
  passive:                 89 C: tc1=8 tc2=5 tsp=600 devices= CPU 


   Device	S-state	  Status   Sysfs node
  ---------------------------------------
  1. LID	  S3	*enabled   
  2. SLPB	  S3	*enabled   
  3. PCI0	  S3	 disabled  no-bus:pci0000:00
  4. UART	  S3	 disabled  pnp:00:0a
  5. PCI1	  S4	 disabled  pci:0000:00:1e.0
  6. USB0	  S3	 disabled  pci:0000:00:1d.0
  7. USB1	  S3	 disabled  pci:0000:00:1d.1
  8. AC9M	  S4	 disabled  pci:0000:00:1f.6
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;br /&gt;
--&gt;&lt;/p&gt;
&lt;p&gt;All in all it's a really nice piece of hardware, and it works without much hassle with recent distros/kernels.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/using-debian-gnu-linux-on-the-ibm-lenovo-thinkpad-t40p#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2221">2373-cg6</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2220">ath5k</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/36">free software</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/528">gnu</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1042">hardware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1591">ibm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/203">laptop</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2184">lenovo</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/204">notebook</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2219">t40p</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2218">thinkpad</category>
 <pubDate>Thu, 30 Apr 2009 19:20:53 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1486 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Resolving mysterious kernel/firmware problems via apt-get install firmware-linux</title>
 <link>http://www.hermann-uwe.de/blog/resolving-mysterious-kernel-firmware-problems-via-apt-get-install-firmware-linux</link>
 <description>&lt;p&gt;If you recently upgraded your kernel to the 2.6.29 Debian package, you might have noticed some (e.g. graphics) drivers stopped working or are working slower. In my case, this was the &lt;strong&gt;radeon&lt;/strong&gt; driver, which inexplicably seemed to cause lots of slowdowns in some applications and games. A quick look into &lt;strong&gt;dmesg&lt;/strong&gt; revealed the reason:&lt;/p&gt;
&lt;pre&gt;
  [drm] Initialized radeon 1.29.0 20080528 on minor 0
  agpgart-intel 0000:00:00.0: AGP 2.0 bridge
  agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
  pci 0000:01:00.0: putting AGP V2 device into 4x mode
  [drm] Setting GART location based on new memory map
  &lt;strong&gt;[drm] Loading R200 Microcode
  platform radeon_cp.0: firmware: requesting radeon/R200_cp.bin
  radeon_cp: Failed to load firmware "radeon/R200_cp.bin"
  [drm:radeon_do_init_cp] *ERROR* Failed to load firmware!&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
As noted in the &lt;a href="http://packages.debian.org/changelogs/pool/main/l/linux-2.6/current/changelog"&gt;changelog file&lt;/a&gt;, the radeon firmware &lt;strong&gt;R200_cp.bin&lt;/strong&gt; has been removed from the kernel, and is now available in the separate &lt;a href="http://packages.qa.debian.org/f/firmware-nonfree.html"&gt;firmware-linux Debian package&lt;/a&gt;. So the simple fix for this issues is:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;apt-get install firmware-linux&lt;/strong&gt;
  $ &lt;strong&gt;dpkg -L firmware-linux | grep R200_cp.bin&lt;/strong&gt;
  /lib/firmware/radeon/R200_cp.bin
&lt;/pre&gt;&lt;p&gt;
After restarting X, the dmesg output looks more sane again:&lt;/p&gt;
&lt;pre&gt;
  agpgart-intel 0000:00:00.0: AGP 2.0 bridge
  agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
  pci 0000:01:00.0: putting AGP V2 device into 4x mode
  [drm] Setting GART location based on new memory map
  &lt;strong&gt;[drm] Loading R200 Microcode
  platform radeon_cp.0: firmware: requesting radeon/R200_cp.bin
  [drm] writeback test succeeded in 2 usecs&lt;/strong&gt;
&lt;/pre&gt;</description>
 <comments>http://www.hermann-uwe.de/blog/resolving-mysterious-kernel-firmware-problems-via-apt-get-install-firmware-linux#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1610">binary</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1612">blob</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1664">firmware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1726">image</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/335">kernel</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2214">nonfree</category>
 <pubDate>Wed, 15 Apr 2009 13:11:48 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1481 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Coreboot hacking: How to solder a PLCC socket on your board</title>
 <link>http://www.hermann-uwe.de/blog/coreboot-hacking-how-to-solder-a-plcc-socket-on-your-board</link>
 <description>&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1469"&gt;&lt;img src="http://hermann-uwe.de/files/images/desoldering_station.preview.jpg" width="200" height="150" align="right" hspace="5" alt="Desoldering station." /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When trying to port &lt;a href="http://www.coreboot.org"&gt;coreboot&lt;/a&gt; (previously LinuxBIOS) to a new mainboard you're often confronted with a big problem: the BIOS/ROM chip on the respective motherboard is soldered onto the board (i.e., not in a socket).&lt;/p&gt;
&lt;p&gt;This means that you cannot easily (hot-)swap the chip during development or for recovery purposes. So you basically have &lt;strong&gt;exactly one&lt;/strong&gt; try to flash the ROM chip with a fully working/booting coreboot image. If that goes wrong your board is bricked.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1470"&gt;&lt;img src="http://hermann-uwe.de/files/images/desoldering_the_chip.preview.jpg" width="200" height="150" align="right" hspace="5" alt="Desoldering the chip" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This makes it pretty much impossible to develop a coreboot port for such boards (and soldered-on ROM chips are becoming more and more common, unfortunately).&lt;/p&gt;
&lt;p&gt;However, I've recently tried to replace the soldered-on (PLCC) ROM chip on one of my boards with a socket. What sounds pretty scary at first, especially given that I have almost non-existant soldering skills, turned out to be really not that hard. Also, it can be done with relatively cheap and readily available equipment.&lt;/p&gt;
&lt;p&gt;I have written a short &lt;a href="http://www.coreboot.org/Soldering_a_socket_on_your_board"&gt;HOWTO for desoldering chips and soldering on sockets&lt;/a&gt; in the coreboot wiki, and also finished a video showing most of the process, which I hope will be helpful for others:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1471"&gt;&lt;img src="http://hermann-uwe.de/files/images/place_plcc_socket.jpg" width="200" height="149" align="right" hspace="5" alt="Place the PLCC chip" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.archive.org/details/CorebootHackingHowToSolderAPlccSocketOnYourBoard"&gt;archive.org&lt;/a&gt;: &lt;a href="http://www.archive.org/download/CorebootHackingHowToSolderAPlccSocketOnYourBoard/coreboot_hacking_how_to_solder_a_plcc_socket_on_your_board_small.ogv"&gt;Ogg Theora, small&lt;/a&gt; (32 MB), &lt;a href="http://www.archive.org/download/CorebootHackingHowToSolderAPlccSocketOnYourBoard/coreboot_hacking_how_to_solder_a_plcc_socket_on_your_board.ogv"&gt;Ogg Theora, big&lt;/a&gt; (154 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=30x4oxyczH4"&gt;Youtube&lt;/a&gt; (FLV, small, 13 MB).  Direct download:&lt;br /&gt;
&lt;pre&gt;
  $ &lt;strong&gt;youtube-dl -t 'http://www.youtube.com/watch?v=30x4oxyczH4'&lt;/strong&gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blip.tv/file/1933817/"&gt;blip.tv&lt;/a&gt;: &lt;a href="http://blip.tv/file/get/UweHermann-CorebootHackingHowToSolderAPLCCSocketOnYourBoard919.flv"&gt;FLV, small&lt;/a&gt; (20 MB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;br /&gt;
&lt;param name="movie" value="http://www.youtube.com/v/30x4oxyczH4&amp;amp;hl=de&amp;amp;fs=1"&gt;&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/30x4oxyczH4&amp;amp;hl=de&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;The video is CC-BY-SA 3.0, music is taken from &lt;a href="http://ccmixter.org/files/spinmeister/18931"&gt;ccmixter.org&lt;/a&gt; and is CC-NC 3.0 licensed. Video editing was done using &lt;a href="http://www.kinodv.org"&gt;Kino&lt;/a&gt; (which uses &lt;strong&gt;ffmpeg2theora&lt;/strong&gt; for Ogg Theora export).&lt;/p&gt;
&lt;p&gt;I also tried to upload the video to &lt;a href="http://www.vimeo.com"&gt;Vimeo&lt;/a&gt;, but first they told me to install the Flash 10 abomination (and there's no way I will do that). After browsing the help/forum pages a bit I found a &lt;a href="http://vimeo.com/upload/video/basic"&gt;traditional, non-flash upload form&lt;/a&gt;, but &lt;strong&gt;that&lt;/strong&gt; then tells me that I cannot upload Ogg Theora videos. WTF?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hermann-uwe.de/node/1472"&gt;&lt;img src="http://hermann-uwe.de/files/images/soldering_the_socket.jpg" width="200" height="150" align="right" hspace="5" alt="Soldering the socket" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.vimeo.com/forums/topic:3576"&gt;Ogg Theora video support&lt;/a&gt; feature request has been open for more that a year. Until that issue is fixed I'll just use other video services, thanks...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/coreboot-hacking-how-to-solder-a-plcc-socket-on-your-board#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2203">aoyue</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1026">bios</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2198">chip</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1845">coreboot</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2202">desolder</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1664">firmware</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/228">hacking</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1525">linuxbios</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2197">plcc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1796">rom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2199">socket</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2200">solder</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2201">wick</category>
 <pubDate>Mon, 30 Mar 2009 15:39:45 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1468 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Suspend/resume with different kernels: bad idea</title>
 <link>http://www.hermann-uwe.de/blog/suspend-resume-with-different-kernels%3A-bad-idea</link>
 <description>&lt;p&gt;Note to self: If you do suspend-to-disk with 2.6.24, do &lt;strong&gt;not&lt;/strong&gt; try to resume with 2.6.28 or any other version of the kernel, it won't work.&lt;/p&gt;
&lt;p&gt;When asked whether you want to continue, say "no" and reboot with the correct kernel, in order to not lose your suspended data...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/suspend-resume-with-different-kernels%3A-bad-idea#comments</comments>
 <pubDate>Sun, 29 Mar 2009 21:52:08 +0200</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1467 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Using Debian GNU/Linux on the Lenovo IdeaPad S9e netbook</title>
 <link>http://www.hermann-uwe.de/blog/using-debian-gnu-linux-on-the-lenovo-ideapad-s9e-netbook</link>
 <description>&lt;p&gt;&lt;a href="http://tuxmobil.org/ibm.html"&gt;&lt;img src="/misc/icons/tuxmobil.png" stle="width:88; height:31; border:0" alt="TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones"&gt;&lt;/a&gt; &lt;a href="http://www.linux-on-laptops.com/ibm.html"&gt;&lt;img src="/misc/icons/linux-on-laptops.png" alt="Linux On Laptops" style="width:110; height:36; border:0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1463"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/lenovo_ideapad_s9e_netbook.preview.jpg" width="280" height="210" align="right" hspace="5" alt="Lenovo Ideapad S9e netbook" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I recently got my hands on a &lt;a href="http://www.thinkwiki.org/wiki/4187-42G"&gt;Lenovo IdeaPad S9e&lt;/a&gt; netbook for a short amount of time (I don't own it), so I did a few tests with Debian unstable (more or less Lenny right now) and a Linux 2.6.28 kernel on it, see results below.&lt;/p&gt;
&lt;p&gt;The machine type is &lt;strong&gt;4187-42G&lt;/strong&gt;, and it features an Intel Atom N270 CPU (with HyperThreading) at 1.6 GHz, 1 GB of DDR2 RAM, an 80 GB SATA drive, an 8.9" WSVGA 1024x600 (glossy) screen, VGA port, LAN, wifi, bluetooth, 2xUSB, SD card slot, PCI ExpressCard slot, built-in microphone, and a webcam.&lt;/p&gt;
&lt;h3&gt;BIOS&lt;/h3&gt;
&lt;p&gt;You can enter the BIOS by pressing &lt;strong&gt;F2&lt;/strong&gt;, the boot menu by pressing &lt;strong&gt;F12&lt;/strong&gt; during boot. Booting from USB works fine on this netbook. There's a &lt;a href="http://en.wikipedia.org/wiki/Splashtop"&gt;Splashtop&lt;/a&gt; installation on the netbook (called "Lenovo Quickstart" here) which you can disable in the BIOS.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;There's no CD-ROM drive, so the simplest way is to use a USB thumb drive for installation. Here's how you can prepare one containing a Lenny installer (assuming your USB thumb drive is /dev/sda):&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;wget http://cdimage.debian.org/debian-cd/5.0.1/i386/iso-cd/debian-501-i386-netinst.iso&lt;/strong&gt;
  $ &lt;strong&gt;wget http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz&lt;/strong&gt;
  $ &lt;strong&gt;gunzip boot.img.gz&lt;/strong&gt;
  $ &lt;strong&gt;dd if=boot.img of=/dev/sda1&lt;/strong&gt;
  $ &lt;strong&gt;mount -t vfat /dev/sda1 /mnt&lt;/strong&gt;
  $ &lt;strong&gt;cp debian-500-i386-netinst.iso /mnt&lt;/strong&gt;
  $ &lt;strong&gt;umount /mnt&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;If the above USB thumb drive doesn't boot correctly (which it did not in my case: GRUB error 17) it's probably because of a messed-up MBR. This is how you can fix it:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;apt-get install mbr&lt;/strong&gt;
  $ &lt;strong&gt;install-mbr /dev/sda&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1464"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/lenovo_ideapad_s9e_debian_installer.preview.jpg" width="280" height="210" align="right" hspace="5" alt=" Lenovo Ideapad S9e Debian installation" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then insert the USB thumb drive in the Lenovo IdeaPad S9e, choose USB boot in the BIOS, and start the installer. Most of the process works as usual, the only small difference is that you might want to load the "parted" installer module in order to resize the Windows-partition on the disk (if you want to keep it) to make space for Linux. The second (fat32) partition seems to keep a restore image and/or the Splashtop stuff, not sure.&lt;/p&gt;
&lt;h3&gt;Audio&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;snd_hda_intel&lt;/strong&gt; driver. The hardware is onboard audio in the southbridge (82801G / ICH7) and uses the &lt;strong&gt;Realtek ALC269&lt;/strong&gt; codec. If some programs don't have working audio, try &lt;strong&gt;modprobe snd-pcm-oss&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Built-in microphone&lt;/h3&gt;
&lt;p&gt;Untested so far.&lt;/p&gt;
&lt;h3&gt;Bluetooth&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;bluetooth&lt;/strong&gt; and &lt;strong&gt;btusb&lt;/strong&gt; driver. The laptop's Bluetooth device is USB-attached internally and shows up in lsusb as:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lsusb&lt;/strong&gt;
  Bus 003 Device 002: ID 0a5c:2150 Broadcom Corp.
  $ &lt;strong&gt;dmesg&lt;/strong&gt;
  usb 3-2: Product: BCM2046 Bluetooth Device
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;After &lt;strong&gt;modprobe btusb&lt;/strong&gt; you can use &lt;strong&gt;hcitool / hciconfig&lt;/strong&gt; etc. as usual, and/or enable more related stuff with &lt;strong&gt;/etc/init.d/bluetooth start&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Sensors&lt;/h3&gt;
&lt;p&gt;The lm-sensors script detects the &lt;strong&gt;lm75&lt;/strong&gt;, &lt;strong&gt;eeprom&lt;/strong&gt;, &lt;strong&gt;i2c-dev&lt;/strong&gt;, and &lt;strong&gt;i2c_i801&lt;/strong&gt; modules. The following is the 'sensors' output:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;sensors&lt;/strong&gt;
  acpitz-virtual-0
  Adapter: Virtual device
  temp1:       +36.0 °C  (crit = +95.0 °C)    
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;The hard drive temperature can be viewed with:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;hddtemp /dev/sda&lt;/strong&gt;
  /dev/sda: FUJITSU MHZ2080BH G1: 44 °C
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;HPET&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/I/O_Controller_Hub#ICH7"&gt;Intel ICH7 southbridge&lt;/a&gt; in this laptop supports &lt;a href="http://en.wikipedia.org/wiki/High_Precision_Event_Timer"&gt;High Performance Event Timers (HPET)&lt;/a&gt; which allows for more power savings and thus improved battery life.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;dmesg | grep -i hpet&lt;/strong&gt;
  ACPI: HPET 3F6E1E41, 0038 (r1 INTEL  CALISTGA  6040000 LOHR       5A)
  ACPI: HPET id: 0x8086a201 base: 0xfed00000
  hpet clockevent registered
  HPET: 3 timers in total, 0 timers will be used for per-cpu timer
  hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
  hpet0: 3 comparators, 64-bit 14.318180 MHz counter
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;You can check the wakeups-per-second with &lt;a href="http://packages.qa.debian.org/p/powertop.html"&gt;powertop&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;SD card slot&lt;/h3&gt;
&lt;p&gt;Works out of the box. It seems to be attached via USB internally (&lt;strong&gt;usb-storage&lt;/strong&gt; driver).&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lsusb&lt;/strong&gt;
  Bus 001 Device 004: ID 0bda:0158 Realtek Semiconductor Corp. Mass Stroage Device
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;PCI ExpressCard slot&lt;/h3&gt;
&lt;p&gt;Untested so far.&lt;/p&gt;
&lt;h3&gt;ACPI&lt;/h3&gt;
&lt;p&gt;Works fine, &lt;a href="http://hermann-uwe.de/blog/using-debian-gnu-linux-on-the-lenovo-ideapad-s9e-netbook#comment-75225"&gt;see comments&lt;/a&gt; for "acpitool" output.&lt;/p&gt;
&lt;h3&gt;Network card&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;tg3&lt;/strong&gt; driver.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;modprobe tg3&lt;/strong&gt;
  tg3.c:v3.94 (August 14, 2008)
  tg3 0000:02:00.0: PCI INT A -&gt; GSI 16 (level, low) -&gt; IRQ 16
  tg3 0000:02:00.0: setting latency timer to 64
  eth0: Tigon3 [partno(BCM95906) rev c002 PHY(5906)] (PCI Express) 10/100Base-TX Ethernet 00:11:22:33:44:55
  eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] WireSpeed[0] TSOcap[0]
  eth0: dma_rwctrl[76180000] dma_mask[64-bit]
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;Touchpad&lt;/h3&gt;
&lt;p&gt;Works out of the box, both in X as well as in the console using &lt;strong&gt;gpm&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;dmesg&lt;/strong&gt;
  Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1c0b1, caps: 0xd04731/0xa40000
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;Suspend-to-disk and suspend-to-RAM&lt;/h3&gt;
&lt;p&gt;I'm using the &lt;a href="http://packages.qa.debian.org/h/hibernate.html"&gt;hibernate Debian package&lt;/a&gt;. You can explicitly force the usage of either method in &lt;strong&gt;/etc/hibernate/hibernate.conf&lt;/strong&gt; by uncommenting the respective lines.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  TryMethod disk.conf
  # TryMethod ram.conf
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Suspend does not yet work out of the box, however, as the machine is unknown:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;s2ram -n&lt;/strong&gt;
  Machine unknown
  This machine can be identified by:
      sys_vendor   = "LENOVO                          "
      sys_product  = "418742G         "
      sys_version  = "Lenovo                  "
      bios_version = "14CN51WW  "
  See http://suspend.sf.net/s2ram-support.html for details.
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;After a few test I found that &lt;strong&gt;s2ram -f -a 3&lt;/strong&gt; works fine (tested from console only so far). Now this needs to be integrated upstream and in the Debian package (I'll file a bug report). &lt;strong style="color:red"&gt;Update:&lt;/strong&gt; Submitted &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520848"&gt;bug #520848&lt;/a&gt;, and an &lt;a href="http://sourceforge.net/mailarchive/forum.php?thread_name=20090323181906.GA23189%40greenwood&amp;amp;forum_name=suspend-devel"&gt;email to the upstream mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Wireless&lt;/h3&gt;
&lt;p&gt;There doesn't seem to be a mainline driver for the &lt;strong&gt;Broadcom BCM4312&lt;/strong&gt; wifi card in the laptop, yet:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lspci -nn&lt;/strong&gt;
  05:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g [14e4:4315] (rev 01)
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Neither the &lt;strong&gt;b43&lt;/strong&gt; nor the &lt;strong&gt;b43legacy&lt;/strong&gt; drivers work as of 2.6.28. For now, one of two possible options is to build a (partly non-free) driver provided by Broadcom from source (option 2 would be to use ndiswrapper, I guess, but that's untested):&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;wget http://people.debian.org/~adamm/kernel/linux-kbuild-2.6.28_2.6.28-0.1_i386.deb&lt;/strong&gt;
  $ &lt;strong&gt;dpkg -i linux-kbuild-2.6.28_2.6.28-0.1_i386.deb&lt;/strong&gt; (currently needed in unstable due to &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=518115"&gt;bug #518115&lt;/a&gt;)
  $ &lt;strong&gt;apt-get install build-essential linux-headers-2.6.28-1-686&lt;/strong&gt;
  $ &lt;strong&gt;mkdir temp; cd temp&lt;/strong&gt;
  $ &lt;strong&gt;wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5_10_79_10.tar.gz&lt;/strong&gt;
  $ &lt;strong&gt;tar xfvz hybrid-portsrc-x86_32-v5_10_79_10.tar.gz&lt;/strong&gt;
  $ &lt;strong&gt;make -C /lib/modules/`uname -r`/build M=`pwd` clean&lt;/strong&gt;
  $ &lt;strong&gt;make -C /lib/modules/`uname -r`/build M=`pwd` modules&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;If that worked, you can load the driver via:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;rmmod bcm43xx; rmmod b43; rmmod b43legacy&lt;/strong&gt; (you could also permanently blacklist these modules)
  $ &lt;strong&gt;modprobe ieee80211_crypt_tkip&lt;/strong&gt;
  $ &lt;strong&gt;insmod ./wl.ko&lt;/strong&gt;
  $ &lt;strong&gt;dmesg&lt;/strong&gt;
  wl: module license '' taints kernel.
  wl 0000:05:00.0: PCI INT A -&gt; GSI 18 (level, low) -&gt; IRQ 18
  wl 0000:05:00.0: setting latency timer to 64
  eth1: Broadcom BCM4315 802.11 Wireless Controller 5.10.79.10
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;You can now run &lt;strong&gt;iwconfig&lt;/strong&gt;, &lt;strong&gt;iwlist&lt;/strong&gt;, etc. from the command line, or use some GUIs such as &lt;a href="http://packages.debian.org/sid/kwifimanager"&gt;kwifimanager&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In order to disable wireless, run:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;rmmod wl&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;So far, I only tested WEP (but not WPA).&lt;/p&gt;
&lt;h3&gt;CPU frequency scaling&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;acpi_cpufreq&lt;/strong&gt; driver. Use &lt;strong&gt;cpufreq-set -c 0 -g performance&lt;/strong&gt; if you need full CPU power, &lt;strong&gt;cpufreq-set -c 0 -g powersave&lt;/strong&gt; otherwise. Use &lt;strong&gt;-c 1&lt;/strong&gt; to do the same with the other CPU/core.&lt;/p&gt;
&lt;h3&gt;PC speaker&lt;/h3&gt;
&lt;p&gt;Works fine out of the box using the &lt;strong&gt;pcspkr&lt;/strong&gt; module, tested with &lt;a href="http://packages.qa.debian.org/b/beep.html"&gt;beep&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Graphics card&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;intel&lt;/strong&gt; X.org driver. &lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;xrandr&lt;/strong&gt;
  Screen 0: minimum 320 x 200, current 1024 x 600, maximum 1024 x 1024
  &lt;strong&gt;VGA&lt;/strong&gt; disconnected (normal left inverted right x axis y axis)
  &lt;strong&gt;LVDS&lt;/strong&gt; connected &lt;strong&gt;1024x600+0+0&lt;/strong&gt; (normal left inverted right x axis y axis) 195mm x 113mm
     &lt;strong&gt;1024x600      60.0*+&lt;/strong&gt;
     800x600        60.3  
     640x480        59.9  
  &lt;strong&gt;TV&lt;/strong&gt; disconnected (normal left inverted right x axis y axis)
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;DRI works out of the box with the (mainline, open-source) driver:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;glxinfo | grep direct&lt;/strong&gt;
  direct rendering: Yes
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;If you attach an external monitor or projector, you can enable it using &lt;strong&gt;xrandr&lt;/strong&gt; as usual:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;xrandr --output VGA --auto&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;You can also use a dual-head setup by adding this to your "Screen" section in &lt;strong&gt;/etc/X11/xorg.conf&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  SubSection "Display"
    Virtual 2048 2048
  EndSubSection
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;After restarting the X server, you can play with xrandr and move the external screen (VGA) "below" the laptop's LCD screen (LVDS) for a simple dual-head setup. The GUI tools &lt;a href="http://packages.debian.org/sid/arandr"&gt;arandr&lt;/a&gt; or &lt;a href="http://packages.debian.org/sid/grandr"&gt;grandr&lt;/a&gt; are probably a bit simpler to use than plain command line xrandr.&lt;/p&gt;
&lt;h3&gt;USB&lt;/h3&gt;
&lt;p&gt;Works fine, of course. The only small problem is that there are only two USB ports, more would have been better.&lt;/p&gt;
&lt;h3&gt;Disk drive&lt;/h3&gt;
&lt;p&gt;Works fine, it's an 80 GB SATA drive.&lt;/p&gt;
&lt;h3&gt;Webcam&lt;/h3&gt;
&lt;p&gt;Works out of the box using the &lt;strong&gt;uvcvideo&lt;/strong&gt; driver. &lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lsusb&lt;/strong&gt;
  Bus 001 Device 005: ID 5986:0141 Acer, Inc
  $ &lt;strong&gt;modprobe uvcvideo&lt;/strong&gt;
  uvcvideo: Found UVC 1.00 device Lenovo EasyCamera (5986:0141)
  input: Lenovo EasyCamera as /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/input/input9
  usb 1-3: New USB device found, idVendor=5986, idProduct=0141
  usb 1-3: New USB device strings: Mfr=3, Product=1, SerialNumber=0
  usb 1-3: Product: Lenovo EasyCamera
  usb 1-3: Manufacturer: BISON Corporation
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;You can use &lt;a href="http://packages.qa.debian.org/l/luvcview.html"&gt;luvcvideo&lt;/a&gt; for webcam viewing.&lt;/p&gt;
&lt;h3&gt;Battery&lt;/h3&gt;
&lt;p&gt;Lasts for ca. 3.5 hours, probably less if the system is under high load.&lt;/p&gt;
&lt;h3&gt;Special keys&lt;/h3&gt;
&lt;p&gt;Fn+CursorUp / Fn+CursorDown (brightness), Fn+ESC (enable/disable webcam), Fn+F1 (sleep mode), Fn+F2 (enable/disable TFT backlight), Fn+F6 (enable/disable thouchpad), Fn+F7 (Num lock), Fn+F8 (scroll lock), and Fn+F11 (F12 key) all work fine.&lt;/p&gt;
&lt;p&gt;Fn+F3, Fn+F5, Fn+F9, Fn+F10, and all other special keys are untested.&lt;/p&gt;
&lt;h3&gt;LEDs&lt;/h3&gt;
&lt;p&gt;The power, disk activity, CAPS lock, Num lock, and battery charging LEDs all work fine out of the box.&lt;/p&gt;
&lt;h3&gt;lspci -tvnn&lt;/h3&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  -[0000:00]-+-00.0  Intel Corporation Mobile 945GME Express Memory Controller Hub [8086:27ac]
           +-02.0  Intel Corporation Mobile 945GME Express Integrated Graphics Controller [8086:27ae]
           +-02.1  Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller [8086:27a6]
           +-1b.0  Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller [8086:27d8]
           +-1c.0-[0000:02]----00.0  Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express [14e4:1713]
           +-1c.1-[0000:03-04]--
           +-1c.2-[0000:05]----00.0  Broadcom Corporation BCM4312 802.11b/g [14e4:4315]
           +-1d.0  Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 [8086:27c8]
           +-1d.1  Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 [8086:27c9]
           +-1d.2  Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 [8086:27ca]
           +-1d.3  Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 [8086:27cb]
           +-1d.7  Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller [8086:27cc]
           +-1e.0-[0000:06]--
           +-1f.0  Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge [8086:27b9]
           +-1f.1  Intel Corporation 82801G (ICH7 Family) IDE Controller [8086:27df]
           +-1f.2  Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller [8086:27c4]
           \-1f.3  Intel Corporation 82801G (ICH7 Family) SMBus Controller [8086:27da]
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;cat /proc/cpuinfo&lt;/h3&gt;
&lt;p&gt;See &lt;a href="http://hermann-uwe.de/blog/using-debian-gnu-linux-on-the-lenovo-ideapad-s9e-netbook#comment-75225"&gt;comments&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.pc.ibm.com/de/notebook/netbook.html?at?de"&gt;Lenovo/IBM announcement&lt;/a&gt; (German), &lt;a href="http://www.pc.ibm.com/de/notebook/s_specs.html"&gt;specs&lt;/a&gt; (German),  &lt;a href="http://www-07.ibm.com/lenovoinfo/hk/ideaPad/sSeries/"&gt;S9e/S10e overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/IdeaPad"&gt;Wikipedia: IdeaPad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://s10lenovo.com/"&gt;s10lenovo.com wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thinkwiki.org/wiki/Category:IdeaPad_S_Series"&gt;Thinkwiki entry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All in all it's a really nice hardware, and it works (more or less) flawlessly without much hassle with recent distros/kernels.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:red"&gt;Update 2009-03-22&lt;/strong&gt;: Updated various sections, added more info. Added resources section.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/using-debian-gnu-linux-on-the-lenovo-ideapad-s9e-netbook#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1007">bluetooth</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2190">broadcom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2192">btusb</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1812">drive</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/528">gnu</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1591">ibm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2185">ideapad</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2189">inch</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1247">install</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2184">lenovo</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2077">netbook</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2187">s10e</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2193">s2ram</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2186">s9e</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1727">sata</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2194">splashtop</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2191">tg3</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2188">thumb</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/958">usb</category>
 <pubDate>Thu, 19 Mar 2009 17:05:07 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1465 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Resizing ext3-on-LVM-on-dmcrypt file systems, moving disk space from one LV to another</title>
 <link>http://www.hermann-uwe.de/blog/resizing-ext3-on-lvm-on-dmcrypt-file-systems-moving-disk-space-from-one-lv-to-another</link>
 <description>&lt;p&gt;Back in 2008 I wrote a small article about &lt;a href="http://hermann-uwe.de/blog/resizing-a-dm-crypt-lvm-ext3-partition"&gt;resizing LVM physical volumes&lt;/a&gt;. I had to do something similar, but slighly more complicated, recently. My /usr logical volume (LV) was getting full on my laptop disk, thus I wanted to shrink another LV and move some of that space to /usr. Here's one way you can do that.&lt;/p&gt;
&lt;p&gt;Requirements: a Live CD containing all required utilities (cryptsetup, LVM tools, resize2fs), I used &lt;a href="http://grml.org/"&gt;grml&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color: red"&gt;Important:&lt;/strong&gt; If you plan to perform any of these steps, make sure you have recent backups! I take no responsibility for any data loss you might experience. You have been warned!&lt;/p&gt;
&lt;p&gt;First, shutdown the laptop and boot using the Live CD. Then, open the dm-crypt device (/dev/hda3 in my case) by entering your passphrase:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cryptsetup luksOpen /dev/hda3 foo&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Activate all (newly available) LVM volume groups in that encrypted device:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;vgchange -a y&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;(maybe you also need a &lt;strong&gt;vgscan&lt;/strong&gt; and/or &lt;strong&gt;lvscan&lt;/strong&gt;, not sure)&lt;/p&gt;
&lt;p&gt;Check how much free space we have for putting into our /usr LV:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;vgdisplay | grep Free&lt;/strong&gt;
  Free  PE / Size       0 / 0   
&lt;/pre&gt;&lt;p&gt;
OK, so we have none. Thus, we need to shrink another LV (/home, in my case) and put that newly freed space into the /usr LV. In order to do that, we have to check the current size of the /home LV:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;mount -t ext3 /dev/vg-whole/lv-home /mnt&lt;/strong&gt;
  $ &lt;strong&gt;df --block-size=1M | grep -C 1 /mnt&lt;/strong&gt;
  $ &lt;strong&gt;umount /mnt&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;(if you know how to find out the size of an ext3 file system without mounting it, please let me know) &lt;strong style="color: red"&gt;Update:&lt;/strong&gt; See comments for suggestions.&lt;/p&gt;
&lt;p&gt;Write down the total amount of 1M chunks of space on the file system (116857 in my case), we'll need that later. Now run 'fsck' on the /home LVM logical volume, which is needed for the 'resize2fs' step afterwards. This will take quite a while.&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;fsck -f /dev/vg-whole/lv-home&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Next step is resizing the ext3 file system in the /home LVM logical volume, making it 1GB smaller than before (of course you must have &gt;= 1 GB of free space on /home for that to work). We use fancy bash calculations to do the math.&lt;/p&gt;
&lt;p&gt;Note: I'm not so sure about the sizes here, in my first attempt something went wrong and resize2fs said "filesystem too small" or the like. Maybe I'm confusing the size units from 'df' and 'resize2fs', or the bash calculation goes wrong? Please leave a comment if you know more!&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;resize2fs /dev/vg-whole/lv-home $((116857-1024))M&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Then, we can safely reduce the LV itself. Note: order is &lt;strong&gt;very important&lt;/strong&gt; here, you must shrink the ext3 filesystem first, and &lt;strong&gt;then&lt;/strong&gt; shrink the LV! Doing it the other way around will destroy your filesystem!&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lvreduce -L -1G /dev/vg-whole/lv-home&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Now that we have 1 GB of free space to spend on LVs, we assign that space to the /usr LVM logical volume like this:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;lvextend -L +1G /dev/vg-whole/lv-usr&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
As usual, we then run 'fsck' on the filesystem in order to be able to use 'resize2fs' to resize it to the biggest possible size (that's the default if resize2fs gets no parameters):&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;fsck -f /dev/vg-whole/lv-usr&lt;/strong&gt;
  $ &lt;strong&gt;resize2fs /dev/vg-whole/lv-usr&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
That's it. You can now shutdown the Live CD system and boot into the normal OS with the new space allocations:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;vgchange -a n&lt;/strong&gt;
  $ &lt;strong&gt;cryptsetup luksClose foo&lt;/strong&gt;
  $ &lt;strong&gt;halt&lt;/strong&gt;
&lt;/pre&gt;</description>
 <comments>http://www.hermann-uwe.de/blog/resizing-ext3-on-lvm-on-dmcrypt-file-systems-moving-disk-space-from-one-lv-to-another#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1588">cryptsetup</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2179">df</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1298">dm-crypt</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/527">ext3</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2181">file system</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2180">fsck</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2176">lv</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2183">lvextend</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1571">lvm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2182">lvreduce</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2174">lvscan</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1147">mount</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1867">resize2fs</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2177">vg</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2172">vgchange</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2175">vgdisplay</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2173">vgscan</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2178">volume</category>
 <pubDate>Tue, 17 Mar 2009 15:58:41 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1461 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Building an ARM cross-toolchain with binutils, gcc, newlib, and gdb from source</title>
 <link>http://www.hermann-uwe.de/blog/building-an-arm-cross-toolchain-with-binutils-gcc-newlib-and-gdb-from-source</link>
 <description>&lt;p&gt;I've been planning to write about building custom ARM toolchains for a while (I used stuff from &lt;a href="http://gnuarm.com/"&gt;gnuarm.com&lt;/a&gt; in the past, but I switched to the lastest and greatest upstream versions at some point). Among other things, recent upstream versions now have  &lt;a href="http://en.wikipedia.org/wiki/ARM_architecture"&gt;ARM Cortex&lt;/a&gt; support.&lt;/p&gt;
&lt;p&gt;First you will need a few base utilities and libs:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Then you can use my tiny &lt;a href="http://hermann-uwe.de/files/build-arm-toolchain"&gt;build-arm-toolchain&lt;/a&gt; script, which will download, build, and install the whole toolchain:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cat build-arm-toolchain&lt;/strong&gt;
  #!/bin/sh
  # Written by Uwe Hermann &amp;lt;uwe@hermann-uwe.de&amp;gt;, released as public domain.

  TARGET=arm-elf                         # Or: TARGET=arm-none-eabi
  PREFIX=/tmp/arm-cortex-toolchain       # Install location of your final toolchain
  PARALLEL="-j 2"                        # Or: PARALLEL=""

  BINUTILS=binutils-2.19.1
  GCC=gcc-4.3.3
  NEWLIB=newlib-1.17.0
  GDB=gdb-6.8

  export PATH="$PATH:$PREFIX/bin"

  mkdir build

  wget -c http://ftp.gnu.org/gnu/binutils/$BINUTILS.tar.bz2
  tar xfvj $BINUTILS.tar.bz2
  cd build
  ../$BINUTILS/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib \
    --with-gnu-as --with-gnu-ld --disable-nls
  make $PARALLEL
  make install
  cd ..
  rm -rf build/* $BINUTILS $BINUTILS.tar.bz2

  wget -c ftp://ftp.gnu.org/gnu/gcc/$GCC/$GCC.tar.bz2
  tar xfvj $GCC.tar.bz2
  cd build
  ../$GCC/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib \
    --enable-languages="c" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
  make $PARALLEL all-gcc
  make install-gcc
  cd ..
  rm -rf build/* $GCC.tar.bz2

  wget -c ftp://sources.redhat.com/pub/newlib/$NEWLIB.tar.gz
  tar xfvz $NEWLIB.tar.gz
  cd build
  ../$NEWLIB/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib \
    --with-gnu-as --with-gnu-ld --disable-nls
  make $PARALLEL
  make install
  cd ..
  rm -rf build/* $NEWLIB $NEWLIB.tar.gz

  # Yes, you need to build gcc again!
  cd build
  ../$GCC/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib \
    --enable-languages="c,c++" --with-newlib --disable-shared --with-gnu-as --with-gnu-ld
  make $PARALLEL
  make install
  cd ..
  rm -rf build/* $GCC

  wget -c ftp://ftp.gnu.org/gnu/gdb/$GDB.tar.bz2
  tar xfvj $GDB.tar.bz2
  cd build
  ../$GDB/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib
  make $PARALLEL
  make install
  cd ..
  rm -rf build $GDB $GDB.tar.bz2
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;The final toolchain is located in &lt;strong&gt;/tmp/arm-cortex-toolchain&lt;/strong&gt; per default, and is ca. 170 MB in size. I explicitly created the build script in such a way that it minimizes the amount of disk space used during the build (ca. 1.2 GB or so, compared to more than 3 GB in the "naive" approach).&lt;/p&gt;
&lt;p&gt;Using the "&lt;strong&gt;-j 2&lt;/strong&gt;" option for make (see script) you can speed up the build quite a bit on multi-core machines (ca. 30 minutes vs. 60 minutes on an AMD X2 dual-core box). Also, you can change the script to build for other target variants if you want to (&lt;strong&gt;arm-elf&lt;/strong&gt; or &lt;strong&gt;arm-none-eabi&lt;/strong&gt;, for example).&lt;/p&gt;
&lt;p&gt;Checkout the blog entry &lt;a href="http://www.esden.net/blog/2009/02/26/how-to-build-arm-gnu-gcc-toolchain-for-mac-os-x/"&gt;How to build arm gnu gcc toolchain for Mac OS X &lt;/a&gt; by &lt;a href="http://www.esden.net"&gt;Piotr Esden-Tempski&lt;/a&gt; for similar instructions for Mac OS X users.&lt;/p&gt;
&lt;p&gt;Oh, and while I'm at it &amp;mdash; does anybody have any idea why there are no pre-built toolchains for embedded (microcontroller) ARM targets in Debian? There are &lt;em&gt;some&lt;/em&gt; toolchains for other microcontroller architectures (avr, m68hc1x, h8300, z80) but not too much other stuff. Is there some specific reason for the missing ARM toolchains (other than "nobody cared enough yet")?&lt;/p&gt;
&lt;p&gt;I have heard about &lt;a href="http://emdebian.org/"&gt;Emdebian&lt;/a&gt;, but from a quick look that seems to be more intended for toolchains with Linux/libc, not for microcontroller firmware (i.e. no MMU, no Linux,  no libc etc.), but maybe I'm wrong?&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/building-an-arm-cross-toolchain-with-binutils-gcc-newlib-and-gdb-from-source#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1809">amd64</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2017">arm</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2167">binutils</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2171">build</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/361">cc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2168">cortex</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1814">gcc</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2169">gdb</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/528">gnu</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/37">mac</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1849">macosx</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2170">newlib</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2166">toolchain</category>
 <pubDate>Wed, 04 Mar 2009 17:13:18 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1460 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>How to use the full size of your (x)term when connecting to some other box serially with minicom</title>
 <link>http://www.hermann-uwe.de/blog/how-to-use-the-full-size-of-your-xterm-when-connecting-to-some-other-box-serially-with-minicom</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1457"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/minicom_terminal_size.preview.png" width="160" height="114" align="right" hspace="5" alt="minicom terminal size 1" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Just as a reminder for myself, as I'll probably need this more often in the future (and maybe it's helpful for others):&lt;/p&gt;
&lt;p&gt;Per default, if you use a big xterm (232x74 in my case) where you start &lt;a href="http://packages.qa.debian.org/m/minicom.html"&gt;minicom&lt;/a&gt;, the $COLUMNS and $LINES environment variables will be 80x24 nevertheless, and those applications which honor them (&lt;a href="http://packages.qa.debian.org/v/vim.html"&gt;vim&lt;/a&gt;, for example) will be too small and not use the full xterm size of 232x74.&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;minicom&lt;/strong&gt;
  $ &lt;strong&gt;echo $COLUMNS; echo $LINES&lt;/strong&gt;
  80
  24
&lt;/pre&gt;&lt;p&gt;
&lt;a href="http://www.hermann-uwe.de/node/1458"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/minicom_terminal_size2.preview.png" width="160" height="114" align="right" hspace="5" alt="minicom terminal size 2" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can fix that like this:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;eval `resize`&lt;/strong&gt;
  $ &lt;strong&gt;echo $COLUMNS; echo $LINES&lt;/strong&gt;
  232
  74
&lt;/pre&gt;&lt;p&gt;
After you do &lt;strong&gt;eval `resize`&lt;/strong&gt; the variables are updated and vim will use the full xterm size. That's all.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/how-to-use-the-full-size-of-your-xterm-when-connecting-to-some-other-box-serially-with-minicom#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2159">columns</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2160">lines</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2161">minicom</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2162">serial</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2165">size</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2163">terminal</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2164">xterm</category>
 <pubDate>Tue, 03 Mar 2009 21:15:53 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1459 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Teeworlds - a fun, fast-paced, open-source, online multiplayer shooter</title>
 <link>http://www.hermann-uwe.de/blog/teeworlds--a-fun-fast-paced-open-source-online-multiplayer-shooter</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1453"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/teeworlds_cft.png" width="160" height="120" align="right" hspace="5" alt="Teeworlds CTF screenshot" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have no idea how such a great open-source game as &lt;a href="http://www.teeworlds.com"&gt;Teeworlds&lt;/a&gt; has been able to exist without me hearing about it until recently.&lt;/p&gt;
&lt;p&gt;Teeworlds is a fast-paced realtime multiplayer shooter. You control a small "Tee" which can hold various weapons (hammer, gun, shotgun, laser-rifle, rocket launcher, ninja-sword) while running and jumping around frantically on the map, trying to frag as many other Tees as you can before you're killed by some other guy. Easy, eh?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1454"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/teeworlds_servers.png" width="160" height="120" align="right" hspace="5" alt="Teeworlds server list screenshot" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There's are many game servers to choose from, as well as various game modes (death match, team death match, capfure the flag and some unofficial "mods"). You can join servers on the Internet, or &lt;a href="http://www.teeworlds.com/trac/teeworlds/wiki/ServerSetup"&gt;create your own server&lt;/a&gt;, be it a public one or a LAN server.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;Usually I would suggest &lt;strong&gt;apt-get install teeworlds&lt;/strong&gt;, but for now the packages in unstable are an older 0.4.x version, whereas upstream released a much-improved 0.5.1 version. I have already &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=517002"&gt;filed a bug&lt;/a&gt; and I'm optimistic there'll be a new version in unstable soon.&lt;/p&gt;
&lt;p&gt;In the mean-time however, you can manually build the game from source via:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;apt-get install zlib-dev libsdl1.2-dev&lt;/strong&gt;
   (maybe also libgl, libglu, and python, if not already installed)
 $ &lt;strong&gt;wget 'http://teeworlds.com/trac/bam/browser/releases/bam-0.2.0.zip?format=raw' -O bam-0.2.0.zip&lt;/strong&gt;
 $ &lt;strong&gt;wget http://teeworlds.com/files/teeworlds-0.5.1-src.zip&lt;/strong&gt;
 $ &lt;strong&gt;unzip bam-0.2.0.zip&lt;/strong&gt;
 $ &lt;strong&gt;unzip teeworlds-0.5.1-src.zip&lt;/strong&gt;
 $ &lt;strong&gt;cd bam-0.2.0&lt;/strong&gt;
 $ &lt;strong&gt;./make_unix.sh&lt;/strong&gt;
 $ &lt;strong&gt;cd ../teeworlds-0.5.1-src&lt;/strong&gt;
 $ &lt;strong&gt;../bam-0.2.0/src/bam release&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1455"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/teeworlds_stats.png" width="160" height="120" align="right" hspace="5" alt="Teeworlds stats screenshot" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Running the game&lt;/h3&gt;
&lt;pre&gt;
 $ &lt;strong&gt;./teeworlds&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
You'll obviously need a working OpenGL/DRI setup (check if "&lt;strong&gt;glxinfo | grep direct&lt;/strong&gt;" says "&lt;strong&gt;Yes&lt;/strong&gt;"), otherwise the game will be way too slow. In case you experience graphics glitches and distortions, first exit the game, then:&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;vi ~/.teeworlds/settings.cfg&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Change the "&lt;strong&gt;gfx_noclip 0&lt;/strong&gt;" option there to "&lt;strong&gt;gfx_noclip 1&lt;/strong&gt;" and restart the game.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1452"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/teeworlds.preview.jpg" width="160" height="102" align="right" hspace="5" alt="Teeworlds DM screenshot" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Firewalls&lt;/h3&gt;
&lt;p&gt;If you use a &lt;a href="http://www.hermann-uwe.de/files/fw_laptop"&gt;local firewall&lt;/a&gt; as I do, you need to open at least ports 8300-8303 (UDP), even better 8300-8310 for more choice in game servers:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;iptables -A OUTPUT -m state --state NEW -p udp --dport 8300:8310 -j ACCEPT&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/small&gt;&lt;/p&gt;
&lt;h3&gt;Further resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://teeworlds.com/"&gt;Official website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://teeworlds.com/forum/"&gt;Forums&lt;/a&gt; (yuck)&lt;/li&gt;
&lt;li&gt;For developers: &lt;a href="http://www.teeworlds.com/trac/teeworlds/timeline"&gt;trac&lt;/a&gt;, &lt;a href="http://www.teeworlds.com/trac/teeworlds/report"&gt;bugs&lt;/a&gt;, &lt;a href="http://www.teeworlds.com/trac/teeworlds/wiki"&gt;wiki&lt;/a&gt;, &lt;a href="http://www.freelists.org/archive/teeworlds"&gt;mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Code repository: &lt;a href="http://www.teeworlds.com/trac/teeworlds/browser"&gt;svn co svn://svn.teeworlds.com/teeworlds/trunk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://teewiki.info/wiki/Main_Page"&gt;Unofficial "Teewiki"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.teeworlds.com/forum/viewtopic.php?id=300"&gt;Lots more useful links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Have fun!&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/teeworlds--a-fun-fast-paced-open-source-online-multiplayer-shooter#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2155">action</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/36">free software</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/115">fun</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/119">game</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2158">multiplayer</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1956">open-source</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1214">shooter</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2157">source</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2156">tee</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2154">teewars</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2153">teeworlds</category>
 <pubDate>Sat, 28 Feb 2009 03:08:11 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1456 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Strange command line of the day</title>
 <link>http://www.hermann-uwe.de/blog/strange-command-line-of-the-day</link>
 <description>&lt;p&gt;Stuff I didn't expect I'd had to type today:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;dpkg-repack dpkg-repack&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Seriously.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/strange-command-line-of-the-day#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/217">command line</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2150">dpkg</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2152">dpkg-repack</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/53">funny</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/41">history</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2151">repack</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1194">strange</category>
 <pubDate>Wed, 25 Feb 2009 01:49:51 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1449 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Debian Lenny 5.0 released</title>
 <link>http://www.hermann-uwe.de/blog/debian-lenny-5-0-released</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1447"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/lennybanner_indexed.png" width="320" height="261" align="right" hspace="5" alt="Debian Lenny banner" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yes, just when you thought the spamming of &lt;a href="http://planet.debian.org"&gt;Planet Debian&lt;/a&gt; with "&lt;a href="http://www.debian.org/News/2009/20090214"&gt;Lenny released&lt;/a&gt;" blog posts had finally stopped, here comes another one :-)&lt;/p&gt;
&lt;p&gt;Let me join the crowd by saying a great "thank you!" to all the people who made this release possible, especially so the release team who organized everything, as well as the thousands of contributors (in one form or another) who helped shape the new release!&lt;/p&gt;
&lt;p&gt;Personally, I'm eager to try out the new &lt;a href="http://packages.debian.org/sid/linux-image-2.6-686"&gt;Linux 2.6.28 kernel package&lt;/a&gt; in unstable now (which have been uploaded today or so, but haven't yet reached my mirror), since they contain mainline wireless drivers for my &lt;a href="http://www.a110wiki.de"&gt;One A110&lt;/a&gt; netbook, among many other things.&lt;/p&gt;
&lt;p&gt;Also, in the next few days I'll probably re-install &lt;a href="http://hermann-uwe.de/blog/playing-audio-on-the-nslu2"&gt;my NSLU2&lt;/a&gt; ARM box using the &lt;a href="http://www.slug-firmware.net/d-dls.php"&gt;latest Lenny installer&lt;/a&gt;, following the &lt;a href="http://www.cyrius.com/debian/nslu2/"&gt;HOWTOs by Martin Michlmayr&lt;/a&gt; (I'll probably write about the experience later). This re-install is long overdue, as I'm currently running the box from an 1GB thumb drive, which works ok, but I'm slowly running out of space. So I'll re-install on a 4 GB (or bigger) thumb drive.&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/debian-lenny-5-0-released#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2146">5</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2149">apt</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/212">apt-get</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2148">deb</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/49">debian</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2147">distribution</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/36">free software</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2145">lenny</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2092">opensource</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/914">release</category>
 <pubDate>Sat, 21 Feb 2009 18:46:38 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1448 at http://www.hermann-uwe.de</guid>
</item>
<item>
 <title>Miro 2.0</title>
 <link>http://www.hermann-uwe.de/blog/miro-2-0</link>
 <description>&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1444"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/miro_announce.preview.jpg" width="640" height="428" align="center" hspace="5" alt="Miro 2.0 announce image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It's been announced at &lt;a href="http://tech.slashdot.org/article.pl?sid=09/02/10/2117234"&gt;quite&lt;/a&gt;  &lt;a href="http://creativecommons.org/weblog/entry/12725"&gt;a&lt;/a&gt; &lt;a href="http://netzpolitik.org/2009/miro-20-ist-da/"&gt;few&lt;/a&gt; &lt;a href="http://www.golem.de/0902/65148.html"&gt;places&lt;/a&gt;, so you probably already heard about it: &lt;a href="http://www.getmiro.com"&gt;Miro 2.0&lt;/a&gt;, the new major release of the cross-platform Internet RSS audio/video aggregator and player &lt;a href="http://www.getmiro.com/blog/2009/02/miro-20-is-here/"&gt;has been released&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Miro is available for &lt;a href="http://www.getmiro.com/download/"&gt;Linux, Windows, and Mac OS X&lt;/a&gt;, the new release on Linux now features a "native" GTK+ widgets UI (instead of the Mozilla-based HTML widgets of earlier versions) and supports both a &lt;a href="http://en.wikipedia.org/wiki/Xine"&gt;xine&lt;/a&gt;, as well as &lt;a href="http://gstreamer.freedesktop.org/"&gt;gstreamer&lt;/a&gt; renderer (for audio and video).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hermann-uwe.de/node/1443"&gt;&lt;img src="http://www.hermann-uwe.de/files/images/miro2_feeds.preview.jpg" width="320" height="227" align="right" hspace="5" alt="Miro 2.0 feed list" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I won't even attempt to list all the improvements and new features, please check the &lt;a href="https://develop.participatoryculture.org/trac/democracy/wiki/2.0ReleaseNotes"&gt;release notes&lt;/a&gt; and the &lt;a href="http://www.getmiro.com/features/"&gt;feature list&lt;/a&gt; for details. Overall more than &lt;a href="http://bugzilla.pculture.org/buglist.cgi?query_format=advanced&amp;amp;product=Miro&amp;amp;target_milestone=2.0&amp;amp;resolution=FIXED&amp;amp;chfieldto=Now"&gt;670&lt;/a&gt; issues have been fixed since the last 1.2.x series release.&lt;/p&gt;
&lt;p&gt;You can also watch &lt;a href="http://blip.tv/file/get/Miropcf-Miro20Introduction771.ogv"&gt;this video&lt;/a&gt; (Ogg Theora, 10 MB) for a short introduction in Miro 2.0.&lt;/p&gt;
&lt;p&gt;Together with the software release, the &lt;a href="http://www.getmiro.com"&gt;getmiro.com&lt;/a&gt; website, as well as the online &lt;a href="http://www.miroguide.com"&gt;Miro Guide&lt;/a&gt; have been competely rewritten and are a lot more usable and better-looking than before.&lt;/p&gt;
&lt;p&gt;Finally, I have &lt;a href="http://packages.qa.debian.org/m/miro/news/20090211T030207Z.html"&gt;uploaded&lt;/a&gt; a new &lt;a href="http://packages.qa.debian.org/m/miro.html"&gt;Miro 2.0 Debian package&lt;/a&gt; to unstable yesterday, by now it should be available from most mirrors. For Debian we're defaulting to xine at the moment, but please consult README.Debian if you want to switch to the gstreamer backend.&lt;/p&gt;
&lt;p&gt;Please test the new release extensively so the few remaining issues (if any) can be ironed out soon...&lt;/p&gt;
</description>
 <comments>http://www.hermann-uwe.de/blog/miro-2-0#comments</comments>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/722">cross-platform</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/379">democracy</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1831">democracy player</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2135">gstreamer</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/721">gtk</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/398">internet</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/60">linux</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1555">macos</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/308">miro</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/643">mozilla</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/266">podcast</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/455">rss</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2136">ui</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2132">vidcast</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/173">video</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2133">video podcast</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/1316">windows</category>
 <category domain="http://www.hermann-uwe.de/taxonomy/term/2134">xine</category>
 <pubDate>Wed, 11 Feb 2009 11:41:28 +0100</pubDate>
 <dc:creator>Uwe Hermann</dc:creator>
 <guid isPermaLink="false">1445 at http://www.hermann-uwe.de</guid>
</item>
</channel>
</rss>
