<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>ixs' Vodkamelone - Bawue.Net</title>
    <link>http://193.7.178.18/</link>
    <description>free pr0n</description>
    <dc:language>de</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:" />
    <generator>Serendipity 1.3-beta1 - http://www.s9y.org/</generator>
    
    <image>
        <url>http://193.7.178.18/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: ixs' Vodkamelone - Bawue.Net - free pr0n</title>
        <link>http://193.7.178.18/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Better UX on the Nagios web interface using the corewindow parameter</title>
    <link>http://193.7.178.18/archives/178-Better-UX-on-the-Nagios-web-interface-using-the-corewindow-parameter.html</link>
            <category>Bawue.Net</category>
            <category>Teh Intarweb</category>
            <category>Unix</category>
    
    <comments>http://193.7.178.18/archives/178-Better-UX-on-the-Nagios-web-interface-using-the-corewindow-parameter.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=178</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=178</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;Nagios is probably one of the most used network monitoring systems around. Especially in environments that have been around for a while and contain a lot of on-premises nodes.&lt;/p&gt;

&lt;p&gt;I&#039;ve recently started to upgrade an existing installation which included a lot of automation and updating from Nagios Core 3.x to Nagios Core 4.x. This resulted in an updated Web Interface with more PHP code and a more modern design.&lt;p&gt;

