<?xml version="1.0" encoding="utf-8" ?> 
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/"
     version="2.0">

    <channel>
        <title>Harald Hoyer - Linux</title>
        <link>http://www.harald-hoyer.de/linux/linux</link>
        <description>Linux related items</description>
        <image>        <link>http://www.harald-hoyer.de/linux/linux</link>
            <title>Linux</title> 
            <url>http://www.harald-hoyer.de/logo.png</url>
        </image>
        <language>en-us</language>
        <generator>Plone 2.0</generator>

        
            
                  <item>
                      <title>Pulseaudio and Jackd</title>
                      <link>http://www.harald-hoyer.de/linux/pulseaudio-and-jackd</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/pulseaudio-and-jackd</guid>
                      <description>Howto configure Fedora 9 to run pulseaudio and jackd at the same time.</description>
                      
                          <category>Fedora</category>
                      
                      
                          <category>Pulseaudio</category>
                      
                      
                          <category>Jackd</category>
                      
                      
                          <category>Jack</category>
                      
                      
                          <category>Linux</category>
                      
                      
                          <category>Audio</category>
                      
                      <pubDate>Fri, 11 Jul 2008 09:15:00 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[
<h2>How to setup Fedora 9 to run the Jack Daemon and Pulseaudio<br /></h2>
<h3>As root<br /></h3>
<p>Install the required packages:</p>
<pre># yum install pulseaudio-module-jack alsa-plugins-jack jack-audio-connection-kit 
</pre>
<p>Add yourself to the pulse-rt and jackuser&nbsp; group.</p>
<pre># usermod -a -G pulse-rt,jackuser "&lt;your username&gt;"
</pre>
<p>Edit <em>/etc/security/limits.conf</em>:</p>
<pre>@jackuser - rtprio 20
@jackuser - memlock 4194304
@pulse-rt - rtprio 20
@pulse-rt - nice -20</pre>
<h3>As your normal user<br /></h3>
<p>Create the pulseaudio start file <em>~/jack.pa</em>:</p>
<pre>#!/usr/bin/pulseaudio -nF
#
load-module module-jack-sink
load-module module-jack-source

load-module module-native-protocol-unix
load-module module-volume-restore
load-module module-default-device-restore
load-module module-rescue-streams
load-module module-suspend-on-idle
.ifexists module-gconf.so
.nofail
load-module module-gconf
.fail
.endif
.ifexists module-x11-publish.so
.nofail
load-module module-x11-publish
.fail
.endif</pre>
<p><strong>Relog</strong> to get the new group permissions and limits.</p>
<p>Kill the current pulseaudio daemon:</p>
<pre>$ killall pulseaudio
</pre>
<p>Start the jack daemon (your parameters may be different):</p>
<pre>$ jackd -R -P4 -dalsa -r44100 -p512 -n4 -D -Chw:0 -Phw:0
</pre>
<p>Start the pulseaudio daemon:</p>
<pre>$ pulseaudio -nF ~/jack.pa
</pre>
<p>Now everything should work :) At least for me it does.</p>
<p>What next? See <a href="http://www.passback.org.uk/music/">Professional audio with Fedora</a> and join the <a href="https://fedoraproject.org/wiki/SIGs/AudioCreation">Fedora AudioCreation SIG</a>.</p>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Bootchart Comparison of popular Linux Distributions</title>
                      <link>http://www.harald-hoyer.de/linux/boot-time-distro-comparison</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/boot-time-distro-comparison</guid>
                      <description>This article shows the boot time of some of the most popular Linux distributions.</description>
                      
                          <category>Boot Time</category>
                      
                      
                          <category>SUSE</category>
                      
                      
                          <category>Fedora</category>
                      
                      
                          <category>Mepis</category>
                      
                      
                          <category>Boot</category>
                      
                      
                          <category>LinuxMint</category>
                      
                      
                          <category>openSUSE</category>
                      
                      
                          <category>Ubuntu</category>
                      
                      
                          <category>Linux</category>
                      
                      
                          <category>Linux Mint</category>
                      
                      
                          <category>Bootchart</category>
                      
                      
                          <category>SimplyMepis</category>
                      
                      <pubDate>Tue, 15 Apr 2008 18:00:00 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[
<div class="social">
<script type="text/javascript" src="http://digg.com/tools/diggthis.js"></script>
<script>reddit_url='http://www.harald-hoyer.de/linux/boot-time-distro-comparison'</script>
<script>reddit_title='Bootchart Comparison of popular Linux Distributions'</script>
<script type="text/javascript" src="http://reddit.com/button.js?t=2"></script></div>
<p>These bootcharts were taken one the <strong>same</strong> machine (<a class="external-link" href="http://www.smolts.org/client/show/pub_09fc449c-d5a4-4314-a5be-ee69f70e5cb3">smolt hardware profile</a>).</p>
<p>Note: All distributions were measured after their default installation and after a quick optimization. You may gain less boot time by doing further optimization, but I did not want to get into detail for every distribution. I just turned off all unneeded services, to basically have a networked workstation, with which you can browse the internet.</p>
<p>To compare the distributions, the time measured until the X-Server is starting is displayed in the table. In parantheses, you see a manual measured time from grub prompt to gdm login prompt, which basically defines the user experience.</p>
<table class="plain">
<tbody>
<tr>
<th>Name</th>
<th>Boot Time, default</th>
<th>Boot time, less services</th>
<th>Comments</th>
</tr>
</tbody>
<tbody>
<tr class="odd">
<td>Ubuntu 9.04<br /></td>
<td><a title="jaunty-20090417-1.png" class="internal-link" href="bootcharts/jaunty-20090417-1.png">20s (24s login prompt)<br /></a></td>
<td>&nbsp;</td>
<td>profiled with readahead, some daemons started after X start<br /></td>
</tr>
<tr class="even">
<td>Fedora 11 Snap1 i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a><br /></td>
<td><a title="f11pre-bootchart.png" class="internal-link" href="bootcharts/f11pre-bootchart.png">22s (28s login prompt)</a></td>
<td>&nbsp;</td>
<td>Snap1 updated to rawhide 2009-04-17</td>
</tr>
<tr class="odd">
<td>Ubuntu 7.10<br /></td>
<td><a title="gutsy-20080415-1.png" class="internal-link" href="bootcharts/gutsy-20080415-1.png">21.5s (29s login prompt)<br /></a></td>
<td><a title="gutsy-20080415-6.png" class="internal-link" href="bootcharts/gutsy-20080415-6.png">18.2s</a></td>
<td><a title="ubuntu-modules.txt" class="internal-link" href="bootcharts/ubuntu-modules.txt/view">80 modules loaded</a>, no sendmail/sshd, bootchartd started in initrd</td>
</tr>
<tr class="even">
<td>openSUSE 10.3<br /></td>
<td><a href="bootcharts/suse-bootchart-1.png">28.5s (32s login prompt)<br /></a></td>
<td><a href="bootcharts/suse-bootchart-4.png">28s</a></td>
<td><a title="suse-modules.txt" class="internal-link" href="bootcharts/suse-modules.txt/view">88 modules loaded</a>, early gdm, services started during gdm-login</td>
</tr>
<tr class="odd">
<td>Ubuntu 8.10<br /></td>
<td><a title="inrepid-20090417-1.png" class="internal-link" href="bootcharts/inrepid-20090417-1.png">27s (34s login prompt)</a></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="odd">
<td>Ubuntu 8.10 updated<br /></td>
<td><a title="inrepid-20090417-3.png" class="internal-link" href="bootcharts/inrepid-20090417-3.png">29s</a></td>
<td>&nbsp;</td>
<td>updated on 2009-04-17 and profiled for readahead</td>
</tr>
<tr class="even">
<td>Fedora 10 i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a> updated</td>
<td><a title="f10-bootchart-3.png" class="internal-link" href="bootcharts/f10-bootchart-3.png">29.2s (40s login prompt)</a></td>
<td>&nbsp;</td>
<td>updated on 2009-04-17 + installed readahead</td>
</tr>
<tr class="even">
<td>Fedora 10 i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a> updated</td>
<td><a title="f10-bootchart-2.png" class="internal-link" href="bootcharts/f10-bootchart-2.png">33.5s (45s login prompt)</a></td>
<td>&nbsp;</td>
<td>updated on 2009-04-17</td>
</tr>
<tr class="even">
<td>Fedora 10 i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a><br /></td>
<td><a title="f10-bootchart.png" class="internal-link" href="bootcharts/f10-bootchart.png">40.8s/30.8s</a></td>
<td>&nbsp;</td>
<td>10s wait in nash (scsi settle down "bug")</td>
</tr>
<tr class="odd">
<td>Fedora 9 Final</td>
<td><a title="f9-bootchart-1.png" class="internal-link" href="bootcharts/f9-bootchart-1.png">38.5s (48s login prompt)</a></td>
<td align="center">tbd</td>
<td><br /></td>
</tr>
<tr class="even">
<td>Fedora 9 Preview i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a></td>
<td align="center">—</td>
<td><a title="f9pre-bootchart-5.png" class="internal-link" href="bootcharts/f9pre-bootchart-5.png">26s (39s login prompt)</a></td>
<td>selinux off, rhgb off</td>
</tr>
<tr class="even">
<td>Fedora 9 Preview i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a></td>
<td><a title="f9pre-bootchart-7.png" class="internal-link" href="bootcharts/f9pre-bootchart-7.png">33s (45s login prompt)</a></td>
<td align="center">—</td>
<td>rhgb off</td>
</tr>
<tr class="even">
<td>Fedora 9 Preview i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a></td>
<td><a title="f9pre-bootchart-6.png" class="internal-link" href="bootcharts/f9pre-bootchart-6.png">37.2s (47s login prompt)</a></td>
<td><a title="f9pre-bootchart-4.png" class="internal-link" href="bootcharts/f9pre-bootchart-4.png">34s (45s login prompt)</a></td>
<td><a title="f9pre-modules.txt" class="internal-link" href="bootcharts/f9pre-modules.txt/view">72 modules loaded</a>, selinux enforcing</td>
</tr>
<tr class="odd">
<td>Fedora 8 i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a></td>
<td align="center">—</td>
<td><a title="f8-bootchart-3.svg" class="internal-link" href="bootcharts/f8-bootchart-3.svg">18s (27s login prompt)</a></td>
<td>selinux off, rhgb off<br /></td>
</tr>
<tr class="odd">
<td>Fedora 8 i686 Live <a title="[1] Live CD installed on HD" href="#-1-live-cd">[1]</a></td>
<td><a title="f8-bootchart-1.svg" class="internal-link" href="bootcharts/f8-bootchart-1.svg">33.8s (40s login prompt)</a></td>
<td><a title="f8-bootchart-2.svg" class="internal-link" href="bootcharts/f8-bootchart-2.svg">25.5s (33s login prompt)</a><br /></td>
<td><a title="fedora8-modules.txt" class="internal-link" href="bootcharts/fedora8-modules.txt/view">69 modules loaded</a>, selinux enforcing<br /></td>
</tr>
<tr class="even">
<td>Fedora 7 i386 DVD<br /></td>
<td><a title="f7-bootchart-1.svg" class="internal-link" href="bootcharts/f7-bootchart-1.svg">51s (58s login prompt)</a><br /></td>
<td><a title="f7-bootchart-3.svg" class="internal-link" href="bootcharts/f7-bootchart-3.svg">33.2s (42s login prompt)</a><br /></td>
<td>selinux enforcing<br /></td>
</tr>
<tr class="odd">
<td>PCLinuxOs 2007</td>
<td align="center">—</td>
<td align="center">—</td>
<td>kicker crashed, install crashed, maybe bad medium, will retry later... maybe<br /></td>
</tr>
<tr class="even">
<td>SimplyMepis 7.0<br /></td>
<td><a title="mepis-bootchart.png" class="internal-link" href="bootcharts/mepis-bootchart.png">35.1s&nbsp; (46s login prompt)</a><br /></td>
<td align="center">—</td>
<td>not much to learn from<br /></td>
</tr>
<tr class="odd">
<td>LinuxMint 4.0</td>
<td>same as Ubuntu 7.10<br /></td>
<td>same as Ubuntu 7.10<br /></td>
<td>same as Ubuntu 7.10<br /></td>
</tr>
</tbody>
</table>
<p class="callout"><a name="-1-live-cd"></a>&nbsp;[1] Live CD installed on HD</p>
<p>&nbsp;</p>
<h3>Conclusions</h3>
<ul><li>kernel+nash boot time has a good potential to be optimized in Fedora (pre F10)<br /></li>
<li>a good readahead can improve service starting vastly (see Ubuntu), Fedora's readahead (pre F10) slows down.<br /></li><li>early, parallel login can fool the users perception of boot time</li><li>rhgb is slow for Fedore &lt;= 8<br /></li><li>the less services started, the faster it boots (so obvious :-)</li></ul>
<h3>See also</h3>
<ul><li> <a class="external-link" href="http://www.phoronix.com/scan.php?page=article&amp;item=fedora_boot_perf">http://www.phoronix.com/scan.php?page=article&amp;item=fedora_boot_perf</a></li><li><a class="external-link" href="http://www.phoronix.com/scan.php?page=article&amp;item=ubuntu_boot_perf">http://www.phoronix.com/scan.php?page=article&amp;item=ubuntu_boot_perf</a></li><li><a title="Booting Fedora 8 Test 3 vs openSUSE 10.3" class="internal-link" href="f8t3boot">Booting Fedora 8 Test 3 vs openSUSE 10.3</a><br /></li></ul>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Easy Newsgroup Subscription</title>
                      <link>http://www.harald-hoyer.de/linux/easy-newsgroup-subscribtion</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/easy-newsgroup-subscribtion</guid>
                      <description>How to assign the news: protocol to thunderbird</description>
                      
                          <category>News</category>
                      
                      
                          <category>Linux</category>
                      
                      
                          <category>Thunderbird</category>
                      
                      
                          <category>Fedora</category>
                      
                      
                          <category>Gnome</category>
                      
                      <pubDate>Thu, 03 Apr 2008 06:26:46 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[
<p>Somehow the news: URL handler is not associated on my system.</p>
<p>Here is how you can add the protocol to the Gnome url-handlers.</p>
<p>Download <a title="News Schema for Gnome" class="internal-link" href="news.schema.xml">this file</a> and run gconftool-2:</p>
<pre>$ wget -O news.schema.xml http://www.harald-hoyer.de/linux/news.schema.xml
$ env GCONF_CONFIG_SOURCE="" gconftool-2 --makefile-install-rule news.schema.xml
</pre>
<p>Ready. Now restart Firefox and try some links:</p>
<ul><li><a href="news://news.gmane.org/gmane.linux.redhat.fedora.general">fedora-list mailing list</a></li>
<li><a href="news://news.gmane.org/gmane.linux.redhat.fedora.devel">fedora-devel-list mailing list</a></li></ul>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>The Fedora Community Portal</title>
                      <link>http://www.harald-hoyer.de/linux/the-fedora-community-portal</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/the-fedora-community-portal</guid>
                      <description>The Fedora Community Portal is a forum I built as a gateway to various Fedora mailing lists.</description>
                      
                          <category>Fedora Community Portal</category>
                      
                      
                          <category>Fedora</category>
                      
                      <pubDate>Wed, 02 Apr 2008 03:53:16 +0200</pubDate>
                      

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>A Python Transaction Class</title>
                      <link>http://www.harald-hoyer.de/linux/pythontransactionclass</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/pythontransactionclass</guid>
                      <description>This class allows sub-classes to commit changes to an instance to a history, and rollback to previous states.</description>
                      
                          <category>Python</category>
                      
                      
                          <category>Linux</category>
                      
                      <pubDate>Sun, 23 Mar 2008 01:00:00 +0100</pubDate>
                      
   <content:encoded>
       <![CDATA[<div style="float: right;">
<script type="text/javascript" src="http://digg.com/tools/diggthis.js"></script>
<script>reddit_url='http://www.harald-hoyer.de/linux/pythontransactionclass'</script>
<script type="text/javascript">var dzone_blurb = 'This class allows sub-classes to commit changes to an instance to a history, and rollback to previous states.';</script>
<script type="text/javascript">var dzone_style = '1';</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script>
<script>reddit_title='A Python Transaction Class — This class allows sub-classes to commit changes to an instance to a history, and rollback to previous states.'</script>
<script type="text/javascript" src="http://reddit.com/button.js?t=2"></script></div>
<p>The final class with an extension for __setstate__ and __getstate__ can be found here:&nbsp;<a title="transaction.py" class="internal-link" href="transaction.py">transaction.py</a> and&nbsp;<a title="transaction_test.py" class="internal-link" href="transactionunittests">transaction_test.py</a>.</p>
<p>Also now in the ASPN Python Cookbook as <a class="external-link" href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/551788">http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/551788</a></p>
<p>Now to the story, that led to it:</p>
<p>I have the need for a transaction class in python. Browsing the python cookbook led me to
<a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/284677">a small Transaction class</a></p>
<pre>$ python
Python 2.5.1 (r251:54863, Oct 30 2007, 13:45:26) 
[GCC 4.1.2 20070925 (Red Hat 4.1.2-33)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; class Transaction(object):
...     def __init__(self):
...         self.log = []
...     def commit(self):
...         self.log.append(self.__dict__.copy())
...     def rollback(self):
...         try:
...             self.__dict__.update(self.log.pop(-1))
...         except IndexError:
...             pass
... 
</pre>
<p>Ok, lets have some fun with it.</p>
<pre>&gt;&gt;&gt; class A(Transaction):
...     pass
... 
&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.test = True
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.test = False
&gt;&gt;&gt; a
'self.__dict__ = {'test': False, 'log': [{'test': True, 'log': [...]}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': True, 'log': []}'
</pre>
<p>Nice. Let's see if we can commit and rollback several times.</p>
<pre>&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.test = 1
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.test = 2
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.test = 3
&gt;&gt;&gt; a
'self.__dict__ = {'test': 3, 'log': [{'test': 1, 'log': [...]}, {'test': 2, 'log': [...]}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': 2, 'log': [{'test': 1, 'log': [...]}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'log': []}'
</pre>
<p>Ok.. works :) Let's try some lists.</p>
<pre>&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.test = [ 0, 1 ]
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.test.append(2)
&gt;&gt;&gt; a
'self.__dict__ = {'test': [0, 1, 2], 'log': [{'test': [0, 1, 2], 'log': [...]}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': [0, 1, 2], 'log': []}'
</pre>
<p>Doh! Ok, someone mentioned that already in the comments. copy.deepcopy() is the key.</p>
<pre>&gt;&gt;&gt; import copy
&gt;&gt;&gt; 
&gt;&gt;&gt; class Transaction2(Transaction):
...     def commit(self, **kwargs):
...         self.log.append(copy.deepcopy(self.__dict__))
... 
&gt;&gt;&gt; class A(Transaction2):
...     pass
... 
&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.test = [ 0, 1 ]
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.test.append(2)
&gt;&gt;&gt; a
'self.__dict__ = {'test': [0, 1, 2], 'log': [{'test': [0, 1], 'log': []}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': [0, 1], 'log': []}'
</pre>
<p>Ah, works. Very good. Now another check:</p>
<pre>&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.test = 1
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'log': [{'test': 1, 'log': []}]}'
&gt;&gt;&gt; a.other = 2
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'other': 2, 'log': [{'test': 1, 'log': []}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'other': 2, 'log': []}'
&gt;&gt;&gt; a.other
2
</pre>
<p>Oh, a leftover... seems like self.__dict__ has to be cleared, before the update.</p>
<pre>&gt;&gt;&gt; class Transaction3(Transaction2):
...     def rollback(self, **kwargs):
...         try:
...             state = self.log.pop(-1)
...             self.__dict__.clear()
...             self.__dict__.update(state)
...         except IndexError:
...             pass
... 
&gt;&gt;&gt; class A(Transaction3):
...     pass
... 
&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.test = 1
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'log': [{'test': 1, 'log': []}]}'
&gt;&gt;&gt; a.other = 2
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'other': 2, 'log': [{'test': 1, 'log': []}]}'
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'test': 1, 'log': []}'
&gt;&gt;&gt; a.other
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'A' object has no attribute 'other'
&gt;&gt;&gt;</pre>
<p>Ah, works. Very good. Ok, more tests...</p>
<pre>&gt;&gt;&gt; b = a.ncls 
&gt;&gt;&gt; a.ncls.test = True
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.ncls.test = False
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'ncls': 'self.__dict__ = {'test': True, 'log': []}', 'log': []}'
&gt;&gt;&gt; b
'self.__dict__ = {'test': False, 'log': []}'
</pre>
<p>Oh, what if we work with "b", which stills holds the old value? Maybe we should commit() all our attributes also, traversing through them all?</p>
<p>Ok, here is such a beast:</p>
<pre>&gt;&gt;&gt; class TransactionNew1(object):           
...     def _docommit(self):
...         if "log" not in self.__dict__:
...             self.__dict__["log"] = list()
...             
...         self.__dict__["log"].append(copy.deepcopy(self.__dict__))
...     
...     def _dorollback(self):
...         if "log" not in self.__dict__:
...             return
...         try:
...             state = self.__dict__["log"].pop(-1)
...             self.__dict__.clear()
...             self.__dict__.update(state)
...         except IndexError:
...             pass
...     
...     def commit(self, **kwargs):
...         # commit ourselves, then our childs
...         self._docommit()
...         if kwargs.get("deep", True):
...             for child in self.__dict__.values():
...                 if isinstance(child, self.__class__):
...                     child.commit()
...                     
...     def rollback(self, **kwargs):
...         # rollback our childs, then ourselves
...         if kwargs.get("deep", True):
...             for child in self.__dict__.values():
...                 if isinstance(child, self.__class__):
...                     child.rollback()
...         self._dorollback()
...     
...     def __repr__(self):
...         return "'self.__dict__ = %s'" % self.__dict__
... 
&gt;&gt;&gt; class A(TransactionNew1):
...     pass
... 
&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.ncls = A()
&gt;&gt;&gt; b = a.ncls 
&gt;&gt;&gt; a.ncls.test = True
&gt;&gt;&gt; a.commit()
&gt;&gt;&gt; a.ncls.test = False
&gt;&gt;&gt; a.rollback()
&gt;&gt;&gt; a
'self.__dict__ = {'ncls': 'self.__dict__ = {'test': True}', 'log': []}'
&gt;&gt;&gt; b
'self.__dict__ = {'test': True, 'log': []}'
</pre>
<p>Ok... looks good, but&nbsp; we lost the reference. id(b) != id(a.ncls) ...<em> ( update: this is fixed in the final version )</em></p>
<p>Working with it revealed also:</p>
<pre>&gt;&gt;&gt; a = A()
&gt;&gt;&gt; b = a
&gt;&gt;&gt; for i in xrange(3):
...     b.n = A()
...     b.t = "test"
...     b = b.n
...     a.commit()
... 
&gt;&gt;&gt; a
'self.__dict__ = {'log': [{'n': 'self.__dict__ = {}', 'log': [], 't': 'test'}, {'n': 'self.__dict__ = {'log': [{'log': []}], 't': 'test', 'n': 'self.__dict__ = {}'}', 'log': [{'t': 'test', 'log': [], 'n': 'self.__dict__ = {}'}], 't': 'test'}, {'n': 'self.__dict__ = {'log': [{'log': []}, {'log': [{'log': []}], 't': 'test', 'n': 'self.__dict__ = {}'}], 't': 'test', 'n': 'self.__dict__ = {'log': [{'log': []}], 't': 'test', 'n': 'self.__dict__ = {}'}'}', 'log': [{'t': 'test', 'log': [], 'n': 'self.__dict__ = {}'}, {'t': 'test', 'log': [{'n': 'self.__dict__ = {}', 't': 'test', 'log': []}], 'n': 'self.__dict__ = {'t': 'test', 'log': [{'log': []}], 'n': 'self.__dict__ = {}'}'}], 't': 'test'}], 't': 'test', 'n': 'self.__dict__ = {'t': 'test', 'log': [{'log': []}, {'n': 'self.__dict__ = {}', 't': 'test', 'log': [{'log': []}]}, {'n': 'self.__dict__ = {'log': [{'log': []}], 't': 'test', 'n': 'self.__dict__ = {}'}', 't': 'test', 'log': [{'log': []}, {'log': [{'log': []}], 't': 'test', 'n': 'self.__dict__ = {}'}]}], 'n': 'self.__dict__ = {'t': 'test', 'log': [{'log': []}, {'n': 'self.__dict__ = {}', 't': 'test', 'log': [{'log': []}]}], 'n': 'self.__dict__ = {'log': [{'log': []}]}'}'}'}'
&gt;&gt;&gt; len(str(a))
1192
</pre>
<p>Hmm... seems strange.. Ah, self.log was also copied with copy.deepcopy(). So, we have multiple useless copies.
Let's "pop()" the state from self.__dict__ before the deepcopy.</p>
<pre>&gt;&gt;&gt; class TransactionNew2(TransactionNew1):
...     def _docommit(self):
...         if "log" in self.__dict__:
...             oldstate = self.__dict__.pop("log")
...         else:
...             oldstate = None             
...         state = copy.deepcopy(self.__dict__)
...         if oldstate:
...             state["log"] = oldstate
...         self.__dict__["log"] = state
...     def _dorollback(self):
...         if "log" not in self.__dict__:
...             return
...         try:
...             state = self.__dict__["log"]
...             self.__dict__.clear()
...             self.__dict__.update(state)
...         except IndexError:
...             pass
... 
&gt;&gt;&gt; class A(TransactionNew2):
...     pass
... 
&gt;&gt;&gt; 
&gt;&gt;&gt; a = A()
&gt;&gt;&gt; b = a
&gt;&gt;&gt; for i in xrange(3):
...     b.n = A()
...     b.t = "test"
...     b = b.n
...     a.commit()
... 
&gt;&gt;&gt; a
'self.__dict__ = {'log': {'log': {'log': {'t': 'test', 'n': 'self.__dict__ = {}'}, 't': 'test', 'n': 'self.__dict__ = {'log': {}, 't': 'test', 'n': 'self.__dict__ = {}'}'}, 't': 'test', 'n': 'self.__dict__ = {'log': {'t': 'test', 'n': 'self.__dict__ = {}'}, 't': 'test', 'n': 'self.__dict__ = {'log': {}, 't': 'test', 'n': 'self.__dict__ = {}'}'}'}, 't': 'test', 'n': 'self.__dict__ = {'t': 'test', 'log': {'log': {'t': 'test', 'n': 'self.__dict__ = {}'}, 't': 'test', 'n': 'self.__dict__ = {'log': {}, 't': 'test', 'n': 'self.__dict__ = {}'}'}, 'n': 'self.__dict__ = {'t': 'test', 'log': {'t': 'test', 'n': 'self.__dict__ = {}'}, 'n': 'self.__dict__ = {'log': {}}'}'}'}'
&gt;&gt;&gt; len(str(a))
671
</pre>
<p>Ok, saved us a bit of state length.&nbsp; The final version has:</p>
<pre>&gt;&gt;&gt; a
'self.__dict__ = {'__l': {'__l': {'__l': {'t': 'test'}, 't': 'test'}, 't': 'test'}, 't': 'test', 'n': 'self.__dict__ = {'__l': {'__l': {'t': 'test'}, 't': 'test'}, 't': 'test', 'n': 'self.__dict__ = {'__l': {'t': 'test'}, 't': 'test', 'n': 'self.__dict__ = {'__l': {}}'}'}'}'
&gt;&gt;&gt; len(str(a))
275
</pre>
<p>Now another thing:</p>
<pre>&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.n = a
&gt;&gt;&gt; a.commit()

  File "/usr/lib64/python2.5/copy.py", line 162, in deepcopy
    y = copier(x, memo)
