<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tüfteln</title>
	<atom:link href="http://projects.nuschkys.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://projects.nuschkys.net</link>
	<description>[german] verb:        1) to tinker, to to fiddle about; 2) to work meticulously</description>
	<lastBuildDate>Tue, 15 May 2012 12:33:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Testing a new SD card under linux</title>
		<link>http://projects.nuschkys.net/2012/05/15/testing-a-new-sd-card-under-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testing-a-new-sd-card-under-linux</link>
		<comments>http://projects.nuschkys.net/2012/05/15/testing-a-new-sd-card-under-linux/#comments</comments>
		<pubDate>Tue, 15 May 2012 12:31:39 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=568</guid>
		<description><![CDATA[SD cards are a common target for product forgery. Many cards on the market (be it eBay or retailers) are rebranded, have fake capacity or are simply bad ones initially removed from production that are resold afterwards by third parties. &#8230; <a href="http://projects.nuschkys.net/2012/05/15/testing-a-new-sd-card-under-linux/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>SD cards are a common target for product forgery. Many cards on the market (be it eBay or retailers) are rebranded, have fake capacity or are simply bad ones initially removed from production that are resold afterwards by third parties. <a href="http://www.bunniestudios.com/blog/?p=2297">Bunnie has an excellent article on fake SD cards and how to test them</a>. For more info on SD cards, check out <a href="https://wiki.linaro.org/WorkingGroups/Kernel/Projects/FlashCardSurvey">this flash card survey</a>.</p>
<p><div id="attachment_573" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2012/05/sdcardsandisk16gb.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2012/05/sdcardsandisk16gb-300x219.jpg" alt="" title="sdcardsandisk16gb" width="300" height="219" class="size-medium wp-image-573" /></a><p class="wp-caption-text">The card I bought, a Sandisk 16GB class 4 Micro SDHC memory card, including adapter</p></div> I recently bought an SD card from <em>Sandisk</em>, one of the biggest target for forgeries. It was labeled <em>&#8220;Sandisk 16GB class 4 Micro SDHC memory card&#8221;</em>. I bought it on eBay, it was coming from China, and it was cheap (16GB for 8€ including shipping). Of course, I wanted to make sure that I got a good one, so I ran a couple of tests. (BTW, I guess the best up-front-protection against fakes is not to buy the cheapest offer on the market.)</p>
<p>Here&#8217;s what I did under Ubuntu Linux for testing my card. I ran two tests: one for the performance using <a href="http://wiki.laptop.org/go/SDCard_Testing">flashbench</a>, and another one to do a full-write test in order to reveal capacity problems. My laptop only has a USB card reader, so that I cannot read the manufacturer and other info of the card. Not the best for testing, but well.</p>
<p><strong>Attention:</strong> the example below writes to <em>/dev/sdb</em>, which is the device for the card <strong>in my case</strong>. In your case, it might well be a disk. Make sure that you use the proper device (often something like <em>/dev/mmcblk1</em> if you have a real card reader).</p>
<p>Running <em>flashbench</em>:</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ ./test_sd_card.sh /dev/sdb<br />
4MiB &nbsp; &nbsp;10.9M/s <br />
2MiB &nbsp; &nbsp;4.06M/s <br />
1MiB &nbsp; &nbsp;4.05M/s <br />
512KiB &nbsp;2.73M/s <br />
256KiB &nbsp;1.99M/s <br />
128KiB &nbsp;924K/s &nbsp;<br />
64KiB &nbsp; 508K/s &nbsp;<br />
32KiB &nbsp; 282K/s &nbsp;<br />
16KiB &nbsp; 194K/s &nbsp;<br />
8KiB &nbsp; &nbsp;761K/s &nbsp;<br />
4KiB &nbsp; &nbsp;959K/s</div></div>
<p>So, looking at the <a href="http://wiki.laptop.org/go/SDCard_Testing">flashbench wiki</a> this seems to be fairly reasonable for a class 4 card.</p>
<p>Next, I did the full-write test, to see if the card was actually had the promised capacity. Obviously, you need a bit of space on your disk for this. We&#8217;re creating a random data file, write it to the SD card, read it back, and check for differences.</p>
<p>Create a file with the required capacity, filled with random data. We&#8217;re writing blocks of 1024 bytes, so adjust the count to the capacity required (16GB in my case).</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dd if=/dev/urandom of=rnd_init_data bs=1024 count=16000000</div></div>
<p>Now, we write the data to the SD card.</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ dd if=rnd_init_data of=/dev/sdb bs=1024 count=16000000<br />
15558145+0 records in<br />
15558144+0 records out<br />
15931539456 bytes (16 GB) copied, 536.286 s, 29.7 MB/s</div></div>
<p>You can see, we didn&#8217;t manage to write all the bytes to the card. This is expected, as we don&#8217;t know the capacity of the card down to the last byte. As long as the capacity reported by <em>dd</em> (16 GB) is close to the expected result, we&#8217;re happy.</p>
<p>Now, we copy the bytes written to a new file, which we use for later comparison. Notice here the count, which we adapted to the bytes written to the card (15931539456 / 1024 = 15558144). I am sure this can be done easier using tools like <em>truncate</em>, but I didn&#8217;t want to start messing with programs that I don&#8217;t know by heart.</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ dd if=rnd_init_data of=rnd_written_data bs=1024 count=15558144<br />
$ rm -f rnd_init_data</div></div>
<p>Read back the data from the card:</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ dd if=/dev/sdb of=rnd_read_data bs=1024 count=15558144</div></div>
<p>Finally, we&#8217;re comparing the two data files:</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ md5sum rnd*<br />
dfed784abed6662926eb01f7fb5359ca &nbsp;rnd_written_data<br />
dfed784abed6662926eb01f7fb5359ca &nbsp;rnd_read_data</div></div>
<p>Et voilà, my card is genuine (or at least does neither have abysmal performance nor fake capacity). Yay, I&#8217;ve been lucky! </p>
<p>Don&#8217;t forget to clean up (remove files, reformat card):</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ rm -f rnd_written_data rnd_read_data<br />
$ fdisk /dev/sdb &nbsp; &nbsp;# keys: o, n, p, 1, &lt;accept defaults 2 times&gt;, t, c, w<br />
$ mkfs.vfat -F 32 /dev/sdb1</div></div>
<p>(The <em>fdisk</em> line creates a single primary FAT32 partition on the card.)</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2012/05/15/testing-a-new-sd-card-under-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get Ubuntu Live running</title>
		<link>http://projects.nuschkys.net/2012/04/06/how-to-get-ubuntu-live-running/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-get-ubuntu-live-running</link>
		<comments>http://projects.nuschkys.net/2012/04/06/how-to-get-ubuntu-live-running/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 08:37:49 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PowerEdge2800]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=509</guid>
		<description><![CDATA[This article described how to boot Ubuntu from a bootable CD without installing anything on the harddrive. It is meant for the many users of my script that described how to adjust the fan thresholds of a Dell PowerEdge. Step &#8230; <a href="http://projects.nuschkys.net/2012/04/06/how-to-get-ubuntu-live-running/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This article described how to boot Ubuntu from a bootable CD without installing anything on the harddrive. It is meant for the many users of my script that described <a href="http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/">how to adjust the fan thresholds of a Dell PowerEdge</a>.</p>
<p><strong>Step 1</strong><br />
<a href="http://www.ubuntu.com/download/ubuntu/download">Download Ubuntu</a> and burn it on a CD. The latest version with 32-bit will do fine.</p>
<p><strong>Step 2</strong><br />
Boot from the CD and select &#8220;Try Ubuntu&#8221; (don&#8217;t install for obvious reasons). This allows you to try Ubuntu without installing anything. You can find more detailed instructions on the <a href="http://www.ubuntu.com/download/ubuntu/download">download page</a>.<br />
<div id="attachment_512" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2012/04/ubuntu1110_oneric.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2012/04/ubuntu1110_oneric-300x177.jpg" alt="" title="ubuntu1110_oneric" width="300" height="177" class="size-medium wp-image-512" /></a><p class="wp-caption-text">Ubuntu Search Menu</p></div></p>
<p><strong>Step 3</strong><br />
After Ubuntu booted, click on the Ubuntu button on the top left. A search menu as seen on the right should open.</p>
<p><strong>Step 4</strong><br />
Type &#8220;terminal&#8221; into the search box. Ubuntu should give you an icon for the corresponding application. Click on it to start the terminal.</p>
<p><div id="attachment_513" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2012/04/Screenshot-arnuschky@laptop.png"><img src="http://projects.nuschkys.net/wp-content/uploads/2012/04/Screenshot-arnuschky@laptop-300x173.png" alt="" title="Screenshot-arnuschky@laptop" width="300" height="173" class="size-medium wp-image-513" /></a><p class="wp-caption-text">Screenshot of the terminal</p></div><br />
<strong>Step 5</strong><br />
You should now have a console prompt open. Type the following into the prompt to install the dependencies required for the script:</p>
<div class="codecolorer-container text default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sudo apt-get install freeimpi freeipmi-tools openipmi ipmitools python wget</div></div>
<p>This should install the software necessary to query your server using IPMI. IPMI is a protocol for server management. See <a href="https://help.ubuntu.com/community/IPMI">this link</a> for more information regarding IPMI on Ubuntu.</p>
<p>That&#8217;s it! You can continue here: <a href="http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/">How to adjust the fan thresholds of a Dell PowerEdge</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2012/04/06/how-to-get-ubuntu-live-running/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Prey objects for the foot-bots</title>
		<link>http://projects.nuschkys.net/2012/01/27/prey-objects-for-the-foot-bots/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=prey-objects-for-the-foot-bots</link>
		<comments>http://projects.nuschkys.net/2012/01/27/prey-objects-for-the-foot-bots/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 13:01:08 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Robot stuff]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=498</guid>
		<description><![CDATA[I work in robotics, but on the artificial intelligence side of things. That means, almost all the lab is composed of computer scientists and the like. (and their non-affinity to hardware can be quite exasperating at times!) The robots are &#8230; <a href="http://projects.nuschkys.net/2012/01/27/prey-objects-for-the-foot-bots/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_499" class="wp-caption alignright" style="width: 270px"><a href="http://projects.nuschkys.net/wp-content/uploads/2012/01/footbot_grip_prey2.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2012/01/footbot_grip_prey2-260x300.jpg" alt="" title="footbot_grip_prey2" width="260" height="300" class="size-medium wp-image-499" /></a><p class="wp-caption-text">A Swarmanoid foot-bot gripping a prey object</p></div>
<p>I work in robotics, but on the artificial intelligence side of things. That means, almost all the lab is composed of computer scientists and the like. (and their non-affinity to hardware can be quite exasperating at times!) The robots are designed and build at other groups by people that, in contrary to myself,  know what they are doing. :) Nevertheless, from time to time I get to dabble in hardware in order to fix things or to enable us doing certain experiments that where not possible without my additions.</p>
<p>This is the case with the objects we&#8217;ve designed here. It&#8217;s meant for the foot-bot, which is a wheeled robot designed during the <a href="http://www.swarmanoid.org">Swarmanoid</a> project (see <a href="http://projects.nuschkys.net/?p=187">this post for a video explaining the project</a>). While the foot-bot features a gripper to connect to other robots, it cannot simply grab any object, as it depends on a special gripping ring for attachment. The objects we&#8217;ve designed are meant to close this gap: the foot-bots can grab and transport them, allowing us to do experiments in foraging and the like.</p>
<div id="attachment_500" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2012/01/object_parts_and_assembled2.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2012/01/object_parts_and_assembled2-300x144.jpg" alt="" title="object_parts_and_assembled2" width="300" height="144" class="size-medium wp-image-500" /></a><p class="wp-caption-text">Left: The two rings that make up an object plus the required M2 screws. Right: An assembled gripping ring.</p></div>
<p>For me it was the first time to go from the design phase to a fully finished &#8220;product&#8221; that has the look and feel of a professionally made object. Well, we&#8217;ve got it made by a company, so that&#8217;s not really a surprise. Anyways, for someone that usually just hacks stuff together, it was quite a nice experience!</p>
<p>For more info on the objects and their design (which is, in the end, quite simple) you can check out the <a href="http://iridia.ulb.ac.be/IridiaTrSeries/IridiaTr2012-001r001.pdf">technical report</a> and the <a href="http://iridia.ulb.ac.be/supp/IridiaSupp2012-003/">supplementary on-line material</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2012/01/27/prey-objects-for-the-foot-bots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting a PowerEdge SCSI backplane to support SATA</title>
		<link>http://projects.nuschkys.net/2011/12/19/converting-a-poweredge-scsi-backplane-to-support-sata/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=converting-a-poweredge-scsi-backplane-to-support-sata</link>
		<comments>http://projects.nuschkys.net/2011/12/19/converting-a-poweredge-scsi-backplane-to-support-sata/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 12:46:56 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[PowerEdge2800]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=335</guid>
		<description><![CDATA[This post describes how to build a 8 drive storage server for under a hundred bucks (drives not included). Last summer I bought a Dell PowerEdge 2800, which I converted to use silent fans and SATA drives instead of SCSI &#8230; <a href="http://projects.nuschkys.net/2011/12/19/converting-a-poweredge-scsi-backplane-to-support-sata/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This post describes how to build a 8 drive storage server for under a hundred bucks (drives not included). </p>
<p>Last summer I bought a <a href="http://projects.nuschkys.net/projects/dell-poweredge-2800/">Dell PowerEdge 2800</a>, which I converted to use silent fans and SATA drives instead of SCSI drives. See the <a href="http://projects.nuschkys.net/projects/dell-poweredge-2800/">project page for this server</a> for more information on how to hack the BMC&#8217;s firmware in order to swap the fans agains silent ones.</p>
<p>This post is the writeup of the conversion of the server&#8217;s backplane from SCSI to SATA. My main reason for this conversion was money: servers that offer a lot of swappable SATA drive slots are quite expensive. SCSI-based servers, on the other hand, are quite cheap &#8211; nobody uses plain SCSI anymore I guess. After searching a bit on the internet, I&#8217;ve bought a Dell PowerEdge 2800 that supports 8 SCSI drive slots for 25 bucks. </p>
<p>I gutted the SCSI backplane and replaced the connectors with SATA connectors. Adding in a 3Ware 9500S-12 PCI-X card, I&#8217;ve ended up with a raid system that supports 8 SATA drives. (Cold-swappable only, which is what I aimed for. This server is not a production server, obviously, but just our home storage).</p>
<p>In the following, I illustrate the steps how I converted the PowerEdge 2800 to SATA. It&#8217;s quite easy to do, so I hope I can inspire others. Apropos others: there is <a href="http://vvenesect.wordpress.com/2011/08/12/converting-a-servers-scsi-backplane-to-use-sata-drives/">a similar project</a> that was featured on <a href="http://hackaday.com/">Hackaday</a> around the same time I&#8217;ve started with my project.</p>
<p>Assumptions:</p>
<ul>
<li>you do know how to use a soldering iron and which end of a screwdriver is the front</li>
<li>you have a Dell PowerEdge generation 8 (or similar, this should also work with generation 7 and 9 servers as the 2900)</li>
<li>you have a SATA hardware raid card (I used a 3Ware 9500S-12, but any other will do)</li>
</ul>
<p>Required material:</p>
<ul>
<li>90 degree angled all-in-one SATA connector (I used <a href="http://delock.de/produkte/gruppen/Kabel/Delock_SATA_All-in-One_Kabel_gewinkelt_84307.html?setLanguage=EN">Delock type 84307</a>)</li>
<li>cables for connecting the drive LEDs</li>
<li>connector(s) maching the pin headers of your raid controller</li>
<li>glue, solder, time</li>
</ul>
<p>So, let&#8217;s start! Open up your server and remove the backplane. Obviously, you have to remove all drives before being able to detach the backplane. I say obviously after I ripped of the connector of my floppy drive by brute force &#8211; I removed the harddrives but forgot completely about the other drives. D&#8217;oh!</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/1.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-02.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-02-300x200.jpg" alt="" title="pe2800sata-02" width="300" height="200" class="" /></a>
</div>
</div>
<p>I first thought about replacing the whole backplane, but after I bought the server I realized that all the front-panel buttons, the optical drive etc are connected to the backplane. The backplane is therefore essential to the server, and the server does not even boot without it. So we have to leave the backplane in, fair enough.</p>
<p>The first step is to remove the old SCSI connectors from the backplane. Remove first the protective plasic shield from the backplane. Keep it, we will stick it back on later! The SCSI connectors are 68-pin bastards, so unsoldering them is out of the question. In the picture you can see the first connector removed &#8211; I pulled of the plasic part with some heavy pliers and stripped the pins one by one with a cutter.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/2.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-01.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-01-300x200.jpg" alt="" title="pe2800sata-01" width="300" height="200" class="" /></a>
</div>
</div>
<p>Next, remove all connectors as shown in the picture. After removing the first ones by hand, I ended up using a Dremel to remove the pins. It does not have to be perfect, but pay attention to remove any short circuits. You do not want to disturb the underlying SCSI system that is still active in the server, or (even worse) short circuit the power planes!</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/3.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-03.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-03-300x200.jpg" alt="" title="pe2800sata-03" width="300" height="200" class="" /></a>
</div>
</div>
<p>Next, we are going to solder the harddisk access LEDs. This step is optional, but as everybody loves flashing LEDs this will give your project some street cred. No, seriously, the LEDs help you to see access on the harddisks and (if your controller supports it) to identify a specific LED.</p>
<p>The PowerEdge features 2 LEDs for each drive, of which we will use only one (does not matter which one). First, identify the traces on the backside of the backlane for each of the LEDs. Mark them with a pen according to drive number and if it&#8217;s the anode and the cathode. Cut the traces leading to the controller of the backplane leaving enough copper for you to solder a cable on.</p>
<p>In the picture you can see how I did this for one of the ports: one cable connected to the anode of the LED, and the other to the resistor, which in turn is connected to the cathod of the LED. Don&#8217;t forget to include the limiting resistor into the mix, because else you might burn your LEDs!</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/4.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-04.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-04-300x200.jpg" alt="" title="pe2800sata-04" width="300" height="200" class="" /></a>
</div>
</div>
<p>Here you can see how I connected all ports on one side of the backplane. Note that I soldered the cable on the back of the backplane (is that the frontplane?? ;) Remember to fix the cables in place with a little hot-glue. No hacking project can call itself a proper hacking project without a little hot-glue, right?</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/5.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-05.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-05-300x200.jpg" alt="" title="pe2800sata-05" width="300" height="200" class="" /></a>
</div>
</div>
<p>Next, we prepare the connectors to the raid controller. Most raid controllers support pin headers for connecting the drive LEDs. You&#8217;ve checked that your&#8217;s does support this before starting to solder the cables to the LEDs, right? Along the same lines, you&#8217;ve made the cables long enough to go all the way to the raid controller, even when all the fans etc are in the system? Ok, good.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/6.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-06.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-06-300x200.jpg" alt="" title="pe2800sata-06" width="300" height="200" class="" /></a>
</div>
</div>
<p>Configure your connector according to your raid controllers pinout. In my case, the pinout was given in the manual of the raid controller: <a href="http://projects.nuschkys.net/downloads/3ware_9500S-12.png">here&#8217;s the relevant page</a>. Pay attention not to swap pins.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/7.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-07.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-07-300x200.jpg" alt="" title="pe2800sata-07" width="300" height="200" class="" /></a>
</div>
</div>
<p>Reattach the isolating protective plastic shield and put back the power cable. Your backplane should look like in the picture above. Note that I&#8217;ve cut away the two bars at the bottom of the backplane&#8217;s PCB (at the bottom of the two big cutouts, which were closed before). This allows me to insert the backplane easier with all the cables in place, but it is not really required. If you do this on another type of system, make sure that there are no traces running in this part of the PCB.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/8.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-08-e1324211309945.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-08-e1324211309945-200x300.jpg" alt="" title="pe2800sata-08" width="200" height="300" class="" /></a>
</div>
</div>
<p>Now we start doing the actual conversion to SATA. Mount all drives in their drive cages and stick them in your server. With the backplane still unmounted, you should be able to see the back of the drives. Here, I plugged in the angled all-in-one SATA connectors (I used <a href="http://delock.de/produkte/gruppen/Kabel/Delock_SATA_All-in-One_Kabel_gewinkelt_84307.html?setLanguage=EN">Delock type 84307</a>, which worked really good). </p>
<p>As the PowerEdge servers do not have many drive power connectors and we cannot reuse the power connectors of the backplane, we have to connect the power cables of the all-in-one connectors together. This also reduces the cable mess. In the picture you can see how I did it: add the connectors one by one: plug the all-in-one connector in the drive, cut away the power cable that is longer than the distance to the next drive, add the next connector and solder the two cables together. Repeat until you have the whole column completed. It&#8217;s hard to explain but easy enough to do, so have a look at the pictures.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/9.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-09.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-09-300x200.jpg" alt="" title="pe2800sata-09" width="300" height="200" class="" /></a>
</div>
</div>
<p>This is how the end result should look like. Remember to properly protect all solder joints by shrink-tubes or similar. Use zip-ties to clean things up. In the end you&#8217;ll have a single power connector for each column of drives.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/10.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-10-e1324211369229.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-10-e1324211369229-200x300.jpg" alt="" title="pe2800sata-10" width="200" height="300" class="" /></a>
</div>
</div>
<p>Next, we need to attach the SATA connectors to the back plane. The idea is that the connectors stay on the backplane when you pull a drive out &#8211; without this you would have to dismount the backplane each time you want to swap a drive. I thought about many different ways to do this, but in the end I chose to use a kind of construction glue to do it. There are for sure ways to do this in a cleaner way, but this serves the purpose and is quick and cheap.</p>
<p>The glue should have the following attributes:</p>
<ul>
<li>stick on plastic</li>
<li>must remain (at least a bit) flexible</li>
<li>must be able to cover distances of a few millimeters</li>
<li>must not shrink upon drying (will pull the connector back)</li>
<li>must be viscose (not too liquid)</li>
</ul>
<p>Apply the glue to the back of the SATA connectors as shown in the picture (the white stuff). Be sure to clean the connectors and the backplane from any fat residues before doing so. Additionally, push your drives as far as possible to the front (there&#8217;s usually a little play in the cage mounting mechanism, and you&#8217;ll want it to be maxed out). </p>
<p>Then, put the backplane in. Wait.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/11.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-11-e1324211405947.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-11-e1324211405947-200x300.jpg" alt="" title="pe2800sata-11" width="200" height="300" class="" /></a>
</div>
</div>
<p>This is how your server should now look at the interior. You can see the 8 SATA cables coming out of the cutouts at the bottom of the backplane, just along the two power connectors. Additionally, you can see the cables that will connect the drive LEDs to the RAID controller (the two gray cables).</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/12.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-12.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-12-300x200.jpg" alt="" title="pe2800sata-12" width="300" height="200" class="" /></a>
</div>
</div>
<p>After you&#8217;ve waited long enough (see glue instructions), you can remove and re-insert your drives to check if everything is in order. This is how your empty drive slots should look like.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/13.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-13.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/pe2800sata-13-300x200.jpg" alt="" title="pe2800sata-13" width="300" height="200" class="" /></a>
</div>
</div>
<p>Plug the power connectors and connect the SATA and LED cables to the RAID controller. Fire up your machine and check the drive status, and the drive LEDs. Remember that your drives are only cold-swappable, so you have to shut down your server before changing them.</p>
<p>Welcome to your new SATA-based storage server!</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/12/19/converting-a-poweredge-scsi-backplane-to-support-sata/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connecting to a car with ODB-II</title>
		<link>http://projects.nuschkys.net/2011/11/25/connecting-to-a-car-with-odb-ii/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=connecting-to-a-car-with-odb-ii</link>
		<comments>http://projects.nuschkys.net/2011/11/25/connecting-to-a-car-with-odb-ii/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 16:02:31 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Car]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Repairs]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=390</guid>
		<description><![CDATA[Our Opel/Vauxhall Corsa B (engine X10XE, 55KW, 1.0l, 12V) has a problem: it lights up the MKL (&#8220;Motorkontrollleuchte&#8221;, the engine control/warning light) when we&#8217;ve been trying to accelerate on the Autobahn. In order to diagnose the problem, I wanted to &#8230; <a href="http://projects.nuschkys.net/2011/11/25/connecting-to-a-car-with-odb-ii/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Our Opel/Vauxhall Corsa B (engine X10XE, 55KW, 1.0l, 12V) has a problem: it lights up the MKL (&#8220;Motorkontrollleuchte&#8221;, the engine control/warning light) when we&#8217;ve been trying to accelerate on the Autobahn. In order to diagnose the problem, I wanted to connect to the on-board control unit and read the error code. Unfortunately, connecting to this unit proved to be a mess. It took me a while to realize that we have the only model of Corsa B where you cannot read the error code with a paper clip: the car has a modern interface standard to all cars nowadays, called ODB-II. You cannot read ODB2 data directly, you have to connect to it using a computer.</p>
<div id="attachment_435" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/IMGP0023.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/IMGP0023-300x200.jpg" alt="" title="IMGP0023" width="300" height="200" class="size-medium wp-image-435" /></a><p class="wp-caption-text">OBD-II adapter from www.blafusel.de for connecting to the onboard control unit of many cars. For Opel/Vauxhall, you have to us a multiplexer to switch between different pins. On the left, the ExpressCard adapter that allows to connect without timing problems.</p></div>
<p>The reader required for this can be quite costly &#8211; a couple of thousand Euros for the top-of-the-line standalone units. Well, I wasn&#8217;t keen on spending more than my car is worth, so I bought a Open Hardware/Source kit from <a href="http://www.blafusel.de/obd/obd2_kw-interf-b.html">www.blafusel.de</a>. Amazing site with really knowledgeable, helpful people. I&#8217;ve paid ~20€ for the kit including cable, casing etc.</p>
<p>Unfortunately, the interface needs a serial port ans is <strong>extremly</strong> sensitive to timing (as so many low-level programmers/adapters are). But who the hell still has a real serial port on their laptop? I ended up buying severals adapters just to realize that anything USB-based does not work, and that most extension cards for laptops are based on cheap USB-to-serial adapters. Obviously, ExpressCard/PCIe<->USB<->Serial does not have the best timing properties. I found one chipset that does real PCIe<->Serial conversion, it&#8217;s the Oxford OxPCIe952. Any card based on this chipset should work with the ODB-II adapter mentioned above (and any other as far as I can tell). I payed about 20€ for the ExpressCard on eBay.</p>
<p>With the adapter, I managed to connect to the engine control unit alright, which allowed to read and delete the error code (P0103). Now I just have to find the reason for this error code&#8230;</p>
<p>PS: There&#8217;s unfortunately no open-source project for Opel available, but there is <a href="http://www.tek-tronics.co.uk/product_info.php?products_id=78" title="a demo version of the common OP-Com software">a demo version of the common OP-Com software</a>. The ExpressCard adapter works out of the box with Linux (Ububtu 10.4) and Windows (XP). </p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/11/25/connecting-to-a-car-with-odb-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to adjust the fan thresholds of a Dell PowerEdge</title>
		<link>http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-adjust-the-fan-thresholds-of-a-dell-poweredge</link>
		<comments>http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 02:24:19 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[PowerEdge2800]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=380</guid>
		<description><![CDATA[Intro In order to swap the fans on a Dell PowerEdge with slower, more quiet ones you have to adjust the lower critical threshold (LCR). If you don&#8217;t, the server&#8217;s firmware actually lowers the fan&#8217;s speed under it&#8217;s own LCR, &#8230; <a href="http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_337" class="wp-caption aligncenter" style="width: 594px"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/IMGP0051.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/IMGP0051-1024x685.jpg" alt="" title="Victory!" width="584" height="390" class="size-large wp-image-337" /></a><p class="wp-caption-text">Adjusted lower critical thresholds for the fans of a PowerEdge 2800</p></div>
<h1>Intro</h1>
<p>In order to swap the fans on a Dell PowerEdge with slower, more quiet ones you have to adjust the lower critical threshold (LCR). If you don&#8217;t, the server&#8217;s firmware actually lowers the fan&#8217;s speed under it&#8217;s own LCR, panics, spins them back up a 100%, lowers them again etc. Very noisy, very annoying. </p>
<p>Previous, related posts:</p>
<ul class="lcp_catlist">
<li><a href="http://projects.nuschkys.net/2011/08/23/the-battle-againt-the-bmc-%e2%80%93-part-2/" >The battle againt the BMC – Part 2</a> </li>
<li><a href="http://projects.nuschkys.net/2011/08/22/the-battle-againt-the-bmc-part-1/" >The battle againt the BMC – Part 1</a> </li>
<li><a href="http://projects.nuschkys.net/2011/08/03/these-darn-fans/" >Those darn fans!</a> </li>
<li><a href="http://projects.nuschkys.net/2011/07/31/replacing-the-fans-on-a-poweredge-2800/" >Replacing the fans on a Poweredge 2800</a> </li>
</ul>
<p>This behavior is controlled by the BMC, an embedded management controller. You can configure many parameters of the BMC using the IPMI protocol. Unfortunately, the BMC&#8217;s firmware of a Dell PowerEdge does not allow to change the thresholds mentioned above. I contacted Dell support, and they refused to change the thresholds for such an old server. </p>
<p>So I had no choice but to change them myself. It took me quite a while to isolate the proper setting in the BMC&#8217;s firmware, the checksums etc. But I managed, and the server&#8217;s running now very quiet with adjusted thresholds.</p>
<p>Below, I explain how to adjust these thresholds with a python script I wrote. Note that you&#8217;ll need Python 2.6 in order to run the script. In case someone is interested I can also write up how I did it, but this is for another post.</p>
<p><strong>Update:</strong> I created a <a href="http://projects.nuschkys.net/projects/dell-poweredge-2800/">project page for my server</a>.</p>
<h1>The result</h1>
<p>First, here&#8217;s the result: my PowerEdge 2800 with swapped fans and patched fan thresholds.</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/rJ-ScmbQ0hY" frameborder="0" allowfullscreen></iframe></p>
<p>This has been recorded with my laptop, 10cm/4in in front of the server. The system is now more silent than my desktop!</p>
<h1>Prerequisites</h1>
<p>I assume that you have a sufficiently recent Linux distribution up and running, with python installed and IPMI set up. If you don&#8217;t, have a look at <a href="http://projects.nuschkys.net/2012/04/06/how-to-get-ubuntu-live-running/">this article</a> that explains how to get a recent Ubuntu version running (without installing anything on your harddisk!).</p>
<h1>Adjusting the fan thresholds</h1>
<p>I assume that you have now <a href="http://www.gnu.org/software/freeipmi/" target="_blank">FreeIPMI</a> installed, the BMC configured and that you can query the BMC using IPMI.</p>
<ol>
<li><b>Query the sensors</b><br />
First, you have to query the sensors of your server using IPMI. The output should look a bit like this:</p>
<div class="codecolorer-container bash default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">you@server$ </span>ipmi-sensors<br />
<span style="color: #000000;">1</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">125.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">2</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">125.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">3</span>: Ambient Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3.00</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">47.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">4</span>: Planar Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3.00</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">72.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">5</span>: Riser Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3.00</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">62.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">6</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">7</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">8</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">71.00</span> C <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">125.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">9</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">125.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">10</span>: Ambient Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">27.00</span> C <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3.00</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">47.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">11</span>: Planar Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">46.00</span> C <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3.00</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">72.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">12</span>: Riser Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">50.00</span> C <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3.00</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">62.00</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">13</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">14</span>: Temp <span style="color: #7a0874; font-weight: bold;">&#40;</span>Temperature<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span>NA<span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">15</span>: CMOS Battery <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2.64</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">16</span>: ROMB Battery <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">17</span>: VCORE <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">18</span>: VCORE <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">19</span>: PROC VTT <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">20</span>: 1.5V PG <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">21</span>: 1.8V PG <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">22</span>: 3.3V PG <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">23</span>: 5V PG <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">24</span>: 5V Riser PG <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">25</span>: Riser PG <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>State Deasserted<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">26</span>: CMOS Battery <span style="color: #7a0874; font-weight: bold;">&#40;</span>Voltage<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">3.11</span> V <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2.64</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">27</span>: Presence &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Entity Presence<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Entity Present<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">28</span>: Presence &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Entity Presence<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Entity Absent<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">29</span>: Presence &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Entity Presence<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Entity Present<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">30</span>: Presence &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Entity Presence<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Entity Absent<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">31</span>: ROMB Presence <span style="color: #7a0874; font-weight: bold;">&#40;</span>Entity Presence<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Entity Present<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">32</span>: FAN <span style="color: #000000;">1</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1575.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">33</span>: FAN <span style="color: #000000;">2</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1575.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">34</span>: FAN <span style="color: #000000;">3</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1575.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">35</span>: FAN <span style="color: #000000;">4</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1575.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">36</span>: FAN <span style="color: #000000;">5</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1575.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">37</span>: FAN <span style="color: #000000;">6</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1575.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">38</span>: FAN <span style="color: #000000;">1</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2025.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">39</span>: FAN <span style="color: #000000;">2</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: NA <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2025.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">40</span>: FAN <span style="color: #000000;">3</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">4875.00</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2025.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">41</span>: FAN <span style="color: #000000;">4</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">4800.00</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2025.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">42</span>: FAN <span style="color: #000000;">5</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">1800.00</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">900.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">43</span>: FAN <span style="color: #000000;">6</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">1950.00</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">900.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">44</span>: FAN <span style="color: #000000;">7</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">1875.00</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">900.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">45</span>: FAN <span style="color: #000000;">8</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #000000;">1875.00</span> RPM <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">900.00</span><span style="color: #000000; font-weight: bold;">/</span>NA<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">46</span>: Status &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Processor<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Processor Presence detected<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">47</span>: Status &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Processor<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">48</span>: Status &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Power Supply<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Presence detected<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">49</span>: Status &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Power Supply<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">50</span>: VRM &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Power Supply<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Presence detected<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">51</span>: VRM &nbsp;<span style="color: #7a0874; font-weight: bold;">&#40;</span>Power Supply<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Presence detected<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">52</span>: OS Watchdog <span style="color: #7a0874; font-weight: bold;">&#40;</span>Watchdog <span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">53</span>: SEL <span style="color: #7a0874; font-weight: bold;">&#40;</span>Event Logging Disabled<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">54</span>: Intrusion <span style="color: #7a0874; font-weight: bold;">&#40;</span>Physical Security<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>OK<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">55</span>: PS Redundancy <span style="color: #7a0874; font-weight: bold;">&#40;</span>Power Supply<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">56</span>: Fan Redundancy <span style="color: #7a0874; font-weight: bold;">&#40;</span>Fan<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Fully Redundant<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">73</span>: SCSI Connector A <span style="color: #7a0874; font-weight: bold;">&#40;</span>Cable<span style="color: #000000; font-weight: bold;">/</span>Interconnect<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">74</span>: SCSI Connector B <span style="color: #7a0874; font-weight: bold;">&#40;</span>Cable<span style="color: #000000; font-weight: bold;">/</span>Interconnect<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">75</span>: SCSI Connector A <span style="color: #7a0874; font-weight: bold;">&#40;</span>Cable<span style="color: #000000; font-weight: bold;">/</span>Interconnect<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">76</span>: Drive <span style="color: #7a0874; font-weight: bold;">&#40;</span>Slot<span style="color: #000000; font-weight: bold;">/</span>Connector<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">77</span>: Drive <span style="color: #7a0874; font-weight: bold;">&#40;</span>Slot<span style="color: #000000; font-weight: bold;">/</span>Connector<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">78</span>: 1x2 Drive <span style="color: #7a0874; font-weight: bold;">&#40;</span>Slot<span style="color: #000000; font-weight: bold;">/</span>Connector<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">79</span>: Secondary <span style="color: #7a0874; font-weight: bold;">&#40;</span>Module<span style="color: #000000; font-weight: bold;">/</span>Board<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>NA<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">80</span>: ECC Corr Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">81</span>: ECC Uncorr Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">82</span>: I<span style="color: #000000; font-weight: bold;">/</span>O Channel Chk <span style="color: #7a0874; font-weight: bold;">&#40;</span>Critical Interrupt<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">83</span>: PCI Parity Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Critical Interrupt<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">84</span>: PCI System Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Critical Interrupt<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">85</span>: SBE Log Disabled <span style="color: #7a0874; font-weight: bold;">&#40;</span>Event Logging Disabled<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">86</span>: Logging Disabled <span style="color: #7a0874; font-weight: bold;">&#40;</span>Event Logging Disabled<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">87</span>: Unknown <span style="color: #7a0874; font-weight: bold;">&#40;</span>System Event<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">88</span>: CPU Protocol Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Processor<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">89</span>: CPU Bus PERR <span style="color: #7a0874; font-weight: bold;">&#40;</span>Processor<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">90</span>: CPU Init Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Processor<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">91</span>: CPU Machine Chk <span style="color: #7a0874; font-weight: bold;">&#40;</span>Processor<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">92</span>: Memory Spared <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">93</span>: Memory Mirrored <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">94</span>: Memory RAID <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">95</span>: Memory Added <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">96</span>: Memory Removed <span style="color: #7a0874; font-weight: bold;">&#40;</span>Memory<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">97</span>: PCIE Fatal Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Critical Interrupt<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">98</span>: Chipset Err <span style="color: #7a0874; font-weight: bold;">&#40;</span>Critical Interrupt<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #000000;">99</span>: Err Reg Pointer <span style="color: #7a0874; font-weight: bold;">&#40;</span>OEM Reserved<span style="color: #7a0874; font-weight: bold;">&#41;</span>: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Unknown<span style="color: #7a0874; font-weight: bold;">&#93;</span></div></div>
<p>You have to note the part about the fans (d&#8217;oh). Record sensor numbers, fan names and thresholds (the value in brackets). You&#8217;ll need it later to identify your system.
</li>
<li><b>Download the latest BMC firmware</b><br />
Got to <a href="http://support.dell.com/support/downloads/">http://support.dell.com/support/downloads/</a> and get the latest BMC firmware for your system. Select any Linux OS; the BMC firmware should be listed under something like <em>Embedded Server Management</em>. On the download page, select the <em>.BIN</em> package. In my case the file was called <em>BMC_FRMW_LX_R223079.BIN</em>. Download it!</p>
</li>
<li><b>Fix and extract .BIN package</b><br />
In my case the <em>.BIN</em> package did not properly work. I had to fix it first, and then extract it. For this, open a terminal and go to the folder you&#8217;ve downloaded the package to. </p>
<p>Then execute:</p>
<div class="codecolorer-container bash default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">you@server$ </span><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">'s/#!\/bin\/sh/#!\/bin\/bash/'</span> BMC_FRMW_LX_R223079.BIN &nbsp;<span style="color: #666666; font-style: italic;"># fix interpreter bug</span><br />
<span style="color: #666666;">you@server$ </span><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> BMC_FRMW_LX_R223079.BIN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># make executable</span><br />
<span style="color: #666666;">you@server$ </span><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> bmc_firmware &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># create dir as root</span><br />
<span style="color: #666666;">you@server$ </span><span style="color: #c20cb9; font-weight: bold;">sudo</span> .<span style="color: #000000; font-weight: bold;">/</span>BMC_FRMW_LX_R223079.BIN <span style="color: #660033;">--extract</span> bmc_firmware &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># yes, you have to do this as root! :(</span><br />
<span style="color: #666666;">you@server$ </span><span style="color: #7a0874; font-weight: bold;">cd</span> bmc_firmware</div></div>
<p>This should extract your firmware. Check that you have a file called <em>extracted/payload/bmcflsh.dat</em>. If not, game over, your system isn&#8217;t compatible. If yes, yay!</p>
</li>
<li><b>Patch firmware</b><br />
Next, download the program I wrote for patching the firmware. Then, use the program on the firmware as shown below:</p>
<div class="codecolorer-container bash default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">you@server$ </span><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>projects.nuschkys.net<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>dell-adjust-fan-thresholds.py<br />
<span style="color: #666666;">you@server$ </span><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> dell-adjust-fan-thresholds.py<br />
<span style="color: #666666;">you@server$ </span>.<span style="color: #000000; font-weight: bold;">/</span>dell-adjust-fan-thresholds.py payload<span style="color: #000000; font-weight: bold;">/</span>bmcflsh.dat</div></div>
<p>The program is a python (version >= 2.6) script, that first lets you choose a system from the ones available in the firmware and the adjust the fan thresholds of this system. Yes, there can be support for multiple systems in a single firmware. You recorded the fan values before? Now you know why: you have to use it to identify your system from the ones the script shows to you. Just use the number of fans, their names and thresholds to identify your system. Maybe you&#8217;re lucky and the system name has already been found and is directly displayed.</p>
<p>In the next step you can select fans and change their threshold. Just remember that the result is a multiple of 75. Half the usual speed has proven to be a good value. I&#8217;ve never tested what happened if you set it to 0, but this would be quite stupid as you can&#8217;t detect broken fans.</p>
<p>If the program display a code at the end and asks you to report back, please do so! That way we can identify the other systems using their code (for example, the code of a PowerEdge 2800 is &#8220;K_C&#8221;).</p>
</li>
<li><b>Flash firmware</b><br />
Finally, flash the firmware like as shown below.</p>
<p><b>Disclaimer: I am not responsible for any damage you do to your system!  If you flash this firmware, you might render your PowerEdge server unusable. It might even be unrecoverable. Additionally, badly set thresholds might cause overheating.</b></p>
<p>Additionally, use the usual caution when flashing (do not interrrupt power, do not flash other a network link, do not be stupid).</p>
<div class="codecolorer-container bash default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">you@server$ </span><span style="color: #007800;">LD_LIBRARY_PATH</span>=.<span style="color: #000000; font-weight: bold;">/</span>hapi<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>dell<span style="color: #000000; font-weight: bold;">/</span>dup<span style="color: #000000; font-weight: bold;">/</span>lib:<span style="color: #007800;">$LD_LIBRARY_PATH</span> .<span style="color: #000000; font-weight: bold;">/</span>bmcfl32l <span style="color: #660033;">-i</span>=payload<span style="color: #000000; font-weight: bold;">/</span>bmcflsh.dat <span style="color: #660033;">-f</span></div></div>
<p>Cross your fingers. The flasher should accept the firmware. If not and it complains about the CRC, something went wrong. Don&#8217;t worry if the fans speed up fully and go dead afterwards during the flash, that&#8217;s normal. The system should stabilize afterwards. There is not need to reboot.</p>
</li>
<li><b>Check the sensors</b><br />
Check that everything is in order:</p>
<div class="codecolorer-container bash default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">you@server$ </span>ipmi-sensors</div></div>
<p>That&#8217;s it. Enjoy your silent PowerEdge!
</li>
</ol>
<h1>Trivia</h1>
<p>Some things that I learned while messing with the firmware:</p>
<ul>
<li>There can be multiple systems per firmware</li>
<li>Generally it&#8217;s quite well engineered</li>
<li>I&#8217;ve found Dell&#8217;s default password root/calvin. What is the 444444 for?</li>
<li>Dell server systems seem to be named internally after cities. BER, LOND, OSLO etc are easy enough to guess. But what the hell is K_C??? (my system)</li>
<li>The firmware package is probably the most horrible over-engineered script I&#8217;ve ever met on Linux</li>
<li>Dell uses CRC-16 for checksum &#8211; two <b>different</b> algorithms in the same firmware!</li>
</ul>
<p><strong>Update 1:</strong> I created a <a href="http://projects.nuschkys.net/projects/dell-poweredge-2800/">project page for my server</a>.</p>
<p><strong>Update 2:</strong> I wrote <a href="http://projects.nuschkys.net/2012/04/06/how-to-get-ubuntu-live-running/">this article</a> that explains how to get a recent Ubuntu version running (without installing anything on your harddisk!). This is for all the Windows users out there! </p>
<p><strong>Please don&#8217;t ask me basic Linux questions! Google is your friend. If you don&#8217;t know what you are doing, you shouldn&#8217;t be doing it as you might damage your server!</strong><br />
li/li</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/feed/</wfw:commentRss>
		<slash:comments>90</slash:comments>
		</item>
		<item>
		<title>Victory!</title>
		<link>http://projects.nuschkys.net/2011/11/10/victory/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=victory</link>
		<comments>http://projects.nuschkys.net/2011/11/10/victory/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 18:33:55 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PowerEdge2800]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=330</guid>
		<description><![CDATA[More to follow soon&#8230; Update: Here’s the howto. Additionally, I created a project page for my server.]]></description>
			<content:encoded><![CDATA[<div id="attachment_337" class="wp-caption aligncenter" style="width: 594px"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/11/IMGP0051.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/11/IMGP0051-1024x685.jpg" alt="" title="Victory!" width="584" height="390" class="size-large wp-image-337" /></a><p class="wp-caption-text">Adjusted lower critical thresholds for the fans of a PowerEdge 2800</p></div>
<p>More to follow soon&#8230;</p>
<p><strong>Update:</strong> Here’s the <a href="http://projects.nuschkys.net/2011/11/15/how-to-adjust-the-fan-thresholds-of-a-dell-poweredge/">howto</a>. Additionally, I created a <a href="http://projects.nuschkys.net/projects/dell-poweredge-2800/">project page for my server</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/11/10/victory/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python/psycopg2/PostgeSQL: script for bulk inserts using COPY with progress indicator</title>
		<link>http://projects.nuschkys.net/2011/10/28/pythonpsycopg2postgesql-script-for-bulk-inserts-using-copy-with-progress-indicator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pythonpsycopg2postgesql-script-for-bulk-inserts-using-copy-with-progress-indicator</link>
		<comments>http://projects.nuschkys.net/2011/10/28/pythonpsycopg2postgesql-script-for-bulk-inserts-using-copy-with-progress-indicator/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 19:53:05 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=316</guid>
		<description><![CDATA[Woah, what a title. :) I needed a script for inserting bulk data into a PostgreSQL database. Actually, I had a script already, written in Perl, and it was so slow that I needed a better and faster replacement. As &#8230; <a href="http://projects.nuschkys.net/2011/10/28/pythonpsycopg2postgesql-script-for-bulk-inserts-using-copy-with-progress-indicator/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Woah, what a title. :) I needed a script for inserting bulk data into a PostgreSQL database. Actually, I had a script already, written in Perl, and it was so slow that I needed a better and faster replacement. As I am slowly replacing all my Bash/Perl scripts with Python-pedants I aimed at doing the same here.</p>
<p>I decided to use <a href="http://initd.org/psycopg/">psycopg2</a> for a Python-PostgreSQL binding. The copy_from method proved to be very fast; exactly what I needed. BUT I also needed a progress indicator. And while I&#8217;ve found a some people out there looking for exactly the same thing, I couldn&#8217;t find a solution. So here&#8217;s my script for doing this:</p>
<div class="codecolorer-container python default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> psycopg2<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">class</span> ReadFileProgress:<br />
<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> filename<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>filename<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">totalRecords</span> <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">totalBytes</span> <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">os</span>.<span style="color: #dc143c;">stat</span><span style="color: black;">&#40;</span>filename<span style="color: black;">&#41;</span>.<span style="color: black;">st_size</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span> <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># skip header line</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># count records</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> i<span style="color: #66cc66;">,</span> l <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">enumerate</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">datafile</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">pass</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">totalRecords</span> <span style="color: #66cc66;">=</span> i + <span style="color: #ff4500;">1</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Number of records: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> % <span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">totalRecords</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># rewind</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span>.<span style="color: black;">seek</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># skip header line</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># start progress</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">perc5</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">totalBytes</span> / <span style="color: #ff4500;">20.0</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">perc5count</span> <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">lastPerc5</span> <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span> <br />
&nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Writing records: 0%&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; <span style="color: #808080; font-style: italic;"># count bytes and display progress while doing so</span><br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> countBytes<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> size<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span> +<span style="color: #66cc66;">=</span> size<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span> - <span style="color: #008000;">self</span>.<span style="color: black;">lastPerc5</span> <span style="color: #66cc66;">&gt;=</span> <span style="color: #008000;">self</span>.<span style="color: black;">perc5</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">lastPerc5</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span> / <span style="color: #008000;">self</span>.<span style="color: black;">perc5</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;25%&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span> / <span style="color: #008000;">self</span>.<span style="color: black;">perc5</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">10</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;50%&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">readBytes</span> / <span style="color: #008000;">self</span>.<span style="color: black;">perc5</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">15</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;75%&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;.&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> size<span style="color: #66cc66;">=</span><span style="color: #008000;">None</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; countBytes<span style="color: black;">&#40;</span>size<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span>size<span style="color: black;">&#41;</span><br />
&nbsp;<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> read<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> size<span style="color: #66cc66;">=</span><span style="color: #008000;">None</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">countBytes</span><span style="color: black;">&#40;</span>size<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span>size<span style="color: black;">&#41;</span><br />
<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> close<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stderr</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;100%<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">datafile</span>.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; config <span style="color: #66cc66;">=</span> <span style="color: #008000;">dict</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'tablename'</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;tablename&quot;</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'filename'</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;filename&quot;</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'connstring'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;host='?' dbname='?' user='?' password='?'&quot;</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'droptable'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">False</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'createtable'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">False</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'rowsdef'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;id serial PRIMARY KEY, number integer NOT NULL&quot;</span><br />
&nbsp; config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'filecolumns'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">'number'</span><span style="color: black;">&#93;</span><br />
<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">try</span>:<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># get a connection, if a connect cannot be made an exception will be raised here</span><br />
&nbsp; &nbsp; conn <span style="color: #66cc66;">=</span> psycopg2.<span style="color: black;">connect</span><span style="color: black;">&#40;</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'connstring'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># conn.cursor will return a cursor object, you can use this cursor to perform queries</span><br />
&nbsp; &nbsp; cursor <span style="color: #66cc66;">=</span> conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># drop table if requested (and it exists)</span><br />
&nbsp; &nbsp; cursor.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SELECT * FROM information_schema.tables WHERE table_name=%s&quot;</span><span style="color: #66cc66;">,</span> <span style="color: black;">&#40;</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'tablename'</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'droptable'</span><span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #008000;">bool</span><span style="color: black;">&#40;</span>cursor.<span style="color: black;">rowcount</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; cursor.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;DROP TABLE &quot;</span>+config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'tablename'</span><span style="color: black;">&#93;</span>+<span style="color: #483d8b;">&quot;;&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># create the table if requested</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'createtable'</span><span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">bool</span><span style="color: black;">&#40;</span>cursor.<span style="color: black;">rowcount</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; cursor.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;CREATE TABLE &quot;</span>+config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'tablename'</span><span style="color: black;">&#93;</span>+<span style="color: #483d8b;">&quot; (&quot;</span>+config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'rowsdef'</span><span style="color: black;">&#93;</span>+<span style="color: #483d8b;">&quot;);&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># create a fileprogress object and copy the data to the database</span><br />
&nbsp; &nbsp; datafile<span style="color: #66cc66;">=</span>ReadFileProgress<span style="color: black;">&#40;</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'filename'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; cursor.<span style="color: black;">copy_from</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: #66cc66;">=</span>datafile<span style="color: #66cc66;">,</span> table<span style="color: #66cc66;">=</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'tablename'</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span> sep<span style="color: #66cc66;">=</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\t</span>'</span><span style="color: #66cc66;">,</span> null<span style="color: #66cc66;">=</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\N</span>'</span><span style="color: #66cc66;">,</span> size<span style="color: #66cc66;">=</span><span style="color: #ff4500;">8192</span><span style="color: #66cc66;">,</span> columns<span style="color: #66cc66;">=</span>config<span style="color: black;">&#91;</span><span style="color: #483d8b;">'filecolumns'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; datafile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># commit and clsoe</span><br />
&nbsp; &nbsp; cursor.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; conn.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Transaction finished successfully.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">except</span>:<br />
&nbsp; &nbsp; exceptionType<span style="color: #66cc66;">,</span> exceptionValue<span style="color: #66cc66;">,</span> exceptionTraceback <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">exc_info</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Database connection failed!<span style="color: #000099; font-weight: bold;">\n</span> -&gt;%s&quot;</span> % <span style="color: black;">&#40;</span>exceptionValue<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>:<br />
&nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span>main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></div>
<p>Basically, the progress counter is a wrapper around the file object. It simply outputs the percentage of bytes read. The main program is very straight forward. The script was written with an experiment-specific config file parsing which I do not include here. Thus, you have to find your own way to set the config variables in the beginning of the main program.</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/10/28/pythonpsycopg2postgesql-script-for-bulk-inserts-using-copy-with-progress-indicator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SATA cable hack for the XBox 360</title>
		<link>http://projects.nuschkys.net/2011/10/26/sata-cable-hack-for-the-xbox-360/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sata-cable-hack-for-the-xbox-360</link>
		<comments>http://projects.nuschkys.net/2011/10/26/sata-cable-hack-for-the-xbox-360/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 11:02:02 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[XBox 360]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=114</guid>
		<description><![CDATA[This guide describes an easy method how to make your XBox360 DVD drive accessible from the outside so that you can easily reflash it whenever you want without going through the pain of unbuilding your XBox each time. Ah, and &#8230; <a href="http://projects.nuschkys.net/2011/10/26/sata-cable-hack-for-the-xbox-360/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This guide describes an easy method how to make your XBox360 DVD drive accessible from the outside so that you can easily reflash it whenever you want without going through the pain of unbuilding your XBox each time. Ah, and you&#8217;ll loose your warranty.</p>
<p>I guess others did this before, but I haven&#8217;t found anything on the web, so I figured I describe how to do it.</p>
<p>You need:</p>
<ul>
<li>tools/knowledge to open your XBox360 &#8211; I assume that you can do that, if not, search on the web</li>
<li>1x SATA cable 90° angle, ~20cm</li>
<li>1x SATA extension cable, ~20cm</li>
<li>tools to cut metal (e.g., a Dremel)</li>
<li>1 zip-tie</li>
</ul>
<div class="wp-projstep">
<div class="wp-projstep-number"><img title="Step" src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/1.png" alt="Step" width="300" height="200" /></div>
<div class="wp-projstep-img"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0004.jpg"><img title="IMGP0004" src="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0004-300x200.jpg" alt="" width="300" height="200" /></a></div>
</div>
<p>Disconnect the existing SATA cable from the DVD and the mainboard. Remove the DVD drive. It might be hard to find a longer cable with the proper angled connector, so here&#8217;s a closeup of it. It took me 3 tries to get the right one, so here are the DeLOCK model numbers:</p>
<ul>
<li><a href="http://www.delock.com/produkte/gruppen/Kabel/Delock_cable_SATA_30cm_upSLASHstraight_red_84249.html">Delock cable SATA 30cm up/straight red, #84249</a></li>
<li><a href="http://www.delock.com/produkte/gruppen/Kabel/Delock_Cable_SATA_Extension_30cm_red_82545.html">Delock Cable SATA Extension 30cm red, #82545</a></li>
</ul>
<div class="wp-projstep">
<div class="wp-projstep-number"><img title="Step" src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/2.png" alt="Step" width="300" height="200" /></div>
<div class="wp-projstep-img"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0011.jpg"><img class="a" title="IMGP0011" src="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0011-300x200.jpg" alt="" width="300" height="200" /></a></div>
</div>
<p>Search for a good position to cut a hole into the casing and mark it. Protect the rest of your XBox with paper that you tape into position. In the end, only the soon-to-be-hole should be visible; all the rest should be under a thick layer of paper.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/3.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0012.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0012-300x200.jpg" alt="" title="IMGP0012" width="300" height="200" class="" /></a>
</div>
</div>
<p>Take your Dremel and cut a hole into the XBox as marked, carefully avoiding to damage any of the components. Make the whole big enough that the two SATA cables can fit through.</p>
<p>Or, in my case: take your el-cheapo Dremel, start it up, notice the smell, realize the thing is going into meltdown, curse, burn yourself, unplug the thing, wait for the smoke to clear, open it up, yep, it actually melted, order a new one, be too impatient to wait, take out the drill and pipe wrench, and go ahead mistreat your XBox.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/4.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0016.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0016-300x200.jpg" alt="" title="IMGP0016" width="300" height="200" class="" /></a>
</div>
</div>
<p>Carefully remove all the metal dust with a vaccum cleaner; remove the paper. End up with a nice and clean hole. Or in my case the worst exectured casemod ever.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/5.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0018.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0018-300x200.jpg" alt="" title="IMGP0018" width="300" height="200" class="" /></a>
</div>
</div>
<p>Connect the angled SATA connector to the mainboard (just under the DVD drive, see first picture). Then, fiddle the cable through the hole. Fiddle the SATA extension cable through the hole as well, with the extension connector on the outside (d&#8217;oh). Plug the SATA connector into the DVD drive and put the drive back into your XBox. Connect the two SATA cables on the outside. It should now look like the image above.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/6.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0020.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/08/IMGP0020-300x200.jpg" alt="" title="IMGP0020" width="300" height="200" class="" /></a>
</div>
</div>
<p>Attach the SATA cables to the case using a zip-tie. This prevents the you from pulling the cable off the DVD drive when messing with the connectors on the outside. Use a strong wirecutter to cut a hole in the outer plastic casing. Reassemble your XBox.</p>
<p>You&#8217;re done! If you want to flash your drive, just connect a normal SATA cable from the extension plug to your PC (remember to have your XBox switched on and the video connector plugged in!)</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/10/26/sata-cable-hack-for-the-xbox-360/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How-to repair a pizza oven</title>
		<link>http://projects.nuschkys.net/2011/10/22/how-to-repair-a-pizza-oven/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-repair-a-pizza-oven</link>
		<comments>http://projects.nuschkys.net/2011/10/22/how-to-repair-a-pizza-oven/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 11:46:45 +0000</pubDate>
		<dc:creator>arnuschky</dc:creator>
				<category><![CDATA[Repairs]]></category>

		<guid isPermaLink="false">http://projects.nuschkys.net/?p=265</guid>
		<description><![CDATA[Our pizza oven broken yesterday. Well, it broke last time we used it, but we didn&#8217;t realize before yesterday night (when we had the pizzas already prepared). I started to repair the oven directly yesterday night (it&#8217;s quite simple and &#8230; <a href="http://projects.nuschkys.net/2011/10/22/how-to-repair-a-pizza-oven/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Our pizza oven broken yesterday. Well, it broke last time we used it, but we didn&#8217;t realize before yesterday night (when we had the pizzas already prepared). I started to repair the oven directly yesterday night (it&#8217;s quite simple and cheap to do actually), and as our guests were quite interested in the process I figured I post the description here.</p>
<div id="attachment_272" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0032.jpg"><img class="size-medium wp-image-272" title="IMGP0032" src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0032-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Pizza oven &quot;Gala Pizza Pronto&quot;</p></div>
<p>Oven description: it&#8217;s a very cheap &#8220;Gala Pizza Pronto&#8221; oven with a stone bed. It&#8217;s genious for making pizzas yourself; the pizzas turn out to be much like a &#8220;real&#8221; pizza (and not either dry or overly soft like in a normal oven, and they have a proper bottom).</p>
<p>German disclaimer: Hier geht es um die Reparatur von einem Pizzaofen. Ich beschreibe die Reparatur auf Englisch. Wenn es aber Fragen geben sollte, bin ich natürlich gerne Bereit diese auch auf Deutsch zu beantworten!</p>
<p>French disclaimer: Ici une description comment reparer un four pizza. La description en bas est en englais. Néanmoins, je veux bien repondre à tout les question qui s&#8217;est pose en Français!</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/1.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<p><a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0026.jpg"><img class="" title="IMGP0026" src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0026-300x200.jpg" alt="" width="300" height="200" /></a></p>
</div>
</div>
<h1>Open the casing</h1>
<div id="attachment_269" class="wp-caption alignright" style="width: 310px"><a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0024.jpg"><img class="size-medium wp-image-269" title="IMGP0024" src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0024-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Cheap bitset with lots of varieties of bits</p></div>
<p>Most suppliers use special screws for safety (to keep people like us from messing with the interiour). While we&#8217;re at it: DISCONNECT THE POWER CORD before opening the casing. If you don&#8217;t, well, that would maybe be a Darwin award, but I felt anyways obliged to put this warning here. In my case, the oven had tri-wing screws (see picture).</p>
<p>For repair work, two things are really important to have:</p>
<ol>
<li>a multimeter (I assume that you know how to use one, if not check for a guide on the internet, e.g., at <a href="http://www.sparkfun.com/tutorials/202" title="Sparkfun Multimeter Tutorial">Sparkfun</a></li>
<li>a bitset with may different types (see picture, mine cost 10 bucks and has like 8 different bit types)</li>
</ol>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/2.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0002.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0002-300x200.jpg" alt="" title="IMGP0002" width="300" height="200" class="" /></a>
</div>
</div>
<h1>Trace circuit</h1>
<p>Try to trace the circuit of your oven. The circuit of the cheap ovens (like mine) is very simple: it consists of a temperature regulator (marked &#8220;poti&#8221; in the drawing), the 2 heating elements and a thermal fuse. See high-tech drawing above. Pizza goes between the two heating elements (I forgot to draw that).</p>
<p>Follow all the cables and check if they are not broken, disconnected or similar (simple) problems. Check that you have connectivity between the wall plug and the ovens interior, somebody might have broken the cord (i.e., by tripping over it).</p>
<p>All ok? I thought so. Next step!</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/3.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0022.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0022-300x200.jpg" alt="" title="IMGP0022" width="300" height="200" class="" /></a>
</div>
</div>
<h1>Check the heating elements</h1>
<p>Next, we verify that the <a href="http://en.wikipedia.org/wiki/Heating_element" title="Heating elements">heating elements</a> didn&#8217;t burn-out. Heating elements are super simple: they have a certain (small) resistance and can sustain high currents without burning. This means you can apply some voltage to them and they heat up. Thus, we can check them: if they have a infinite or zero resistance, they are broken. In that case you can trash the oven (unless you manage to find a replacement of course). If they work, they should show a small resistance as shown in the picture (26 Ohms sound about right).</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/4.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0023.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0023-300x200.jpg" alt="" title="IMGP0023" width="300" height="200" class="" /></a>
</div>
</div>
<h1>Check the fuse</h1>
<p>If the heating elements are ok, it&#8217;s time to check the fuse. It&#8217;s usually attached close to the inner casing of the oven, and hidden in a layer of non-conductive heat-resitant tubing. The picture shows what it looks like. Test the fuse, if there&#8217;s no conductivity it&#8217;s broken.</p>
<div class="wp-projstep">
<div class="wp-projstep-number"><img src="http://projects.nuschkys.net/wp-content/themes/twentyeleven-arnuschky/images/5.png" alt="Step" title="Step" width="300" height="200" class="" /></div>
<div class="wp-projstep-img">
<a href="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0029.jpg"><img src="http://projects.nuschkys.net/wp-content/uploads/2011/10/IMGP0029-300x200.jpg" alt="" title="IMGP0029" width="300" height="200" class="" /></a>
</div>
</div>
<h1>Replace the fuse</h1>
<p>To replace the fuse, read the model number of the fuse. In my case, it said:</p>
<div class="codecolorer-container c default codebox" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">MICROTEMP<br />
STGAHP<br />
G4A00<br />
TF 240C</div></div>
<p>Checking on the web, I&#8217;ve found the <a href="http://www.thermodisc.com/productdetail.asp?ProductID=34 ">producer</a> and the <a href="http://www.thermodisc.com/loadMedia.asp?Method=Spec&#038;MediaName=TCO.pdf&#038;ProductID=34&#038;ReturnPage=14">datasheet</a>. With the datasheet, we can decipher the model number: It&#8217;s a 10A, 250V fuse for 240° Celsius.</p>
<p>These are quite common, I&#8217;ve found this part at the local electronics store for 2 bucks. Replace the fuse and voila, your oven should work again!</p>
<p>A note on replacing the fuse: as you can&#8217;t solder or use anything with plastic, the connections in such an oven are usually crimped. If you can&#8217;t manage to open the existing crimp-connector or have the part available, you can replace it with the metal part from a screw terminal (see picture). Just remember to strip off the plastic!</p>
]]></content:encoded>
			<wfw:commentRss>http://projects.nuschkys.net/2011/10/22/how-to-repair-a-pizza-oven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