&lt;p&gt;One main gripe I have about the Nagios interface however is the use of Frames. The problem has not changed since the 3.x days:
&lt;ul&gt;
 &lt;li&gt;Nagios uses frames&lt;/li&gt;
 &lt;li&gt;This means that the browser only ever shows the base url (https://example.com/nagios/) in the location bar&lt;/li&gt;
 &lt;li&gt;When navigating to a specific service, e.g. /nagios/cgi-bin/extinfo.cgi?type=2, the location bar is unchanged and still points at the base URL.&lt;/li&gt;
 &lt;li&gt;If I want to share a specific service status I need to copy the URL of the frame and send it to a colleague.&lt;/li&gt;
 &lt;li&gt;Said colleague will only see the service status when opening that URL, no navigation bar will be shown, because that&#039;s in a different frame which we&#039;re bypassing.&lt;/li&gt;
&lt;/ul&gt;
This is a common issue with framesets and a complaint that basically came up 5 minutes after the introduction of frames in 1996.&lt;p&gt;

&lt;p&gt;Despite these complaints, frames can actually be very useful in many cases. When developing your own software, there are multiple options available to work around these frameset limitations. When using third-party software such as Nagios however, there&#039;s fewer options available.&lt;br /&gt;
For Nagios Core 3.x I had replaced the Nagios provided &lt;i&gt;index.html&lt;/i&gt; page with my own &lt;i&gt;index.php&lt;/i&gt; page that takes an optional parameter for the address of the main frame which allowed to construct URLs that open the regular Nagios interface with the navigation bar on the left frame and a e.g. specific service opened on the main frame to the right.&lt;/p&gt;

&lt;p&gt;When porting this functionality I stumbled the fact that Nagios Core 4.x is already using PHP for some files and the default &lt;i&gt;index.php&lt;/i&gt; already seems to have a parameter called &quot;corewindow&quot; that seems to offer this functionality. Unfortunately, there is barely any documentation around for this parameter. The first thing I found is a ChangeLog entry (https://www.nagios.org/projects/nagios-core/4x/) indicating this functionality is disabled by default due to a potential security vulnerability:&lt;/p&gt;

&lt;blockquote&gt;
&lt;b&gt;4.3.0  02/21/2017&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Security&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fix for CVE-2016-6209  The corewindow parameter (as in http://localhost/nagios?corewindow=www.somewhere.com) has been disabled by default. See the UPGRADING document for how to enable it.&lt;/li&gt;&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well, Duh. If you take random URLs and use them to build a frameset defintion, this can indeed be &quot;misused&quot; to open a random URL inside your Frameset.&lt;br /&gt;
Personally, I wouldn&#039;t consider this a case of &quot;works as designed&quot; and not as a security issue but of course hapless users might be confused. Probably depends a lot on the users.&lt;/p&gt;

&lt;p&gt;But this is exactly the functionality we need except it&#039;s disabled. The &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/github.com/NagiosEnterprises/nagioscore/blob/master/UPGRADING&#039;);&quot;  href=&quot;https://github.com/NagiosEnterprises/nagioscore/blob/master/UPGRADING&quot; title=&quot;UPGRADING&quot;&gt;UPGRADING&lt;/a&gt; document states that one can re-enable the corewindow functionality using the &lt;i&gt;--enable-corewindow&lt;/i&gt; Parameter when building Nagios.&lt;br /&gt;
But re-enabling said functionality is even easier. Just change line 4 in the index.php file from
&lt;blockquote&gt;if (&quot;no&quot;== &quot;yes&quot; &amp;&amp;amp; isset($_GET[&#039;corewindow&#039;])) {&lt;/blockquote&gt; to &lt;blockquote&gt;if (&quot;yes&quot;== &quot;yes&quot; &amp;&amp;amp; isset($_GET[&#039;corewindow&#039;])) {&lt;/blockquote&gt;
Done, that&#039;s the same thing the &lt;i&gt;--enable-corewindow&lt;/i&gt; parameter does.&lt;br /&gt;
On my system, that file is found at &lt;i&gt;/usr/share/nagios/html/index.php&lt;i&gt;. Your system might be different.&lt;/p&gt;

&lt;p&gt;If you now open &lt;i&gt;/nagios/index.php?corewindow=nagios/tac.cgi&lt;/i&gt; the index file will open the Tactical Overview screen. Nice!&lt;/p&gt;

&lt;p&gt;Functionality restored using the default installation. Perfect!&lt;p&gt;

&lt;p&gt;But can we improve things?&lt;/p&gt;

&lt;p&gt;While looking for documentation for the corewindow parameter, I stumbled over &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/cgiincludes.html&#039;);&quot;  href=&quot;https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/cgiincludes.html&quot; title=&quot;Custom CGI Headers and Footers&quot;&gt;Custom CGI Headers and Footers&lt;/a&gt; on the Nagios documentation. It seems the CGIs can load files and embed them in the HTML page...&lt;/p&gt;

&lt;p&gt;This is brilliant. We can use some low key JavaScript logic to automatically update the browser location bar to add the corewindow parameter with the right link to the CGI.&lt;br /&gt;
This way, the location bar will always show a link to the specific view we&#039;re looking at right now and can be easily copy and pasted. No more right-click-&gt;frames-&gt;copy-frame-link dance.&lt;/p&gt;

&lt;p&gt;
This means we can create a file &lt;i&gt;/usr/share/nagios/html/ssi/common-header.ssi&lt;/i&gt; drop some Javascript in there that handles the updates of the location bar and we&#039;re done. Awesome. The code needed is super simple:
&lt;blockquote&gt;&lt;pre&gt;
&amp;lt;script&amp;gt;
        /*
         * Update the browser location bar to ensure ?corewindow= always contains the URI
         * to the current page.
         *
         * This allows a reload to reload the same page rather than going back to the main
         * frameset.
         */

        // Get the current URL of the parent window (assuming the frame is nested within it)
        var parentUrl = window.parent.location.href;

        // Get the path of the file from the current URL of the frame
        var filePath = window.location.pathname;

        // Remove the first slash from the path name
        filePath = filePath.substring(1);

        // Get any query string parameters passed to the file
        var queryString = window.location.search;

        // Remove any existing corewindow parameter from the query string
        queryString = queryString.replace(/(?:&amp;amp;|\?)corewindow=[^&amp;amp;]*&amp;amp;?/g, &amp;#039;&amp;#039;);

        // Construct the new query string with corewindow as the first parameter
        var newQueryString = &amp;#039;corewindow=&amp;#039; + filePath;

        // Append any existing query string parameters
        if (queryString) {
            // Emcode only the &amp;#039;?&amp;#039; and the &amp;#039;&amp;amp;&amp;#039; component of the path.
            newQueryString += encodeURIComponent(&amp;#039;?&amp;#039;) +
                queryString.substring(1).split(&amp;#039;&amp;amp;&amp;#039;).join(&amp;#039;%26&amp;#039;);
        }

        // Construct the updated URL with the new query string
        var updatedUrl = parentUrl.split(&amp;#039;?&amp;#039;)[0] + &amp;#039;?&amp;#039; + newQueryString;

        // Replace the URL of the parent window with the updated URL
        window.parent.history.replaceState(null, null, updatedUrl);
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;And done, now clicking inside the Nagios interface will update the location bar to URLs such as https://nagios.example.com/nagios/?corewindow=nagios/cgi-bin/extinfo.cgi%3Ftype=2%26host=filer-cluster%26service=fs_%2Fdev%2Fvg%2Barc_vol_000%2Flv%2Bn%2Blvarc_vol_00000 which is a link that opens the fs_/dev/vg+arc_vol_000/lv+n+lvarc_vol_00000 service on the filer-cluster host. Easy to share. Perfect.&lt;/p&gt;

&lt;p&gt;Unfortunately, this solution is as close to perfect as we can build it using the shipped functionality, but it&#039;s not 100% perfect.
&lt;ul&gt;
 &lt;li&gt;This only works for .cgi files. The main.php file will not load the SSI file and thus it won&#039;t update the URL.&lt;br /&gt;
   Not problematic in the grand scheme of things but a minor nitpic.&lt;/li&gt;
 &lt;li&gt;Not all .cgis actuall load the SSI files. The map.cgi doesn&#039;t.&lt;br /&gt;
   Also not super problematic because the map is not really used by us. But YMMV.&lt;/li&gt;
&lt;/ul&gt;
But overall, still a massive UX improvement.&lt;/p&gt;

&lt;p&gt;Further reading:&lt;br /&gt;
Other people also have been using the SSI functionality to embed funky Javascript functionality. &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/theezitguy.wordpress.com/2015/08/16/nagios-improve-user-experience-with-ssi-and-javascript/&#039;);&quot;  href=&quot;https://theezitguy.wordpress.com/2015/08/16/nagios-improve-user-experience-with-ssi-and-javascript/&quot;&gt;https://theezitguy.wordpress.com/2015/08/16/nagios-improve-user-experience-with-ssi-and-javascript/&lt;/a&gt; is a good example. 
    </content:encoded>

    <pubDate>Sun, 25 Feb 2024 11:17:31 +0100</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/178-guid.html</guid>
    
</item>
<item>
    <title>Avocent PM webinterface issues</title>
    <link>http://193.7.178.18/archives/175-Avocent-PM-webinterface-issues.html</link>
            <category>Bawue.Net</category>
            <category>Fedora</category>
            <category>Hardware</category>
            <category>Teh Intarweb</category>
            <category>Unix</category>
    
    <comments>http://193.7.178.18/archives/175-Avocent-PM-webinterface-issues.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=175</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://193.7.178.18/uploads/s-l1600.jpg&#039;&gt;&lt;!-- s9ymdb:192 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://193.7.178.18/uploads/s-l1600.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;At &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/bawue.net&#039;);&quot;  href=&quot;https://bawue.net&quot;&gt;bawue.net&lt;/a&gt; we are using several Avocent PM 3000 power distribution units to connect our servers.&lt;br /&gt;
A nice feature of these PDUs is that they work great with our existing Cyclades console servers.&lt;/p&gt;

&lt;p&gt;In addition to the serial console and the SSH interface, these devices also offer a web interface. This interface never worked with Chrome or Chromium where it only shows a blank page. It does however work with Firefox, or so I thought at least.&lt;br /&gt;
I recently needed to verify something and found out that with the latest Firefox the webinterface on these devices is now not broken. Empty page, same as with Chrome.&lt;/p&gt;

&lt;p&gt;As there is no firmware upgrade, I tried figuring out what is going on.&lt;/p&gt;

&lt;p&gt;It turns out, the web interface was written using the JavaScript document.load() function to fetch content from the device. Unfortunately, this function was never standardized, never supported on Chrome or Safari and has by now been removed from Firefox as well.&lt;br /&gt;
Bummer!&lt;/p&gt;

&lt;p&gt;But thanks to Greasemonkey or Tampermonkey it is possible to make the web interface work again. We just need to provide a document.load() function that uses AJAX/XHR Requests to load data from the device and all is good.&lt;/p&gt;

&lt;p&gt;Such a userscript can be found &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/gist.github.com/ixs/58381ed5f8109b6a988a2eb06036b348&#039;);&quot;  href=&quot;https://gist.github.com/ixs/58381ed5f8109b6a988a2eb06036b348&quot;&gt;on my public github gist&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat,  7 Sep 2019 19:27:00 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/175-guid.html</guid>
    
</item>
<item>
    <title>The missing man page: cyc_ipmicmd - Avocent IPMI power control</title>
    <link>http://193.7.178.18/archives/174-The-missing-man-page-cyc_ipmicmd-Avocent-IPMI-power-control.html</link>
            <category>Bawue.Net</category>
            <category>Fedora</category>
            <category>Hardware</category>
            <category>Unix</category>
    
    <comments>http://193.7.178.18/archives/174-The-missing-man-page-cyc_ipmicmd-Avocent-IPMI-power-control.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=174</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;Avocent (formerly Cyclades) is a supplier for various datacenter management tools. They are best known for their rackmounted power distribution units and their serial console servers. Both devices run Linux and have been around for years.&lt;/p&gt;
&lt;p&gt;Both the now EOL&#039;d devices from Cyclades as well as the newer devices from Avocent can powercycle devices either through a serially attached smart PDU or through IPMI. Every device under the Advanced Console Server (ACS) label can control IPMI devices with a recent firmware.&lt;/p&gt;
&lt;p&gt;While the functionality of the attached PDUs is quite well documented, there&#039;s no matching documentation for the IPMI interface. The web-interface works but the logic is mostly inside the AcsWeb webserver binary.&lt;br /&gt;
There&#039;s a cyc_ipmicmd binary but that one doesn&#039;t offer any --help functionality to explain how to call it.&lt;/p&gt;
&lt;p&gt;For future reference here&#039;s the missing man page:&lt;p&gt;
&lt;pre&gt;
cyc_ipmicmd(1)                    General Commands Manual                    cyc_ipmicmd(1)

NAME
       cyc_ipmicmd - utility for power cycling servers via IPMI

SYNOPSIS
       cyc_ipmicmd SERVER COMMAND

DESCRIPTION
       The cyc_ipmicmd utility is a wrapper around /bin/ipmitool which allows to send IPMI
       power commands such as On, Off, Status and Cycle to configured devices.

       The server address as well as necessary authentication data is taken from
       /etc/IPMIServer.conf.

CONFIG FILE FORMAT
       The /etc/IPMIServer.conf file contains the necessary data to successfully send IPMI
       commands to remote devices.

       Each line contains one remote server definition with the following colon separated
       fields:

        - Numerical server ID (starting at 1)
        - IP address
        - Authentication Type (none, password, md2, md5)
        - Access Level (user, operator, admin)
        - Username
        - Password
        - Alias (human readable name)

       An example line might look as follows:
              1:192.168.0.1:password:operator:user:pass:Example Server:

SERVER parameter
       The server parameter is the numerical server ID taken from the first field of the
       configuration file.

COMMAND parameter
       The command parameter is numerical code which specifies which command is being
       sent to the remote IPMI device.

       0       Off
              Poweroff the server
       1      On
              Poweron the server
       2      Status
              Reportpower status
       3      Cycle
              Powercycle the server

EXAMPLES:
       Powercycle the first server:
              cyc_ipmicmd 1 3

AUTHOR:
       Andreas Thienemann
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Thu, 30 Apr 2015 11:10:38 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/174-guid.html</guid>
    
</item>
<item>
    <title>dss_cli, an Open-E Data Storage Server command line interpreter</title>
    <link>http://193.7.178.18/archives/172-dss_cli,-an-Open-E-Data-Storage-Server-command-line-interpreter.html</link>
            <category>Bawue.Net</category>
            <category>Fedora</category>
            <category>Hardware</category>
            <category>Teh Intarweb</category>
            <category>Unix</category>
    
    <comments>http://193.7.178.18/archives/172-dss_cli,-an-Open-E-Data-Storage-Server-command-line-interpreter.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=172</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=172</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;dss_cli is a small command line program written in Python which can serve as the base for automating tasks on the Open-E Data Storage Server. A sysadmin can use it to control regular maintainance from the shell instead of having to log into the web-interface through a browser.&lt;br /&gt;
It can access the existing API via SSH and provides missing functionality by interfacing with the web-server on the DSS appliance. It is using both &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/wwwsearch.sourceforge.net/mechanize/&#039;);&quot;  href=&quot;http://wwwsearch.sourceforge.net/mechanize/&quot;&gt;mechanize&lt;/a&gt; and &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.crummy.com/software/BeautifulSoup/&#039;);&quot;  href=&quot;http://www.crummy.com/software/BeautifulSoup/&quot;&gt;Beautiful Soup&lt;/a&gt; to make it resiliant to changes in the webinterface. While it was originally written on a DSS v6, initial tests showed that it mostly works on the DSS v7 release as well.&lt;p&gt;

&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;The &amp;quot;Data Storage Server&amp;quot; from &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.open-e.com&#039;);&quot;  href=&quot;http://www.open-e.com&quot;&gt;Open-E&lt;/a&gt; is a linux based software appliance. After installing the software on a server, the server can then offer NAS and iSCSI storage to attached clients and is manageable through a web-interface.&lt;p&gt;

&lt;p&gt;One interesting feature of the appliance is, that it does offer failover for both iSCSI exported block devices as well as for NFS shared folders, something which makes it very interesting for &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.bawue.net&#039;);&quot;  href=&quot;http://www.bawue.net&quot;&gt;Bawue.Net&lt;/a&gt;. The active/passive failover pair should give us better availability for maintenance as one half of the failover pair can be taken down for maintenance without affecting the virtual machines using the filer as a storage.&lt;/p&gt;

&lt;p&gt;During testing of the DSS v6 system we did notice however a certain lack of functionality: The webinterface is great to manage the servers, create volumes, export these and set them up for replication. But using the webinterface is a manual process full of repetitive steps while the tasks at hand call for automation to reduce operator errors and to allow configuration through tools like puppet.&lt;/p&gt;

&lt;p&gt;In order to help with automation, the DSS appliance offers an API/CLI access via ssh: Generate a key, connect to the server via ssh and pass some commands:
&lt;pre class=&quot;screen&quot;&gt;$ ssh -p 22223 -i filer1.key -l api 192.168.2.220 get_driveslist -v
Unit       Size(GB)   Serial Number  Status
S001       1862.64    4096e40371761527 vg,arc_vol_000
S002       279.40     4096e41532029185 vg,arc_vol_001&lt;/pre&gt;
Unfortunately, the API is incomplete: It does allow for a lot of automation tasks, it does not export all the functionality to create working failover volumes and destroy them again. If there are plans to use the DSS filer as a storage backend for any kind of automated creation of virtualized servers these functions are sorely needed to prevent the need for manual interaction.&lt;/p&gt;

&lt;p&gt;In order to address this lack of functionality, I wrote dss_cli, a command line client aimed at owners and administrators of DSS appliances in order to support all daily administration tasks needed on these filers.&lt;/p&gt;

&lt;h2&gt;Future plans&lt;/h2&gt;
&lt;p&gt;Provide a second tool to combine common steps for creation of iSCSI and NAS targets in a cluster.&lt;br /&gt;
Otherwise I am also taking nominations for needed functionality.&lt;/p&gt;

&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;The current code is available on &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/github.com/ixs/dss_cli&#039;);&quot;  href=&quot;https://github.com/ixs/dss_cli&quot;&gt;GitHub::ixs/dss_cli&lt;/a&gt; and is published under the GPLv2. Preqrequisites to running the dss_cli command is a recent Python installation with the &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/github.com/paramiko/paramiko&#039;);&quot;  href=&quot;https://github.com/paramiko/paramiko&quot;&gt;Paramiko&lt;/a&gt; module for SSH connectivity and &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/wwwsearch.sourceforge.net/mechanize/&#039;);&quot;  href=&quot;http://wwwsearch.sourceforge.net/mechanize/&quot;&gt;mechanize&lt;/a&gt; and &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.crummy.com/software/BeautifulSoup/&#039;);&quot;  href=&quot;http://www.crummy.com/software/BeautifulSoup/&quot;&gt;Beautiful Soup&lt;/a&gt; for the web-scraping functionality.&lt;/a&gt;

&lt;p&gt;Installation is simple: Download &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/github.com/ixs/dss_cli/archive/master.zip&#039;);&quot;  href=&quot;https://github.com/ixs/dss_cli/archive/master.zip&quot;&gt;the latest code&lt;/a&gt;, unzip it in a new directory and edit config.ini to reflect your environment.&lt;br /&gt;
The [failovergroup] section contains your failover pairs, one group per line.&lt;br /&gt;
The example below defines one failovergroup called main, containing the dss1 and the dss2 filer.&lt;br /&gt;
The [dss1] and [dss2] section define their address, their admin passwords, the ssh_key needed for the API functionality and whether they are the primary or the secondary host in the failover group.&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;
[failovergroups]
main = dss1 dss2

[dss1]
address = 192.168.220.1
password = admin
sshkey = dss1_api.key
mode = primary

[dss2]
address = 192.168.220.2
password = admin
sshkey = dss2_api.key
mode = secondary
&lt;/pre&gt;&lt;/p&gt;


&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;&lt;pre class=&quot;screen&quot;&gt;./dss_cli --help
Usage: dss_cli [options] &lt;host|group&gt; &lt;command&gt;

Command Line Interface to interact with an Open-E DSS Storage Server

Options:
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  Configuration file to use
  -l, --list            List all commands available
  -g, --failovergroup   List all configured failover groups
  -d, --debug

Use --list to get a list of all supported commands. Each command should
support the --help parameter to get a list of accepted arguments.
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Running &lt;i&gt;./dss-cli -l dss1&lt;/i&gt; does give a list of all commands supported on that device:&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli -l filer1
build                     - Lists and sets default build.
check_mk_agent            - Returns information from check_mk monitor
create_iscsilv            - Creates a logical iSCSI Volume.
create_naslv              - Creates a logical NAS volume.
date                      - Sets time and date; please use the following format: yyyy-mm-dd hh:mm:ss
failover                  - This function allows you to stop, run or change the operation mode for the given server.
failover_task             - Manage a failover task
get_TXbytes               - Returns total number of bytes transmitted for the given interface.
get_TXpackets             - Returns total number of packets transmitted for the given interface.
get_driveslist            - Fetches a list of drives.
get_hwstatus              - Returns information from system hardware monitor.
get_memorystatus          - Fetches memory status.
get_nichealth             - Fetches the status of the given Network Interface Card.
get_nicslist              - Lists Network Interface Cards.
get_raidstatus            - Returns information about RAID.
help                      - Lists all available methods
iscsi_target_access       - Configure Target IP access
iscsi_target_assign       - Assign lv with given name to existing iSCSI target.
iscsi_target_create       - Creates a new iSCSI target.
iscsi_target_list         - Lists iSCSI targets (syntax: alias;name).
iscsi_target_remove       - Remove an existing iSCSI target
iscsi_target_restart      - Restart iSCSI target service.
iscsi_target_sessions     - Shows and manages iSCSI target sessions.
iscsi_target_status       - Lists the parameters of the selected target.
iscsi_target_unassign     - Unassign from given iSCSI target lvname.
lv_remove                 - Remove a logical volume
nas_settings_http         - Enables and disables access to shares via HTTP.
nas_share_access_afp      - Modifies AFP share access.
nas_share_access_ftp      - Enables and disables access to shares via FTP
nas_share_access_http     - Enables and disables access to shares via HTTP.
nas_share_access_nfs      - Enables and disables access to the given share via NFS.
nas_share_access_smb      - Modifies SMB/AFP share access.
nas_share_create          - Create share on specified volume.
nas_share_details         - Display detailed configuration of share
nas_share_edit            - Changes share location or comment.
nas_share_groups          - Groups manipulation functions.
nas_share_list            - Lists shares
nas_share_remove          - Removes the given share.
nas_share_toggle_smb      - Enable or disable SMB support for a share
nas_share_users           - Users manipulation functions.
nas_user_add              - Create user in the system.
nas_user_groups           - Adding and removing users to groups.
nas_user_remove           - Removes the given user from the system.
nas_user_rename           - Rename NAS user.
ntp                       - Fetches the time and date from an NTP server.
reboot                    - Reboots the system.
set_nic                   - Configures Network Interface Cards.
set_powersettings         - Sets the power button action scheme.
shutdown                  - Shuts the system down.
snapshot_task             - Starts and stops snapshots.
task                      - This function allows you to start task.
test                      - Generates an example of a help message.
unit_manager              - Creates new volume group or adds unit(s) to existing volume group.
update                    - Initiates and checks the status of software update.
version                   - Fetches the software version.
volume_group_status       - Lists Volume Groups.
volume_iscsi_remove       - Removes a logical iSCSI volume
volume_replication        - Adds and removes replication to volume.
volume_replication_mode   - Set volume replication mode to source or destination
volume_replication_remove - Removes replication from Volume
volume_replication_task_create - Create a volume replication task
volume_replication_task_remove - Remove a replication task
volume_replication_task_status - Status of a replication task
volume_replication_task_stop - Stop a replication task
volume_status             - Displays storage info.
&lt;/pre&gt;

&lt;h2&gt;Example&lt;/h2&gt;

&lt;p&gt;The following commands would serve to create a failover iSCSI volume on dss1 and dss2:&lt;/p&gt;
&lt;p&gt;Create the logical volumes on both filers as part of the arc_vol_000 volume group. Command line arguments are &lt;i&gt;create_iscsilv &amp;lt;vg_name&amp;gt; &amp;lt;size&amp;gt; blockio&lt;/i&gt;&lt;br /&gt;
The size argument is specified in 32MB blocks. 150GB * 1024 / 32 = 4800.&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli filer1 create_iscsilv arc_vol_000 4800 blockio lvarc_vol_00000
$ ./dss_cli filer2 create_iscsilv arc_vol_000 4800 blockio lvarc_vol_00000&lt;/pre&gt;

&lt;p&gt;Enable volume replication for both logical volumes on both filers and set the logical volume on filer2 to be a secondary volume/replication destination.&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli filer1 volume_replication add lvarc_vol_00000
$ ./dss_cli filer2 volume_replication add lvarc_vol_00000
$ ./dss_cli filer2 volume_replication_mode lvarc_vol_00000 secondary&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Create, start and monitor the replication task on the primary filer and give it 80MBps bandwidth for initial synchronisation.&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli filer1 volume_replication_task_create lvarc_vol_00000 lvarc_vol_00000 failover_iscsi_target0 80
$ ./dss_cli filer1 task --start VREP failover_iscsi_target0
$ ./dss_cli filer1 volume_replication_task_status failover_iscsi_target0&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Create the iSCSI targets on both systems.&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli filer1 iscsi_target_create target0
$ ./dss_cli filer2 iscsi_target_create target0&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Assign the created volume to the just created iSCSI target on both systems. The server will report back with a randomly generated SCSI id for the LUN. Make sure to pass this one when assigning the volume on the secondary system. These ids need to be the same.
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli filer1 iscsi_target_assign target0 lvarc_vol_00000
lvarc_vol_00000:target0:0:wt:Dgp5VLni08UGb5W5
$ ./dss_cli filer2 iscsi_target_assign target0 lvarc_vol_00000 -s Dgp5VLni08UGb5W5
lvarc_vol_00000:target0:0:wt:Dgp5VLni08UGb5W5&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Add the replication task to the list of active failover tasks and make sure that failover services are started.&lt;br /&gt;
&lt;pre class=&quot;screen&quot;&gt;$ ./dss_cli filer1 failover_task failover_iscsi_target0 enable
$ ./dss_cli filer1 failover --start&lt;/pre&gt;&lt;/p&gt;

&lt;h2&gt;Contact&lt;/h2&gt;
Find me as &amp;quot;ixs&amp;quot; on the usual IRC networks. (IRCnet, EFnet, oftc, freenode) 
    </content:encoded>

    <pubDate>Thu, 16 May 2013 22:15:18 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/172-guid.html</guid>
    
</item>
<item>
    <title>Unbricking an Intel Pro/1000 (e1000) network interface</title>
    <link>http://193.7.178.18/archives/146-Unbricking-an-Intel-Pro1000-e1000-network-interface.html</link>
            <category>Bawue.Net</category>
            <category>Fedora</category>
            <category>Hardware</category>
    
    <comments>http://193.7.178.18/archives/146-Unbricking-an-Intel-Pro1000-e1000-network-interface.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=146</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=146</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;&lt;!-- s9ymdb:152 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;110&quot; height=&quot;110&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://193.7.178.18/uploads/e1000.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;As most readers of this blog are probably aware, pre-releases of the Linux Kernel 2.6.27 are able to trash the NVRAM/EEPROM of certain Intel Network cards. As usual, lwn.net has &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/lwn.net/Articles/300202/&#039;);&quot;  href=&quot;http://lwn.net/Articles/300202/&quot;&gt;a nice writeup&lt;/a&gt; of the issue including some background information.&lt;br /&gt;
I had a similar problem in the past and as a favour for some friends of mine, I&#039;ve written down a small description to restoring the ethernet firmware in these cards. This guide should serve as a good primer on reflashing your broken nic but probably needs to be adapted for your own use case.&lt;/p&gt;

&lt;p&gt;NB: Instead of just giving a command by command description of what I did, I&#039;ll try explaining a bit more about the background and the process of fixing the problem at hand. Maybe this gives other people some insight into valuable problem solving skills.&lt;/p&gt;

&lt;p&gt;Some years back we bought quite some &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.tyan.com/archive/products/html/tomcati7210.html&#039;);&quot;  href=&quot;http://www.tyan.com/archive/products/html/tomcati7210.html&quot; title=&quot;Tyan S5112 Tomcat i7210&quot;&gt;Tyan S5112 machines&lt;/a&gt; for &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.bawue.net&#039;);&quot;  href=&quot;http://www.bawue.net&quot; title=&quot;Baden-Württembergs nichtkommerzieller Internetprovider&quot;&gt;bawue.net&lt;/a&gt;.&lt;br /&gt;
The idea was to fit these machines with the &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.tyan.com/archive/products/html/m3289.html&#039;);&quot;  href=&quot;http://www.tyan.com/archive/products/html/m3289.html&quot; title=&quot;m3289 Server Management Daughter Card&quot;&gt;Tyan m3289 server management card&lt;/a&gt;, an &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/IPMI&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/IPMI&quot; title=&quot;Intelligent Platform Management Interface at Wikipedia&quot;&gt;IPMI&lt;/a&gt; card allowing remotely powercycling of the machines and offering a serial console via the network.&lt;/p&gt;

&lt;p&gt;In order to have the whole setup work, the IPMI management module needs support from the network interface in order to receive IP packets while the machine is powered off. After contacting the Tyan support, we were offered a firmware file to flash into the network adapter activating the needed &amp;quot;management mode&amp;quot;. This firmware file came in the form of a .bin file and an accompanying eeupdate.exe file for flashing the firmware image.&lt;/p&gt;

&lt;p&gt;The mainboard has two ethernet controllers, with the 82547EI one being the controller utilized by the management card. The lspci output on this board looks as follows:
&lt;pre class=&quot;screen&quot;&gt;[root@selene ~]# lspci|grep Ethernet
01:01.0 Ethernet controller: Intel Corporation 82547EI Gigabit Ethernet Controller
03:02.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller
[root@selene ~]#&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;The instructions for flashing the firmware were relatively simple: Boot with a DOS bootdisk and execute &lt;i&gt;eeupdate -nic=1 -d 82547EI.eep&lt;/i&gt;&lt;br /&gt;
After I pressed enter, nothing much happened. The system wasn&#039;t reading anything from the disk, there was no progress message on the screen, just the general start-message of the firmware update tool.&lt;/p&gt;

&lt;p&gt;When nothing happened after 5 minutes of waiting, I foolishly reset the system. &lt;b&gt;Big mistake!&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;On the next boot of the system, there were no PXE messages from the network card and during bootup the e1000 linux driver only threw out the ominous message &lt;i&gt;The EEPROM Checksum Is Not Valid&lt;/i&gt; without loading the network interface.&lt;br /&gt;
It turns out, I just trashed the firmware of my on-board network interface.&lt;br /&gt;
Calling the eeupdate program again did not work as it bailed out because the eeprom was corrupted&lt;br /&gt;
At such times, I firmly believe in the use of swearwords accompanied by heavy googling for some advice. Alas, googling told me only that I broke my hardware and needed new one.&lt;/p&gt;

&lt;p&gt;As returning hardware because of a problem is akin to giving up, which is generally unacceptable, I decided to look into the issue a bit more and find a workable solution to unbrick the network interface.&lt;br /&gt;
To recap, I had the following:
&lt;ul&gt;
 &lt;li&gt;One on-board network interface with a corrupted nvram&lt;/li&gt;
 &lt;li&gt;One eeprom image for said network interface (For reference: &lt;a href=&quot;http://193.7.178.18/uploads/82547EI.EEP&quot; title=&quot;82547EI.EEP&quot; target=&quot;_blank&quot;&gt;82547EI.EEP&lt;/a&gt;)&lt;/li&gt;
 &lt;li&gt;No working flash program&lt;/li&gt;
 &lt;li&gt;No working driver&lt;/li&gt;
 &lt;li&gt;One working Linux system without network&lt;/li&gt;
 &lt;li&gt;One working Linux notebook with network&lt;/li&gt;
&lt;/ul&gt;
Luckily, the working Linux system and network access is all I needed:&lt;/p&gt;

&lt;p&gt;The first step was getting the sources of the e1000 driver from the &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/sourceforge.net/projects/e1000&#039;);&quot;  href=&quot;http://sourceforge.net/projects/e1000&quot; title=&quot;e1000 at sf.net&quot;&gt;project page&lt;/a&gt;. As this was a few years ago, I chose the &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/downloads.sourceforge.net/e1000/e1000-7.3.15.tar.gz?modtime=1161336542&amp;amp;amp;big_mirror=0&#039;);&quot;  href=&quot;http://downloads.sourceforge.net/e1000/e1000-7.3.15.tar.gz?modtime=1161336542&amp;amp;big_mirror=0&quot; title=&quot;e1000 Linux driver, version 7.3.15&quot;&gt;version 7.3.15&lt;/a&gt; which was current at this time.&lt;/p&gt;

&lt;p&gt;After untaring the sources, a quick &lt;i&gt;grep -R &#039;The EEPROM Checksum Is Not Valid&#039; e1000-7.3.15&lt;/i&gt; turned up one hit in &lt;i&gt;e1000-7.3.15/src/e1000_main.c&lt;/i&gt;:

&lt;div class=&quot;geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/* make sure the EEPROM is good */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e1000_validate_eeprom_checksum&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&amp;amp;adapter-&amp;gt;hw&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt; &lt;span style=&quot;color: #0000dd;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; DPRINTK&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;PROBE, ERR, &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;The EEPROM Checksum Is Not Valid&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; err = -EIO;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;goto&lt;/span&gt; err_eeprom;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;
So there is a function called &lt;i&gt;e1000_validate_eeprom_checksum&lt;/i&gt; responsible for checking the validity of the eeprom. During the main initialization of the card this function is called and in case the checksum is not valid, the error handler err_eeprom is executed which aborts the module load.&lt;br /&gt;
On a hunch, I removed the whole check logic containted in this function located in &lt;/i&gt;e1000-7.3.15/src/e1000_hw.c&lt;/i&gt;. After I was done, the whole function body consisted only of a &quot;return 0&quot; statement meaning that the checksum check will always succeed.&lt;/p&gt;

&lt;p&gt;Building the modified module by calling &lt;i&gt;make&lt;/i&gt; in the src dir resulted in a e1000.ko file which could be loaded into the running kernel by executing &quot;insmod ./e1000&quot;. (Note, this will probably not work with current kernels as the buildscripts have changed. Use a current version of the e1000 driver instead.)&lt;br /&gt;
To my great relief the driver returned the following message:
&lt;pre class=&quot;screen&quot;&gt;Intel(R) PRO/1000 Network Driver - version 7.3.15
Copyright (c) 1999-2006 Intel Corporation.
e1000: 0000:01:01.0: e1000_probe: (PCI:33MHz:32-bit) ff:ff:ff:ff:ff:ff
e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
e1000: 0000:03:02.0: e1000_probe: (PCI:33MHz:32-bit) 00:e0:81:55:f2:01
e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection&lt;/pre&gt;
So even though the mac address of the card is broken, at least the card is somewhat detected and I can work on restoring the eeprom.&lt;/p&gt;

&lt;p&gt;For modifying low-level settings of network interfaces under Linux one can usually use the fabulous &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/sourceforge.net/projects/gkernel/&#039;);&quot;  href=&quot;http://sourceforge.net/projects/gkernel/&quot; title=&quot;kernel related software&quot;&gt;ethtool&lt;/a&gt; utility.&lt;br /&gt;
Using the -e parameter dumps the eeprom values of the specified network interface onto the screen. This is great for getting a backup of the eeprom:
&lt;pre class=&quot;screen&quot;&gt;[root@selene ~]# ethtool -e eth1 | head -n 5
Offset		Values
------		------
0x0000		00 e0 81 55 f2 01 10 02 ff ff 06 20 ff ff ff ff 
0x0010		ff ff ff ff 0b 64 76 10 86 80 76 10 86 80 84 b2 
0x0020		dd 20 22 22 00 00 90 2f 80 23 12 00 20 1e 12 00 
[root@selene ~]# &lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;Even better is the -E parameter as it allows changing a single byte at a specified address in the eeprom:
&lt;pre class=&quot;screen&quot;&gt;[root@selene ~]# ethtool -E eth0 magic 0x10198086 offset 0x0 value 0x00
[root@selene ~]# &lt;/pre&gt;
This command would change the byte at the address 0x0 (the first byte) into the value 0x00. The 0x10198086 value is the &quot;magic&quot; value needed to &quot;unlock&quot; this write operation. Depending on the driver and the card this value is different for each system. In the case of the intel e1000 driver, the magic value is the Device ID and Vendor ID of the selected network card. This value can be gathered by examining the lspci -n output.&lt;/br&gt;
As I was in a hurry back then to get the machine working again, I didn&#039;t try to find out what exactly the magic value was but just commented out this check in the e1000_ethtool.c file.&lt;br /&gt;
For reference, the patch of my modifications to the e1000 driver are &lt;a href=&quot;http://193.7.178.18/uploads/e1000-repair.patch&quot; title=&quot;e1000-repair.patch&quot; target=&quot;_blank&quot;&gt;e1000-repair.patch&lt;/a&gt;downloadable as a unified diff.
&lt;/p&gt;

&lt;p&gt;Now, that I could change single values in the eeprom, it was time to take a look at the Tyan provided eeprom file:
&lt;pre class=&quot;screen&quot;&gt;[root@localhost root]# head -n 5 82547.eep 
E000 2A81 0855 0A10 FFFF FFFF FFFF FFFF 
FFFF FFFF 640B 1019 8086 1019 8086 B200 
1F35 002A 0E00 0012 0E00 20DD 7777 1F95 
0001 1F73 0098 1F72 3FB0 0009 1200 3649 
00CF 8FA7 290E 0305 0CCA FFFF FFFF FFFF 
&lt;/pre&gt;
Comparing this eeprom file with the dump taken earlier from the second network interface in the machine showed that the .eep file from intel was in &quot;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/Little_Endian#Middle-endian&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/Little_Endian#Middle-endian&quot; title=&quot;Endianess at Wikipedia&quot;&gt;mixed-endian&lt;/a&gt;&quot; format, meaning I had to shuffle the values around a bit before being able to rewrite the image. The file contains the eeprom values as groups of two bytes each in reversed order. The first four byte-values in the file are &lt;i&gt;0xe0 0x00 0x2a 0x81&lt;/i&gt; while in the eeprom they would be &lt;i&gt;0x00 0xe0 0x81 0x2a&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;After I found the correct byte ordering, I could simply call ethtool -E manually with the correct addresses and just write each byte into the eeprom or automate this and reduce the possibility of mistakes. Naturally, automation it is. Back then I chose to do this script in PHP as a small exercise in command-line-interface programming.&lt;br /&gt;

The PHP script can be downloaded as &lt;a href=&quot;http://193.7.178.18/uploads/eepromer.phps&quot; title=&quot;eepromer.php&quot; target=&quot;_blank&quot;&gt;eepromer.php&lt;/a&gt; and executed by calling &lt;i&gt;php eepromer.php&lt;/i&gt; on the shell.&lt;br /&gt;
In order to explain it&#039;s working, the code is printed below:
&lt;div class=&quot;geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$file&lt;/span&gt; = &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;82547.eep&quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$handle&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$file&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$contents&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;fread&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$handle&lt;/span&gt;, &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;filesize&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$file&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$handle&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;strtok&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$contents&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot; \n\r&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$eepdata&lt;/span&gt; = &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$i&lt;/span&gt; = &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt; !== &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$eepdata&lt;/span&gt; .= &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt;, &lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;,&lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&#039; &#039;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$eepdata&lt;/span&gt; .= &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt;, &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&#039; &#039;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;strtok&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot; \n\r&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$i&lt;/span&gt;++;&lt;br /&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;strtok&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$eepdata&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$i&lt;/span&gt; = &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt; !== &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$offset&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;sprintf&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;%x&quot;&lt;/span&gt;, &lt;span style=&quot;color: #000088;&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;ethtool -E eth0 magic 0x00 offset 0x$offset value 0x$tok\n&quot;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$tok&lt;/span&gt; = &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.php.net/&amp;amp;lt;span style=&#039;);&quot;  href=&quot;http://www.php.net/&amp;lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;FNAMEL&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;strtok&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000088;&quot;&gt;$i&lt;/span&gt;++;&lt;br /&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;
At the start, the variable file contains the filename to read in. This file is then opened and read into memory as it is only 6K large. The &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/php.net/manual/en/function.strtok.php&#039;);&quot;  href=&quot;http://php.net/manual/en/function.strtok.php&quot; title=&quot;String Tokenizer&quot;&gt;PHP String Tokenizer function&lt;/a&gt; is used to extract the values from the script and the bytes in each extracted group are then swapped around to put them into big endian byte-order. When the eeprom file has been completely parsed the ethtool commands to write the gathered data into the eeprom are printed to STDOUT:
&lt;pre class=&quot;screen&quot;&gt;[root@localhost root]# php eepromer.php | head -n 5
ethtool -E eth0 magic 0x00 offset 0x0 value 0x00
ethtool -E eth0 magic 0x00 offset 0x1 value 0xE0
ethtool -E eth0 magic 0x00 offset 0x2 value 0x81
ethtool -E eth0 magic 0x00 offset 0x3 value 0x2A
ethtool -E eth0 magic 0x00 offset 0x4 value 0x55
[root@localhost root]# &lt;/pre&gt;
By piping the output of this quick-and-dirty script into a shell (php eepromer.php | sh), the content of the .eep file is written for real into the eeprom. The last step is changing the first 6 bytes of the eeprom (offset 0x0 to 0x5) to the original mac address of the network interface.&lt;/br&gt;
After this has been done, the network card is considered repaird or unbricked.&lt;/p&gt;

&lt;p&gt;Now, this explanation should give anyone some hints on fixing his network card&#039;s eeprom should this be needed because of problems with the kernel releases mentioned in the beginning. It is unlikely that following the procedure above to the letter is going to have any usable results as every system and situation is different.&lt;br /&gt;
The major problem would be, that not everyone has a working .eep file from Intel available after his own card is trashed. My suggestion would be to look for a friend who has exactly the same card. This can be achieved by using lspci:
&lt;pre class=&quot;screen&quot;&gt;[root@selene ~]# lspci | grep Ethernet
01:01.0 Ethernet controller: Intel Corporation 82547EI Gigabit Ethernet Controller
03:02.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller
[root@selene ~]# lspci -n | grep &#039;01:01\.0&#039;
01:01.0 0200: 8086:1019
[root@selene ~]# &lt;/pre&gt;
If a friend has the same network card as indicated by the Vendor and Device ID (8086 == Intel, 1019 == 82547EI Gigabit Ethernet Controller in my example) he should be able to take eeprom dump by calling ethtool -e [device] &gt; /tmp/eeprom-[device].dump.:
&lt;pre class=&quot;screen&quot;&gt;[root@selene ~]# ethtool -e eth0 | head -n 8
Offset		Values
------		------
0x0000		00 e0 81 55 f2 00 10 0a ff ff ff ff ff ff ff ff 
0x0010		ff ff ff ff 0b 64 19 10 86 80 19 10 86 80 00 b2 
0x0020		35 1f 2a 00 00 0e 12 00 00 0e dd 20 77 77 95 1f 
0x0030		01 00 73 1f 98 00 72 1f b0 3f 09 00 00 12 49 36 
0x0040		cf 00 a7 8f 0e 29 05 03 c8 0c ff ff ff ff ff ff 
0x0050		ff ff ff ff ff ff ff ff ff ff ff ff ff ff 02 06 
[root@selene ~]# &lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;This dump file can then be written into your own nvram by an easier procedure then described above. After all, no endianness swapping is necessary as ethtool already returned the data correctly. A bit of reformatting of the import is necessary however but can be accomplished in a simple bash script:
&lt;div class=&quot;geshi&quot; style=&quot;text-align: left&quot;&gt;span style=&quot;color: #ff0000;&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;/div&gt;
This script, which can be written as one single line, will remove the header and other superfluous data from the dumpfile, leaving only the values itself which are then echoed to STDOUT in the form of an ethtool command.
&lt;pre class=&quot;screen&quot;&gt;[root@selene ~]# magic=0x0; j=0; for i in `sed -e &#039;1,2d&#039; /tmp/eeprom-[device].dump | cut -c 9- |
tr -d &quot;\n&quot;`; do echo ethtool -E magic $magic offset 0x$(printf %x ${j}) value 0x${i}; j=$(($j + 1)); done | head -n 5
ethtool -E magic 0x0 offset 0x0 value 0x00
ethtool -E magic 0x0 offset 0x1 value 0xe0
ethtool -E magic 0x0 offset 0x2 value 0x81
ethtool -E magic 0x0 offset 0x3 value 0x55
ethtool -E magic 0x0 offset 0x4 value 0xf2
[root@selene ~]#&lt;/pre&gt;
Piping this into a shell will restore your eeprom meaning only the mac address has to be reverted to the old one.
The correct working of the above bash line should be tested however, as the output of ethtool differs depending on the card and the driver.
&lt;/p&gt;

&lt;p&gt;Should the network interface not even be visible on the PCI bus anymore (possible due to the usage of the ibautil.exe tool mentioned on some webpages) reflashing the main bios might work for some systems. The &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.coreboot.org/Flashrom&#039;);&quot;  href=&quot;http://www.coreboot.org/Flashrom&quot; title=&quot;Flashrom&quot;&gt;flashrom utility&lt;/a&gt; from the coreboot project might come in handy for this.&lt;br /&gt;
Otherwise it might be necessary to rewrite the necessary part of the eeprom first through the SPI, a serial programming interface, in order to have it enumerate again on the pci bus.&lt;br /&gt;
Should this be the case, it might be easier to just return your mainboard for repair though.&lt;br /&gt;
Should you be willing however, to try your luck and certainly void any little bit of warranty you had left, Intel offers a nice &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/download.intel.com/design/network/applnots/ap496.pdf&#039;);&quot;  href=&quot;http://download.intel.com/design/network/applnots/ap496.pdf&quot; title=&quot;Intel I/O Controller Hub 8 LAN NVM Map and Information Guide&quot;&gt;manual explaining the firmware format&lt;/a&gt; of it&#039;s ICH8 system.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 16 Oct 2008 23:23:31 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/146-guid.html</guid>
    
</item>
<item>
    <title>Mein Internetprovider hat jetzt ein blog...</title>
    <link>http://193.7.178.18/archives/140-Mein-Internetprovider-hat-jetzt-ein-blog....html</link>
            <category>Bawue.Net</category>
    
    <comments>http://193.7.178.18/archives/140-Mein-Internetprovider-hat-jetzt-ein-blog....html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;Die Tatsache, dass Mailinglisten inzwischen nicht mehr das Mittel der Wahl zur Kommunikation sind, hat sich mittlerweile auch bei &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.bawue.net&#039;);&quot;  href=&quot;http://www.bawue.net&quot; title=&quot;DER NICHTKOMMERZIELLE INTERNET-PROVIDER BADEN-WÜRTTEMBERGS - bawue.net&quot;&gt;Internet Provider meiner Wahl&lt;/a&gt; herumgesprochen.&lt;/p&gt;

&lt;p&gt;Die hohe Anzahl von unerwünschten Werbemails verleitet nicht nur mich dazu, einerseits extrem rigeros zu filtern, andererseits dennoch nur noch höchst widerwärtig in meinen E-Mail Client zu schauen.&lt;/p&gt;

&lt;p&gt;Was liegt also näher, zur Kommunikation mit den Vereinsmitgliedern - aber auch mit den normalen Benutzern - ein Blog zu verwenden?&lt;/p&gt;

&lt;p&gt;Die Wahl fiel auf &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.s9y.org&#039;);&quot;  href=&quot;http://www.s9y.org&quot;&gt;Serendipity&lt;/a&gt; da es sowohl bereits bekannt ist, als auch einen Mehrbenutzermodus anbietet, bei dem verschiedene Personen Einträge bloggen können.&lt;/p&gt;

&lt;p&gt;Zu finden ist das ganze unter &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.bawue.net&#039;);&quot;  href=&quot;http://blog.bawue.net&quot; title=&quot;DER NICHTKOMMERZIELLE INTERNET-PROVIDER BADEN-WÜRTTEMBERGS - bawue.net&quot;&gt;http://blog.bawue.net&lt;/a&gt;. Ein paar Inhalte habe ich auch schon hinzugefügt, warten wir mal ab, ob das Konzept denn auch angenommen wird.&lt;/p&gt;

&lt;p&gt;Als Bonus der ganzen Aktion habe ich mittlerweile herausbekommen, wie man ein Serendipity Template schreibt und habe auch wieder Einblick in den Code mancher Plugins gewonnen... Eine lohnenswerte Aktion also...&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed,  2 Jul 2008 20:44:58 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/140-guid.html</guid>
    
</item>
<item>
    <title>Using the Canon ScanFront 220/220P with Firefox</title>
    <link>http://193.7.178.18/archives/134-Using-the-Canon-ScanFront-220220P-with-Firefox.html</link>
            <category>Bawue.Net</category>
            <category>Fedora</category>
    
    <comments>http://193.7.178.18/archives/134-Using-the-Canon-ScanFront-220220P-with-Firefox.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=134</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=134</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;&lt;img width=&quot;82&quot; height=&quot;110&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://193.7.178.18/uploads/Scanfront220P_left.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;We&#039;ve gotten a new document scanner for &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.bawue.net&#039;);&quot;  href=&quot;http://www.bawue.net&quot;  title=&quot;bawue.net homepage&quot;&gt;bawue.net&lt;/a&gt; in order to better handle our documents and our snail-mail communication.&lt;br /&gt;
The &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.usa.canon.com/opd/controller?act=OPDModelDetailAct&amp;amp;amp;fcategoryid=2540&amp;amp;amp;modelid=15607&#039;);&quot;  href=&quot;http://www.usa.canon.com/opd/controller?act=OPDModelDetailAct&amp;amp;fcategoryid=2540&amp;amp;modelid=15607&quot;  title=&quot;ScanFront product page&quot;&gt;Canon ScanFront 220P&lt;/a&gt; is a network scanner which does (among other things) &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/Optical_character_recognition&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/Optical_character_recognition&quot;  title=&quot;&amp;quot;Optical character recognition&amp;quot; at wikipedia&quot;&gt;optical character recognition&lt;/a&gt; and is able to send the resulting document as a PDF via e-Mail or upload it to a FTP Server or a SMB Network share.&lt;/p&gt;

&lt;p&gt;The device itself is running &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/WinCE&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/WinCE&quot;  title=&quot;Windows CE at wikipedia&quot;&gt;Windows CE&lt;/a&gt; in order to accomplish all that which is fine as it therefore needs no computer connected to it as some other scanners do.&lt;/p&gt;

&lt;p&gt;A real problem for the Linux user howerver is that Canon seems to have handed the development of the scanner&#039;s web interface to some clueless and moronic developers.&lt;br /&gt;
There&#039;s simply no excuse for designing a web interface which &lt;b&gt;only&lt;/b&gt; works with Internet Explorer and doesn&#039;t even allow a Firefox user to log into the interface.&lt;br /&gt;
I&#039;d expect &lt;b&gt;MUCH&lt;/b&gt; better from a global company such as Canon, especially when the scanner in question costs about US$ 2,150.00&lt;/p&gt;

&lt;p&gt;If the device would have been running Linux and the sources would have been delivered as requested by the GPL I&#039;d have a working scanner here and Canon&#039;s development team would have had a nice unified diff in the mail fixing their problems. That way, all they are getting is an acrid mail.&lt;br /&gt;
Another reason to favour open source operating systems for any development work. Some companies seem to clearly get this.&lt;/p&gt;

&lt;p&gt;In the meantime tough I need a working scanner. &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.greasespot.net/&#039;);&quot;  href=&quot;http://www.greasespot.net/&quot;  title=&quot;Greasemonkey&quot;&gt;Greasemonkey&lt;/a&gt; to the rescue: I&#039;ve written a small GPL3 licensed &lt;a href=&quot;http://193.7.178.18/uploads/canonscanfron220220pfixu.user.js&quot; title=&quot;canonscanfron220220pfixu.user.js&quot; target=&quot;_blank&quot;&gt;Greasemonkey User script&lt;/a&gt; fixing the problems in the ScanFront webinterface. Naturally, one has to have greasemonkey installed to use this script.&lt;/p&gt;
&lt;p&gt;It currently fixes the login prompt, makes the &quot;New User&quot; button work, fixes an onload-recursion in the address book and makes the job-control window work when selecting the destination address for a scanjob.&lt;br /&gt;
Most of these problems stem from the fact that the Internet Explorer XML parser seems to be somewhat sloppy and does not make a difference by getElementById and getElementsByName.&lt;br /&gt;
My userscript works around these issues but a real fix can only be delivered by Canon.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed,  2 Jan 2008 16:29:16 +0100</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/134-guid.html</guid>
    
</item>
<item>
    <title>Fun with vmware-server</title>
    <link>http://193.7.178.18/archives/122-Fun-with-vmware-server.html</link>
            <category>Bawue.Net</category>
            <category>Fedora</category>
    
    <comments>http://193.7.178.18/archives/122-Fun-with-vmware-server.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=122</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=122</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;I tried the free as in beer vmware-server on our new quad opteron and probably got exactly what I deserved when using tainted modules. :-)&lt;/p&gt;

&lt;pre class=&quot;screen&quot;&gt;
general protection fault: e040 [1] SMP
&amp;lt;Jan/04 01:48 am&amp;gt;last sysfs file: /class/scsi_host/host0/stats
&amp;lt;Jan/04 01:48 am&amp;gt;CPU 0
&amp;lt;Jan/04 01:48 am&amp;gt;Modules linked in: ipmi_devintf ipmi_si ipmi_msghandler vmnet(U) vmmon(U) ipv6 
ip_conntrack_netbios_ns ipt_REJECT xt_state ip_conntrack nfnetlink xt_tcpudp iptable_filter ip_tables
x_tables video sbs i2c_ec i2c_core button battery asus_acpi ac parport_pc lp parport st sg e100
serio_raw pcspkr ide_cd k8_edac mii cdrom edac_mc floppy tg3 shpchp dm_snapshot dm_zero dm_mirror
dm_mod sym53c8xx scsi_transport_spi 3w_9xxx sd_mod scsi_mod ext3 jbd ehci_hcd ohci_hcd uhci_hcd
&amp;lt;Jan/04 01:48 am&amp;gt;Pid: 2317, comm: vmware-vmx Tainted: P      2.6.18-1.2747.el5xen #1
&amp;lt;Jan/04 01:48 am&amp;gt;RIP: e030:[&amp;lt;ffffffff88395db1&amp;gt;]  [&amp;lt;ffffffff88395db1&amp;gt;] :vmmon:Task_Switch_S1B1+0x183/0x976
&amp;lt;Jan/04 01:48 am&amp;gt;RSP: e02b:ffff8801e79c7bb8  EFLAGS: 00010282
&amp;lt;Jan/04 01:48 am&amp;gt;RAX: ffff820000000000 RBX: ffffc2000003d000 RCX: 000000000000e040
&amp;lt;Jan/04 01:48 am&amp;gt;RDX: ffff82000000e040 RSI: 0000000000000000 RDI: ffff8801e9bf6000
&amp;lt;Jan/04 01:48 am&amp;gt;RBP: 00002aaaada80a80 R08: 7fffffff00000001 R09: 0000000000000000
&amp;lt;Jan/04 01:48 am&amp;gt;R10: ffff8801e79c7e98 R11: 0000000000000048 R12: ffffffff8058e000
&amp;lt;Jan/04 01:48 am&amp;gt;R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000660
&amp;lt;Jan/04 01:48 am&amp;gt;FS:  00002aaaada80a80(0000) GS:ffffffff8058e000(0063) knlGS:0000000000000000
&amp;lt;Jan/04 01:48 am&amp;gt;CS:  e033 DS: 002b ES: 002b
&amp;lt;Jan/04 01:48 am&amp;gt;Process vmware-vmx (pid: 2317, threadinfo ffff8801e79c6000, task ffff8801ee6fd040)
&amp;lt;Jan/04 01:48 am&amp;gt;Stack:  736282f99c4145dc  000000009d53f5e8  ffff8801e9bf6000  0000000000000246
&amp;lt;Jan/04 01:48 am&amp;gt; 000000008005003b  00002aaaabb65290  00000000b41c1cc3  0000006300005eaf
&amp;lt;Jan/04 01:48 am&amp;gt; 820000000000efff  ef980ea576c5ffff
&amp;lt;Jan/04 01:48 am&amp;gt;Call Trace:
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff883994eb&amp;gt;] :vmmon:Vmx86_RunVM_S1B1+0x3f/0x1a8
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8838c21e&amp;gt;] :vmmon:__LinuxDriver_Ioctl+0x387/0xd35
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8027f6f0&amp;gt;] __wake_up_common+0x3e/0x68
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8022e141&amp;gt;] __wake_up+0x38/0x4f
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff80260729&amp;gt;] _spin_lock_irqsave+0x9/0x14
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff802976dd&amp;gt;] futex_wake+0xc6/0xd5
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff803045f9&amp;gt;] avc_has_perm+0x43/0x55
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8838daf7&amp;gt;] :vmmon:LinuxDriver_Ioctl+0x529/0x583
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8030512d&amp;gt;] inode_has_perm+0x56/0x63
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff803045f9&amp;gt;] avc_has_perm+0x43/0x55
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8026a78d&amp;gt;] monotonic_clock+0x35/0x7b
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff803051ce&amp;gt;] file_has_perm+0x94/0xa3
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8838db74&amp;gt;] :vmmon:LinuxDriver_CompatIoctl+0x23/0x36
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff802d7230&amp;gt;] compat_sys_ioctl+0xc5/0x2b1
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8025d54d&amp;gt;] ia32_sysret+0x0/0xa
&amp;lt;Jan/04 01:48 am&amp;gt; [&amp;lt;ffffffff8025d4e2&amp;gt;] ia32_syscall+0x1e/0x6b


&amp;lt;Jan/04 01:48 am&amp;gt;Code: 0f b6 42 05 83 e0 0f 83 f8 0b 75 0c 8a 42 05 83 e0 f0 83 c8
&amp;lt;Jan/04 01:48 am&amp;gt;RIP  [&amp;lt;ffffffff88395db1&amp;gt;] :vmmon:Task_Switch_S1B1+0x183/0x976
&amp;lt;Jan/04 01:48 am&amp;gt; RSP &amp;lt;ffff8801e79c7bb8&amp;gt;
&amp;lt;Jan/04 01:48 am&amp;gt; &amp;lt;0&amp;gt;Kernel panic - not syncing: Fatal exception
&amp;lt;Jan/04 01:48 am&amp;gt; (XEN) Domain 0 crashed: rebooting machine in 5 seconds.
&lt;/pre&gt;

&lt;p&gt;I fear I&#039;ll have to look into xen a bit more and use that in the meantime.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;UPDATE:&lt;/b&gt; Turns out, it&#039;s currently impossible to do what I want:
&lt;ul&gt;
&lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/marc2.theaimsgroup.com/?l=xen-users&amp;amp;amp;m=111749526330772&amp;amp;amp;w=2&#039;);&quot;  href=&quot;http://marc2.theaimsgroup.com/?l=xen-users&amp;amp;m=111749526330772&amp;amp;w=2&quot; &gt;Xen and VMware are impossible to run at the same time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/people.redhat.com/riel/RHEL4-Xen-HOWTO&#039;);&quot;  href=&quot;http://people.redhat.com/riel/RHEL4-Xen-HOWTO&quot; &gt;Running ia32 guest inside of a x86_64 Xen instance does not work.&lt;/a&gt; It seems to be a planned feature though.&lt;/li&gt;
&lt;li&gt;qemu is slow and the binary kernel accelerator does not work on x86_64&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;I guess I&#039;ll just have to disable Xen for now and go with vmware until I have new hardware for the soon to be virtualized host. :(&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu,  4 Jan 2007 14:23:00 +0100</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/122-guid.html</guid>
    
</item>
<item>
    <title>Zurücksetzen eines Elmeg VoIP-VPN Gateway</title>
    <link>http://193.7.178.18/archives/103-Zuruecksetzen-eines-Elmeg-VoIP-VPN-Gateway.html</link>
            <category>Bawue.Net</category>
            <category>Hardware</category>
    
    <comments>http://193.7.178.18/archives/103-Zuruecksetzen-eines-Elmeg-VoIP-VPN-Gateway.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=103</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=103</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;&lt;img width=&quot;110&quot; height=&quot;63&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://193.7.178.18/uploads/elmeg/Elmeg-Modul-Gateway-2Sub-2M-300dpi-548px-cmyk.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;Für die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.funkwerk-ec.com/index_de,,194.html&#039;);&quot;  href=&quot;http://www.funkwerk-ec.com/index_de,,194.html&quot; &gt;Elmeg&lt;/a&gt; &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.funkwerk-ec.com/prod_elmeg_ict_main_de,27594,194.html&#039;);&quot;  href=&quot;http://www.funkwerk-ec.com/prod_elmeg_ict_main_de,27594,194.html&quot; &gt;ICT-Serie&lt;/a&gt; von Telefonanlagen gibt es ein 
sogenanntes VoIP-VPN Gateway, dass der Telefonanlage &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Session_Initiation_Protocol&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Session_Initiation_Protocol&quot;  title=&quot;Session Initiation Protocol&quot;&gt;SIP Fähigkeiten&lt;/a&gt; beibringt.&lt;/p&gt;

&lt;p&gt;Die interessanten Features des Moduls sind:
&lt;ul&gt;
 &lt;li&gt;Nutzung von maximal 10 SIP Providern als &quot;Amtsleitung&quot;&lt;/li&gt;
 &lt;li&gt;Anschluss von SIP-fähigen Telefonen als interne Nebenstelle&lt;/li&gt;
 &lt;li&gt;IPSec VPN Verbindungen
  &lt;ul&gt;
   &lt;li&gt;Voice-over-VPN möglich um externe Telefone als interne Nebenstelle zu nutzen&lt;/li&gt;
   &lt;li&gt;Zusammenschaltung von mehreren dieser Telefonanlagen über VPN Verbindungen um z.B. Niederlassungen günstig an das Hauptbüro anzuschliessen.&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;Router Funktion
  &lt;ul&gt;
   &lt;li&gt;Mini Switch mit 3 internen Ports und einem WAN Anschluss.&lt;/li&gt;
   &lt;li&gt;Internetzugang über PPPoE, ISDN und PPtP, DHCP etc. möglich&lt;/li&gt;
   &lt;li&gt;Interner DHCP Server&lt;/li&gt;
   &lt;li&gt;Stateful Inspection Firewall oder Packet Filter&lt;/li&gt;
   &lt;li&gt;IP-Masquerading/NAT&lt;/li&gt;
   &lt;li&gt;RAS-Server und -Callback&lt;/li&gt;
   &lt;li&gt;Netzwerkweite LAN-CAPI Funktionalität&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;Diese Features können realisiert werden, da das VoIP-VPN Gateway ein modifizierter Bintec Router ist.
&lt;p&gt;Das schöne daran ist, dass die Telefonanlage deswegen einen Telnet-Daemon laufen hat und man sich dort mit dem Login &quot;admin&quot; und dem Passwort &quot;fec&quot; einloggen kann und somit das Gerät wesentlich umfangreicher konfigurieren kann als über die vorgesehenen Windows Administrations Tools der Telefonanlage. z.B. für ordentliche IPSec Konfiguration ist das notwendig, oder wenn man Portforwardings aktivieren will.&lt;br /&gt;
Das unschöne ist, dass man die Konfiguration über Telnet so sehr vermurksen kann, dass das Gerät nicht mehr viel macht und sich direkt aufhängt.&lt;br /&gt;
Bei mir ging zwar noch der Login per telnet, aber sollte man dann versuchen &quot;setup&quot; oder einen anderen Befehl an der Shell einzugeben, so war erstmal Schluss.&lt;/p&gt;

&lt;p&gt;Der Funkwerk Support kennt in dem Fall die einfache Lösung, wie man das Problem beseitigen kann: Einschicken, wir reparieren das dann.&lt;/p&gt;

&lt;p&gt;Danke, aber das war die falsche Antwort.&lt;/p&gt;

&lt;p&gt;Aber es gibt ja genügend Stecker auf dem Board, einer wird schon helfen.&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://193.7.178.18/archives/103-Zuruecksetzen-eines-Elmeg-VoIP-VPN-Gateway.html#extended&quot;&gt;&quot;Zurücksetzen eines Elmeg VoIP-VPN Gateway&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri,  7 Jul 2006 15:41:00 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/103-guid.html</guid>
    
</item>
<item>
    <title>Spass mit der Rittal CMC-TC PUII</title>
    <link>http://193.7.178.18/archives/96-Spass-mit-der-Rittal-CMC-TC-PUII.html</link>
            <category>Bawue.Net</category>
            <category>CCC</category>
            <category>Fedora</category>
            <category>Hardware</category>
            <category>Unix</category>
    
    <comments>http://193.7.178.18/archives/96-Spass-mit-der-Rittal-CMC-TC-PUII.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=96</wfw:comment>

    <slash:comments>17</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;&lt;i&gt;[Note to english speaking readers, aggregating this blog: The following article is written in german about gaining root on a piece of embedded server monitor hardware from Rittal and configuring ssh access. If there is demand, I&#039;ll translate this article in english as well.]&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Ich hatte zuvor ja schon &lt;a href=&quot;http://blog.vodkamelone.de/archives/74-Sesam-oeffne-dich-per-SNMP.html&quot; &gt;hier&lt;/a&gt; und &lt;a href=&quot;http://blog.vodkamelone.de/archives/73-Ein-Heim-fuer-Server.html&quot; &gt;hier&lt;/a&gt; ein wenig über das Rittal CMC-TC System gesprochen, dass wir verwenden um unseren Serverschrank zu überwachen.&lt;/p&gt;

&lt;p&gt;Das System selber ist soweit ja sehr schön, und hat auch ein paar nette Features, aber leider fehlt z.B. der ssh Zugang. Telnet anzubieten ist doch schon ein wenig schwach heutzutage. Das ganze wäre ja kein Problem, würde Rittal sich an die GPL Lizenz halten, und mir den Sourcecode und die Buildumgebung zur Verfügung stellen, die gebraucht wird um sich einen eigenen sshd zu installieren.&lt;br /&gt;
Nunja, mal schauen was das noch wird.

&lt;p&gt;Nun will ich aber dennoch einen ssh Daemon auf dem Gerät haben, was sich auch nicht als sonderlich kompliziert rausstellt. Man muss das Gerät nur booten und den vorhandenen sshd starten.&lt;/p&gt;

&lt;p&gt;Aber fangen wir vorne an.&lt;/p&gt;

&lt;p&gt;Schauen wir uns also mal die Bootmeldungen an:
&lt;pre class=&quot;screen&quot;&gt;
U-Boot 1.1.3 (Jun  8 2005 - 15:08:40)

U-Boot code: 20F00000 -&gt; 20F1A868  BSS: -&gt; 20F1EE48
RAM Configuration:
Bank #0: 20000000 16 MB
Board: CMC-PU2 (Rittal GmbH)
Flash:  8 MB
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
no DHCP
## Booting image at 10030000 ...
   Image Name:   ARM Linux-2.4.27
   Created:      2005-04-22   4:52:03 UTC
   Image Type:   ARM Linux Kernel Image (gzip compressed)
   Data Size:    698499 Bytes = 682.1 kB
   Load Address: 20008000
   Entry Point:  20008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

Linux version 2.4.27-vrs1 (mkr@s020403) (gcc version 2.95.4 20010319 (prerelease/franzo/20011204)) #2
     Fri Apr 22 06:49:12 CEST 2005
CPU: Arm920Tid(wb) revision 0
Machine: ATMEL AT91RM9200
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/mtdblock3 ro ethaddr=00:d0:93:12:34:56 ip=192.168.0.190::::
     CMC-TC-PU2::off console=ttyS0,9600
mtdparts=cmc_pu2:128k(uboot)ro,64k(environment),768k(linux),4096k(root),-
Calibrating delay loop... 89.70 BogoMIPS
Memory: 16MB = 16MB total
Memory: 14452KB available (1382K code, 275K data, 60K init)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
CPU: Testing write buffer: pass
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
 Amd/Fujitsu Extended Query Table v1.3 at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Creating 5 MTD partitions on &quot;CMC PU2 flash&quot;:
0x00000000-0x00020000 : &quot;uboot&quot;
0x00020000-0x00030000 : &quot;environment&quot;
0x00030000-0x000f0000 : &quot;linux&quot;
0x000f0000-0x004f0000 : &quot;root&quot;
0x004f0000-0x00800000 : &quot;Partition_004&quot;
i2c-core.o: i2c core module version 2.6.1 (20010830)
i2c-dev.o: i2c /dev entries driver module version 2.6.1 (20010830)
ttyS0 at MMIO 0xfefc0000 (irq = 6) is a AT91_SERIAL
ttyS1 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
ttyS2 at MMIO 0xfefc8000 (irq = 8) is a AT91_SERIAL
ttyS3 at MMIO 0xfefcc000 (irq = 9) is a AT91_SERIAL
ttyS4 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:d0:93:12:34:56)
eth0: Davicom 9196 PHY (Copper)
AT91 Watchdog Timer enabled (5 seconds)
Found AT91 i2c
I2C: RS5C372 RTC driver successfully loaded
CMC buzzer driver $Revision: 0.2 $
CMC digital IO driver $Revision: 0.2 $
Serial driver version 0.03 (2004-12-17) with no serial options enabled
ttyS5 at 0xc2084000 (irq = 29) is a TI16752
ttyS6 at 0xc2086000 (irq = 30) is a TI16752
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 1024)
eth0: Link now 100-FullDuplex
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
      device=eth0, addr=192.168.0.190, mask=255.255.255.0, gw=255.255.255.255,
     host=CMC-TC-PU2, domain=, nis-domain=(none),
     bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NetWinder Floating Point Emulator V0.97 (double precision)
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 60K
serial console detected.  Disabling virtual terminals.
init started:  BusyBox v0.60.2 (2002.10.10-17:17+0000) multi-call binary
eth0: ROVR error
eth0: ROVR error
Startup CMC
no update..
CMC Applications
rs422, Version: V2.00, Build Date: Mon Sep 19 18:01:58 2005
eeprom, Version: V2.00, Build Date: Mon Sep 19 18:00:03 2005

rs232, Version: V2.00, Build Date: Mon Sep 19 18:39:00 2005

CMC-TC-PU2 Thu Jan 1  1970 00:00:15, User 0
CMC-TC-PU2 login: VCC status = OK
cmc_main, Version: V2.15, Build Date: Wed Nov 16 15:20:38 2005
No Options..

Setting up clock 18:03:30 15.06.2006

CMC-TC-PU2 Thu Jun 15  2006 18:03:35, User 0
CMC-TC 192.168.0.190 login:
&lt;/pre&gt;

Eindeutig. Ein Linux mit einer BusyBox Shell. Eine im Embedded-Bereich sehr verbreitete Kombination. In diesem Fall leider ein Lizenzverstoss.&lt;/p&gt;

&lt;p&gt;Jetzt stellt sich die Frage, wie man root wird. Als Login hat man naemlich nur cmc und admin zur Verfügung, die beide normale Useraccounts sind und anstelle einer Shell ein fertiges Menü starten.&lt;/p&gt;
&lt;p&gt;Im Nachhinein, nachdem man sich auf dem Gerät umgeschaut hat, fallen mir verschiedene Möglichkeiten ein, aber die einfachste ist dem Bootloader zu sagen, dass ich gerne eine Shell hätte.&lt;br /&gt;
Mehr Details gibt es im Rest des Artikels.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://193.7.178.18/archives/96-Spass-mit-der-Rittal-CMC-TC-PUII.html#extended&quot;&gt;&quot;Spass mit der Rittal CMC-TC PUII&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 29 Jun 2006 14:15:00 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/96-guid.html</guid>
    
</item>
<item>
    <title>Sesam öffne dich per SNMP</title>
    <link>http://193.7.178.18/archives/74-Sesam-oeffne-dich-per-SNMP.html</link>
            <category>Bawue.Net</category>
    
    <comments>http://193.7.178.18/archives/74-Sesam-oeffne-dich-per-SNMP.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=74</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=74</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;In &lt;a href=&quot;http://blog.vodkamelone.de/archives/73-Ein-Heim-fuer-Server.html&quot;&gt;Ein Heim für Server&lt;/a&gt; hatte ich ja bereits auf die Türsteuerung per SNMP verwiesen.&lt;/p&gt;

&lt;p&gt;Hier ist mal ein kleiner Hack, wie sich sowas in PHP realisieren lässt.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://193.7.178.18/archives/74-Sesam-oeffne-dich-per-SNMP.html#extended&quot;&gt;&quot;Sesam öffne dich per SNMP&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 10 Oct 2005 15:19:16 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/74-guid.html</guid>
    
</item>
<item>
    <title>Ein Heim für Server</title>
    <link>http://193.7.178.18/archives/73-Ein-Heim-fuer-Server.html</link>
            <category>Bawue.Net</category>
    
    <comments>http://193.7.178.18/archives/73-Ein-Heim-fuer-Server.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=73</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=73</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;Manche von Euch, die mich im RL kennen, werden es schon wissen: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.bawue.net&#039;);&quot;  href=&quot;http://www.bawue.net&quot;&gt;Bawue.Net&lt;/a&gt;, der beste Internetprovider von Welt, hat sich vor kurzem ein neues Rack geordert.&lt;br /&gt;
Da das nicht alle Tage vorkommt, lässt man sich natürlich nicht lumpen, und nimmt gleich mal mit eines mit der besseren Ausstattung.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;500&quot; height=&quot;801&quot; style=&quot;float: right; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://193.7.178.18/uploads/serverschrank.jpg&quot; alt=&quot;&quot;  /&gt;Das hier rechts ist es. Ein Rittal TS8 Modell in den Traummassen 80cm Breite, 100cm Tiefe und 2200cm Höhe. Damit passt selbst unsere &lt;a href=&quot;http://blog.vodkamelone.de/uploads/storagetek_timberwolf_9730.jpg&quot;&gt;StorageTek DLT-Library&lt;/a&gt; hinein, die ja ein wenig länger ist und unsere beiden &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.cyclades.com/products/powermanagement/ATP2116&#039;);&quot;  href=&quot;http://www.cyclades.com/products/powermanagement/ATP2116&quot;&gt;Cyclades PM 20i&lt;/a&gt; an der Seite.&lt;/p&gt;

&lt;p&gt;Das besonders schicke an dem Schrank ist die Schranküberwachung von Rittal:&lt;br /&gt;
Das Gerät ganz oben im Schrank sind drei CMC-TC Einheiten, die mehrere Temperatursensoren und einen Rauchmelder überwachung und gleichzeitig auch die Schranktüren und Seitenteile überwachen.&lt;br /&gt;
Werden die Türen geöffnet oder die Sensoren bemerken eine zu hohe Temperatur oder sollte der Rauchmelder anschlagen (bitte nicht), so kann je nach Konfiguration Alarm ausgelöst werden, alle Verbraucher abgeschaltet werden oder eine optionale Racklöschung angeschaltet werden. Die Racklöschung in 3HE wollten wir dann aber doch nicht mehr haben, schliesslich ist sie bei den Gittertüren verlorene Liebesmühe.&lt;/p&gt;

&lt;p&gt;Besonders praktisch an dem CMC-TC System ist, dass man über ein WebInterface oder SNMP Befehle die Türen entriegeln kann, und dann ohne Schlüssel an den Schrank herankommt.&lt;br /&gt;
Der Befehl dafür lautet wie folgt: &quot;snmpset -v 1 -c $community $ip unit1OutputSet.2 i 3&quot; zum Öffnen der vorderen Tür und entsprechend &quot;snmpset -v 1 -c $community $ip unit1OutputSet.5 i 3&quot; zum Öffnen der hinteren Tür. &lt;/p&gt;

&lt;p&gt;Beim seriellen Zugriff auf das Gerät begrüsst einen netterweise ein Linux mit BusyBox. Ich habe gleich mal bei Rittal angefragt, woher ich denn die Sourcen bekomme, weil mir telnet ein wenig unangenehm ist für den Netzwerkzugriff. SSH mit dropbear wäre schon angebracht.&lt;/p&gt;

&lt;p&gt;Mal abwarten wie die Reaktion ist. Dementsprechend kann ich immer noch auf GPL etc. verweisen.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu,  6 Oct 2005 16:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/73-guid.html</guid>
    
</item>
<item>
    <title>Büromöbel</title>
    <link>http://193.7.178.18/archives/46-Bueromoebel.html</link>
            <category>Bawue.Net</category>
    
    <comments>http://193.7.178.18/archives/46-Bueromoebel.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=46</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=46</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;&lt;img width=&quot;83&quot; height=&quot;110&quot; border=&quot;0&quot; hspace=&quot;5&quot; align=&quot;left&quot; src=&quot;http://193.7.178.18/uploads/bueromoebel.serendipityThumb.jpg&quot; alt=&quot;&quot;  /&gt;Heute war ich einkaufen. Und zwar 8 Stühle und einen Konferenztisch (Fotos gibt es dann wenn die Teile geliefert sind) für das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.bawue.net&#039;);&quot;  href=&quot;http://www.bawue.net&quot;&gt;Bawue.Net&lt;/a&gt; Büro.&lt;/p&gt;

&lt;p&gt;Erschreckend fand ich, dass von den ungefähr 80 verschiedenen Stuhmodellen, die für einen Konferenztisch geeignet sind (also keine Rollen, kein &quot;Chefsessel&quot;, kein Fuß in Sternform, nicht drehbar etc.) nur *ein einziges* Modell annehmbar war.&lt;/p&gt;

&lt;p&gt;Das fängt an bei der wohl aktuellen Unsitte Stühle mit einer halbhoen Lehne zu fertigen und endet bei garantierten Rückenschmerzen.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update: Jetzt mit Foto&lt;/b&gt;&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://193.7.178.18/archives/46-Bueromoebel.html#extended&quot;&gt;&quot;Büromöbel&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 17 May 2005 20:41:49 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/46-guid.html</guid>
    
</item>
<item>
    <title>b0rken openldap back-sql templates for MySQL</title>
    <link>http://193.7.178.18/archives/44-b0rken-openldap-back-sql-templates-for-MySQL.html</link>
            <category>Bawue.Net</category>
    
    <comments>http://193.7.178.18/archives/44-b0rken-openldap-back-sql-templates-for-MySQL.html#comments</comments>
    <wfw:comment>http://193.7.178.18/wfwcomment.php?cid=44</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://193.7.178.18/rss.php?version=2.0&amp;type=comments&amp;cid=44</wfw:commentRss>
    

    <author>andreas@dicp.de (andreas)</author>
    <content:encoded>
    &lt;p&gt;If one is testing the sql backend functionality of openldap in connection with a MySQL Database, it is likely that slapd will not start. The following error can be observed when starting slapd with debugging enabled by using the &lt;i&gt;-d 1&lt;/i&gt; parameter:
&lt;/p&gt;
&lt;pre&gt;
backsql_load_schema_map(): error executing at_query:
Return code: -1
   Native error code: 1054
   SQL engine state:  S0022
   Message:           [unixODBC][TCX][MyODBC]
                      &lt;b&gt;Unknown column &#039;sel_expr_u&#039; in &#039;field list&#039;&lt;/b&gt;
==&gt;backsql_free_db_conn()
backsql_free_db_conn(): closing db connection
&lt;/pre&gt;
&lt;p&gt;This error appears as the MySQL Templates shipped with openldap 2.2 are broken and have been so for quite some time. :-(&lt;/p&gt;
&lt;p&gt;The short workaround ist adding the &lt;i&gt;sel_expr_u&lt;/i&gt; row to your &lt;i&gt;ldap_attr_mappings&lt;/i&gt; table as follows:&lt;br /&gt;
&lt;div class=&quot;geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;ALTER&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;TABLE&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;`ldap_attr_mappings`&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;ADD&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;`sel_expr_u`&lt;/span&gt; VARCHAR&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;255&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; AFTER &lt;span style=&quot;color: #ff0000;&quot;&gt;`sel_expr`&lt;/span&gt; ;&lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;However, there are more problems...&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://193.7.178.18/archives/44-b0rken-openldap-back-sql-templates-for-MySQL.html#extended&quot;&gt;&quot;b0rken openldap back-sql templates for MySQL&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu,  5 May 2005 18:26:15 +0200</pubDate>
    <guid isPermaLink="false">http://193.7.178.18/archives/44-guid.html</guid>
    
</item>

</channel>
</rss>