RuntimeError: maximum recursion depth exceeded
</pre>
<p>... Oh, oh! Recursion in commit()... Now we have to check, if we have been there.</p>
<pre>&gt;&gt;&gt; class TransactionNew3(TransactionNew2):
...     def _checksetseen(self, seen):
...         if id(self) in seen:
...             import sys
...             sys.stderr.write("Recursion detected... \n")
...             return True
...         seen.add(id(self))
...         return False
...         
...     def commit(self, **kwargs): # pylint: disable-msg=W0613
...         seen = kwargs.get("_commit_seen", set())
...         if self._checksetseen(seen): 
...             return
...         # commit ourselves, then our childs
...         self._docommit()
...         if kwargs.get("deep", True):
...             for child in self.__dict__.values():
...                 if isinstance(child, self.__class__):
...                     child.commit(_commit_seen = seen)
...                     
...     def rollback(self, **kwargs):
...         seen = kwargs.get("_rollback_seen", set())
...         if self._checksetseen(seen):
...             return
...         # rollback our childs, then ourselves
...         if kwargs.get("deep", True):
...             for child in self.__dict__.values():
...                 if isinstance(child, self.__class__):
...                     child.rollback(_rollback_seen = seen)
...         self._dorollback()
... 
&gt;&gt;&gt; 
&gt;&gt;&gt; class A(TransactionNew3):
...     pass
... 
&gt;&gt;&gt; a = A()
&gt;&gt;&gt; a.n = a
&gt;&gt;&gt; a.commit()
Recursion detected... 
&gt;&gt;&gt; 
</pre>
<p>The final class with an extension for __setstate__ and __getstate__ can be found in the <strong>Related content</strong> section below. Have fun with it :-)</p>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Howto set Console ACLs with PolicyKit and HAL for a Palm device</title>
                      <link>http://www.harald-hoyer.de/linux/console_acls_for_palm</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/console_acls_for_palm</guid>
                      <description>This article describes how to give the console user access to the USB devices of a Palm to sync with pilot-link without any hacky udev rules on Fedora 8.</description>
                      
                          <category>HAL</category>
                      
                      
                          <category>PolicyKit</category>
                      
                      
                          <category>Fedora 8</category>
                      
                      
                          <category>Palm</category>
                      
                      
                          <category>Fedora</category>
                      
                      <pubDate>Thu, 29 Nov 2007 13:50:37 +0100</pubDate>
                      
   <content:encoded>
       <![CDATA[
<p>As pointed out in <a title="external-link" href="https://bugzilla.redhat.com/show_bug.cgi?id=158809#c34">https://bugzilla.redhat.com/show_bug.cgi?id=158809#c34 </a>, the problem syncing with a palm device are the changing devices, once you press the hotsync button. Using the USB support in pilot-xfer with</p>
<pre>$ pilot-xfer -p usb: -l</pre>
<p>instead of the command with a kludgy /dev/pilot symlink</p>
<pre>$ pilot-xfer -p /dev/pilot -l</pre>
<p>fails because the USB device does not have the right permissions. With the introduction of PolicyKit and ACLs for console users in Fedora 8, we can now solve the problem in the right way.</p>
<p>First we create a policy type <em>pda</em> by creating the file <em>/usr/share/hal/fdi/policy/10osvendor/19-palm-acl-management.fdi</em></p>
<p><em></em></p>
<pre># cat &gt; /usr/share/hal/fdi/policy/10osvendor/19-palm-acl-management.fdi &lt;&lt;EOF
&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;deviceinfo version="0.2"&gt;
  &lt;device&gt;
    &lt;match key="info.capabilities" contains="pda"&gt;
      &lt;match key="pda.platform" string="palm"&gt;
        &lt;append key="info.capabilities" type="strlist"&gt;access_control&lt;/append&gt;
        &lt;merge key="access_control.type" type="string"&gt;pda&lt;/merge&gt;
        &lt;merge key="access_control.file" type="copy_property"&gt;pda.palm.hotsync_interface&lt;/merge&gt;
      &lt;/match&gt;
    &lt;/match&gt;
  &lt;/device&gt;
&lt;/deviceinfo&gt;
EOF
</pre>
<p>Now, we have to assign this policy to the device nodes of a device. This can be done by creating policies which look like:</p>
<pre>   &lt;match key="usb_device.vendor_id" int="0x082d"&gt;
      &lt;match key="usb_device.product_id" int="0x0100"&gt;
          &lt;append key="info.capabilities" type="strlist"&gt;pda&lt;/append&gt;
          &lt;merge key="pda.platform" type="string"&gt;palm&lt;/merge&gt;
          &lt;merge key="pda.palm.hotsync_interface" type="copy_property"&gt;linux.device_file&lt;/merge&gt;
      &lt;/match&gt;
   &lt;/match&gt;</pre>
<p>An example of <em>/usr/share/hal/fdi/policy/10osvendor/20-pda-acl-management.fdi</em> can be installed by<em>:<br /></em></p>
<pre># wget -O /usr/share/hal/fdi/information/20thirdparty/10-usb-pda-palm.fdi  'https://bugzilla.redhat.com/attachment.cgi?id=294520'
</pre>
<p>Finally we prevent the "visor" module to be automatically loaded by creating the file <em>/etc/modprobe.d/blacklist-visor</em>, because the visor module would take over the USB device and make it a serial ttyUSB.</p>
<pre># echo 'blacklist visor' &gt; /etc/modprobe.d/blacklist-visor</pre>
<p>Now you want to restart HAL and remove the visor module:</p>
<pre># service haldaemon restart
# rmmod visor
</pre>
<p>With all these files in place, we can now do the</p>
<pre id="comment_text_34">$ pilot-xfer -p usb: -l<br /></pre>
<p>as a normal user. That's it. No hacky udev rule involved. This example can be applied to any other device which should be accessible by a console user.</p>
<p>The way I read <em>man PolicyKit.conf</em>, it is even possible to grant access to specific groups and users permanently.</p>
<p>Happy Syncing!</p>
<p>&nbsp;</p>
<p><strong>Update</strong>: Active development also in <a class="external-link" href="https://bugzilla.redhat.com/show_bug.cgi?id=280251#c120">https://bugzilla.redhat.com/show_bug.cgi?id=280251#c120</a></p>
<p>Not working? <a class="external-link" href="https://bugzilla.redhat.com/show_bug.cgi?id=280251#c113">Read the checklist.</a></p>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Booting Fedora 8 Test 3 vs openSUSE 10.3</title>
                      <link>http://www.harald-hoyer.de/linux/f8t3boot</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/f8t3boot</guid>
                      <description>Every month the discussion about faster booting of Fedora appears on the mailing lists. Here is a comparison of Fedora to openSUSE with some suggestions and improvements.</description>
                      
                          <category>prcsys</category>
                      
                      
                          <category>Fedora 8</category>
                      
                      
                          <category>Boot</category>
                      
                      
                          <category>Fedora</category>
                      
                      <pubDate>Thu, 11 Oct 2007 17:00:00 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[
<h2>openSUSE 10.3</h2>
<p><a href="/files/boot/bootchart-suse.png">Bootchart</a></p>
<p>Boot time: 35s</p>
<p>Incredible speed, I must admit. Time to look at Fedora.</p>
<h2>Fedora 8 Test 3 - Default Installation - SELinux off</h2>
<p><a href="/files/boot/bootchart-fedora.png">Bootchart</a></p>
<p>Boot time: 73s</p>
<p>Default Installtion, SELinux turned off. Wow, that's disappointing for the average Desktop user. Let see, why it is so slow.</p>
<h2>Fedora 8 Test 3 - Same Services - SELinux off</h2>
<p><a href="/files/boot/bootchart-fedora2.png">Bootchart</a></p>
<p>Boot time: 46s</p>
<p>Turning off all the services, which are not started by default on the openSUSE, the boot time is nearly comparable now.</p>
<p>The following services are only started:</p>
<ul><li>iptables</li><li>network</li><li>irqbalance</li><li>rsyslog</li><li>auditd</li><li>cpuspeed</li><li>messagebus</li><li>rpcbind</li><li>rpcidmapd</li><li>nscd</li><li>sshd</li><li>ConsoleKit</li><li>crond</li><li>atd</li><li>avahi-daemon</li><li>cups</li><li>haldaemon</li><li>anacron</li><li>NetworkManager</li><li>NetworkManagerDispatcher</li></ul>
<h2>Fedora 8 Test 3 - Same Services - SELinux off - No rhgb</h2>
<p><a href="/files/boot/bootchart-fedora3.png">Bootchart</a></p>
<p>Boot time: 38s</p>
<p>Switching off rhgb saves 8s. Wow, that is much, compared to the whole boot process without the kernel time.</p>
<h2>Fedora 8 Test 3 - Same Services - SELinux off - No rhgb - prcsys</h2>
<p><a href="/files/boot/bootchart-fedora-prcsys-norhgb2.png">Bootchart</a></p>
<p>Boot time: 34s</p>
<p>By installing prcsys, adding missing LSB Headers to the services, it is now less boot time than openSUSE. Hurray! :-)</p>
<h2>Fedora 8 Test 3 - Same Services - SELinux off - No rhgb - prcsys - No Floppy module</h2>
<p><a href="/files/boot/bootchart-fedora-prcsys-norhgb.png">Bootchart</a></p>
<p>Boot time: 32s</p>
<p>Removing /etc/sysconfig/modules/udev-stw.modules, which basically only loads the floppy module, because floppies are not autoloaded just saved me 2 seconds. I have no floppy on my machine, so that was only probing on my machine. Time to think of another mechanism of loading this module or not.</p>
<p>Update:</p>
<pre class="code">alias pnp:dPNP0700 floppy</pre>
<p>This may do the trick in modprobe.conf. Maybe that should be a modalias in the floppy module.</p>
<h2>Fedora 8 Test 3 - Same Services - SELinux on - No rhgb - prcsys - No Floppy module</h2>
<p><a href="/files/boot/bootchart-fedora-prcsys-norhgb-selinux2.png">Bootchart</a></p>
<p>Boot time: 37s</p>
<p>To see how much SELinux would slow down, I turned selinux on, relabled and rebooted.</p>
<p>&nbsp;</p>
<p>For the reference, I uploaded the <a title="external-link" href="http://smolts.org/show?UUID=pub_eb5a17b8-8c66-4b0e-847e-8501d6e0e26d">Machine Profile</a> to Smolt</p>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>My Project Statistics on Ohloh</title>
                      <link>http://www.harald-hoyer.de/linux/ohloh</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/ohloh</guid>
                      <description>Links to my projects, which I submitted to Ohloh.</description>
                      
                          <category>Fedora</category>
                      
                      
                          <category>Linux</category>
                      
                      <pubDate>Mon, 17 Sep 2007 18:35:00 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[
<p><a href="http://www.ohloh.net/accounts/9440?ref=Detailed">
<img src="http://www.ohloh.net/accounts/9440/widgets/account_detailed.gif" alt="ohloh profile for Harald Hoyer" height="35" width="191" />
</a>&nbsp;</p>
<p>&nbsp;</p>
<h2><a title="external-link" href="http://www.ohloh.net/projects/8522?p=system-config-network">system-config-network</a></h2>
<p>A network configuration tool, supporting Ethernet, Wireless, TokenRing, ADSL, ISDN and PPP.
<script type="text/javascript" src="http://www.ohloh.net/projects/8522/widgets/project_cocomo"></script></p>
<h2><a title="external-link" href="http://www.ohloh.net/projects/8527?p=system-config-boot">system-config-boot</a></h2>
<p>system-config-boot is a graphical user interface that allows the user to change the default boot entry of the linux system (grub).

<script type="text/javascript" src="http://www.ohloh.net/projects/8527/widgets/project_cocomo"></script></p>
<h2><a title="external-link" href="http://www.ohloh.net/projects/8521?p=dldialog">dldialog</a></h2>
<p>&nbsp;DLDialog offers the capability to draw a variety of widgets. It
includes a definition language similar to Tcl/Tk. It can display
dialogs the tvision/ncurses interface or using graphical windows with
the QT/X11 interface.</p>
<p><em>Not developed anymore.</em>
<script type="text/javascript" src="http://www.ohloh.net/projects/8521/widgets/project_cocomo"></script></p>
<h2><a title="external-link" href="http://www.ohloh.net/projects/8520?p=autorun">autorun</a></h2>
<p>autorun automagically recognizes all available CDROMs in the system, mounts them upon insertion of a media and executes a possible autorun executable on the CD. The user can remove the media; autorun will call unmount.</p>
<p><em>Obsolete with todays desktops.</em></p>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Switching from FC3 to CentOS4.3</title>
                      <link>http://www.harald-hoyer.de/linux/Switching-from-FC3-to-CentOS4.3</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/Switching-from-FC3-to-CentOS4.3</guid>
                      <description>Switched my FC3 servers to CentOS4.3 with two shell commands.</description>
                      
                          <category>Fedora Core 3</category>
                      
                      
                          <category>FC3</category>
                      
                      
                          <category>Fedora</category>
                      
                      
                          <category>CentOS</category>
                      
                      
                          <category>Linux</category>
                      
                      <pubDate>Tue, 04 Apr 2006 00:00:00 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[Easy :-)
<pre class="code"># rpm -Uvh \\<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/centos-release-4-3.2.i386.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/yum-2.4.2-2.centos4.noarch.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/python-elementtree-1.2.6-4.i386.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/python-sqlite-1.1.6-1.i386.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/sqlite-3.2.2-1.i386.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/centos-yumconf-4-4.5.noarch.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/lynx-2.8.5-18.2.i386.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/indexhtml-4-2.centos4.noarch.rpm \<br />http://ftp.hosteurope.de/mirror/centos.org/4.3/os/i386/CentOS/RPMS/python-urlgrabber-2.9.6-2.noarch.rpm</pre>
<pre class="code"># yum update</pre>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Traffic Control</title>
                      <link>http://www.harald-hoyer.de/linux/traffic-control</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/traffic-control</guid>
                      <description>Bring back the speed to ADSL</description>
                      
                          <category>DSL</category>
                      
                      
                          <category>TC</category>
                      
                      
                          <category>wondershaper</category>
                      
                      
                          <category>Linux</category>
                      
                      <pubDate>Wed, 01 Jan 2003 01:00:00 +0100</pubDate>
                      
   <content:encoded>
       <![CDATA[
<p class="vspace">Having an ADSL modem, I experience massive download degradation, if I upload with my full bandwith. This happens, because the TCP/IP ACK packets do not get through fast enough. To prevent this from happen, I installed a modified version of the <a class="urllink" href="http://lartc.org/wondershaper/" rel="nofollow">wondershaper</a>. I also use htb classes instead of the often used cbq.</p>
<p class="vspace"><a title="tc-dsl.sh" class="internal-link" href="tc-dsl">&lt;Download the tc script&gt;:</a></p>
<pre class="code">#!/bin/bash<br />#<br /># http://www.harald-hoyer.de/linux/traffic-control<br />#<br /># pcfe, 2008-06-24<br />#<br />PATH=/usr/sbin:${PATH}<br />DEV=${DEV:-$6}<br /><br />DOWNLINK=8192<br />UPLINK=1024<br />PRIODOWN=$[DOWNLINK/40]<br />MAXUP=$[UPLINK-DOWNLINK/40]<br />HALFUP=$[MAXUP/2]<br /><br /><br />TC=/sbin/tc<br /><br /># clean existing down- and uplink qdiscs, hide errors<br />${TC} qdisc del dev $DEV root    2&gt; /dev/null &gt; /dev/null<br /><br />###### uplink<br /># install root HTB, point default traffic to 1:30:<br />${TC} qdisc add dev $DEV root handle 1: htb default 30<br /><br /># shape everything at $UPLINK speed - this prevents huge queues in your<br /># DSL modem which destroy latency:<br />${TC} class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k<br /><br /># high prio class 1:10:<br />${TC} class add dev $DEV parent 1:1 classid 1:10 htb rate ${PRIODOWN}kbit burst 6k prio 0 ceil ${UPLINK}kbit<br /><br /><br />${TC} class add dev $DEV parent 1:1 classid 1:15 htb rate ${MAXUP}kbit burst 6k prio 1 ceil ${MAXUP}kbit<br /><br /># bulk &amp; default class 1:20 - gets slightly less traffic, <br /># and a lower priority:<br />${TC} class add dev $DEV parent 1:15 classid 1:20 htb rate ${HALFUP}kbit burst 6k prio 2 ceil ${MAXUP}kbit<br /><br />${TC} class add dev $DEV parent 1:15 classid 1:30 htb rate ${HALFUP}kbit burst 6k prio 3 ceil ${MAXUP}kbit<br /><br /># all get Stochastic Fairness: <br />${TC} qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10<br />${TC} qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10<br />${TC} qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10<br /><br />${TC} filter add dev $DEV parent 1: protocol ip prio 1 handle 1 fw flowid 1:10<br />${TC} filter add dev $DEV parent 1: protocol ip prio 1 handle 2 fw flowid 1:20<br />${TC} filter add dev $DEV parent 1: protocol ip prio 1 handle 3 fw flowid 1:30<br /><br /># TOS Minimum Delay (ssh, NOT scp) in 1:10:<br />${TC} filter add dev $DEV parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff  flowid 1:10<br /><br /># ICMP (ip protocol 1) in the interactive class 1:10 so we <br /># can do measurements &amp; impress our friends:<br />${TC} filter add dev $DEV parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10<br /><br /># To speed up downloads while an upload is going on, put ACK packets in<br /># the interactive class:<br />${TC} filter add dev $DEV parent 1: protocol ip prio 10 u32 \<br />  match ip protocol 6 0xff \<br />  match u8 0x05 0x0f at 0 \<br />  match u16 0x0000 0xffc0 at 2 \<br />  match u8 0x10 0xff at 33 \<br />  flowid 1:10<br /><br /># rest is 'non-interactive' ie 'bulk' and ends up in 1:30<br />${TC} filter add dev $DEV parent 1: protocol ip prio 20 u32 match ip dst 0.0.0.0/0 flowid 1:30</pre>
<p class="vspace">This script can be called in /etc/ppp/ip-up.local with</p>
<pre>  tc-dsl "$@"

</pre>
<p>or within a shell</p>
<pre>  # DEV=ppp0 tc-dsl 
</pre>
<div class="vspace">&nbsp;</div>
<h3>iptables</h3>
<p>Now we can route traffic through the various priority classes with iptables.</p>
<ul><li>put my CIPE connection to high priority
<ol><li>iptables -t mangle -A POSTROUTING -d 192.168.1.201 -p udp -m udp --dport 7777 -j MARK --set-mark 0x1
</li></ol>
</li><li>put traffic to a specific host in class 2
<ol><li>iptables -t mangle -A POSTROUTING -p tcp -m tcp -d 192.168.1.200 -j MARK --set-mark 0x2 
</li><li>iptables -t mangle -A POSTROUTING -p udp -m udp -d 192.168.1.200 -j MARK --set-mark 0x2
</li></ol>
</li><li>put imap ssl and http to class 2
<ol><li>iptables -t mangle -A POSTROUTING -p tcp -m tcp --dport 993 -j MARK --set-mark 0x2 
</li><li>iptables -t mangle -A POSTROUTING -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
</li></ol>
</li></ul>
<div class="vspace">&nbsp;</div>
<h3>Debugging</h3>
<p>nice debugging tools are:</p>
<pre> # watch -n 1  /sbin/tc -s -d class show dev $DEV
 # watch -n 1 -d /sbin/iptables -t mangle -nvL
 # iptraf
</pre>
<p class="vspace">To see the difference, just turn off traffic control:</p>
<pre>  # /sbin/tc qdisc del dev $DEV root
</pre>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Fedora Core 6 on a Sony Vaio VGN-FE31Z</title>
                      <link>http://www.harald-hoyer.de/linux/fedora-core-6-on-a-sony-vaio-vgn-fe31z</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/fedora-core-6-on-a-sony-vaio-vgn-fe31z</guid>
                      <description>Howto run Fedora 6 an a Sony Vaio VGN-FE31Z.</description>
                      
                          <category>Fedora</category>
                      
                      
                          <category>Laptop</category>
                      
                      
                          <category>Vaio</category>
                      
                      
                          <category>VGN-FE31Z</category>
                      
                      
                          <category>Linux</category>
                      
                      
                          <category>Vaio_VGN-FE31Z</category>
                      
                      
                          <category>Fedora 6</category>
                      
                      <pubDate>Sat, 04 Nov 2006 01:00:00 +0100</pubDate>
                      
   <content:encoded>
       <![CDATA[<img class="image-right" src="vaio.jpg/image_preview" alt="Sony Vaio VGN-FE31Z" />I've got a <a href="http://vaio.sony-europe.com/view/ShowProduct.action?product=VGN-FE31Z&amp;site=ite_en_GB&amp;pageType=Overview&amp;category=VN+FE+Series">Sony Vaio VGN-FE31Z</a> and last week I have successfully installed <a href="http://fedora.redhat.com/Download">Fedora Core 6</a> on it.
<p>
See also <a href="/Vaio_VGN-FE31Z_F7">Update to Fedora 7</a>.</p>
<p>Article also submitted to: <a href="http://www.linux-on-laptops.com">[Linux on Laptops]</a></p>
<h3>Installation</h3>
Installation went smoothly, no problems.
<h3>Kernel</h3>
Had to install the i686 kernel <a href="http://www.fedoraproject.org/wiki/Bugs/FC6Common#head-e0676100ebd965b92fbaa7111097983a3822f143">manually</a>.
<h3>Wireless</h3>
Installed <a href="http://ipw3945.sourceforge.net/">ipw3945-1.1.0</a> and everything works fine.
<h3>X11</h3>
Installed from <a href="http://rpm.livna.org/rlowiki/UsingLivna">livna</a>:
<pre># yum install kmod-nvidia xorg-x11-drv-nvidia</pre>
Added to /etc/X11/xorg.conf:
<pre class="code">Section "Files"<br />        ModulePath   "/usr/lib/xorg/modules/extensions/nvidia"<br />        ModulePath   "/usr/lib/xorg/modules"<br />        FontPath     "unix/:7100"<br />EndSection</pre>
<h3>Touchpad</h3>
Installed gsynaptics.
<pre class="code"># yum install gsynaptics</pre>
Changed some parameters in /etc/X11/xorg.conf:
<pre class="code">Section "InputDevice"<br />        Identifier  "Synaptics"<br />        Driver      "synaptics"<br />        Option      "Device" "/dev/input/mice"<br />        Option      "Protocol" "auto-dev"<br />        Option      "Emulate3Buttons" "yes"<br />        Option      "AccelFactor" "0.025"<br />        Option      "LeftEdge" "120"<br />        Option      "RightEdge" "830"<br />        Option      "TopEdge" "120"<br />        Option      "BottomEdge" "650"<br />        Option      "FingerLow" "25"<br />        Option      "FingerHigh" "30"<br />        Option      "MaxTapTime" "155"<br />        Option      "MaxDoubleTapTime" "180"<br />        Option      "MaxTapMove" "10"<br />        Option      "VertScrollDelta" "20"<br />        Option      "HorizScrollDelta" "20"<br />        Option      "MinSpeed" "0.3"<br />        Option      "MaxSpeed" "0.75"<br />        Option      "SHMConfig" "true"<br />EndSection<br /></pre>
<h3>ACPI Suspend/Sleep</h3>
Works perfectly with gnome-power-manager, after I installed the nvidia drivers.
<h3>What isn't working</h3>
<ul>
<li>Modem (haven't even tried)
</li><li>Keys for luminosity. Poking around in /proc and /sys did not change the luminosity, also <a href="http://www.popies.net/sonypi/">sonypid</a> and <a href="http://www.popies.net/sonypi/sony_acpi.tar.gz">sony_acpi</a> had no effect.
</li><li>Internal cam
</li></ul>
<h3>General Hardware Specifications of Sony Vaio VGN-FE31Z</h3>
<table>
<tbody>
<tr>
<td>
<div align="center" class="headings">Hardware Components</div>
</td>
<td>
<div align="center" class="headings">Status under Linux</div>
</td>
<td>
<div align="center" class="headings">Notes</div>
</td>
</tr>
<tr>
<td>Intel® Core™ 2 Duo Processor T5600 1.83GHz</td>
<td>Works</td>
<td>Had to install the i686 kernel <a href="http://www.fedoraproject.org/wiki/Bugs/FC6Common#head-e0676100ebd965b92fbaa7111097983a3822f143">manually.</a></td>
</tr>
<tr>
<td>15.4 WXGA 1280x800 TFT Display</td>
<td>Works, but setting the luminosity does not</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>NVIDIA® GeForce® Go 7600 with 128MB dedicated VRAM</td>
<td>Works</td>
<td>Install the nvidia driver.</td>
</tr>
<tr>
<td>2GB DDR2 SDRAM (2x1024MB)</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>200 GB SATA Hard Drive</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Integrated Network Card</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Internal 56k Modem</td>
<td>Doesn't Work</td>
<td>Haven't even tried</td>
</tr>
<tr>
<td>DVD+-RW/+-R DL/RAM Drive</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Internal Wireless Networking</td>
<td>Works</td>
<td>Installed <a href="http://ipw3945.sourceforge.net/">ipw3945-1.1.0</a>.</td>
</tr>
<tr>
<td>Internal Sound Card</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Built-in 'Motion Eye' Digital Camera</td>
<td>Doesn't work</td>
<td><br /></td>
</tr>
</tbody>
</table>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Linux and Syncml, Multisync with Nokia 6280</title>
                      <link>http://www.harald-hoyer.de/linux/linux-and-syncml-multisync-with-nokia-6280</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/linux-and-syncml-multisync-with-nokia-6280</guid>
                      <description>I successfully synced my calendars with my Nokia 6280.</description>
                      
                          <category>Mobile</category>
                      
                      
                          <category>SyncML</category>
                      
                      
                          <category>Nokia</category>
                      
                      
                          <category>Fedora</category>
                      
                      
                          <category>Linux</category>
                      
                      <pubDate>Sat, 25 Nov 2006 01:00:00 +0100</pubDate>
                      
   <content:encoded>
       <![CDATA[With the help of <a title="external-link" class="generated" href="http://www.opensync.org/">opensync</a>&nbsp; and Fedora, just:<img class="image-right" src="opensync.png/image_mini" alt="Opensync" />
<pre class="code"># yum install libopensync-devel glib-devel libsyncml-devel wbxml2-devel \<br /> &nbsp;libopensync-plugin-evolution2 libopensync-plugin-kdepim libopensync-plugin-file<br /></pre>
Now we need to compile the syncml-plugin:
<pre class="code">$ wget -O libopensync-plugin-syncml-0.20.tar.gz \<br /> 'http://www.opensync.org/attachment/wiki/download/libopensync-plugin-syncml-0.20.tar.gz?rev=&amp;format=raw'<br />$ tar xzf libopensync-plugin-syncml-0.20.tar.gz <br />$ cd libopensync-plugin-syncml-0.20 <br />$ ./configure<br />$ make<br /></pre>
and as root:
<pre class="code">$ make install<br /></pre>
and then follow <a href="http://blog.dukanovic.com/?p=5#configuration">Syncing a Nokia 6630 over bluetooth using opensync and syncml-plugin</a>. Copied here for reference.
<h2><a name="configuration">Configuration</a></h2>
<p><strong><a name="fileconf">Configure File sync</a></strong></p>
<p>Now lets configure multisync. In this example we will sync the phone
against a directory called “sync” in our home directory. If you want to
configure an evolution sync instead skip this part, and go straight to
the evolution configuration.</p>
<p><code>$ cd<br />
$ mkdir sync<br />
$ msynctool --addgroup filenokia<br />
$ msynctool --addmember filenokia file-sync<br />
$ msynctool --addmember filenokia syncml-obex-client</code></p>
<p>In order to continue we need some Infos from our phone. First of all we need to find out the bluetooth address of our phone:</p>
<p><code>$ hcitool scan<br />
Scanning ...<br />
XX:XX:XX:XX:XX:XX       MYPHONENAME</code></p>
<p>As you may guess the value represented by XX:XX:XX:XX:XX:XX is your
phones address. Now we need the channel on which the service called
“SyncMLClient” is running:</p>
<p><code>$ sdptool browse XX:XX:XX:XX:XX:XX</code></p>
<p>This command will return a lot of information. Look for something like this:</p>
<p><code>Service Name: SyncMLClient<br />
Service RecHandle: 0x10003<br />
Service Class ID List: "Error: This is UUID-128" (0x00000002-0000-1000-8000-0002ee000002)<br />
Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003)<br />
Channel: <strong>11</strong> "OBEX" (0x0008)<br />
Language Base Attr List: code_ISO639: 0x454e encoding:    0x6a base_offset: 0x100<br />
Profile Descriptor List: "Error: This is UUID-128" (0x00000002-0000-1000-8000-0002ee000002)<br />
Version: 0x0100</code></p>
<p>As you can see in my case the needed channel was channel 11. Now we have everything we need. so there just a few steps left:</p>
<p><code>$ msynctool --configure filenokia 1</code></p>
<p>This will open a vi instance, where you need to input this:</p>
<p>&lt;config&gt;<br />
&lt;path&gt;/home/<strong>USERNAME</strong>/sync&lt;/path&gt;<br />
&lt;recursive&gt;FALSE&lt;/recursive&gt;<br />
&lt;/config&gt;</p>
<p>Now we just need to configure the <a name="syncml">syncml-client</a>:</p>
<p><code>$ msynctool --configure filenokia 2</code></p>
<p>Again a vi instance will open. This time you need this:</p>
<p>&lt;config&gt;<br />
&lt;bluetooth_address&gt;<strong>XX:XX:XX:XX:XX:XX</strong>&lt;/bluetooth_address&gt;<br />
&lt;bluetooth_channel&gt;<strong>YY</strong>&lt;/bluetooth_channel&gt;<br />
&lt;identifier&gt;PC Suite&lt;/identifier&gt;<br />
&lt;version&gt;1&lt;/version&gt;<br />
&lt;wbxml&gt;1&lt;/wbxml&gt;<br />
&lt;username&gt;&lt;/username&gt;<br />
&lt;password&gt;&lt;/password&gt;<br />
&lt;type&gt;2&lt;/type&gt;<br />
&lt;usestringtable&gt;1&lt;/usestringtable&gt;<br />
&lt;onlyreplace&gt;0&lt;/onlyreplace&gt;<br />
&lt;recvLimit&gt;10000&lt;/recvLimit&gt;<br />
&lt;maxObjSize&gt;0&lt;/maxObjSize&gt;<br />
&lt;contact_db&gt;Contacts&lt;/contact_db&gt;<br />
&lt;calendar_db&gt;Calendar&lt;/calendar_db&gt;<br />
&lt;note_db&gt;Notes&lt;/note_db&gt;<br />
&lt;/config&gt;</p>
<p>You just need to replace <strong>XX:XX:XX:XX:XX:XX</strong> with your bluetooth address and <strong>YY </strong>with
your channel. Nothing more is necessary to sync against a file. The following part describes the configuration for an evolution sync.</p>
<p><strong><a name="evoconf">Configure Evolution sync</a></strong></p>
<p>The procedure is almost the same as above.
There are just some slight modifications. First of all you should name
your group differently. Here we will use “evo2nokia” instead of
“filenokia”. Before beginning the opensync coniguration you should make
sureTherefore the first steps should be these:</p>
<p><code>$ msynctool --addgroup evo2nokia<br />
$ msynctool --addmember evo2nokia evo2-sync<br />
$ msynctool --addmember evo2nokia syncml-obex-client</code></p>
<p>Now we need to configure the evo2-sync plugin:</p>
<p><code>$ msynctool --configure evo2nokia 1</code></p>
<p>Enter the follwoing into the opening editor:</p>
<p>&lt;config&gt;<br />
&lt;address_path&gt;default&lt;/address_path&gt;<br />
&lt;calendar_path&gt;default&lt;/calendar_path&gt;<br />
&lt;tasks_path&gt;default&lt;/tasks_path&gt;<br />
&lt;/config&gt;</p>
<p>Next we need to configure the syncml side of the group:</p>
<p><code>$ msynctool --configure evo2nokia 2</code></p>
<p>We can use the same configuration as above.</p>
<h2><a name="sync">Synchronization</a></h2>
<p>That’s it, now you can sync your phone:</p>
<p><code>$ msynctool --sync filenokia</code></p>
<p>or if you configured opensync for evolution synchronization:</p>
<p><code>$ msynctool --sync evo2nokia</code></p>
<p>If you want to sync againt another plugin than the file-sync plugin,
you can still use this guide. The configuration is exactly the same
except for the fact that you need to add your plugin as a member
instead of the file-sync plugin. Of course you also need an apropriate
configuration for that plugin. But the syncml part stays the same.<br />
If you don’t have a bluetooth dongle and/or want to use your USB cable for syncing go the <a title="Syncml-guide" href="http://www.opensync.org/wiki/syncml-guide">syncml-guide</a> and check out the <a title="Opensync forum att nabble" href="http://www.nabble.com/OpenSync-f14406.html">forum</a> at nabble. Also don’t forget to check out the excellent opensync wiki.  <a href="http://blog.dukanovic.com/?p=5#links">Here</a> are some links where you can find additional information about how to use your nokia 6630 with a linux box.</p>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Installing Fedora 7 on  Sony Vaio VGN-FE31Z</title>
                      <link>http://www.harald-hoyer.de/linux/fedora-core-7-on-a-sony-vaio-vgn-fe31z</link>
                      <guid isPermaLink="true">http://www.harald-hoyer.de/linux/fedora-core-7-on-a-sony-vaio-vgn-fe31z</guid>
                      <description>Howto run Fedora 7 an a Sony Vaio VGN-FE31Z.</description>
                      
                          <category>Fedora</category>
                      
                      
                          <category>F7</category>
                      
                      
                          <category>Laptop</category>
                      
                      
                          <category>Vaio</category>
                      
                      
                          <category>VGN-FE31Z</category>
                      
                      
                          <category>Linux</category>
                      
                      
                          <category>Sony</category>
                      
                      
                          <category>Vaio_VGN-FE31Z_F7</category>
                      
                      <pubDate>Fri, 17 Aug 2007 03:55:00 +0200</pubDate>
                      
   <content:encoded>
       <![CDATA[
<p>Updated from <a href="http://www.harald-hoyer.de/Vaio_VGN-FE31Z">Fedora Core 6 on a Sony Vaio VGN-FE31Z</a></p>
<p><a title="Sony Vaio VGN-FE31Z" class="internal-link" href="vaio.jpg"><img class="image-right" src="vaio.jpg/image_preview" alt="Sony Vaio VGN-FE31Z" /></a>Article also submitted to <a href="http://www.linux-on-laptops.com">Linux on Laptops</a></p>
<p>General Hardware Specifications of the <a href="http://vaio.sony.co.uk/view/ShowProduct.action?product=VGN-FE31Z&amp;productFilters=retired&amp;site=voe_en_GB_cons&amp;pageType=Overview&amp;category=VN+FE+Series">Sony Vaio VGN-FE31Z</a>:</p>
<table class="plain">
<tbody>
<tr>
<td>
<div align="center" class="headings">Hardware Components</div>
</td>
<td>
<div align="center" class="headings">Status under Linux</div>
</td>
<td>
<div align="center" class="headings">Notes</div>
</td>
</tr>
<tr>
<td>Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz</td>
<td>Works</td>
<td>No special procedure required during installation.</td>
</tr>
<tr>
<td>15.4 WXGA 1280x800 TFT Display</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>NVIDIA® GeForce® Go 7600 with 128MB dedicated VRAM</td>
<td>Works</td>
<td>2D works fine out of the box, for 3D install the nvidia driver.</td>
</tr>
<tr>
<td>2GB DDR2 SDRAM (2x1024MB)</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Harddrive 200GB FUJITSU MHV2200BT UDMA/100</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>MATSHITA UJ-850S, UDMA/33 DVD+-RW/+-R DL/RAM Drive</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Internal Intel Corporation PRO/Wireless 3945ABG Network Connection (Wi-Fi Certified)</td>
<td>Works</td>
<td>Install firmware from Intel</td>
</tr>
<tr>
<td>Integrated Network Card</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Integrated Bluetooth</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Internal 56k Modem</td>
<td>Haven't even tried</td>
<td><br /></td>
</tr>
<tr>
<td>Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller</td>
<td>Works</td>
<td>No special procedure required during installation</td>
</tr>
<tr>
<td>Built-in 'Motion Eye' Digital Camera</td>
<td>Works</td>
<td><a href="http://mxhaard.free.fr/download.html">http://mxhaard.free.fr/download.html</a></td>
</tr>
</tbody>
</table>
<p>This laptop is operating under Kernel version 2.6.22.1-41.fc7</p>
<p><a href="http://fedoraproject.org/get-fedora.html">Obtaining Fedora 7</a></p>
<h3>Wireless</h3>
<div>
Just drop the <a href="http://intellinuxwireless.org/?p=iwlwifi&amp;n=downloads">firmware</a> to /lib/firmware.
<pre class="code"># cd /tmp<br /># curl http://intellinuxwireless.org/iwlwifi/downloads/iwlwifi-3945-ucode-2.14.1.5.tgz | tar -xz<br /># mv iwlwifi-3945-ucode*/iwlwifi-3945-1.ucode /lib/firmware/<br /># rm -fr iwlwifi-3945-ucode*<br /></pre>
</div>
Update (24.08.2007): there is an rpm available
<pre class="code"># yum --enablerepo=updates-testing install iwl3945-firmware<br /></pre>
<h3>X11</h3>
Installed from <a href="http://rpm.livna.org/rlowiki/UsingLivna">livna</a>:
<pre># yum install kmod-nvidia xorg-x11-drv-nvidia</pre>
Added to /etc/X11/xorg.conf:
<pre class="code">Section "Files"<br />        ModulePath   "/usr/lib/xorg/modules/extensions/nvidia"<br />        ModulePath   "/usr/lib/xorg/modules/extensions"<br />        ModulePath   "/usr/lib/xorg/modules"<br />EndSection</pre>
<h3>Touchpad</h3>
Installed gsynaptics.
<pre class="code"># yum install gsynaptics</pre>
Changed some parameters in /etc/X11/xorg.conf:
<pre class="code">Section "InputDevice"<br />        Identifier  "Synaptics"<br />        Driver      "synaptics"<br />        Option      "Device" "/dev/input/mice"<br />        Option      "Protocol" "auto-dev"<br />        Option      "Emulate3Buttons" "yes"<br />        Option      "AccelFactor" "0.025"<br />        Option      "LeftEdge" "120"<br />        Option      "RightEdge" "830"<br />        Option      "TopEdge" "120"<br />        Option      "BottomEdge" "650"<br />        Option      "FingerLow" "25"<br />        Option      "FingerHigh" "30"<br />        Option      "MaxTapTime" "155"<br />        Option      "MaxDoubleTapTime" "180"<br />        Option      "MaxTapMove" "10"<br />        Option      "VertScrollDelta" "20"<br />        Option      "HorizScrollDelta" "20"<br />        Option      "MinSpeed" "0.3"<br />        Option      "MaxSpeed" "0.75"<br />        Option      "SHMConfig" "true"<br />EndSection<br /></pre>
<h3>Motion Eye - Internal Cam</h3>
Haven't tried. But have a look at: <a href="http://mxhaard.free.fr/download.html">http://mxhaard.free.fr/download.html</a>
<h3>LCD Brightness</h3>
Install <a href="http://www.linuxhardware.org/nvclock/">nvclock</a> and <a href="http://klcddimmer.sourceforge.net/">klcddimmer</a>.
Or <a href="http://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2">smartdimmer</a> or <a href="http://ubuntuforums.org/showpost.php?p=2702790">gnome-smartdimmer</a>.
<h3>External Video Output</h3>
<pre class="code">Section "ServerLayout"<br />    Identifier     "Layout0"<br />    Screen      0  "Screen0" 0 0<br />    Screen      1  "Screen1" RightOf "Screen0"<br />    InputDevice    "Keyboard0" "CoreKeyboard"<br />    InputDevice    "Mouse0" "CorePointer"<br />EndSection</pre>
....
<pre class="code">Section "Monitor"<br />    Identifier     "Monitor1"<br />    ModelName      "Nvidia Default Flat Panel"<br />    Option         "DPMS"<br />EndSection<br /><br /># My 16:9 Plasma HDTV Display<br />Section "Monitor"<br />    Identifier     "Monitor0"<br />    ModelName      "CRT-0"<br />    HorizSync       28.0 - 49.0<br />    VertRefresh     0.0 - 60.0<br />    DisplaySize     919 516<br />EndSection<br /><br />Section "Device"<br />    Identifier     "Videocard0"<br />    Driver         "nvidia"<br />    BoardName      "GeForce Go 7600"<br />    BusID          "PCI:1:0:0"<br />    Option         "RandRRotation" "true"<br />    Option         "AddARGBGLXVisuals" "True"<br />    Screen          0<br />EndSection<br /><br />Section "Device"<br />    Identifier     "Videocard1"<br />    Driver         "nvidia"<br />    BusID          "PCI:1:0:0"<br />    Screen          1<br />EndSection<br /><br />Section "Screen"<br />    Identifier     "Screen0"<br />    Device         "Videocard0"<br />    Monitor        "Monitor1"<br />    DefaultDepth    24<br />    Option         "metamodes" "DFP: 1280x800 +0+0"<br />    SubSection     "Display"<br />        Depth       24<br />        Modes       "1280x800" "1024x768" "800x600" "640x480"<br />    EndSubSection<br />EndSection<br /><br />Section "Screen"<br />    Identifier     "Screen1"<br />    Device         "Videocard1"<br />    Monitor        "Monitor0"<br />    DefaultDepth    24<br />    Option         "metamodes" "CRT: 1024x768 +0+0"<br />    SubSection     "Display"<br />        Depth       24 <br />        Modes       "1024x768" "800x600" "640x480"<br />    EndSubSection<br />EndSection<br /></pre>
<h3>Powersaving in Battery mode</h3>
Here are some tips from powertop
<pre class="code"># yum install powertop<br /># powertop<br /></pre>
Most energy is saved with:
<pre class="code"># nvclock -S 15<br /># iwpriv eth1 set_power 1<br /></pre>
Other things, which save power:
<pre class="code">/etc/sysconfig/cpuspeed:<br />DRIVER=acpi-cpufreq<br />GOVERNOR=ondemand<br /></pre>
<pre class="code"># chkconfig cpuspeed on<br /># service cpuspeed restart<br /></pre>
<p>You may also try:</p>
<pre class="code"># mount -o remount,noatime /<br /># hciconfig hci0 down ; rmmod hci_usb<br /># modprobe -r firewire_ohci<br /># hal-disable-polling --device /dev/scd0<br /># ethtool -s eth0 wol d<br /># echo 2 &gt; /proc/sys/vm/laptop_mode<br /></pre>
<h3>What isn't working</h3>
<ul>
<li>Modem (haven't even tried)
</li><li>ACPI Suspend/Sleep (worked in Fedora Core 6, Hibernate works in F8)
</li></ul>
]]>
   </content:encoded>
 
                  </item>

            
	   	
        


    </channel>

</rss>
