<?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>EdVoncken.NET</title>
	<atom:link href="http://edvoncken.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://edvoncken.net</link>
	<description>(beta)</description>
	<lastBuildDate>Wed, 18 Jan 2012 12:40:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Workaround for Nagios check_disk failure in RHEL / CentOS 6.2</title>
		<link>http://edvoncken.net/2012/01/workaround-for-nagios-check_disk-failure-in-rhel-centos-6-2/</link>
		<comments>http://edvoncken.net/2012/01/workaround-for-nagios-check_disk-failure-in-rhel-centos-6-2/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 12:40:14 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1497</guid>
		<description><![CDATA[<p>After updating from EL 6.1 to 6.2, the Nagios &#8220;check_disk&#8221; plugin suddenly stopped working with &#8220;Permission denied&#8221; errors. This problem is related to the SElinux policy (you *are* running with SElinux enabled, aren&#8217;t you?).</p>
<p>By default, these AVC denials are not logged in /var/log/audit/audit.log which makes this problem harder to spot (if you want, you can enable all audit-messages by running semodule -DB).</p>
<p>There are at least two relevant entries in Bugzilla:</p>

Bug 771245 &#8211; nagios-plugins-disk fails when checking /boot on RHEL6.2 boxes
Bug 768055 &#8211; SELinux silent denials of Nagios NRPE check of /boot

<p>Fortunately, there is a simple workaround while we wait for an updated <i>[...]<p>Continue reading <a href="http://edvoncken.net/2012/01/workaround-for-nagios-check_disk-failure-in-rhel-centos-6-2/">Workaround for Nagios check_disk failure in RHEL / CentOS 6.2</a></p></i>]]></description>
			<content:encoded><![CDATA[<p>After updating from EL 6.1 to 6.2, the Nagios &#8220;<tt>check_disk</tt>&#8221; plugin suddenly stopped working with &#8220;Permission denied&#8221; errors. This problem is related to the SElinux policy (you *are* running with SElinux enabled, aren&#8217;t you?).</p>
<p>By default, these AVC denials are not logged in <tt>/var/log/audit/audit.log</tt> which makes this problem harder to spot (if you want, you can enable all audit-messages by running <tt>semodule -DB</tt>).</p>
<p>There are at least two relevant entries in Bugzilla:</p>
<ul>
<li><a href="https://bugzilla.redhat.com/show_bug.cgi?id=771245"><strong>Bug 771245</strong></a> &#8211; nagios-plugins-disk fails when checking /boot on RHEL6.2 boxes</li>
<li><a href="https://bugzilla.redhat.com/show_bug.cgi?id=768055"><strong>Bug 768055</strong></a> &#8211; SELinux silent denials of Nagios NRPE check of /boot</li>
</ul>
<p>Fortunately, there is a simple workaround while we wait for an updated <tt>selinux-policy</tt> package. As root, do the following:</p>
<blockquote>
<pre>chcon -t nagios_unconfined_plugin_exec_t /usr/lib64/nagios/plugins/check_disk</pre>
</blockquote>
<p>Or, for 32-bit systems:</p>
<blockquote>
<pre>chcon -t nagios_unconfined_plugin_exec_t /usr/lib/nagios/plugins/check_disk</pre>
</blockquote>
<p>No need to restart anything; just wait until Nagios re-checks the service and the problem should be gone. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2012/01/workaround-for-nagios-check_disk-failure-in-rhel-centos-6-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Controlling the Foscam FI8919W IP Camera</title>
		<link>http://edvoncken.net/2012/01/controlling-the-foscam-fi8919w-ip-camer/</link>
		<comments>http://edvoncken.net/2012/01/controlling-the-foscam-fi8919w-ip-camer/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 22:01:38 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Home Security]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[shell scripting]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1475</guid>
		<description><![CDATA[<p>The Foscam FI8919W Pan-Tilt camera supports a number of preset locations, or Presets.</p>
<p>The onboard web interface does not seem to offer a way to configure these presets &#8211; but there is another way!</p>
<p>I have written a couple of small shell scripts (for Linux or Mac OS X) that allow you to set a preset, move to a preset and even take a snapshot right from the command line.</p>
<p>The first script stores the current camera position into the specified preset.</p>
<p>You need to open a web browser or camera app (my favorite: Live Cams Pro on iPad/iPhone) and set the camera position.</p>
<p>Then, <i>[...]<p>Continue reading <a href="http://edvoncken.net/2012/01/controlling-the-foscam-fi8919w-ip-camer/">Controlling the Foscam FI8919W IP Camera</a></p></i>]]></description>
			<content:encoded><![CDATA[<p><a href="http://edvoncken.net/wp-content/uploads/2012/01/foscam_fi8918w_white.png"><img class="alignright size-thumbnail wp-image-1491" title="foscam_fi8918w_white" src="http://edvoncken.net/wp-content/uploads/2012/01/foscam_fi8918w_white-150x150.png" alt="Foscam FI8918W IP Camera, white" width="150" height="150" /></a>The Foscam FI8919W Pan-Tilt camera supports a number of <a title="Foscam IP-Camera Presets" href="http://foscam.us/forum/fi8918w-preset-monitoring-surveillance-t236.html" target="_blank">preset locations, or Presets</a>.</p>
<p>The onboard web interface does not seem to offer a way to configure these presets &#8211; but there is another way!</p>
<p>I have written a couple of small shell scripts (for Linux or Mac OS X) that allow you to set a preset, move to a preset and even take a snapshot right from the command line.</p>
<p>The first script stores the current camera position into the specified preset.</p>
<p>You need to open a web browser or camera app (my favorite: <a title="App Store: Live Cams Pro" href="http://itunes.apple.com/nl/app/live-cams-pro/id428145132?mt=8" target="_blank">Live Cams Pro</a> on iPad/iPhone) and set the camera position.</p>
<p>Then, run this script, specifying the preset number (for example, &#8220;<tt>foscam_set 0</tt>&#8221; to set the first preset):</p>
<blockquote>
<pre>#!/bin/bash
# Store current camera position in specified preset (0..16)

# Commandline handling
#
preset=$1
if [ -z $preset ];
then
    echo "Syntax: $0 &lt;preset&gt;, where preset is a number (0..16)"
    exit 1
fi

# Address (or address:port number) where to reach the camera
# Username / password to access camera functions
#
CAMERA=192.168.1.2
USERNAME=theUsername
PASSWORD=thePassword

# Presets are set using URL with command (30 + preset*2), and recalled using URL with command (31 + preset*2)
#
command=$((30 + 2*$preset))
echo "Storing current camera position in preset ${preset} (command = ${command})"
wget -O - http://${CAMERA}/decoder_control.cgi?command=${command}\&amp;user=${USERNAME}\&amp;pwd=${PASSWORD}</pre>
</blockquote>
<p>Next, a script to move the camera to a specified preset (for example, &#8220;<tt>foscam_go 3</tt>&#8220;:</p>
<blockquote>
<pre>#!/bin/bash
# Move camera to specified preset (0..16)

# Commandline handling
#
preset=$1
if [ -z $preset ];
then
    echo "Syntax: $0 &lt;preset&gt;, where preset is a number (0..16)"
    exit 1
fi

# Address (or address:port number) where to reach the camera
# Username / password to access camera functions
#
CAMERA=192.168.1.2
USERNAME=theUsername
PASSWORD=thePassword

# Presets are set using URL with command (30 + preset*2), and recalled using URL with command (31 + preset*2)
#
command=$((31 + 2*$preset))
echo "Moving camera to preset ${preset} (command = ${command})"
wget -O - http://${CAMERA}/decoder_control.cgi?command=${command}\&amp;user=${USERNAME}\&amp;pwd=${PASSWORD}</pre>
</blockquote>
<p>Finally, a demo script that moves the camera to a preset, takes a snapshot and stores it locally (based on <a title="Foscam Forum" href="http://foscam.us/forum/fi8918w-preset-monitoring-surveillance-t236.html#p979" target="_blank">a post by 1994MGoBlue</a>):</p>
<blockquote>
<pre>#!/bin/bash
# Take snapshots of certain preset camera locations

# Address (or address:port number) where to reach the camera
# Username / password to access camera functions
#
CAMERA=192.168.1.2
USERNAME=theUsername
PASSWORD=thePassword

# The camera should normally be in this position
DEFAULT_PRESET=3

# Seconds to sleep after issuing a camera move command, allow it to reach new position.
# You may have to change this value to your needs
DELAY=10

# Presets are set using URL with command (30 + preset*2), and recalled using URL with command (31 + preset*2)
#
for preset in 0 1 2 3 4;
do
    command=$((31 + 2*$preset))
    echo "Taking snapshot in preset ${preset} (command = ${command})"

    # Move camera, delay, take snapshot (stored in /tmp/)
    wget -O - http://${CAMERA}/decoder_control.cgi?command=${command}\&amp;user=${USERNAME}\&amp;pwd=${PASSWORD}
    sleep ${DELAY}
    wget -O /tmp/preset-${preset}.jpg http://${CAMERA}/snapshot.cgi?user=${USERNAME}\&amp;pwd=${PASSWORD}
done

# Done, send camera back to default position
command=$((31 + 2*$DEFAULT_PRESET))
wget -O - http://${CAMERA}/decoder_control.cgi?command=${command}\&amp;user=${USERNAME}\&amp;pwd=${PASSWORD}</pre>
</blockquote>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2012/01/controlling-the-foscam-fi8919w-ip-camer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s 2012! Happy New Year!</title>
		<link>http://edvoncken.net/2012/01/its-2012-happy-new-year/</link>
		<comments>http://edvoncken.net/2012/01/its-2012-happy-new-year/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 22:01:42 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1470</guid>
		<description><![CDATA[<p>Een gelukkig en vooral gezond 2012!</p>
<p></p>
<p>&#8230; ook namens onze veestapel, Bommel, Blacky en Koetje  </p>
]]></description>
			<content:encoded><![CDATA[<p>Een gelukkig en vooral gezond 2012!</p>
<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/bommel.jpg"><img class="alignnone size-large wp-image-1471" title="bommel" src="http://edvoncken.net/wp-content/uploads/2011/12/bommel-1024x768.jpg" alt="Een gezond en gelukkig 2012" width="100%" height="100%" /></a></p>
<p><span style="color: #999999;"><em>&#8230; ook namens onze veestapel, Bommel, Blacky en Koetje <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2012/01/its-2012-happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assembling the JeeLabs OOK433 Plug, part 1</title>
		<link>http://edvoncken.net/2011/12/assembling-the-jeelabs-ook433-plug-part-1/</link>
		<comments>http://edvoncken.net/2011/12/assembling-the-jeelabs-ook433-plug-part-1/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 18:47:48 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[EN]]></category>
		<category><![CDATA[jeelabs]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1443</guid>
		<description><![CDATA[<p>I got some KAKU (Klik Aan Klik Uit) switches to control lighting etc. These can be remote controlled using a JeeNode with the OOK433 Plug.</p>
<p>This plug contains a separate receiver and transmitter board. After consulting the schematic, it appears that the receiver is hooked up to the AIO pin, while the transmitter is connected to the DIO pin. This information is needed when reconfiguring the software for the actual Port socket you plugged the OOK433 into.</p>
<p>There are two solder jumpers that need to be made (marked in the picture on the right):</p>

The upper one selects supply voltage. According to current <i>[...]<p>Continue reading <a href="http://edvoncken.net/2011/12/assembling-the-jeelabs-ook433-plug-part-1/">Assembling the JeeLabs OOK433 Plug, part 1</a></p></i>]]></description>
			<content:encoded><![CDATA[<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-001.jpg"><img class="alignright size-medium wp-image-1445" title="OOK433 Plug" src="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-001-300x199.jpg" alt="JeeLabs OOK433 Plug" width="300" height="199" /></a>I got some KAKU (Klik Aan Klik Uit) switches to control lighting etc. These can be remote controlled using a JeeNode with the OOK433 Plug.</p>
<p>This plug contains a separate receiver and transmitter board. After consulting <a title="JeeLabs OOK433 Plug Schematic (PDF)" href="http://jeelabs.net/attachments/833/jlpcb-125.pdf" target="_blank">the schematic</a>, it appears that the receiver is hooked up to the AIO pin, while the transmitter is connected to the DIO pin. This information is needed when reconfiguring the software for the actual Port socket you plugged the OOK433 into.</p>
<p>There are two solder jumpers that need to be made (marked in the picture on the right):</p>
<ul>
<li>The upper one selects supply voltage. According to <a title="JeeLabs OOK433 Plug Documentation" href="http://jeelabs.net/projects/hardware/wiki/OOK_433_Plug" target="_blank">current documentation</a>, the rightmost two pads need to be bridged, selecting +3V.</li>
<li>The lower solder jumper should always be bridged (except if a resistor R1 is to be installed)</li>
</ul>
<p>Note that the Receiver and Transmitter modules have &#8220;+5V&#8217; and &#8220;+12V&#8221; markings on them &#8211; apparently, they also work at this much lower voltage.</p>
<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-002.jpg"><img class="alignright size-medium wp-image-1447" title="OOK433 Plug with Header" src="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-002-300x199.jpg" alt="JeeLabs OOK433 Plug with Header" width="300" height="199" /></a>After making these two solder jumpers, continue assembly. I soldered a 6-pin header (not included with the kit)  to the Port connector so I can plug it straight into a JeeNode.</p>
<p>The trick here is to apply some solder to one pad and one pin first. Then, hold the header in place while re-heating the solder on that pad. The remaining pads can now be soldered properly. The picture shows the solder jumpers I made, as well as the preparations for soldering the 6-pin header in place.</p>
<p>Make sure you get shiny solder joints that are properly heated (lead-free solder tends to shine a bit less than the 60/40 I use).</p>
<p>Next up: the transmitter module. Note that when soldering, you usually work from &#8220;lowest&#8221; to &#8220;highest&#8221; component. This makes life easier. Simply insert the transmitter module into the 3 holes and solder it. Note that the module has an antenna connector (marked &#8220;ANT&#8221;) for adding a straight-wire antenna, approx. 17cm in length. This corresponds to 1/4 wavelength at 433MHz.</p>
<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-003.jpg"><img class="alignright size-medium wp-image-1452" title="OOK433 Plug with Transmitter module" src="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-003-300x199.jpg" alt="OOK433 Plug with Transmitter module" width="300" height="199" /></a>Finally, the receiver module. Insert it into the 4 holes and solder it. This module also has an antenna connector, you may want to add a 17cm straight-wire antenna here as well.</p>
<p>The end result is in the picture below. Now for the moment of truth: trying to make it work with a JeeNode and a software sketch.</p>
<p>This is where my trouble began. I used various sketches with my new KAKU remote, to no avail:</p>
<ul>
<li>kaku_demo</li>
<li><a title="KAKU demo code by MichelV" href="http://forum.jeelabs.net/files/KlikAanKlikUit_A_type.pde_.txt" target="_blank">KlikAanKlikUit_A_type</a></li>
<li>ookRelay</li>
<li>ookScope2</li>
<li>recv433_test</li>
</ul>
<p>I searched the <a title="Google - site:jeelabs.org OOK433" href="http://www.google.nl/search?q=site%3Ajeelabs.org+ook433" target="_blank">blog</a> and <a title="Google - site:jeelabs.net OOK433" href="http://www.google.nl/search?q=site%3Ajeelabs.net+ook433" target="_blank">forums</a> using Google (&#8220;site:jeelabs.net OOK433&#8243;) and found several people struggling to make the OOK433 Plug work. Several issues appear to be at play here:</p>
<ol>
<li><strong>Confusion regarding the correct supply voltage; it seems that +3V is not enough.</strong><br />
<em>This means that you would need to bridge the leftmost two pads on the upper solder jumper, instead of the rightmost two pads.</em></li>
<li><strong>Confusion regarding port numbers / Arduino pin numbers.</strong><br />
<em>The KlikAanKlikUit_A_type sketch is the only one that seems to clearly document where the Plug is expected to be for the sketch to work.</em></li>
<li><strong>Confusion regarding the antennas being &#8220;optional&#8221; or not.</strong><br />
<em>I have no antennas connected at the moment, but I&#8217;m using the remote at close range so it should not be a problem.</em></li>
<li><strong>Confusion regarding the different KAKU protocols out there.</strong><br />
<em>I think I have the most recent protocol, with house code (A-D on my remote). The old protocol apparently does not have that.</em></li>
</ol>
<p>All in all, quite a few variables <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I decided to go ahead with the ookScope2.ino sketch &#8211; that appears to be a fairly recent sketch; hopefully that code works as expected. First hurdle: determining which port to plug the OOK433 Plug into&#8230;</p>
<p>The code contains this line:</p>
<blockquote><p><code>#define OOK_PIN   2   // this is the input pin with the signal to be analyzed</code></p></blockquote>
<p>This might refer to AVR pin PD2, Arduino pin &#8220;Digital 2&#8243; but that would mean it&#8217;s <a title="Pins, damned pins and JeeNodes" href="http://jeelabs.org/2011/11/10/pins-damned-pins-and-jeenodes/" target="_blank">connected to the RFM12B INT line</a>! Not very likely&#8230; I tried the code, and apart from the [ookScope] identifier, nothing happened. So, where does that OOK433 Plug need to go for the sketch to work?</p>
<p>OK, back to the schematic I talked about at the start of this post. The OOK433 receiver module appears to be connected to the AIO pin. If I want to use the plug in Port 3, I need to find the proper value for AIO3. That would be Analog 2 / Digital 16 (hey, &#8217;2&#8242; looks familiar but it didn&#8217;t work).</p>
<p>I then tried seting OOK_PIN to 16 (Digital 16), plugged the OOK433 into Port 3 and behold! The sketch starts, and emits binary garbage on the serial output! This is promising!</p>
<p>Next up: install the JeeRev / JeeMon software on my Mac <a title="JeeMon for early birds" href="http://jeelabs.org/2011/11/25/jeemon-for-early-birds/" target="_blank">according to instructions</a>. Unfortunately, that didn&#8217;t result in a nice bar graph display &#8211; the bars remain at zero, even though I pressed the remote buttons. Perhaps the ookScope2.ino sketch doesn&#8217;t work with this version of the JeeMon software? What&#8217;s next? Debugging the JeeMon installation? Nah&#8230;</p>
<p>Anyway, my head hurts after reading through the various forum and blog posts &#8211; once I get this working I&#8217;ll post &#8220;part 2&#8243; of this adventure <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-004.jpg"><img class="alignnone size-large wp-image-1456" title="JeeLabs OOK433 Plug, completely assembled" src="http://edvoncken.net/wp-content/uploads/2011/12/OOK433-004-1024x682.jpg" alt="JeeLabs OOK433 Plug, completely assembled" width="100%" height="100%" /></a></p>
<p>P.S.: I think we as a community should work on improving the &#8220;Out of Box Experience&#8221; for the JeeLabs hardware. Detailed assembly instructions, a simple test sketch with clear instructions on setting up the test bed &#8211; life would be so much easier <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  If possible, add a low-level hardware diagnostics mode in that test sketch to help isolate the cause of any hardware-related problems. For example, try communicating over the SPI / I2C bus. If that doesn&#8217;t work, you might have to inspect your soldering. And most importantly: find a way to reduce @JCW&#8217;s workload &#8211; it would not be realistic to expect him to do all the work on documentation / test sketches etc.</p>
<p>Still massively enjoying the JeeLabs learning experience, one (steep) step at a time <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Onwards!</p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/12/assembling-the-jeelabs-ook433-plug-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Assembling the JeeLabs LCD Plug</title>
		<link>http://edvoncken.net/2011/12/assembling-the-jeelabs-lcd-plug/</link>
		<comments>http://edvoncken.net/2011/12/assembling-the-jeelabs-lcd-plug/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 19:35:24 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[EN]]></category>
		<category><![CDATA[jeelabs]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1417</guid>
		<description><![CDATA[<p>Today I received my new items from JeeLabs &#8211; an LCD Plug and a set of stacking headers.</p>
<p>After soldering the control board to the LCD display,I tried compiling the lcd_demo.ino demo sketch. No luck &#8211; it seems that the code no longer compiled with Arduino 1.0.</p>
<p>I added the include-file that was missing:</p>

#include &#60;PortsLCD.h&#62;

<p>and suddenly&#8230; nothing happened.</p>
<p>I verified the connections &#8211; everything looked good. Oh well &#8211; &#8220;if all else fails, read the manual&#8221;. There were no detailed assembly instructions for this kit, so I had to search through various posts to help debug the issue.</p>
<p>Turns out that you have to <i>[...]<p>Continue reading <a href="http://edvoncken.net/2011/12/assembling-the-jeelabs-lcd-plug/">Assembling the JeeLabs LCD Plug</a></p></i>]]></description>
			<content:encoded><![CDATA[<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-1.jpg"><img class="size-medium wp-image-1418 alignright" title="Assembled the JeeLabs LCD Plug" src="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-1-300x143.jpg" alt="Assembled the JeeLabs LCD Plug" width="300" height="143" /></a>Today I received my new items from <a title="JeeLabs" href="http://jeelabs.org/" target="_blank">JeeLabs</a> &#8211; an LCD Plug and a set of stacking headers.</p>
<p>After soldering the control board to the LCD display,I tried compiling the lcd_demo.ino demo sketch. No luck &#8211; it seems that the code <a title="lcd_demo.ino problem with Arduino 1.0" href="http://forum.jeelabs.net/node/749" target="_blank">no longer compiled</a> with Arduino 1.0.</p>
<p>I added the include-file that was missing:</p>
<blockquote>
<pre>#include &lt;PortsLCD.h&gt;</pre>
</blockquote>
<p>and suddenly&#8230; nothing happened.</p>
<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-2-annotated.jpg"><img class="size-medium wp-image-1425 alignleft" title="JeeLabs LCD Plug 2 annotated" src="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-2-annotated-300x129.jpg" alt="JeeLabs LCD Plug 2 annotated" width="300" height="129" /></a>I verified the connections &#8211; everything looked good. Oh well &#8211; &#8220;if all else fails, read the manual&#8221;. There were no detailed assembly instructions for this kit, so I had to search through <a title="JeeLabs LCD Plug" href="http://jeelabs.org/2009/11/01/lcd-plug/" target="_blank">various</a> <a title="LCD display voltages" href="http://jeelabs.org/2010/06/04/lcd-display-voltages/" target="_blank">posts</a> to help debug the issue.</p>
<p>Turns out that you have to set two solder jumpers (Logic to 3v3, Backlight to 3v3) as well as short out a current limiting resistor (which is not actually present on the board). Click the annotated image on the left for a (blurry) close-up.</p>
<p>This still did not seem to solve the problem &#8211; the backlight worked, but still no text on the display. After <a title="Hardware - LCD Plug" href="http://jeelabs.net/projects/hardware/wiki/LCD_Plug" target="_blank">adjusting the contrast level</a> with the trimpot (near the read arrow in the image), the display finally sprang to life. I had to rotate it completely counter-clockwise.</p>
<p>The test assembly looks like this &#8211; battery holder on top, JeeNode in the middle, LCD Plug at the bottom of the image. The LCD Plug is connected to Port 1 on the JeeNode.</p>
<p style="text-align: center;"><a href="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-3.jpg"><img class="aligncenter size-large wp-image-1420" title="LCD Plug test assembly" src="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-3-1024x768.jpg" alt="LCD Plug test assembly, running off a battery" width="100%" /></a><a href="http://edvoncken.net/wp-content/uploads/2011/12/JeeLabs-LCD-Plug-3.jpg"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/12/assembling-the-jeelabs-lcd-plug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Cobbler work with SElinux on CentOS / RHEL 6</title>
		<link>http://edvoncken.net/2011/12/making-cobbler-work-with-selinux-on-centos-rhel-6/</link>
		<comments>http://edvoncken.net/2011/12/making-cobbler-work-with-selinux-on-centos-rhel-6/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 14:53:17 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[Cobbler]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Provisioning]]></category>
		<category><![CDATA[selinux]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1323</guid>
		<description><![CDATA[<p>By default, Cobbler will not work properly on a CentOS / RHEL 6 machine with SElinux enabled. The easy way out is to disable SElinux entirely, but I prefer to write a custom policy instead &#8211; it is not that difficult.</p>
<p>The basic approach is this:</p>

Use Cobbler as you normally would (you will trigger several SElinux denials, so expect errors)
Extract the relevant SElinux audit messages; convert them into a local policy
Load your local policy
Repeat steps 1..3 until everything works as expected

<p>First attempt: the &#8220;cobbler import&#8221; command fails; rsync cannot access files on the mounted DVD ISO. Time to start writing a <i>[...]<p>Continue reading <a href="http://edvoncken.net/2011/12/making-cobbler-work-with-selinux-on-centos-rhel-6/">Making Cobbler work with SElinux on CentOS / RHEL 6</a></p></i>]]></description>
			<content:encoded><![CDATA[<p>By default, Cobbler will not work properly on a CentOS / RHEL 6 machine with SElinux enabled. The easy way out is to disable SElinux entirely, but I prefer to write a custom policy instead &#8211; it is not that difficult.</p>
<p>The basic approach is this:</p>
<ol>
<li>Use Cobbler as you normally would (you will trigger several SElinux denials, so expect errors)</li>
<li>Extract the relevant SElinux audit messages; convert them into a local policy</li>
<li>Load your local policy</li>
<li>Repeat steps 1..3 until everything works as expected</li>
</ol>
<p>First attempt: the &#8220;<tt>cobbler import</tt>&#8221; command fails; <tt>rsync</tt> cannot access files on the mounted DVD ISO. Time to start writing a local policy!</p>
<p>The following command generates a basic SElinux policy from the SElinux audit messages:</p>
<pre>  cat /var/log/audit/audit.log | audit2allow -l -v -m local &gt; local.te</pre>
<p>The resulting <tt>local.te</tt> file (ASCII, open it in your favorite editor) will list various items, some if which are not related to the Cobbler / Rsync operations. Edit the file to taste. Now, compile and load that policy:</p>
<pre>  checkmodule -M -m -o local.mod local.te
  semodule_package -o local.pp -m local.mod
  semodule -v -i local.pp</pre>
<p>Note: every invocation of &#8220;<tt>audit2allow -l</tt>&#8221; will overwrite your <tt>local.te</tt> policy file with new events since the last time a policy module was loaded. This is why you should keep backup copies of the previous versions so you can merge new events in with the existing ones.</p>
<p>In the end, you will end up with a policy in <tt>local.te</tt> like this:</p>
<blockquote>
<pre>module local 1.0;

require {
    type cobblerd_t;
    type cobbler_var_lib_t;
    type iso9660_t;
    type public_content_t;
    type rpm_var_lib_t;
    type rsync_etc_t;
    type security_t;
    type tmp_t;
    class capability { sys_module fsetid };
    class dir { add_name create getattr open read remove_name rmdir search write };
    class file { create getattr open read unlink write };
    class lnk_file create;
    class unix_dgram_socket create;
}

#============= cobblerd_t ==============
allow cobblerd_t cobbler_var_lib_t:lnk_file create;
allow cobblerd_t iso9660_t:dir { open read search getattr };
allow cobblerd_t iso9660_t:file { open read getattr };
allow cobblerd_t public_content_t:dir { write rmdir remove_name };
allow cobblerd_t rpm_var_lib_t:dir { open read search getattr write };
allow cobblerd_t rsync_etc_t:file create;
allow cobblerd_t security_t:dir read;
allow cobblerd_t self:capability fsetid;
allow cobblerd_t self:unix_dgram_socket create;
allow cobblerd_t tmp_t:dir { add_name create remove_name rmdir write };
allow cobblerd_t tmp_t:file { create getattr open read unlink write };</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/12/making-cobbler-work-with-selinux-on-centos-rhel-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Experimenting with the JeeLabs Room Node</title>
		<link>http://edvoncken.net/2011/12/experimenting-with-the-jeelabs-room-node/</link>
		<comments>http://edvoncken.net/2011/12/experimenting-with-the-jeelabs-room-node/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 17:08:11 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[jeelabs]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1393</guid>
		<description><![CDATA[<p>After many years I&#8217;ve re-discovered electronics as a hobby, thanks to the JeeLabs and Arduino communities.</p>
<p>I&#8217;m setting up a small electronics lab with some basic equipment like the Rigol DS1052E oscilloscope (approx. 300 Euros; I &#8220;upgraded&#8221; mine to the DS1102E firmware to increase the scope&#8217;s bandwidth to 100MHz).</p>
<p>One of my first projects is building a Wireless Sensor Network (WSN) to measure humidity, temperature, brightness and motion in several locations at home. The necessary hardware is depicted on the right.</p>
<p>I&#8217;ve added a simple resistor ladder network to one of the analog inputs, allowing me to measure battery voltage; these units are <i>[...]<p>Continue reading <a href="http://edvoncken.net/2011/12/experimenting-with-the-jeelabs-room-node/">Experimenting with the JeeLabs Room Node</a></p></i>]]></description>
			<content:encoded><![CDATA[<p><a href="http://edvoncken.net/wp-content/uploads/2011/12/RoomBoard_SHT11_4_LDRPIR_1.jpg"><img class="size-medium wp-image-1378 alignright" style="margin: 10px;" title="JeeNode with Room Node attached" src="http://edvoncken.net/wp-content/uploads/2011/12/RoomBoard_SHT11_4_LDRPIR_1-300x225.jpg" alt="JeeNode with Room Node attached" width="300" height="225" /></a>After many years I&#8217;ve re-discovered electronics as a hobby, thanks to the <a title="JeeLabs" href="http://www.jeelabs.org/" target="_blank">JeeLabs</a> and <a title="Arduino" href="http://www.arduino.cc/" target="_blank">Arduino</a> communities.</p>
<p>I&#8217;m setting up a small electronics lab with some basic equipment like the <a title="Rigol DS1052E digital storage oscilloscope" href="http://www.rigolna.com/products/digital-oscilloscopes/ds1000e/ds1052e/" target="_blank">Rigol DS1052E</a> oscilloscope (approx. 300 Euros; I &#8220;<a title="EEVblog #77" href="http://www.eevblog.com/2010/04/18/eevblog-77-rigol-ds1052e-ds1102e-oscilloscope-hack-update/" target="_blank">upgraded</a>&#8221; mine to the DS1102E firmware to increase the scope&#8217;s bandwidth to 100MHz).</p>
<p>One of my first projects is building a Wireless Sensor Network (WSN) to measure <a title="JeeLabs Room Board" href="http://jeelabs.org/2010/11/28/meet-the-new-room-board-v2/" target="_blank">humidity, temperature, brightness and motion</a> in several locations at home. The necessary hardware is depicted on the right.</p>
<p>I&#8217;ve added a simple resistor ladder network to one of the analog inputs, allowing me to measure battery voltage; these units are supposed to be powered from rechargable batteries for at least a year. Standby power consumption of these devices is in the micro-Amp range; much better than a standard Arduino. The <a title="JeeNode (by JeeLabs)" href="http://jeelabs.com/products/jeenode" target="_blank">JeeNode</a> comes with an onboard RF12B wireless module (not visible in the picture; it&#8217;s below the PIR board) for communications.</p>
<p>While experimenting with the software, I wanted to take a closer look at the actual PIR sensor output signal. The Rigol oscilloscope has all kinds of handy features that assist in analysing and measuring these signals. It can store screenshots on a USB stick, or be remote controlled from a PC &#8211; excellent value for money!</p>
<p><img class="size-full wp-image-1394 alignnone" style="margin: 10px;" title="PIR Sensor output" src="http://edvoncken.net/wp-content/uploads/2011/12/pir00002.bmp" alt="Rigol DS1052E Screenshot of PIR sensor output, 570ms pulse width" width="320" height="234" /><img class="size-full wp-image-1395 alignnone" style="margin: 10px;" title="PIR sensor output, additional info displayed" src="http://edvoncken.net/wp-content/uploads/2011/12/pir00004.bmp" alt="Rigol DS1052E Screenshot of PIR sensor output, with additional information" width="320" height="234" /><br />
As you can see, the display is only 320 pixels wide (QVGA) but that is enough for my modest needs <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I tried triggering the PIR as short as possible. The PIR open collector output is pulled low (negative edge) if motion is detected. The minimum output pulse width was approx. 570 milliseconds wide. If the sensor sees continuing motion, the output will remain low for that period (at least, in <a title="PIR Sensor documentation - JeeLabs" href="http://forum.jeelabs.net/node/574" target="_blank">Continuous trigger mode</a>).</p>
<p>The accompanying &#8220;sketch&#8221; (Arduino-talk for a program that you write) sends out packets at regular intervals (once per minute, or less), containing all the telemetry info. If motion is detected, an interrupt is generated that causes a packet to be sent out immediately.</p>
<p>I modified a receiver &#8220;sketch&#8221; to decode the telemetry info and generate a human-readable report:</p>
<blockquote>
<pre>ROOM-18 1695b 221* 1 38% 22.6C 4.638V 0
 -&gt; ack-18
ROOM-25 1695b 21* 0 46% 19.6C 5.180V 0
ROOM-18 1695b 221* 1 38% 22.7C 4.638V 0
 -&gt; ack-18
 ? 17 166 224 91 134 200 17 70 143 23 173 91 150 205 3 49 236 76 147 243 149
 ? 45 230 233 2 36 124 197 34 202 40 8 137 155 8 37 81 182 185 91 22 183
ROOM-18 1695b 221* 0 38% 22.7C 4.638V 0</pre>
</blockquote>
<p>Here, I have two JeeNodes (ID 18 and 25), each outfitted with a Room Board. The 433MHz band is crowded, so you&#8217;ll see spurious traffic (indicated by &#8216;?&#8217;). If a proper Room Node packet is recognized, it is decoded and displayed.</p>
<p>The report indicates the source of the transmission (<tt>ROOM-18</tt> or <tt>ROOM-25</tt>); free RAM (1695 bytes); brightness (0-255); motion (0-1); humidity; temperature and battery voltage. The last &#8220;0&#8243; is the Low Battery indicator.</p>
<p>Regular transmissions are not acknowledged; it&#8217;s no problem if you lose a couple of data points. If the PIR is triggered however, acknowledgements are requested to ensure that the central node registers this event.</p>
<p>I&#8217;m still working on the central node software; I&#8217;ll probably just parse the data and stick it in a RRD file or database&#8230;</p>
<p>Electronics + Software = hours of fun! <img src='http://edvoncken.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/12/experimenting-with-the-jeelabs-room-node/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Panic after installing new kernel on CentOS 6</title>
		<link>http://edvoncken.net/2011/12/panic-after-installing-new-kernel-on-centos-6/</link>
		<comments>http://edvoncken.net/2011/12/panic-after-installing-new-kernel-on-centos-6/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 13:06:02 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1358</guid>
		<description><![CDATA[<p>I just finished updating all of my CentOS 6 machines, resulting in a couple of machines (VMs) no longer booting:</p>
Kernel panic - not syncing: No init found. Try passing init= option to kernel.

<p>It appears that &#8220;yum update&#8221; installs the new kernel:</p>
[root@c3p0 boot]# rpm -qa &#124;grep ^kernel-
kernel-2.6.32-131.17.1.el6.x86_64
kernel-firmware-2.6.32-131.17.1.el6.noarch
kernel-firmware-2.6.32-71.29.1.el6.noarch
kernel-2.6.32-71.29.1.el6.x86_64

<p>&#8230; but no initramfs is created under /boot:</p>
[root@c3p0 boot]# ls -l /boot
total 25561
-rw-r--r--. 1 root root 100203 Oct 6 20:44 config-2.6.32-131.17.1.el6.x86_64
-rw-r--r--. 1 root root 97911 Jun 27 21:08 config-2.6.32-71.29.1.el6.x86_64
drwxr-xr-x. 3 root root 1024 Aug 16 12:58 efi
drwxr-xr-x. 2 root root 1024 Dec 1 17:15 grub
-rw-r--r--. 1 root root 13435614 Aug 16 12:59 initramfs-2.6.32-71.29.1.el6.x86_64.img
drwx------. 2 root <i>[...]<p>Continue reading <a href="http://edvoncken.net/2011/12/panic-after-installing-new-kernel-on-centos-6/">Panic after installing new kernel on CentOS 6</a></p></i>]]></description>
			<content:encoded><![CDATA[<p>I just finished updating all of my CentOS 6 machines, resulting in a couple of machines (VMs) no longer booting:</p>
<blockquote><pre>Kernel panic - not syncing: No init found. Try passing init= option to kernel.</pre>
</blockquote>
<p>It appears that &#8220;<tt>yum update</tt>&#8221; installs the new kernel:</p>
<blockquote><pre>[root@c3p0 boot]# rpm -qa |grep ^kernel-
kernel-2.6.32-131.17.1.el6.x86_64
kernel-firmware-2.6.32-131.17.1.el6.noarch
kernel-firmware-2.6.32-71.29.1.el6.noarch
kernel-2.6.32-71.29.1.el6.x86_64</pre>
</blockquote>
<p>&#8230; but no <tt>initramfs</tt> is created under /boot:</p>
<blockquote><pre>[root@c3p0 boot]# ls -l /boot
total 25561
-rw-r--r--. 1 root root 100203 Oct 6 20:44 config-2.6.32-131.17.1.el6.x86_64
-rw-r--r--. 1 root root 97911 Jun 27 21:08 config-2.6.32-71.29.1.el6.x86_64
drwxr-xr-x. 3 root root 1024 Aug 16 12:58 efi
drwxr-xr-x. 2 root root 1024 Dec 1 17:15 grub
-rw-r--r--. 1 root root 13435614 Aug 16 12:59 initramfs-2.6.32-71.29.1.el6.x86_64.img
drwx------. 2 root root 12288 Aug 16 12:54 lost+found
-rw-r--r--. 1 root root 165827 Oct 6 20:47 symvers-2.6.32-131.17.1.el6.x86_64.gz
-rw-r--r--. 1 root root 160602 Jun 27 21:11 symvers-2.6.32-71.29.1.el6.x86_64.gz
-rw-r--r--. 1 root root 2279162 Oct 6 20:44 System.map-2.6.32-131.17.1.el6.x86_64
-rw-r--r--. 1 root root 2228188 Jun 27 21:08 System.map-2.6.32-71.29.1.el6.x86_64
-rwxr-xr-x. 1 root root 3882992 Oct 6 20:44 vmlinuz-2.6.32-131.17.1.el6.x86_64
-rwxr-xr-x. 1 root root 3795744 Jun 27 21:08 vmlinuz-2.6.32-71.29.1.el6.x86_64</pre>
</blockquote>
<p>Also, in <tt>/etc/boot/grub.conf</tt>, the <tt>initrd</tt> entry is missing for the new kernel:</p>
<blockquote><pre>[root@c3p0 boot]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS Linux (2.6.32-131.17.1.el6.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-131.17.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
title CentOS (2.6.32-71.29.1.el6.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
	initrd /initramfs-2.6.32-71.29.1.el6.x86_64.img</pre>
</blockquote>
<p>I remember seeing this problem before on a fairly recent Fedora system, probably Fedora 14 or 15, but never on older CentOS / RHEL releases.</p>
<p>My guess is that this is a problem with Dracut. You can <a title="Fedora 15 docs" href="http://docs.fedoraproject.org/en-US/Fedora/15/html/Deployment_Guide/sec-Verifying_the_Initial_RAM_Disk_Image.html" target="_blank">re-generate the initramfs by running <tt>dracut</tt></a> (as <tt>root</tt>, of course), but I&#8217;d rather not have to perform emergency surgery on lots of (virtual) machines&#8230;</p>
<p>Anyway, the command line would look like this:</p>
<blockquote><pre>dracut initramfs-${version}.img ${version}
dracut initramfs-2.6.32-131.17.1.el6.x86_64.img 2.6.32-131.17.1.el6.x86_64</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/12/panic-after-installing-new-kernel-on-centos-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JeeNode with Room Board &#8211; configuration</title>
		<link>http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/</link>
		<comments>http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 14:45:21 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[jeelabs]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1374</guid>
		<description><![CDATA[<p>JeeLabs offers a low-power, Arduino-compatible board called the &#8220;JeeNode&#8220;. These are ideally suited for building your own Wireless Sensor Network, for example in combination with the Room Board.</p>
<p>There are several ways to plug a Room Board into the JeeNode. The pictures below should help you verify the correct &#8220;Port&#8221; settings for each configuration:</p>






<p>&#160;</p>
]]></description>
			<content:encoded><![CDATA[<p><a title="JeeLabs" href="http://www.jeelabs.org/" target="_blank">JeeLabs</a> offers a low-power, <a title="Arduino" href="http://www.arduino.cc/" target="_blank">Arduino</a>-compatible board called the &#8220;<a title="JeeNode" href="http://jeelabs.com/products/jeenode" target="_blank">JeeNode</a>&#8220;. These are ideally suited for building your own Wireless Sensor Network, for example in combination with the <a title="JeeLabs Room Board" href="http://jeelabs.com/products/room-board" target="_blank">Room Board</a>.</p>
<p>There are several ways to plug a Room Board into the JeeNode. The pictures below should help you verify the correct &#8220;Port&#8221; settings for each configuration:</p>

<a href='http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/roomboard_sht11_1_ldrpir_4/' title='RoomBoard_SHT11_1_LDRPIR_4'><img width="150" height="150" src="http://edvoncken.net/wp-content/uploads/2011/12/RoomBoard_SHT11_1_LDRPIR_4-150x150.jpg" class="attachment-thumbnail" alt="RoomBoard_SHT11_1_LDRPIR_4" title="RoomBoard_SHT11_1_LDRPIR_4" /></a>
<a href='http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/roomboard_sht11_2_ldrpir_3/' title='RoomBoard_SHT11_2_LDRPIR_3'><img width="150" height="150" src="http://edvoncken.net/wp-content/uploads/2011/12/RoomBoard_SHT11_2_LDRPIR_3-150x150.jpg" class="attachment-thumbnail" alt="RoomBoard_SHT11_2_LDRPIR_3" title="RoomBoard_SHT11_2_LDRPIR_3" /></a>
<a href='http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/roomboard_sht11_3_ldrpir_2/' title='RoomBoard_SHT11_3_LDRPIR_2'><img width="150" height="150" src="http://edvoncken.net/wp-content/uploads/2011/12/RoomBoard_SHT11_3_LDRPIR_2-150x150.jpg" class="attachment-thumbnail" alt="RoomBoard_SHT11_3_LDRPIR_2" title="RoomBoard_SHT11_3_LDRPIR_2" /></a>
<a href='http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/roomboard_sht11_4_ldrpir_1/' title='JeeNode with Room Node attached'><img width="150" height="150" src="http://edvoncken.net/wp-content/uploads/2011/12/RoomBoard_SHT11_4_LDRPIR_1-150x150.jpg" class="attachment-thumbnail" alt="JeeNode with Room Node attached" title="JeeNode with Room Node attached" /></a>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/12/jeenode-with-room-board-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uninstalling the Silicon Labs CP210x USB to Serial driver</title>
		<link>http://edvoncken.net/2011/11/uninstalling-the-silicon-labs-cp210x-usb-to-serial-driver/</link>
		<comments>http://edvoncken.net/2011/11/uninstalling-the-silicon-labs-cp210x-usb-to-serial-driver/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 19:40:07 +0000</pubDate>
		<dc:creator>Ed Voncken</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[amateur radio]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[pc4ed]]></category>

		<guid isPermaLink="false">http://edvoncken.net/?p=1345</guid>
		<description><![CDATA[<p>I use several types of USB to Serial converters on Mac OS X, mostly for playing with Jeenode / Arduino hardware or connecting my HAM radio devices.</p>
<p>One of these devices, a Kenwood TH-D72, has a built-in Silicon Labs CP210x chip. The Mac OS X driver supplied by Silicon Labs is not very stable; it has caused my Mac to crash several times already. Uninstalling this driver is not as easy as uninstalling other applications on Mac; normally, you just drag the app into the trash &#8211; done. However, these drivers are supplied in &#8220;pkg&#8221; (package) format. Uninstalling software packages is <i>[...]<p>Continue reading <a href="http://edvoncken.net/2011/11/uninstalling-the-silicon-labs-cp210x-usb-to-serial-driver/">Uninstalling the Silicon Labs CP210x USB to Serial driver</a></p></i>]]></description>
			<content:encoded><![CDATA[<p>I use several types of <a title="USB to Serial drivers" href="http://edvoncken.net/2011/04/usb-to-serial-drivers/" target="_blank">USB to Serial converters</a> on Mac OS X, mostly for playing with <a title="JeeLabs" href="http://www.jeelabs.org/" target="_blank">Jeenode</a> / <a title="Arduino" href="http://www.arduino.cc/" target="_blank">Arduino</a> hardware or connecting my HAM radio devices.</p>
<p>One of these devices, a Kenwood TH-D72, has a built-in Silicon Labs CP210x chip. The Mac OS X driver <a title="Silicon Labs CP210x USB to Serial driver" href="http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx" target="_blank">supplied by Silicon Labs</a> is not very stable; it has caused my Mac to crash several times already. Uninstalling this driver is not as easy as uninstalling other applications on Mac; normally, you just drag the app into the trash &#8211; done. However, these drivers are supplied in &#8220;pkg&#8221; (package) format. Uninstalling software packages is a bit more involved.</p>
<p>Open Terminal and type the following commands:</p>
<blockquote><p><code>macbookpro-ed:/ ed$ pkgutil --pkgs |grep silabs<br />
com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver.pkg<br />
com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver64.pkg</code></p>
<p><code>macbookpro-ed:/ ed$ pkgutil --lsbom com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver.pkg<br />
.<br />
./SiLabsUSBDriver.kext<br />
./SiLabsUSBDriver.kext/Contents<br />
./SiLabsUSBDriver.kext/Contents/Info.plist<br />
./SiLabsUSBDriver.kext/Contents/MacOS<br />
./SiLabsUSBDriver.kext/Contents/MacOS/SiLabsUSBDriver<br />
./SiLabsUSBDriver.kext/Contents/Resources<br />
./SiLabsUSBDriver.kext/Contents/Resources/English.lproj<br />
./SiLabsUSBDriver.kext/Contents/Resources/English.lproj/InfoPlist.strings</code></p>
<p><code>macbookpro-ed:/ ed$ pkgutil --lsbom com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver64.pkg<br />
.<br />
./SiLabsUSBDriver64.kext<br />
./SiLabsUSBDriver64.kext/Contents<br />
./SiLabsUSBDriver64.kext/Contents/Info.plist<br />
./SiLabsUSBDriver64.kext/Contents/MacOS<br />
./SiLabsUSBDriver64.kext/Contents/MacOS/SiLabsUSBDriver64<br />
./SiLabsUSBDriver64.kext/Contents/Resources<br />
./SiLabsUSBDriver64.kext/Contents/Resources/English.lproj<br />
./SiLabsUSBDriver64.kext/Contents/Resources/English.lproj/InfoPlist.strings</code></p></blockquote>
<p>The first command looks for all PKG receipts pertaining to the Silicon Labs drivers. The next commands list the contents (Bill of Materials) for each driver package. Uninstalling the drivers can now be accomplished in several ways:</p>
<h3>Leave the PKG, but disable the drivers (safest, but least clean):</h3>
<p>This method does not actually uninstall the drivers. Locate the driver kext (kernel extensions) and rename to disable them:</p>
<blockquote><p><code>mdfind SiLabsUSBDriver.kext<br />
cd /System/Library/Extensions/<br />
sudo mv SiLabsUSBDriver.kext SiLabsUSBDriver.kext_DISABLED<br />
sudo mv SiLabsUSBDriver64.kext SiLabsUSBDriver64.kext_DISABLED</code></p></blockquote>
<p>Reboot to verify that the driver is actually disabled. For example, plug in the USB device and check Console.app for a corresponding error message indicating that no driver could be found:</p>
<blockquote><p><code>2011-11-29 8:34:56.000 PM kernel: 0 0 AppleUSBCDC: start - initDevice failed</code></p></blockquote>
<h3>Remove all files listed in the PKG Bill of Materials (clean, but less safe):</h3>
<blockquote><p><code>mdfind SiLabsUSBDriver.kext<br />
cd /System/Library/Extensions/<br />
sudo rm -rf SiLabsUSBDriver.kext<br />
sudo rm -rf SiLabsUSBDriver64.kext<br />
sudo pkgutil --forget com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver.pkg<br />
sudo pkgutil --forget com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver64.pkg</code></p></blockquote>
<p>Reboot to verify that the drivers are now completely gone.</p>
]]></content:encoded>
			<wfw:commentRss>http://edvoncken.net/2011/11/uninstalling-the-silicon-labs-cp210x-usb-to-serial-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

