<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>copyleft hardware planet</title>
	<link>http://en.qi-hardware.com/planet/</link>
	<language>en</language>
	<description>copyleft hardware planet - http://en.qi-hardware.com/planet/</description>

<item>
	<title>OsmoSDR: First 16 OsmoSDR boards available for developers</title>
	<guid permalink="False">http://sdr.osmocom.org/trac/blog/osmosdr%20developer%20beta</guid>
	<link>http://sdr.osmocom.org/trac/blog/osmosdr%20developer%20beta</link>
	<description>&lt;p&gt;
There are something like 16 units of OsmoSDR that we have produce and
which are able to sell to interested developers.
&lt;/p&gt;
&lt;p&gt;
However, as there are only 16 units right now, and as the firmware and host software is in a barely usable but incomplete state, we would like to make sure that those 16 units get sold to people who actually have an interest (and expect to have at least some time time!) to fix and improve the current shortcomings.
&lt;/p&gt;
&lt;p&gt;
So if you want to be among the first 16, I suggest you contact me at &lt;i&gt;Harald Welte &amp;lt;laforge@…&amp;gt;&lt;/i&gt; and include a short description of who you are (if you are not a Osmocom regular) as well as some incidcation that you are actually going to work on improving the code.  If you already know an area that you'd
like to work on, please state that, too.
&lt;/p&gt;
&lt;p&gt;
The price will be 180 EUR incl. VAT (that's 151.26 EUR without), i.e.
the same price as for the units that will later be sold openly.
&lt;/p&gt;
&lt;p&gt;
I have put together a wiki page with the current status at
&lt;a class=&quot;wiki&quot; href=&quot;http://sdr.osmocom.org/trac/wiki/OsmoSDR/Status&quot;&gt;OsmoSDR/Status&lt;/a&gt; to make you aware where we are and what is missing.
&lt;/p&gt;
&lt;p&gt;
Thanks in advance for your willingness to be early users and help us to
improve the codebase.
&lt;/p&gt;</description>
	<pubDate>Wed, 16 May 2012 20:39:00 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: ProtoStick micro prototyping shield for the LeoStick</title>
	<guid>http://www.freetronics.com/blogs/news/6053304-new-device-protostick-micro-prototyping-shield-for-the-leostick</guid>
	<link>http://www.freetronics.com/blogs/news/6053304-new-device-protostick-micro-prototyping-shield-for-the-leostick</link>
	<description>&lt;p&gt;The Freetronics &lt;a href=&quot;http://www.freetronics.com/leostick&quot;&gt;LeoStick&lt;/a&gt; is an amazing little Arduino-compatible board, and now we've made it even easier to build your own micro-sized projects on it with the introduction of the &lt;a href=&quot;http://www.freetronics.com/protostick&quot;&gt;ProtoStick&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freetronics.com/protostick&quot;&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/products/ProtoStick-top-black_large.png?101184&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.freetronics.com/protostick&quot;&gt;ProtoStick&lt;/a&gt; provides 70 general-purpose plated-through holes for you to add your own parts to your LeoStick projects. It includes markings for the ICSP header as well, so you can choose to either use those holes for your own purpose or you can fit a female header to bring ICSP connections up to your project.&lt;/p&gt;
&lt;p&gt;Because the board is so tiny we didn't want to waste space using an entire row of pads just for the header breakouts, so instead we put a tiny row of breakouts between the headers and the first row! That makes it easy for you to jumper across from any header to your circuit.&lt;/p&gt;
&lt;p&gt;We'd love to hear about any projects you build using the ProtoStick, so make sure you jump on the &lt;a href=&quot;http://forum.freetronics.com/&quot;&gt;Freetronics Forum&lt;/a&gt; and tell us about it!&lt;/p&gt;</description>
	<pubDate>Tue, 15 May 2012 06:14:21 +0000</pubDate>
</item>
<item>
	<title>Sebastien Bourdeauducq, lekernel.net: EHSM 2012 CFP</title>
	<guid permalink="False">http://lekernel.net/blog/?p=1668</guid>
	<link>http://lekernel.net/blog/2012/05/ehsm-2012-cfp/</link>
	<description>&lt;p&gt;&lt;b&gt;Exceptionally Hard &amp;#038; Soft Meeting&lt;br /&gt;
exploring the frontiers of open source and DIY&lt;br /&gt;
Berlin, December 28-30 2012&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Some electronics books from the 50s claimed making triode tubes would be an impossible endeavour for amateurs. Today, there are at least two DIY laboratories making not only triodes but also all sorts of vacuum electron devices.&lt;/p&gt;
&lt;p&gt;Three years after the first GPS satellite was launched, few people used the technology, which was perceived as very complicated and expensive. Yet, someone successfully operated his homebrew receiver made from hundreds of that time&amp;#8217;s electronic parts.&lt;/p&gt;
&lt;p&gt;These days, microchips are often thought to be impenetrable and&lt;br /&gt;
impossible to manufacture without large-scale facilities. But many individuals are reverse engineering microelectronics designs, often breaking security systems based on the obscurity of the silicon layout. Some are even devising DIY methods to replicate parts of the microchip manufacturing process, with impressive results.&lt;/p&gt;
&lt;p&gt;What are the frontiers of DIY technology? The first Exceptionally Hard &amp;#038; Soft Meeting (EHSM) will feature presentations of the brightest DIY achievements. But we do not want to stop at DIY. In fact, we should not, because teamwork is the only way to get the big things done.&lt;/p&gt;
&lt;p&gt;The open source ethos is about keeping the freedom and openness of DIY when many people are involved. At a time when thousands of developers from hundreds of companies contribute to Linux and the world&amp;#8217;s largest physics laboratories share openly licensed hardware designs on OHWR, we will explore the cutting-edge open source hardware and software practices.&lt;/p&gt;
&lt;p&gt;This premiere of the EHSM will be held in Berlin on December 28-30 2012. Everyone is welcome to attend it. Curiosity is enough to qualify, and we have kept the minimal entrance fee affordable. Please &lt;a href=&quot;http://ehsm.eu/tickets.html&quot;&gt;order your ticket&lt;/a&gt; as soon as possible, to help us make this event happen.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;They are already coming&lt;/b&gt;&lt;br /&gt;
To give you an idea of what is coming up, we are pleased to announce that the following speakers will be presenting their awesome work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.warrantyvoidifremoved.com&quot;&gt;Jeffrey Gough&lt;/a&gt; will talk about and demonstrate metalwork techniques. How to go beyond extruded ABS coming from a 3D printer? There might even be a hands-on workshop coming up, stay tuned.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.aeste.my&quot;&gt;Shawn Tan&lt;/a&gt; has been working on a new open source microprocessor design and will introduce it at EHSM.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://benkrasnow.blogspot.com&quot;&gt;Ben Krasnow&lt;/a&gt; makes all sorts of seemingly impossible science experiments at home, such as creating aerogel (yes, that thing on spacecraft), Pop Rocks candy, or building a scanning electron microscope. He will talk about a yet undisclosed but promising topic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More speakers will be announced as we confirm them, check this space!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tickets and funding&lt;/b&gt;&lt;br /&gt;
EHSM is entirely supported by its attendees and sponsors. To help us make this event happen, please &lt;a href=&quot;http://ehsm.eu/tickets.html&quot;&gt;donate and/or order your ticket&lt;/a&gt; as soon as possible. EHSM is a non-profit event and most of the money will be used to cover speakers&amp;#8217; travel expenses.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Submit your presentation&lt;/b&gt;&lt;br /&gt;
Since we do not pretend to be aware of all the amazing tech out there, we are expecting your proposals.&lt;/p&gt;
&lt;p&gt;Send a mail to orga AT ehsm.eu with at least the following information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name of the speaker&lt;/li&gt;
&lt;li&gt;Short bio of the speaker and/or his/her team&lt;/li&gt;
&lt;li&gt;Speaker contact information (e-mail + mobile phone if possible)&lt;/li&gt;
&lt;li&gt;Where the speaker will be traveling from&lt;/li&gt;
&lt;li&gt;Title of the presentation&lt;/li&gt;
&lt;li&gt;Abstract&lt;/li&gt;
&lt;li&gt;Links to more information (if available)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The standard format for presentations is one-hour lectures, but we are flexible. Write us a note if you have special time or other requirements.&lt;/p&gt;
&lt;p&gt;We are waiting for your presentations in these areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open hardware&lt;/li&gt;
&lt;li&gt;Big open source project management&lt;/li&gt;
&lt;li&gt;Licensing and business models for open source&lt;/li&gt;
&lt;li&gt;Manufacturing: metalwork, glass blowing, &amp;#8230;&lt;/li&gt;
&lt;li&gt;Electronics engineering&lt;/li&gt;
&lt;li&gt;Signal processing&lt;/li&gt;
&lt;li&gt;Radars&lt;/li&gt;
&lt;li&gt;Semiconductors&lt;/li&gt;
&lt;li&gt;Rocket science&lt;/li&gt;
&lt;li&gt;Thin film technologies&lt;/li&gt;
&lt;li&gt;Hardware acceleration&lt;/li&gt;
&lt;li&gt;Satellite design&lt;/li&gt;
&lt;li&gt;Vacuum electron devices&lt;/li&gt;
&lt;li&gt;Millimeter wave technology&lt;/li&gt;
&lt;li&gt;Reverse engineering&lt;/li&gt;
&lt;li&gt;Applied quantum physics&lt;/li&gt;
&lt;li&gt;Thermodynamics&lt;/li&gt;
&lt;li&gt;Nuclear science&lt;/li&gt;
&lt;li&gt;Nanotechnologies&lt;/li&gt;
&lt;li&gt;Ultra high speed photography&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8230;and anything awesome which is not listed here.&lt;/p&gt;
&lt;p&gt;If you know of someone else&amp;#8217;s work that would be relevant, feel free to tip us! (orga AT ehsm.eu)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;For academia&lt;/b&gt;&lt;br /&gt;
While researchers are most welcome to present their work at EHSM, please note that this is not a traditional academic conference. We will not formally publish proceedings(*), and we do not claim affiliation with any institution. We are also OK with previously published work, we simply expect high-quality presentations.&lt;/p&gt;
&lt;p&gt;(*) &lt;a href=&quot;http://www.thecostofknowledge.com&quot;&gt;Contrary to the practice of most academic publishers&lt;/a&gt;, we will, however, do our best to ensure the free dissemination of information.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Dates&lt;/b&gt;&lt;br /&gt;
Doors open: December 28th, 2012, 09:00&lt;br /&gt;
Doors close: December 30th, 2012, 18:00&lt;br /&gt;
Early registration fee ends: July 15th, 2012&lt;br /&gt;
Submission deadline: November 21st, 2012&lt;br /&gt;
Notifications of acceptance : November 28th, 2012 (or sooner)&lt;br /&gt;
Full programme published: November 28th, 2012&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Venue&lt;/b&gt;&lt;br /&gt;
TU Berlin, Hörsaalgebäude Elektrotechnik&lt;br /&gt;
Lecture room HE101&lt;br /&gt;
Straße des 17. Juni 136&lt;br /&gt;
10623 Berlin, Germany&lt;br /&gt;
U Bahn: Ernst-Reuter-Platz&lt;/p&gt;
&lt;p&gt;We thank &lt;a href=&quot;http://www.tu-berlin.de&quot;&gt;TU Berlin&lt;/a&gt; and &lt;a href=&quot;http://www.freitagsrunde.org&quot;&gt;Freitagsrunde&lt;/a&gt; for providing the venue.&lt;/p&gt;
&lt;p&gt;WE ARE LOOKING FORWARD TO WELCOMING YOU IN BERLIN!&lt;br /&gt;
- the EHSM organizing committee&lt;/p&gt;</description>
	<pubDate>Mon, 14 May 2012 03:54:59 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  OggStreamer @ LiWoLi 2012 (Linux Week Linz)</title>
	<guid>http://oggstreamer.wordpress.com/?p=362</guid>
	<link>http://oggstreamer.wordpress.com/2012/05/10/oggstreamer-oggstreamer-liwoli-2012-linux-week-linz/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.liwoli.at/&quot;&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://www.liwoli.at/sites/default/themes/barlow_2011/images/barlow_logo_2012.png&quot; alt=&quot;&quot; width=&quot;480&quot; height=&quot;69&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have the chance to give a short presentation of the OggStreamer at the Linux Week Linz on Friday 25.5. So if you are interested and want to drop by I&amp;#8217;ll give a 20-minutes short presentation around 18h30 at the &amp;#8220;Stadtwerkstatt Saal&amp;#8221;.&lt;/p&gt;
&lt;p&gt;It is a great event, offering a number of interesting topics &amp;#8211; you can check out the LiWoLi 2012 Program &lt;a href=&quot;http://www.liwoli.at/programm/2012&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/362/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/362/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=362&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 10 May 2012 15:52:18 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: mForce 200 designed base on Icarus (Icarus 衍生板 mForce200)</title>
	<guid>http://www.openmobilefree.net/?p=1765</guid>
	<link>http://www.openmobilefree.net/?p=1765</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://item.taobao.com/item.htm?id=14590459436&quot; target=&quot;_blank&quot;&gt;mForce200&lt;/a&gt; designed by &lt;a href=&quot;http://code.google.com/p/homenas/downloads/list&quot; target=&quot;_blank&quot;&gt;lijiangchun&lt;/a&gt; base on Icarus. you can buy it at his &lt;a title=&quot;mForce 200&quot; href=&quot;http://item.taobao.com/item.htm?id=14590459436&quot; target=&quot;_blank&quot;&gt;taobao shop&lt;/a&gt;, he release designed source files at &lt;a href=&quot;http://code.google.com/p/homenas/downloads/list&quot; target=&quot;_blank&quot;&gt;google code&lt;/a&gt;. it have 2 SPARTAN-6 XC6SLX150-FGG484BIV1027 chips, using a big heat sink instead a noise fan. it&amp;#8217;s using a ATX power connecter and a strange USB Standard-A receptacle for USB connect.&lt;/p&gt;
&lt;p&gt;May 1st, I received the device, after 12 hours test, it give ~200MHS, Utility: 2.6/m. not as good as &lt;a href=&quot;http://en.qi-hardware.com/wiki/Icarus&quot; target=&quot;_blank&quot;&gt;Icarus&lt;/a&gt;. by talking with the author &amp;lt;lijangchu at gmail dot com&amp;gt;, there are two switches missing in this boards. he will send me a new one. then I will test again and update this page.&lt;/p&gt;
&lt;p&gt;May 3rd. I received the new boards. this working one give ~380MHS, Utility: ~5.2/m, same as &lt;a href=&quot;http://en.qi-hardware.com/wiki/Icarus&quot; target=&quot;_blank&quot;&gt;Icarus&lt;/a&gt;, from the power meter, idle it needs ~4.6W, mining needs ~20W, mForce 200 &lt;a href=&quot;https://github.com/ckolivas/cgminer&quot; target=&quot;_blank&quot;&gt;cgminer&lt;/a&gt; status page: &lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/miner.mForce200.php&quot;&gt;http://downloads.openmobilefree.net/Icarus/miner.mForce200.php&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt; &lt;strong&gt;&lt;em&gt;First reaction was: I want my money back
 Quality: bad
 Heat sinks placement: bad
 USB cable: bad (2 USB-A plug on both side)
 Power supply/plug: bad (the power cable is already exposed)
 Heat sinks: bad (form factor)
 Hardware errors(Discarded): too high 6% (Icarus only give 0.1% ~ 0.8%)
 &lt;/em&gt;&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;Working One:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_FPGA.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1781&quot; title=&quot;mForce200_New_FPGA&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_FPGA-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_Front.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1782&quot; title=&quot;mForce200_New_Front&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_Front-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_Back.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1780&quot; title=&quot;mForce200_New_Back&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_Back-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_Side.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1783&quot; title=&quot;mForce200_New_Side&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New_Side-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1779&quot; title=&quot;mForce200_New&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_New-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Two Switches Missing:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_FPGA.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1756&quot; title=&quot;mForce200_FPGA&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_FPGA-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Power_Adapter_Detail.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1761&quot; title=&quot;mForce200_Power_Adapter_Detail&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Power_Adapter_Detail-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Power_Adapter.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1760&quot; title=&quot;mForce200_Power_Adapter&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Power_Adapter-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Heat_Sink_2.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1759&quot; title=&quot;mForce200_Heat_Sink_2&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Heat_Sink_2-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Heat_Sink_1.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1758&quot; title=&quot;mForce200_Heat_Sink_1&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Heat_Sink_1-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Front.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1757&quot; title=&quot;mForce200_Front&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Front-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Back.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1755&quot; title=&quot;mForce200_Back&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/mForce200_Back-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 08 May 2012 12:32:47 +0000</pubDate>
</item>
<item>
	<title>GNU Radio Blog: FO-29 reception with Gqrx and Funcube Dongle (new recording)</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/470-fo-29-reception-with-gqrx-and-funcube-dongle-new-recording</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/470-fo-29-reception-with-gqrx-and-funcube-dongle-new-recording</link>
	<description>&lt;p&gt;Here is a new recording showing an updated &lt;a href=&quot;http://www.oz9aec.net/index.php/gnu-radio/gqrx-sdr&quot;&gt;Gqrx&lt;/a&gt; receiving the FO-29 amateur radio satellite using the &lt;a href=&quot;http://www.oz9aec.net/index.php/funcube-dongle&quot;&gt;Funcube Dongle&lt;/a&gt;. Previous recordings used an early version of Gqrx. It was a very quiet pass, most notable thing was probably the Russian and Spanish hams using FM. They probably don't have a clue that their signal comes over a satellite transponder. Another video recording focusing on the FM transmissions during this FO-29 pass is available &lt;a href=&quot;http://www.youtube.com/watch?v=X1hIfKSIyOI&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;Watch &lt;a href=&quot;http://www.youtube.com/watch?v=y0qi9Fr2j6Y&quot;&gt;video on YouTube&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 07 May 2012 22:53:22 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>GNU Radio Blog: APRS reception with Gqrx and Funcube Dongle</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/469-aprs-reception-with-gqrx-and-funcube-dongle</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/469-aprs-reception-with-gqrx-and-funcube-dongle</link>
	<description>&lt;p&gt;I don't think I ever posted a video showing the built-in AFSK1200 demodulator and decoder in Gqrx, so here it is. The video show local APRS traffic in Copenhagen on a Sunday afternoon. I also tried to receive from the ISS but nothing heard this time.&lt;/p&gt;

&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;Watch &lt;a href=&quot;http://www.youtube.com/watch?v=AZtmA40G794&quot;&gt;video on YouTube&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 07 May 2012 10:00:00 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>Harald Welte: Some follow-up on the Osmocom Berlin meetings</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/05/07#20120507-berlin_osmocom_meetings</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/05/07#20120507-berlin_osmocom_meetings</link>
	<description>&lt;p&gt;
We've now had the first two incarnations of the &lt;a href=&quot;http://openbsc.osmocom.org/trac/wiki/OsmoUserGroup/Berlin&quot;&gt;Osmocom
Berlin User Group Meeting&lt;/a&gt;.  The start was great, and we had probably
something around 10 attendees.  Some were the &lt;i&gt;usual suspects&lt;/i&gt; like
the various Osmocom developers living in Berlin.  But we also had a
number of new people attending each of both of the meetings, which is
good.
&lt;/p&gt;
&lt;p&gt;
To my big surprise people are even flying in from other parts of Europe
in order to be able to attend.  Last time from Sweden, and for the next
meeting some folks from the Netherlands have announced themselves.
&lt;/p&gt;
&lt;p&gt;
To an even bigger surprise, the attendee from Sweden announced that he
is working for an Ericsson research lab, and apparently they are using
OsmocomBB quite a bit inside that lab.   They think it's a great tool,
and apparently nothing else with the same flexibility (i.e. full source
code) is at their hands that can compete.
&lt;/p&gt;
&lt;p&gt;
On the one hand it is surprising to see such a large traditional Telco
supplier to start to use such &lt;i&gt;amateur&lt;/i&gt; tools like OsmocomBB, which
definitely have not had even a fraction of the testing (particularly
with various operators in various countries) like the commercial
protocol stacks.
&lt;/p&gt;
&lt;p&gt;
On the other hand, if you think more about it, Ericsson is entirely a
network equipment supplier today.  They have spun off their baseband
processor business to become part of ST-Ericsson, they have pulled out
of Sony-Ericsson, sold their TEMS product line to Ascom and other bits
and pieces to Tieto.  So right now, if they need a MS-side protocol
stack or engineering phones, they probably have to obtain what is available
on the market.  And that's unfortunately not all that great, as the
products are either
&lt;ul&gt;
&lt;li&gt;Measurement devices aimed at mostly L1 testing / QA (Racal, Agilent,
Rohde-Schwarz)&lt;/li&gt;
&lt;li&gt;Trace mobiles primarily aimed at field testing (TEMS, Sagem OT) and
while they provide traces they don't permit you to send arbitrary data
or behave spec-incompliant&lt;/li&gt;
&lt;li&gt;Mobile Phone development platforms (Qualcomm, MTK, Infinenon, ...)
which don't necessarily give you the full source code to the stack, and
are only available if you actually intend to build a handset&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
So all in all, the more I think about it, it is actually not too
surprising that they ended up with OsmocomBB.  It's free (as in free
beer) and they get the full source code with it.  You need a lot of
skills and time to get it running and find your way around how to use
it, but I guess if you're working in cellular protocols and embedded
systems, it's not that hard.
&lt;/p&gt;</description>
	<pubDate>Mon, 07 May 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Peter Zotov, whitequark: Reaching the Limits of Adobe Stupidity</title>
	<guid>http://whitequark.org/blog/2012/05/06/reaching-the-limits-of-adobe-stupidity</guid>
	<link>http://whitequark.org/blog/2012/05/06/reaching-the-limits-of-adobe-stupidity/</link>
	<description>&lt;p&gt;Lately, I&amp;#8217;ve been working on Flash ActionScript 3 decompiler, and I noticed an interesting pattern. Normally, if you work with a piece of well-known software and something goes wrong, it&amp;#8217;s your fault. But with Flash it&amp;#8217;s not anything like that! If it doesn&amp;#8217;t work, then it&amp;#8217;s probably a bug in the compiler which was preserved for compatibility. Or the specification is plain wrong. Or it&amp;#8217;s a bug in the compiler which no one noticed or attributed to cosmic rays instead.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll give a few examples.&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;Specification is wrong&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdf&quot;&gt;official specification&lt;/a&gt; on AVM2 is often plain incorrect. Apart from examples already covered in semi-official Mozilla-authored &lt;a href=&quot;https://wiki.mozilla.org/Tamarin::AVM2_Overview_Errata&quot;&gt;errata&lt;/a&gt;, there are a few &lt;em&gt;subtle mistakes&lt;/em&gt;. Like mixing up &lt;em&gt;sign bit&lt;/em&gt; and &lt;em&gt;sign extension&lt;/em&gt;: section 4.1 of spec mentions that signed integers are stored with sign extension, whereas in reality they&amp;#8217;re stored with 31th bit set when the values are negative.&lt;/p&gt;

&lt;p&gt;There are some other ones (e.g. pushliteral opcodes are &lt;a href=&quot;https://github.com/whitequark/furnace-avm2/commit/9e6f833cd8231385dc95e3ae54cbedcdb4143791&quot;&gt;screwed up&lt;/a&gt; in spec), but they&amp;#8217;re not worth explaining.&lt;/p&gt;

&lt;h2&gt;Compiler generates dangerously invalid code&lt;/h2&gt;

&lt;p&gt;When working on support for &lt;code&gt;lookupswitch&lt;/code&gt; opcode I wrote a small snippet to test my code with. Disassembling it yielded strange results; the code was seemingly invalid. I scratched my head on it for half a hour and then just went and tried to execute it. And you know what? It actually &lt;strong&gt;was&lt;/strong&gt; invalid.&lt;/p&gt;

 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;actionscript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;q&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;Boolean&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;q&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;hoge&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;fuga&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;piyo&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;baz&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;c1&quot;&gt;//                   expected   actual&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// baz        baz&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// hoge       hoge&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// fuga       fuga&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// piyo       &amp;lt;nothing printed&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// baz        &amp;lt;infinite loop&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;propel_switch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// bar        bar&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;(The &amp;#8220;actual&amp;#8221; results are derived from assembler listings. Tamarin shell refused to execute it due to verification errors.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; As one &lt;a href=&quot;http://www.reddit.com/r/programming/comments/t9qxy/reaching_the_limits_of_adobe_stupidity/c4kxlfn&quot;&gt;Reddit commenter&lt;/a&gt; corrects me, recent versions of ASC no longer have this problem.&lt;/p&gt;

&lt;h2&gt;No optimization ever&lt;/h2&gt;

&lt;p&gt;ActionScript compiler does not optimize, period. This produces a lot of weird code and some pieces of modern art.&lt;/p&gt;

&lt;p&gt;Consider this &lt;code&gt;switch&lt;/code&gt; statement (taken from &lt;a href=&quot;http://hg.mozilla.org/tamarin-redux/file/b7e3811ee1ae/utils/abcdump.as#1267&quot;&gt;abcdump.as&lt;/a&gt; utility):&lt;/p&gt;

 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;29&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;31&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;33&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;34&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;35&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;36&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;actionscript&quot;&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;46&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;46&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;46&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;abc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Abc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Abc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;abc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;dump&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWC10&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWC9&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWC8&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWC7&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;67&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWC6&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;ByteArray&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;ByteArray&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;endian&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;littleEndian&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;position&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;readBytes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;csize&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;length&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;uncompress&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;infoPrint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;decompressed swf &amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;csize&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot; -&amp;gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;position&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;cm&quot;&gt;/*var swf:Swf =*/&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Swf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;udata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF10&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF9&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF8&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF7&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF6&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF5&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;87&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;83&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// SWF4&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;position&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// skip header and length&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;cm&quot;&gt;/*var swf:Swf =*/&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Swf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;k&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;nx&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'unknown format '&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;     &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Not only it generates &lt;a href=&quot;https://gist.github.com/2622705&quot;&gt;a piece of modern art&lt;/a&gt; in an &lt;abbr title=&quot;Internal Representation&quot;&gt;IR&lt;/abbr&gt; dump, but also has a statement so beautifully useless it should be preserved for future generations:&lt;/p&gt;

 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;scheme&quot;&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;ternary&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;integer&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;integer&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;For those unaware of &lt;a href=&quot;https://en.wikipedia.org/wiki/S-expression&quot;&gt;s-expressions&lt;/a&gt; and Lisp, not only does this conditional always execute the same branch, but its result also wouldn&amp;#8217;t be different even if other one would be taken.&lt;/p&gt;

&lt;p&gt;For extra horror, the &amp;#8220;piece of modern art&amp;#8221; above is executed from scratch &lt;em&gt;each time the VM encounters it&lt;/em&gt;, including the constant expressions. Any doubt left why Flash is so slow and power-hungry?&lt;/p&gt;

&lt;h2&gt;Compiler intentionally generates invalid code&lt;/h2&gt;

&lt;p&gt;As I&amp;#8217;ve already shown, &lt;abbr title=&quot;ActionScript compiler&quot;&gt;ASC&lt;/abbr&gt; contains enough stupid errors (see this similar &lt;a href=&quot;http://bugs.adobe.com/jira/browse/ASC-74&quot;&gt;bug&lt;/a&gt;) to accidentally generate invalid code in not-so-rare cases. But it also intentionally generates invalid code in one very frequent case: a &lt;code&gt;finally&lt;/code&gt; block.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s compile this function:&lt;/p&gt;

 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;actionscript&quot;&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;hoge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;finally&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;piyo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;The compiler will emit a shitload of bytecode (including &lt;em&gt;two&lt;/em&gt; catch and &lt;em&gt;two&lt;/em&gt; throw statements), but the relevant part is here:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;; This is an exception handler. Stack is empty upon jump to an
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;; exception handler.
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;;  Address          Opcode    Args   Stack state, comments
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0016             GetLocal0        ; [local0]
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0017             PushScope        ; []
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0018             GetLocal1        ; [local1]
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0019             PushScope        ; []
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0020              NewCatch        ; [catch]
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0022                   Dup        ; [catch catch_dup]
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0023             SetLocal2        ; [catch]
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0024             PushScope        ; []
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0025                 Throw        ; I want an object to throw! Ouch!
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0026              PopScope
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0027                  Kill     2
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0029              PushByte    -1
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;   0031                  Jump   +32  ; Jump to rethrow&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;As you see, the opcode at addresses 0025 is invalid because it tries to pop an object from an empty stack. The virtual machine actually recognizes the &lt;code&gt;finally&lt;/code&gt; clause &lt;em&gt;by encountering these invalid opcodes&lt;/em&gt;. Think about it a little longer, and you&amp;#8217;ll go insane.&lt;/p&gt;

&lt;p&gt;Also, the &lt;em&gt;recommended&lt;/em&gt; way to flow control after a &lt;code&gt;finally&lt;/code&gt; statement is&amp;#8230; using &lt;code&gt;lookupswitch&lt;/code&gt; opcode. The &lt;code&gt;PushByte -1&lt;/code&gt; is actually a mark for that &lt;code&gt;lookupswitch&lt;/code&gt; trampoline which makes it jump to a rethrow entry point.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s some more interesting stuff like &lt;a href=&quot;http://stackoverflow.com/questions/8841456/why-does-the-flash-actionscript3-compiler-emit-unnecessary-code&quot;&gt;jumps past the end of function&lt;/a&gt; (hardwired in VM to do the same as &lt;code&gt;returnvoid&lt;/code&gt; opcode) or deliberately emitted dead code.&lt;/p&gt;</description>
	<pubDate>Sun, 06 May 2012 14:08:00 +0000</pubDate>
</item>
<item>
	<title>Freetronics: An introduction to Arduino by Jaycar Electronics and Freetronics</title>
	<guid>http://www.freetronics.com/blogs/news/6025528-an-introduction-to-arduino-by-jaycar-electronics-and-freetronics</guid>
	<link>http://www.freetronics.com/blogs/news/6025528-an-introduction-to-arduino-by-jaycar-electronics-and-freetronics</link>
	<description>&lt;p&gt;A little while ago Marc and I recorded an internal training video for &lt;a href=&quot;http://www.jaycar.com.au/arduino&quot;&gt;Jaycar&lt;/a&gt; staff to explain what Arduino is all about, and a cut-down version has just been posted on YouTube. Check it out!&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;</description>
	<pubDate>Sun, 06 May 2012 11:16:39 +0000</pubDate>
</item>
<item>
	<title>GNU Radio Blog: Broadcast FM reception with Gqrx and Funcube Dongle</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/468-broadcast-fm-reception-with-gqrx-and-funcube-dongle</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/468-broadcast-fm-reception-with-gqrx-and-funcube-dongle</link>
	<description>&lt;p&gt;Here is a short demo showing how to receive broadcast FM with Gqrx. This demo uses the Funcube Dongle, which is really not suited for broadcast FM reception. Gqrx does not employ any tricks to make it sound like it works properly – it just does straightforward FM demodulation with wide FM parameters and you will hear the lack of sufficient bandwidth as distortion on some stations (not all though).&lt;/p&gt;

&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;Watch &lt;a href=&quot;http://www.youtube.com/watch?v=9Gu5GIfGOc8&quot;&gt;video on Youtube&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Sun, 06 May 2012 10:58:41 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>OggStreamer: #oggstreamer  24h Streaming Test</title>
	<guid>http://oggstreamer.wordpress.com/?p=359</guid>
	<link>http://oggstreamer.wordpress.com/2012/05/04/oggstreamer-24h-streaming-test/</link>
	<description>&lt;p&gt;Some days ago I installed the first OggStreamer at the Remotestudio of the FRS &amp;#8211; &amp;#8220;Free Radio Salzkammergut&amp;#8221; &amp;#8211; the regional Radio. And I put the OggStreamer to stream for 24 hours non-stop &amp;#8211; and it worked without interruption. So I think  the next Live-Emission from the Remotestudio can be done using this Setup rather than the temporary Laptop-Setup they have used before.&lt;/p&gt;
&lt;p&gt;Another OggStreamer shipped to Switzerland yesterday and it should arrive there early next week &amp;#8211; I am quite curious how their reaction on this device will be.&lt;/p&gt;
&lt;p&gt;The next OggStreamers from the first batch are already in the making -  the list of customers receiving a device form the first batch is already defined. Currently I am evaluating possibilities to start another production run of maybe around 30 Devices.  But before thinking that far &amp;#8211; The device first has to pass the necessary EMC Compliance Tests &amp;#8230;&lt;/p&gt;
&lt;p&gt;Another issue what bothers me a little is the delivery time of XPortPro&amp;#8217;s &amp;#8211; I ordered 4 pcs. of them in the beginning of march and they are expected to be delivered in CW 21 &amp;#8211; I am anyhow busy till CW 21 so nothing to worry about, but nevertheless it is quite a bit of time for such a small number.&lt;/p&gt;
&lt;p&gt;By the way thanks to David Schleef for putting me on his website and on Planet GNOME &amp;#8211; This blog received quite a number of hits via their websites.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/359/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/359/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=359&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 04 May 2012 22:02:04 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: Getting the ICC display profile</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=591</guid>
	<link>http://blogs.gnome.org/hughsie/2012/05/03/getting-the-icc-display-profile/</link>
	<description>&lt;p&gt;I&amp;#8217;m at &lt;a href=&quot;http://libregraphicsmeeting.org/2012/program/&quot;&gt;LGM&lt;/a&gt; this year, and so far it&amp;#8217;s rocking pretty hard. The number one question people have asked is &amp;#8220;&lt;em&gt;how do I get the screen profile for a window&lt;/em&gt;&amp;#8220;. I figured this should be easy to get using colord, and then spent a few minutes working on some proof-of-concept code. This ballooned into a couple of hours doing it properly asynchronously and making it work correctly on multihead, and the result was a few hundred lines of complicated code with quite a few exit points. I don&amp;#8217;t want people to add 300 lines of boilerplate to their project just to map a GtkWindow to a .icc filename.&lt;/p&gt;
&lt;p&gt;So I&amp;#8217;m now shipping an additional optional colord-gtk helper library in colord that allow you to use one async function to get the profile a given widget should use. There&amp;#8217;s &lt;a href=&quot;https://gitorious.org/colord/master/blobs/master/examples/cd-gtk-demo.c&quot;&gt;a demo available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The alternative is of course to read the X11 _ICC_PROFILE atom, but that does not support multi-head, and really won&amp;#8217;t work when we move to Wayland. It&amp;#8217;s also not a lot of fun grabbing lots of binary data from the xserver in a GUI program. In the long term future we&amp;#8217;ll be doing full screen color management in shaders, with full toolkit support using Wayland, but that&amp;#8217;s a few years from being reality. If you&amp;#8217;ve got any ideas or have comments about the API, let us know on &lt;a href=&quot;http://lists.freedesktop.org/mailman/listinfo/colord&quot;&gt;the mailing list&lt;/a&gt;. Thanks.&lt;/p&gt;</description>
	<pubDate>Thu, 03 May 2012 15:21:36 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: 质量差的电源插座</title>
	<guid>http://www.openmobilefree.net/?p=1749</guid>
	<link>http://www.openmobilefree.net/?p=1749</link>
	<description>&lt;p&gt;这个电源插座接了 41 个 Icarus（1000W），一台PC（200W），三个13口的USB HUB，运行了一个月后就变成下图的样子了。插座烧了后，问题是接在这个插座上的电脑的 USB 口全部不好用了。一点电都没有了。还好 Icarus 都还没问题。推荐 80 块以上的电源插座，并把家里质量不好的插座都扔掉。要不然。。。&lt;/p&gt;
&lt;p&gt;在 ngzhang 那里学到了一条中国插座定理：&lt;strong&gt;插座不拆不能用，或者只买 贝尔金 的或者 APC 的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/Power-Strip-Bruned_1.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1763&quot; title=&quot;Power Strip Bruned_1&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/Power-Strip-Bruned_1-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/Power-Strip-Bruned_3.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1764&quot; title=&quot;Power Strip Bruned_3&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/05/Power-Strip-Bruned_3-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 03 May 2012 12:19:52 +0000</pubDate>
</item>
<item>
	<title>Uwe Hermann: sigrok - cross-platform, open-source logic analyzer software with protocol decoder support</title>
	<guid permalink="False">http://www.hermann-uwe.de/1596 at http://www.hermann-uwe.de</guid>
	<link>http://www.hermann-uwe.de/blog/sigrok--cross-platform-open-source-logic-analyzer-software-with-protocol-decoder-support</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.hermann-uwe.de/node/1591&quot;&gt;&lt;img src=&quot;http://www.hermann-uwe.de/files/images/sigrok_logo.png&quot; width=&quot;200&quot; height=&quot;221&quot; align=&quot;right&quot; hspace=&quot;5&quot; alt=&quot;sigrok logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm happy to finally announce an &lt;strong&gt;open-source&lt;/strong&gt; (GNU GPL), &lt;strong&gt;cross-platform&lt;/strong&gt; (&lt;a href=&quot;http://sigrok.org/wiki/Linux&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Mac_OS_X&quot;&gt;Mac OS X&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/FreeBSD&quot;&gt;FreeBSD&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Windows&quot;&gt;Windows&lt;/a&gt;, ...) &lt;strong&gt;logic analyzer software package&lt;/strong&gt; myself and Bert Vermeulen have been working on for quite a long time now: &lt;a href=&quot;http://sigrok.org&quot;&gt;sigrok&lt;/a&gt; (it &lt;a href=&quot;http://en.wikipedia.org/wiki/Grok&quot;&gt;groks&lt;/a&gt; your signals).&lt;/p&gt;
&lt;h3&gt;History&lt;/h3&gt;
&lt;p&gt;I originally started working on an open-source &lt;a href=&quot;http://sigrok.org/wiki/FAQ#What_is_a_logic_analyzer.3F&quot;&gt;logic analyzer&lt;/a&gt; software named &quot;flosslogic&quot; in 2010, because I grew tired of almost all devices having a proprietary and Windows-only software, often with limited features, limited input/output file formats, limited usability, limited protocol decoder support, and so on. Thus, the goal was to write a portable, GPL'd, software that can talk to &lt;a href=&quot;http://sigrok.org/wiki/Logic_Analyzer_Comparison&quot;&gt;many different logic analyzers&lt;/a&gt; via modules/plugins, supports many input/output formats, and many different protocol decoders.&lt;/p&gt;
&lt;p&gt;The advantage being, that every time we add a new driver for another logic analyzer it automatically supports all the input/output formats we already have, you can use all the protocol decoders we already wrote, etc. It also works the other way around: If someone writes a new protocol decoder or file format driver, it can automatically be used with any of the supported logic analyzers out of the box.&lt;/p&gt;
&lt;p&gt;Turns out Bert Vermeulen had been working on a similar software for a while too (due to &lt;em&gt;exactly&lt;/em&gt; the same reasons, crappy Windows software, etc.) so it was only logical that we joined forces and worked on this together. We kept Bert's name for the software package (&quot;sigrok&quot;), set up a &lt;a href=&quot;http://sourceforge.net/projects/sigrok/&quot;&gt;SourceForge project&lt;/a&gt;, mailing lists, IRC channel, wiki, etc. and started working.&lt;/p&gt;
&lt;h3&gt;Overview, Features&lt;/h3&gt;
&lt;p&gt;You can get the lastest sigrok source code from our &lt;a href=&quot;http://sigrok.git.sourceforge.net/git/gitweb.cgi?p=sigrok/sigrok;a=shortlog&quot;&gt;main git repository&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;git clone git://sigrok.git.sourceforge.net/gitroot/sigrok/sigrok&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Here's a short overview of sigrok and its features as of today. The software consists of the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&quot;http://sigrok.org/wiki/Libsigrok&quot;&gt;libsigrok&lt;/a&gt;, a shared library written in C, which contains the general infrastructure for handling logic analyzer data in a streaming fashion.&lt;br /&gt;
&lt;a href=&quot;http://www.hermann-uwe.de/node/1593&quot;&gt;&lt;img src=&quot;http://www.hermann-uwe.de/files/images/Sigrok_la_collection_2011.preview.jpg&quot; width=&quot;320&quot; height=&quot;240&quot; align=&quot;right&quot; hspace=&quot;5&quot; alt=&quot;sigrok logic analyzer collection 2011&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
    It also contains the individual &lt;a href=&quot;http://sigrok.org/wiki/Supported_hardware&quot;&gt;hardware drivers&lt;/a&gt; which add support for various logic analyzers. Currently supported hardware includes: &lt;a href=&quot;http://sigrok.org/wiki/Saleae_Logic&quot;&gt;Saleae Logic&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/CWAV_USBee_SX&quot;&gt;CWAV USBee SX&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Openbench_Logic_Sniffer&quot;&gt;Openbench Logic Sniffer (OLS)&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/ZEROPLUS_Logic_Cube_LAP-C&quot;&gt;ZEROPLUS Logic Cube LAP-C&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/ASIX_SIGMA&quot;&gt;ASIX Sigma/Sigma2&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/ChronoVu_LA8&quot;&gt;ChronoVu LA8&lt;/a&gt;, and others. Many more devices are on our TODO list (and we already own them), it's just a matter of time to reverse engineer the USB protocols and implement a driver for them.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;    Thanks &lt;a href=&quot;http://tools.asix.net&quot;&gt;ASIX&lt;/a&gt; for being open and helping with the ASIX Sigma driver, and many thanks to &lt;a href=&quot;http://www.chronovu.com&quot;&gt;ChronoVu&lt;/a&gt; for being open as well and providing information about the ChronoVu LA8 protocol! Thanks to &lt;a href=&quot;http://labs.ping.uio.no/2010/04/initial-support-for-asix-sigma-in-sigrok/&quot;&gt;Håvard Espeland, Martin Stensgård, and Carl Henrik Lunde&lt;/a&gt; (who contributed the ASIX Sigma driver), Sven Peter and &quot;Haxx Enterprises&quot;/bushing (for contributing the &lt;a href=&quot;http://sigrok.org/wiki/ZEROPLUS_Logic_Cube_LAP-C&quot;&gt;ZEROPLUS Logic Cube LAP-C&lt;/a&gt; driver, ported from their &lt;a href=&quot;https://code.google.com/p/zerominus/&quot;&gt;zerominus&lt;/a&gt; tool). Also, thanks to Daniel Ribeiro and Renato Caldas who worked on the &lt;a href=&quot;http://sigrok.org/wiki/Link_Instruments_MSO-19&quot;&gt;Link Instruments MSO-19&lt;/a&gt; driver (still work in progress).&lt;/p&gt;
&lt;p&gt;    Finally, libsigrok also contains the individual &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats&quot;&gt;input/output file format drivers&lt;/a&gt;. Currently supported are: &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#sigrok_session_2&quot;&gt;sigrok session&lt;/a&gt; (the default format, which contains all metadata), &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#Bits&quot;&gt;bits&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#Hex&quot;&gt;hex&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#ASCII&quot;&gt;ASCII&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#Binary_2&quot;&gt;binary&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#Gnuplot&quot;&gt;gnuplot&lt;/a&gt;, the &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#OLS&quot;&gt;OpenBench Logic Sniffer forma&lt;/a&gt;t, the &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#ChronoVu_LA8_2&quot;&gt;ChronoVu LA8 format&lt;/a&gt;, &lt;a href=&quot;http://sigrok.org/wiki/Input_output_formats#VCD_.28Value_Change_Dump.29&quot;&gt;Value Change Dump (VCD)&lt;/a&gt; viewable in &lt;a href=&quot;http://gtkwave.sourceforge.net/&quot;&gt;gtkwave&lt;/a&gt;, and &lt;a href=&quot;http://sigrok.org/w/index.php?title=Input_output_formats&amp;action=submit#Comma-separated_values_.28CSV.29&quot;&gt;Comma-separated values (CSV)&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;http://www.hermann-uwe.de/node/1597&quot;&gt;&lt;img src=&quot;http://www.hermann-uwe.de/files/images/Sigrok_vcd_output_in_gtkwave.preview.png&quot; width=&quot;320&quot; height=&quot;210&quot; align=&quot;right&quot; hspace=&quot;5&quot; alt=&quot;sigrok VCD file in gtkwave&quot; /&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;li&gt;
    &lt;a href=&quot;http://sigrok.org/wiki/Libsigrokdecode&quot;&gt;libsigrokdecode&lt;/a&gt;, a shared library written in C, which contains the protocol decoder infrastructure and the protocol decoders themselves, which are written in &lt;a href=&quot;http://python.org/&quot;&gt;Python&lt;/a&gt; (&gt;= 3.0).&lt;/li&gt;
&lt;p&gt;    The list of currently supported &lt;a href=&quot;http://sigrok.org/wiki/Protocol_decoders&quot;&gt;protocol decoders&lt;/a&gt; includes:&lt;br /&gt;
&lt;small&gt;&lt;/small&gt;&lt;/p&gt;
&lt;pre&gt;
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/dcf77/dcf77.py&quot;&gt;dcf77&lt;/a&gt;                DCF77 time protocol
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/lpc/lpc.py&quot;&gt;lpc&lt;/a&gt;                  Low-Pin-Count
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/mx25lxx05d/mx25lxx05d.py&quot;&gt;mx25lxx05d&lt;/a&gt;           Macronix MX25Lxx05D
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/jtag_stm32/jtag_stm32.py&quot;&gt;jtag_stm32&lt;/a&gt;           Joint Test Action Group / ST STM32
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/i2s/i2s.py&quot;&gt;i2s&lt;/a&gt;                  Integrated Interchip Sound
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/spi/spi.py&quot;&gt;spi&lt;/a&gt;                  Serial Peripheral Interface
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/edid/edid.py&quot;&gt;edid&lt;/a&gt;                 Extended display identification data
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/pan1321/pan1321.py&quot;&gt;pan1321&lt;/a&gt;              Panasonic PAN1321
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/mlx90614/mlx90614.py&quot;&gt;mlx90614&lt;/a&gt;             Melexis MLX90614
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/jtag/jtag.py&quot;&gt;jtag&lt;/a&gt;                 Joint Test Action Group
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/rtc8564/rtc8564.py&quot;&gt;rtc8564&lt;/a&gt;              Epson RTC-8564 JE/NB
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/transitioncounter/transitioncounter.py&quot;&gt;transitioncounter&lt;/a&gt;    Pin transition counter
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/usb/usb.py&quot;&gt;usb&lt;/a&gt;                  Universal Serial Bus
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/i2cdemux/i2cdemux.py&quot;&gt;i2cdemux&lt;/a&gt;             I2C demultiplexer
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/i2c/i2c.py&quot;&gt;i2c&lt;/a&gt;                  Inter-Integrated Circuit
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/i2cfilter/i2cfilter.py&quot;&gt;i2cfilter&lt;/a&gt;            I2C filter
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/mxc6225xu/mxc6225xu.py&quot;&gt;mxc6225xu&lt;/a&gt;            MEMSIC MXC6225XU
  &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/uart/uart.py&quot;&gt;uart&lt;/a&gt;                 Universal Asynchronous Receiver/Transmitter
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;  Many more decoders are on our TODO list, and we especially welcome contributed protocol decoders, of course! We intentionally chose Python as implementation language for the decoders, to make them as easy to write (and understand) as possible, even if that means that performance suffers a bit. Have a look at the &lt;a href=&quot;https://gitorious.org/sigrok/sigrok/blobs/master/libsigrokdecode/decoders/spi/spi.py&quot;&gt;SPI decoder&lt;/a&gt; for example, to get a feeling for the implementation.&lt;/p&gt;
&lt;p&gt;Protocol decoders can be &lt;strong&gt;stacked&lt;/strong&gt; on top of each other, e.g. you can run the &lt;strong&gt;i2c&lt;/strong&gt; decoder and pipe its output into the &lt;strong&gt;rtc8564&lt;/strong&gt; (Epson RTC-8564 JE/NB) decoder for further processing of the RTC-specific, higher-level protocol. We also plan to support more complex stacking and combining of decoders in various ways in the nearer future.
  &lt;/p&gt;
&lt;li&gt;
    &lt;a href=&quot;http://sigrok.org/wiki/Sigrok-cli&quot;&gt;sigrok-cli&lt;/a&gt;, is a command-line frontend, which uses both libsigrok and libsigrokdecode. It can acquire samples from logic analyzers and output them in various formats into files or to stdout, and/or run protocol decoders on the aquired data.&lt;/li&gt;
&lt;p&gt;    Example: Data acquisition with 1MHz samplerate into a file.&lt;br /&gt;
&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;sigrok-cli -d chronovu-la8:samplerate=1mhz --time 1ms -o test.sr&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;    Example: Protocol decoding (JTAG).&lt;br /&gt;
&lt;/p&gt;
&lt;pre&gt;
 $ &lt;strong&gt;sigrok-cli -i test.sr -a jtag:tdi=5:tms=2:tck=3:tdo=7&lt;/strong&gt;
 [...]
 jtag: &quot;New state: EXIT1-IR&quot;
 jtag: &quot;IR TDI: 11111110, 8 bits&quot;
 jtag: &quot;IR TDO: 11110001, 8 bits&quot;
 jtag: &quot;New state: UPDATE-IR&quot;
 jtag: &quot;New state: RUN-TEST/IDLE&quot;
 [...]
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;

&lt;li&gt;
    &lt;a href=&quot;http://sigrok.org/wiki/Sigrok-qt&quot;&gt;sigrok-qt&lt;/a&gt;, a Qt-based GUI for sigrok, using both libsigrok and libsigrokdecode.&lt;/li&gt;
&lt;p&gt;    This is intended to be a cross-platform GUI (runs fine and looks &quot;native&quot; on Linux, Windows, Mac OS X) supporting data acquisition and protocol decoding.&lt;/p&gt;
&lt;p&gt;    &lt;strong&gt;NOTE: The Qt GUI is not yet usable! We're working on getting it out of alpha-stage for the next release.&lt;/strong&gt;
  &lt;/p&gt;
&lt;li&gt;
    &lt;a href=&quot;http://sigrok.org/wiki/Sigrok-gtk&quot;&gt;sigrok-gtk&lt;/a&gt;, a GTK+-based GUI for sigrok, using both libsigrok and libsigrokdecode (soon).&lt;br /&gt;
&lt;a href=&quot;http://www.hermann-uwe.de/node/1594&quot;&gt;&lt;img src=&quot;http://www.hermann-uwe.de/files/images/Sigrok-gtk-0.1.preview.png&quot; width=&quot;320&quot; height=&quot;188&quot; align=&quot;right&quot; hspace=&quot;5&quot; alt=&quot;sigrok-gtk&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
    This is a cross-platform GUI contributed by &lt;a href=&quot;http://www.blacksphere.co.nz/main/blackmagic&quot;&gt;Gareth McMullin&lt;/a&gt; (thanks!), supporting data aqcuisition (and soon protocol decoding).&lt;/li&gt;
&lt;p&gt;    &lt;strong&gt;NOTE: The GTK+ GUI is not yet fully usable (but it's more usable than sigrok-qt)! Consider it alpha-stage software for now.&lt;/strong&gt;
  &lt;/p&gt;

&lt;p&gt;We're happy to hear about other (maybe special-purpose) frontends you may want to write using libsigrok/libsigrokdecode as helper libs!&lt;/p&gt;
&lt;h3&gt;Firmware&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.hermann-uwe.de/node/1592&quot;&gt;&lt;img src=&quot;http://www.hermann-uwe.de/files/images/Saleae_logic.preview.jpg&quot; width=&quot;200&quot; height=&quot;150&quot; align=&quot;right&quot; hspace=&quot;5&quot; alt=&quot;Saleae Logic&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some logic analyzer devices require &lt;a href=&quot;http://sigrok.org/wiki/Firmware&quot;&gt;firmware&lt;/a&gt; to be uploaded before they can be used. As always, firmware is a bit of a pain, but here's what we currently do: For non-free firmware we provide instructions how to extract it from the vendor software or from USB dumps, if possible. For distributable firmware we have &lt;a href=&quot;http://sigrok.git.sourceforge.net/git/gitweb.cgi?p=sigrok/sigrok-firmwares;a=summary&quot;&gt;a git repo&lt;/a&gt; where you can get it (thanks &lt;a href=&quot;http://tools.asix.net&quot;&gt;ASIX&lt;/a&gt; for allowing us to distribute the ASIX Sigma/Sigma2 firmware files!).&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;git clone git://sigrok.git.sourceforge.net/gitroot/sigrok/sigrok-firmwares&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Finally, for all Cypress FX2 based logic analyzers we have an open-source (GNU GPL) firmware named &lt;a href=&quot;http://sigrok.org/wiki/Fx2lafw&quot;&gt;fx2lafw&lt;/a&gt;, started by myself, but most work (and finishing the firmware) was then done by &lt;a href=&quot;https://www.ohloh.net/accounts/joelholdsworth&quot;&gt;Joel Holdsworth&lt;/a&gt;, thanks! The support list includes Saleae Logic, CWAV USBee SX, CWAV USBee AX, Robomotic Minilogic/BugLogic3, Braintechnology USB-LPS, and many others. Get the code from the &lt;a href=&quot;http://sigrok.git.sourceforge.net/git/gitweb.cgi?p=sigrok/fx2lafw;a=summary&quot;&gt;fw2lafw git repository&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;git clone git://sigrok.git.sourceforge.net/gitroot/sigrok/fx2lafw&lt;/strong&gt;
&lt;/pre&gt;&lt;h3&gt;Example dumps&lt;/h3&gt;
&lt;p&gt;We collect various captured logic analyzer signals / protocol dumps in the &lt;a href=&quot;http://sigrok.git.sourceforge.net/git/gitweb.cgi?p=sigrok/sigrok-dumps;a=summary&quot;&gt;sigrok-dumps git repository&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;git clone git://sigrok.git.sourceforge.net/gitroot/sigrok/sigrok-dumps&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
They can be useful for testing the sigrok command-line application, the sigrok GUIs, or the protocol decoders.&lt;/p&gt;
&lt;p&gt;We're happy to include further contributed example data in our repository, please send us &lt;strong&gt;.sr&lt;/strong&gt; files of any interesting data/protocol you may come across (even if sigrok doesn't yet have a protocol decoder for that protocol).  See the &lt;a href=&quot;http://sigrok.org/wiki/Example_dumps&quot;&gt;Example dumps&lt;/a&gt; wiki page for details.&lt;/p&gt;
&lt;h3&gt;Packages, distros, installers&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.hermann-uwe.de/node/1595&quot;&gt;&lt;img src=&quot;http://www.hermann-uwe.de/files/images/Sigrok_windows_installer3.jpg&quot; width=&quot;320&quot; height=&quot;250&quot; align=&quot;right&quot; hspace=&quot;5&quot; alt=&quot;sigrok Windows installer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm currently working on updated &lt;a href=&quot;http://packages.qa.debian.org/s/sigrok.html&quot;&gt;Debian packages&lt;/a&gt; for sigrok (will be &lt;strong&gt;apt-get install sigrok&lt;/strong&gt; to get everything), and we're happy about further packaging efforts for other distros. We have preliminary Windows installer files (using &lt;a href=&quot;http://nsis.sourceforge.net&quot;&gt;NSIS&lt;/a&gt;), but the Windows code needs some more fixes and portability improvements before it's really usable. On Mac OS X you can use fink/Macports to install as usual, fancier &lt;strong&gt;.app&lt;/strong&gt; installer files are being worked on.&lt;/p&gt;
&lt;h3&gt;Future&lt;/h3&gt;
&lt;p&gt;Apart from support for more logic analyzers, input/output formats, and protocol decoders, we have a number of other plans for the next few releases. This includes support for analog data, i.e. support for (USB) oscilloscopes, multimeters, spectrum analyzers, and such stuff. This will also require additional GUI support (which could take a while). Also, we want to improve/fix the Windows support, and test/port sigrok to other architectures we come across. Performance improvements for the protocol decoding as well as more features there are also planned.&lt;/p&gt;
&lt;h3&gt;Contact&lt;/h3&gt;
&lt;p&gt;Feel free to contact us on the &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/sigrok-devel&quot;&gt;sigrok-devel mailing list&lt;/a&gt;, or in the IRC channel &lt;a href=&quot;irc://chat.freenode.net/sigrok&quot;&gt;#sigrok&lt;/a&gt; on Freenode. There's also an &lt;a href=&quot;https://identi.ca/group/sigrok&quot;&gt;identi.ca group&lt;/a&gt; for sigrok. We're always happy about feedback, bug reports, suggestions for improving sigrok, and patches of course!&lt;/p&gt;</description>
	<pubDate>Wed, 02 May 2012 14:05:19 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Automatic Camera by Using OpenWrt (用 OpenWrt 制作自动相机)</title>
	<guid>http://www.openmobilefree.net/?p=1338</guid>
	<link>http://www.openmobilefree.net/?p=1338</link>
	<description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1622.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1775&quot; title=&quot;IMG_1622&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1622-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I setup the &lt;a href=&quot;http://wiki.openwrt.org/toh/tp-link/tl-mr11u&quot;&gt;TP-Link MR11U&lt;/a&gt; with Logitech C270 as a automatic camera. it take picture every one second, &lt;a href=&quot;http://downloads.openmobilefree.net/OpenWrt/TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer.tar.bz2&quot;&gt;TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer.tar.bz2&lt;/a&gt; is the origin pictures in 30 minutes. brower online at here: &lt;a href=&quot;http://downloads.openmobilefree.net/OpenWrt/TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer/&quot;&gt;http://downloads.openmobilefree.net/OpenWrt/TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are three different version of MR11U, Ver1.0/Ver1.1/Ver2.0, Ver1.0/Ver1.1 have power switch and two more buttons &lt;span&gt;QSS&lt;/span&gt; and &lt;span&gt;RESET&lt;/span&gt;, Ver2.0 have only one power switch. we can flash OpenWrt image from the web interface under Ver1.0/Ver1.1, but for Ver2.0 we have to flash OpenWrt under U-Boot command. which means you have to open the case connect the serial console to your computer. I have updated the &lt;a href=&quot;http://www.openmobilefree.net/wiki.openwrt.org/toh/tp-link/tl-mr11u&quot;&gt;OpenWrt MR11U wiki page&lt;/a&gt; for reflash detail.&lt;/p&gt;
&lt;p&gt;Here is steps how to setup TP-Link MR11U as a automatic camera:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Flash this &lt;a href=&quot;http://downloads.qi-hardware.com/people/xiangfu/openwrt/ar71xx/openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin&quot; target=&quot;_blank&quot;&gt;OpenWrt image&lt;/a&gt; to the MR11U 3G Router. this image included uvc driver for Logitech C270. &lt;a href=&quot;http://downloads.qi-hardware.com/people/xiangfu/openwrt/ar71xx/README.USB.CAMERA&quot;&gt;here&lt;/a&gt; is more information about this image.&lt;/li&gt;
&lt;li&gt;By default. it will stream the video. we needs change the /etc/init.d/mjpg-streamer line: &amp;#8211;output &amp;#8220;output_http.so &amp;#8211;port $port&amp;#8221; to &amp;#8220;-o &amp;#8220;output_file.so -f /tmp/ -d 1000&amp;#8243;&lt;/li&gt;
&lt;li&gt;Reboot the MR11U or restart mjpg-streamer service, then it will automatic take picture every second.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;Those two pictures showed another device that we have removed case and try to make the C210 camera and MR11U on one small PCB, this one is not what I am using, I will upload my device picture tomorrow.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;~~~~~~~~&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;今天早上，在去 Icarus 贴片工厂之前，我把我的 &lt;a href=&quot;http://wiki.openwrt.org/toh/tp-link/tl-mr11u&quot;&gt;TP-Link MR11U&lt;/a&gt; 和 Logitech C270 配置成了一个自动的照相机，配置成第秒自动拍一张照片，&lt;a href=&quot;http://downloads.openmobilefree.net/OpenWrt/TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer.tar.bz2&quot;&gt;TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer.tar.bz2&lt;/a&gt; 是 30 分种过程中拍摄的原始图片，没有经过加工。 在线浏览： &lt;a href=&quot;http://downloads.openmobilefree.net/OpenWrt/TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer/&quot;&gt;http://downloads.openmobilefree.net/OpenWrt/TP-LINK_MR11U_C270_OpenWrt_mjpeg-streamer/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;MR11U 有三种不同的硬件版本 Ver1.0/Ver1.1/Ver2.0，Ver1.0/Ver1.1 有三个按键，一个电源，两个按键分别是 QSS 和 RESET，Ver2.0 就只有一个电源键，Ver1.0/Ver1.1可能直接从网页界面直接刷成 OpenWrt, 由于 Ver2.0 的网页界面增加了镜像检查，所以我们有能直接从 U-BOot 进行刷机，我们必须找开外壳找到串口，我已经把所有的刷机信息都更新到 &lt;a href=&quot;http://www.openmobilefree.net/wiki.openwrt.org/toh/tp-link/tl-mr11u&quot;&gt;OpenWrt MR11U 的维基页&lt;/a&gt;了&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;这里是 TP-Link MR11U 自动相机的配置过程：&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;将 MR11U 刷上 &lt;a href=&quot;http://downloads.qi-hardware.com/people/xiangfu/openwrt/ar71xx/openwrt-ar71xx-generic-tl-mr11u-v1-squashfs-factory.bin&quot; target=&quot;_blank&quot;&gt;OpenWrt 镜像&lt;/a&gt;，这个镜像内置了 UVC 的驱动。直接支持 罗技C270， &lt;a href=&quot;http://downloads.qi-hardware.com/people/xiangfu/openwrt/ar71xx/README.USB.CAMERA&quot;&gt;这里&lt;/a&gt;有关于这个镜像的更多信息&lt;/li&gt;
&lt;li&gt;默认我将 mjpg-streamer 配置成视频了。我们需要把安改成一秒存储一个图片。修改 /etc/init.d/mjpg-streamer 将这行 &amp;#8211;output &amp;#8220;output_http.so &amp;#8211;port $port&amp;#8221; 改成 &amp;#8220;-o &amp;#8220;output_file.so -f /tmp/ -d 1000&amp;#8243;&lt;/li&gt;
&lt;li&gt;重启路由器或者重启 mjpg-streamer 这个服务。就可以自动拍照了&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这两张图片是 MR11U 和 C210 的图片，不是我用的设备。明天我会把我用的设备拍照发到这里。（阳光下拍照，效果会好一点）&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1607.jpg&quot;&gt;&lt;img class=&quot;size-single-thumbnail wp-image-1347 aligncenter&quot; title=&quot;IMG_1607&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1607-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1609.jpg&quot;&gt;&lt;img class=&quot;size-single-thumbnail wp-image-1348 aligncenter&quot; title=&quot;IMG_1609&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1609-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<pubDate>Wed, 02 May 2012 01:42:38 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Interview with MAKE: The End of chumby, New Adventures</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2337</guid>
	<link>http://www.bunniestudios.com/blog/?p=2337</link>
	<description>&lt;p&gt;Last week, the Internet discovered the &lt;a href=&quot;http://www.engadget.com/2012/04/19/chumby-halts-hardware-sales-out-of-business/&quot;&gt;end of chumby&lt;/a&gt; &lt;a href=&quot;http://www.theverge.com/2012/4/20/2963003/chumby-broken-up-employees-at-technicolor-technology-sold&quot;&gt;as you have known it&lt;/a&gt;. My exit from the company five months ago was deliberately discreet. It was a good run, but it was also time for me to move on. Upon hearing the news, my good friend Phil Torrone reached out to do an interview, and I was happy to oblige. &lt;a href=&quot;http://blog.makezine.com/2012/04/30/makes-exclusive-interview-with-andrew-bunnie-huang-the-end-of-chumby-new-adventures/&quot;&gt;The interview&lt;/a&gt; encapsulates some of my experiences that may be applicable to others excited to get into the hardware business. Here&amp;#8217;s some of the questions that I answer for Phil:&lt;/p&gt;
&lt;li&gt;Can you talk about making a device from start to finish, from idea to factory to retail shelves?
&lt;/li&gt;
&lt;li&gt;What were the challenges with retail sales?
&lt;/li&gt;
&lt;li&gt;Did you get any patents? How do they work within the world of open-source?
&lt;/li&gt;
&lt;li&gt;Do you have any advice for a maker who is considering taking VC funding? Anything different if they’re doing open-source hardware?
&lt;/li&gt;
&lt;li&gt;What are your thoughts on Kickstarter for funding?
&lt;/li&gt;
&lt;li&gt;When you advise companies what do you most often suggest to the founders?
&lt;/li&gt;
&lt;li&gt;If you could do it over, how would you change the hardware of the Chumby? The software? The way Chumby was made?
&lt;/li&gt;
&lt;li&gt;Now that you’ve been part of a full cycle of a VC funded company that makes hardware, what suggestions do you have for company structure, from the people to the location, to the overall organization?
&lt;/li&gt;
&lt;li&gt;What’s next for bunnie, what are most excited about to do next?
&lt;p&gt;If you&amp;#8217;re interested, have a read at &lt;a href=&quot;http://blog.makezine.com/2012/04/30/makes-exclusive-interview-with-andrew-bunnie-huang-the-end-of-chumby-new-adventures/&quot;&gt;the jump&lt;/a&gt;!
&lt;/p&gt;&lt;/li&gt;</description>
	<pubDate>Mon, 30 Apr 2012 23:52:18 +0000</pubDate>
</item>
<item>
	<title>Open Electrons: Milkymist: pushing further the limits of electronics openness</title>
	<guid>http://www10.edacafe.com/blogs/chitleshgoorah/?p=14</guid>
	<link>http://www10.edacafe.com/blogs/chitleshgoorah/2010/11/07/milkymist-pushing-further-the-limits-of-electronics-openness/</link>
	<description>&lt;p&gt;Everyone has heard of open source software, but can the same principles be applied to hardware?&lt;/p&gt;
&lt;p&gt;Some people argue that hardware is so expensive to manufacture and modify that it prevents hobbyists from contributing, and thus stifles the development of an open source hardware community.&lt;/p&gt;
&lt;p&gt;This isn&amp;#8217;t entirely true. In fact, the huge popularity of community-developed microcontroller platforms (&lt;a href=&quot;http://www.arduino.cc&quot;&gt;Arduino&lt;/a&gt; and its huge collection of add-on modules being the most famous examples) tends to show the opposite. Other examples include the &lt;a href=&quot;http://www.gnuradio.org&quot;&gt;USRP&lt;/a&gt; software-defined radio platform, Texas Instrument&amp;#8217;s &lt;a href=&quot;http://www10.edacafe.com/blogs/chitleshgoorah/2010/11/07/milkymist-pushing-further-the-limits-of-electronics-openness/www.beagleboard.org&quot;&gt;Beagleboard&lt;/a&gt; single board computer, or the &lt;a href=&quot;http://www.openmoko.org&quot;&gt;Openmoko&lt;/a&gt; mobile phone (though the latter has enjoyed limited success).&lt;/p&gt;
&lt;p&gt;But while those projects feature open and public hardware specifications, &amp;#8221;traditional&amp;#8221; schematics, printed circuit boards and mechanical designs, the whole semiconductor design and manufacturing process remains a poorly covered area. There are a few pioneers like &lt;a href=&quot;http://www.gaisler.com&quot;&gt;GRLIB&lt;/a&gt; (LEON3), &lt;a href=&quot;http://www.opensparc.net&quot;&gt;OpenSPARC&lt;/a&gt; and &lt;a href=&quot;http://www.opencores.org&quot;&gt;OpenRISC&lt;/a&gt;. But all suffer from excessive complexity, slowness and large hardware resource usage &amp;#8211; if not outright poor or unfinished design. These factors make them difficult to access and stifle their wide adoption, with a need for oversized FPGAs, modern semiconductor processes and advanced logic synthesis tools &amp;#8211; all being very expensive.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-15&quot; src=&quot;http://www10.edacafe.com/blogs/chitleshgoorah/files/2010/11/freedomstack.png&quot; alt=&quot;freedomstack&quot; width=&quot;427&quot; height=&quot;450&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.milkymist.org&quot;&gt;Milkymist&lt;/a&gt; project thus develops a high performance system-on-chip (SoC) design with the economy of resources and of complexity in mind. It is targetted at the demanding application of real time video effect rendering for embedded systems, and wants to prove that open hardware logic designs can compete in terms of performance.&lt;/p&gt;
&lt;p&gt;The Milkymist SoC is based on Lattice&amp;#8217;s &lt;a href=&quot;http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm&quot;&gt;Mico32 CPU&lt;/a&gt; core, and features a host of custom-developed peripherals, like a DDR SDRAM controller, various I/O interfaces and graphics acceleration.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-21&quot; src=&quot;http://www10.edacafe.com/blogs/chitleshgoorah/files/2010/11/socblock1.png&quot; alt=&quot;socblock1&quot; width=&quot;520&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But Milkymist&amp;#8217;s founder, Sébastien Bourdeauducq, said that they are not stopping there. They are developing a complete open hardware product out of this system-on-chip, which includes software, schematics, PCB, and enclosure. The end product will be an &amp;#8220;interactive VJ station&amp;#8221;, a device meant to be used during concerts and artistic events to &lt;a href=&quot;http://en.wikipedia.org/wiki/VJing&quot;&gt;generate real time video effects&lt;/a&gt; and make them interactive thanks to the many built-in interfaces (MIDI, DMX, video input, Ethernet, OSC, USB, GPIO).&lt;/p&gt;
&lt;p&gt;To foster development on this open hardware platform, &lt;a href=&quot;http://spins.fedoraproject.org/fel/&quot;&gt;Free Electronic Lab&lt;/a&gt; (formerly known as Fedora Electronic Lab) and Milkymist are collaborating to provide the smoothest and easiest to setup programming environment as possible.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-17&quot; src=&quot;http://www10.edacafe.com/blogs/chitleshgoorah/files/2010/11/small_mm1_rc1_parts_on_pcb_usb_side_view.jpg&quot; alt=&quot;small_mm1_rc1_parts_on_pcb_usb_side_view&quot; width=&quot;400&quot; height=&quot;213&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At this time, the full system-on-chip design is complete (the current focus is on improving its documentation and fixing any bug that can be found) and the second batch of PCBs (hopefully based on the final design) is on its way to the fab. If everything goes well, some development kits will be available for sale at the end of December.&lt;/p&gt;
&lt;p&gt;For more information, visit &lt;a href=&quot;http://www.milkymist.org&quot;&gt;www.milkymist.org&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 30 Apr 2012 21:12:35 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Controlling a Vacuum Fluorescent Display (VFD) from a LeoStick (Arduino compatible)</title>
	<guid>http://www.freetronics.com/blogs/news/6005728-controlling-a-vacuum-fluorescent-display-vfd-from-a-leostick-arduino-compatible</guid>
	<link>http://www.freetronics.com/blogs/news/6005728-controlling-a-vacuum-fluorescent-display-vfd-from-a-leostick-arduino-compatible</link>
	<description>&lt;p&gt;Prolific &quot;repurposer&quot; Matt Evans is well known for taking old or discarded electronics and giving it new life. When he departed for the UK earlier this year he was given a Vacuum Fluorescent Display (VFD) module as a parting gift - very appropriate!&lt;/p&gt;
&lt;p&gt;He then combined it with a phone charger, some random bits of wire, and a &lt;a href=&quot;http://www.freetronics.com/leostick&quot;&gt;Freetronics LeoStick&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/vintage-vfd_large.jpeg?101168&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Matt said: &quot;&lt;span&gt;The VFD has a row of 0.1&quot; pins and is odd in that it's not serial nor HD44780-style, just ASCII over D[7:0] and Write/Busy handshake lines - the Leostick pushes straight onto the pins to drive it.&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If you look to the left of the VFD you'll see the LeoStick connected to the side, driving characters to the display.&lt;/p&gt;
&lt;p&gt;Nice work, Matt!&lt;/p&gt;</description>
	<pubDate>Mon, 30 Apr 2012 07:31:15 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: Simple PCIe FMC carrier (SPEC) - 25-04-2012: SPEC boards running in Siberia!</title>
	<guid>http://www.ohwr.org/news/252</guid>
	<link>http://www.ohwr.org/news/252</link>
	<pubDate>Mon, 30 Apr 2012 06:21:08 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Transmaterial: Woven Stone</title>
	<guid permalink="False">http://transmaterial.net/?p=2024</guid>
	<link>http://transmaterial.net/index.php/2012/04/27/woven-stone/</link>
	<description>&lt;p&gt;Woven Stone is part of the ASI Specialty Products Magna Mosaic Collection. Earth tones combined with dimensional, geometric features create a powerful and sculptured look, lending an artistic element to any space. The continuous, controlled texture of Woven Stone creates a sense of movement, suitable for the most modern of interiors, including retail, hospitality, healthcare and corporate projects.&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.archsystems.com&quot;&gt;Architectural Systems, Inc.&lt;/a&gt;, New York, NY, USA.&lt;br /&gt;
Find more information in &lt;a href=&quot;http://www.amazon.com/gp/product/1568988931?ie=UTF8&amp;tag=transmaterial-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1568988931&quot;&gt;Transmaterial 3&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 27 Apr 2012 14:00:29 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: OHR Meta Project - 25-04-2012: Is open hardware creating a more open world?</title>
	<guid>http://www.ohwr.org/news/253</guid>
	<link>http://www.ohwr.org/news/253</link>
	<pubDate>Fri, 27 Apr 2012 12:17:03 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Video Circuits: Spontaneous Symmetry Violation .01</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-2867601893516417845</guid>
	<link>http://videocircuits.blogspot.com/2012/04/spontaneous-symmetry-violation-01.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;Spontaneous Symmetry Violation .01 (2003) :: Recursion VideoLab :: Boomin' Side&lt;br /&gt;&lt;br /&gt;More madness from the VHS vaults of the VideoLab&lt;br /&gt;&lt;br /&gt;Music: BOOMIN' SIDE / TRIPPER SIDE (Derek, mixed tape 1992, 0:00 - 42:00)&lt;br /&gt;Music: Digital Division | Live @ Treewood (Derek &amp;amp; Eric, 1993, 42:00 - end)&lt;br /&gt;&lt;br /&gt;[and for all you Digital Division fans, check out the part when they turn on the mics in the Treewood garage just after midnight on New Year's Eve (1:02:41) voices = Lovlin, Rowena, Jason, Eric, Derek, Adam, Ivy, et al]&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://vimeo.com/videoalchemy&quot;&gt;https://vimeo.com/videoalchemy&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-2867601893516417845?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 24 Apr 2012 04:34:53 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Dieter Spaar: A bit of 3G Layer-1</title>
	<guid>http://www.mirider.com/weblog/2012/04/24#20120424-A_bit_of_3G_Layer_1</guid>
	<link>http://www.mirider.com/weblog/2012/04/24#20120424-A_bit_of_3G_Layer_1</link>
	<description>&lt;p&gt;
While experimenting with my Node-B, I had the need to generate a RACH
message without having to use a phone. Such an approach can for
example be used for performance testing of the Node-B receiver or evaluating
the RACH handling capacity of the radio network (no, I don't call it RACH DoS ;-)
&lt;/p&gt;
&lt;p&gt;
First a little bit of theory: The RACH in UMTS works different than in
GSM, its not just about sending a single RACH burst. Because WCDMA is
very sensitive to interference, the phones have to send with a transmit power
as low as possible. For the RACH procedure this means that the phone
starts to send a short RACH preamble with very low power and looks for
the acknowledgement if the preamble has been received by the Node-B on
the AICH (Access Indication Channel) channel. If the phone doesn't receive
the acknowledgement, it increases the transmission power and resends the 
preamble. If there is the acknowledgement from the Node-B, the phone sends
the actual RACH message. The RACH message itself is not just a few bits
containing the access cause and a random reference like in GSM, it is a
complete message. &quot;RRC Connection Request&quot; is used for accessing the
network but other message can also be sent on the RACH channel (e.g. &quot;Cell
Update&quot; which is besides other things used for indicating unrecoverable 
RLC errors. One can see this message frequently when starting to implement
an RNC ;-).
&lt;/p&gt;
&lt;p&gt;
Now where to get a RACH preamble and message without having to use a phone?
I started to look at Agilent's Signal Studio for WCDMA which should be able
to generate a RACH messages with user defined content which can be replayed 
with a signal generator. However even after lots of trials I never managed to
generate a RACH message which can be properly decoded by the Node-B, only the
RACH preamble is detected without errors but the RACH message itself just 
produces garbage and CRC errors.
&lt;/p&gt;
&lt;p&gt;
So I started to write my own code to generate the RACH message. The relevant
3GPP specification for WCDMA FDD is TS 25.212 (Multiplexing and channel coding)
and TS 25.213 (Spreading and Modulation). Basically the steps to create a
RACH message requires adding a CRC to the message bits, Convolutional encoding, 
1st Interleaving, Rate Matching, 2nd Interleaving, Spreading, Scrambling and 
finally Modulation. I and Q signal on the Uplink carry different things, Data 
is on the I signal, Control (pilot bits and transport format information) on 
the Q signal. Luckily the RACH message does not require any fancy multiplexing 
and rate matching of multiple transport channels on a physical radio channel. 
This can get really funny, especially if Turbo Coding is involved which results 
in multiple bit streams (systematic and parity bits) which are treated differently.
After some trial-and-error and lots of experimenting and testing I was finally
able to create a well formed signal of a RACH preamble and message which the 
Node-B can properly decode.
&lt;/p&gt;
&lt;p&gt;
After that I also tried to decode the RACH message generated by Agilent's Signal 
Studio to find out why it didn't work. It seems that the wrong scrambling code 
sequence is used (the scrambling code number looks OK, but the offset into 
the code bits is wrong). I really wonder why no one noticed this problem with 
Signal Studio before or maybe I am just doing something wrong. Anyway, I can
now use my own code to generate RACH messages. Maybe in the future I will also 
look into generating a signal which a phone will consider as valid signal
of a 3G cell, this requires generating the P-CPICH (Primary Common Pilot 
Channel), P-SCH/S-SCH (Primary/Secondary Synchronization Channel) and P-CCPCH 
(Primary Common Control Physical Channel) carrying the BCH.
&lt;/p&gt;</description>
	<pubDate>Tue, 24 Apr 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  jlGuiApplet replaces ffmp3</title>
	<guid>http://oggstreamer.wordpress.com/?p=355</guid>
	<link>http://oggstreamer.wordpress.com/2012/04/23/oggstreamer-jlguiapplet-replaces-ffmp3/</link>
	<description>&lt;p&gt;Sorry to say &amp;#8211; but I&amp;#8217;ve dropped support for ffmp3 &amp;#8211; the main reason for this is that flash only processes audio at 44100Hz so streaming ogg and listening with ffmp3 wasn&amp;#8217;t possible at 48000Hz (it was just play-backed at 44100Hz). So I needed another solution for this. Its name &lt;a href=&quot;http://www.javazoom.net/applets/jlguiapplet/jlguiapplet.html&quot;&gt;jlGuiApplet &lt;/a&gt;which implements an Winamp-style Ogg/MP3-Player as a Java-Applet and supports the 48000Hz sampling-rate as well. This software is almost 5 years old but it does the job.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/04/java-player.png&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-356&quot; title=&quot;java player&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/04/java-player.png?w=500&amp;h=308&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;308&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see on the ssh-terminal running on the XportPro &amp;#8211; streaming  to 1 client produces around 1% CPU-Load at 128kbps. Also note that we are using more than 8,5 Megabytes of RAM, which means that older XPortPros with just 8Megabytes in RAM total, won&amp;#8217;t be able to run the full OggStreamer-Software including the builtin sighttpd streaming-Server.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/355/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/355/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=355&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 23 Apr 2012 16:39:59 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: Stop wasting time and money, make the Fedora 18 release name “Fedora 18″</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=589</guid>
	<link>http://blogs.gnome.org/hughsie/2012/04/23/stop-wasting-time-and-money-make-the-fedora-18-release-name-fedora-18/</link>
	<description>&lt;div&gt;
&lt;p&gt;Calling all Fedora users and developers. Please visit &lt;a href=&quot;https://admin.fedoraproject.org/voting/about/poll-rel-names&quot;&gt;the official poll&lt;/a&gt; to choose the future of Fedora release names.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Nobody refers to &amp;#8220;Running Fedora Verne&amp;#8221; and choosing the name every few months is just a giant waste of time and waste of a very busy legal team that has to review and research each stupid name. &lt;strong&gt;I think &amp;#8220;Beefy Miracle&amp;#8221; is a ridiculous name that really takes the edge off an otherwise most professional release.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://beefymiracle.org/&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://beefymiracle.org/img/its-a-beefy-miracle.png&quot; alt=&quot;&quot; width=&quot;600&quot; height=&quot;304&quot; /&gt;&lt;/a&gt;Just have the next release name as &lt;em&gt;Fedora 18&lt;/em&gt; and be done with the nonsense names once and for all.&lt;/p&gt;</description>
	<pubDate>Mon, 23 Apr 2012 14:22:07 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Icarus SMT factory(Icarus 贴片工厂)</title>
	<guid>http://www.openmobilefree.net/?p=1361</guid>
	<link>http://www.openmobilefree.net/?p=1361</link>
	<description>&lt;p&gt;~~~~~~~~&lt;/p&gt;
&lt;p&gt;今天参观了 Icarus 的贴片工厂凯顺电子，工厂在北京北六环附近，成立有一年左右，目前有大约 40 人在这里工作。这是我第一次走进贴片工厂，几乎所有的东西对我来说都是未知领域，一进门的时候我就注意到了他们的铁制门帘，所有的门上都安装了这种铁制的门帘，从图片上你能注意到这种铁制门帘都是有接地的。每当有人进入操作间的时候都会很自然的碰一下铁门帘来放掉身体上携带的静电。&lt;/p&gt;
&lt;p&gt;Icarus 安排在中午 11 点贴片，这里有三台SONY的贴片机（两台130，一台209），一台11区温度的回流焊。整个过程需要 4 个人完成其中 2 个人都是检查 Icarus 将结果／意见反馈给贴片机的操作人员，一但准备工作完成， 90 片 Icarus 会在2～3个小时内完成，其它的就是手工插焊的工作，被安装在明天进行。&lt;/p&gt;
&lt;p&gt;整个参观的过程都由生产总监 Steven Lin 给我做介绍。这里要非常感谢 Steven Lin。&lt;/p&gt;
&lt;p&gt;北京市凯顺电子技术有限公司，电话：010－89787870，邮箱：steven_lin01@126.com&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__1.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1367&quot; title=&quot;KS_SMT__1&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__1-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__21.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1713&quot; title=&quot;KS_SMT__2&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__21-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__31.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1714&quot; title=&quot;KS_SMT__3&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__31-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__41.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1715&quot; title=&quot;KS_SMT__4&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__41-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__51.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1716&quot; title=&quot;KS_SMT__5&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__51-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__61.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1717&quot; title=&quot;KS_SMT__6&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__61-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__71.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1718&quot; title=&quot;KS_SMT__7&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/KS_SMT__71-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/2012-04-18_Icarus_1.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1360&quot; title=&quot;2012-04-18_Icarus_1&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/2012-04-18_Icarus_1-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/2012-04-18_Icarus.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-single-thumbnail wp-image-1359&quot; title=&quot;2012-04-18_Icarus&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/2012-04-18_Icarus-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;~~~~~~~~&lt;/p&gt;</description>
	<pubDate>Sun, 22 Apr 2012 15:32:12 +0000</pubDate>
</item>
<item>
	<title>osPID: Wiki is Up</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=344</guid>
	<link>http://www.ospid.com/blog/wiki-is-up/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wiki-is-up</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/wikilink-cropped.png&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/wikilink-cropped.png&quot; alt=&quot;&quot; title=&quot;wikilink-cropped&quot; width=&quot;461&quot; height=&quot;248&quot; class=&quot;aligncenter size-full wp-image-349&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We now have our very own documentation wiki! It is still needs a lot of work, but the basic structure is there.  Over time we hope this grows into a powerful resource for the osPID user-base.&lt;/p&gt;
&lt;p&gt;Anyone is free to create an account and edit, so feel free to add content. Be advised however, that this is a moderated wiki; all edits are subject to moderator approval.  We felt this was the best way to allow for user-modification, while protecting against spam.&lt;/p&gt;</description>
	<pubDate>Sat, 21 Apr 2012 11:40:45 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: AFC: Work from the Experimental TV Center Archive/Television Delivers People</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-3764450888800939469</guid>
	<link>http://videocircuits.blogspot.com/2012/04/afc-work-from-experimental-tv-center.html</link>
	<description>I know it's a bit late now, I misse this but it's here for posterity :) also check out the ICAs current exhibition &lt;a href=&quot;http://www.ica.org.uk/32389/Exhibitions/Remote-Control.html&quot;&gt;Remote Control&lt;/a&gt;&amp;nbsp;that&amp;nbsp;surveys the enormous impact that television has had upon contemporary culture&amp;nbsp;and there other related&amp;nbsp;live events &lt;a href=&quot;http://www.ica.org.uk/32934/Seasons/Television-Delivers-People.html&quot;&gt;Television Delivers People&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-8o4amMu9IXQ/T5LEE6JDpZI/AAAAAAAAAaA/yoHLqpRn9ko/s1600/ETC-crop-300x297.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-8o4amMu9IXQ/T5LEE6JDpZI/AAAAAAAAAaA/yoHLqpRn9ko/s1600/ETC-crop-300x297.jpg&quot; /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Photo: James Richards&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next Thursday (13 April 2012), Artists’ Film Club presents a selection of ground-breaking works from the archive of New York’s Experimental TV Center. An insight into the recent history of artists using, exploiting and subverting new electronic media technologies.&lt;br /&gt;In the early 1970′s, artists were moving outside existing organisational structures in attempts to create more utopian systems, in critique of television and mainstream media. However, until the 1990′s artists struggled to access these new media tools for their own uses. Founded in 1969 in Owego, New York state, the Experimental TV Center has been a hub for video engineering and experimentation ever since.&lt;br /&gt;&lt;br /&gt;Created by artists for other artists the center has developed its own unique bank of radical editing and image processing equipment, worked with by such diverse artists such as Gary Hill, Ikue Mori, Nam June Paik and Abigail Child.&lt;br /&gt;&lt;br /&gt;The Artists’ Film Club presents a programme of works from the ETC’s archive and is selected by artist James Richards, and Associate Curator of Artists’ Moving Image, Steven Cairns.&lt;br /&gt;&lt;br /&gt;Find out more about the unique and peculiar resources hosted at the&lt;a href=&quot;http://www.experimentaltvcenter.org/about&quot;&gt; ETC.&lt;/a&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-3764450888800939469?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Apr 2012 08:49:22 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Transmaterial: CarbonCure</title>
	<guid permalink="False">http://transmaterial.net/?p=2019</guid>
	<link>http://transmaterial.net/index.php/2012/04/20/carboncure/</link>
	<description>&lt;p&gt;CarbonCure is a precast concrete technology developed to sequester carbon dioxide. The CarbonCure Block System has been installed across North America at concrete manufacturing facilities to store CO2 within concrete masonry units during the production process, permanently locking away the greenhouse gas in the form of synthetic limestone. CO2 is injected into concrete through a modified core bar during the molding stage. The result is a more environmentally-responsible concrete product with equivalent performance and cost to traditional concrete.&lt;/p&gt;
&lt;p&gt;In addition to sequestered CO2, CarbonCure blocks have a lower carbon footprint than traditional masonry units due to reductions in their steam curing temperature and cement content. As a result, the total CO2 emissions reduction is approximately 250 grams per block.&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.carboncure.com&quot;&gt;CarbonCure Technologies&lt;/a&gt;, Halifax, NS, Canada.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Apr 2012 14:00:11 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Low cost wireless environmental sensing with Arduino</title>
	<guid>http://www.freetronics.com/blogs/news/5966457-low-cost-wireless-environmental-sensing-with-arduino</guid>
	<link>http://www.freetronics.com/blogs/news/5966457-low-cost-wireless-environmental-sensing-with-arduino</link>
	<description>&lt;p&gt;Check out this great video showing how a group of people with different skills and backgrounds came together to build an environmental monitoring system. One of the key components is a &lt;a href=&quot;http://www.freetronics.com/etherten&quot;&gt;Freetronics EtherTen&lt;/a&gt;, which acted as a communications gateway for the system by linking sensors to the Internet via a 3G connection.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;
  
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;From the video description:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span&gt;On the 23 of February ScienceMob organised a sprint event with Gaia Resources, the JCU eResearch Centre and Townsville City Council. Many of us were strangers working with systems we were not familiar with.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;The event took place at the Rowes Bay sustainability demonstration house, a pre-1980s concrete block home that has been retrofitted with energy efficiency measures and renewable energy solutions with a focus upon the benefits of maintaining biodiversity through planned urban landscapes.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Our plan was to make 8 subterranean enclosures and monitor their temperature with different types of covers. We chose galvanized iron as our roofing material and painted half of our roofs black and the other half white. We also used various thicknesses of insulation and left one black and white treatment un-insulated.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Temperatures were measured using the maxim DS18B20 1-Wire digital thermometer. These sensors were connected to a solar charged lithium ion powered Seedunio Stalker v2.1 board with XBee wireless communication. Data was transmitted to an XBee module on an EtherTen connected to a 3G modem via an ethernet connection.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Information was then sent by a web service to Gaia Resources' servers in Perth and visualized on the web using Google APIs.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;Preliminary results showed that a plain white roof without insulation may be better than a black roof with insulation; we will make the visualization and setup details available to the general public in the coming months so that you can watch the progress of the experiment from wherever you have an internet connection.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 20 Apr 2012 12:47:58 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: OHR Support - OHWR maintenance on 2012-04-23 (Monday) 08:30 CEST</title>
	<guid>http://www.ohwr.org/news/251</guid>
	<link>http://www.ohwr.org/news/251</link>
	<pubDate>Thu, 19 Apr 2012 17:38:08 +0000</pubDate>
	<author>egarcia@splendeo.es (Enrique García)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: PCB fab characterization - undercut in DorkbotPDX batch order</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-1207880916309881283</guid>
	<link>http://siliconexposed.blogspot.com/2012/04/pcb-fab-characterization-undercut-in.html</link>
	<description>Most of the time people making PCB simply design the board exactly as they want it to look, send it off to the fab, and trust that they'll get back a board that matches what's on the gerbers. Unfortunately this is not actually the case! The gerbers are used to create a photomask, which is then exposed onto a photoresist-covered panel and etched.&lt;br /&gt;&lt;br /&gt;Most PCBs are patterned using a ferric chloride or copper chloride based etch which is almost perfectly isotropic - it etches equally in all directions. This results in the mask being undercut by approximately the thickness of the copper layer (35 μm for 1oz copper).&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-RnAiqbeXitg/T4-xTd9nNwI/AAAAAAAAAHY/cZKOB_N3Cxc/s1600/S7301752_cropped.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;http://1.bp.blogspot.com/-RnAiqbeXitg/T4-xTd9nNwI/AAAAAAAAAHY/cZKOB_N3Cxc/s400/S7301752_cropped.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;PCB cross section showing sloped sidewalls from undercut (homemade board)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ever since I did my &lt;a href=&quot;http://siliconexposed.blogspot.com/2012/01/first-bga-board.html&quot;&gt;first BGA board&lt;/a&gt; and noticed some of the pads looked a bit small I've wanted to do a formal study of mask undercut on this process so that I can design future boards with this in mind.&lt;br /&gt;&lt;br /&gt;While the undercut is small and insignificant for many applications, it can become a significant issue when working with fine-pitch BGAs, 0201 sized passives, and other very small components!&lt;br /&gt;&lt;br /&gt;This was my first time imaging PCBs at high magnifications (more than the 30x of my inspection microscope) so I fooled around a little bit with techniques. Somewhat surprisingly I found that darkfield illumination gave better results than brightfield - brightfield images tended to be far too bright due to reflections from the soldermask.&lt;br /&gt;&lt;br /&gt;My first test was one of the leftover boards from my BGA test in January. In darkfield the pads stood out very well and were easy to measure to within a few μm. All dimensions were taken with the focal plane at the top of the trace. At some point in the future I plan to cross-section a board and measure edge profiles.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-Gf7SOOkhB3o/T4-zToHlz3I/AAAAAAAAAHg/TmUn1nfqmTo/s1600/bga_01_df_neo10x.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://2.bp.blogspot.com/-Gf7SOOkhB3o/T4-zToHlz3I/AAAAAAAAAHg/TmUn1nfqmTo/s640/bga_01_df_neo10x.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;200 μm nominal diameter BGA pads (darkfield image). The circles below and to the left of the pads are damage to the soldermask from a misaligned BGA reflow attempt.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The pads are on 500 μm centers and are nominally 200 μm diameter with 300 μm space between them. A quick inspection shows that the pad size is &lt;i&gt;much&lt;/i&gt; smaller than the space! Actual measurements show that the left-hand pad is 85 μm in diameter and the right is 67 μm, for undercut of 115 μm and 133 μm respectively!&lt;br /&gt;&lt;br /&gt;Further inspection showed that one of the isolated pads (not connected to a trace) had been etched away entirely.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-XkVZQpbsq2Q/T4-0S9_Jk3I/AAAAAAAAAHo/jsTS07nSaq8/s1600/bga_02_bf_neo10x.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://4.bp.blogspot.com/-XkVZQpbsq2Q/T4-0S9_Jk3I/AAAAAAAAAHo/jsTS07nSaq8/s640/bga_02_bf_neo10x.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Brightfield image showing empty hole in soldermask where a pad was etched away. Note strong glare from soldermask in brightfield mode.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;It is also interesting to note that the soldermask apertures are almost exactly 200 μm in diameter despite the gerbers including some clearance around the pad.&lt;br /&gt;&lt;br /&gt;A higher magnification image allowed me to measure trace and pad sizes more precisely.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-l2bc5gKgNMA/T4-1bfDonjI/AAAAAAAAAHw/hnNvAlveFIE/s1600/bga_05_df_neo20x.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://4.bp.blogspot.com/-l2bc5gKgNMA/T4-1bfDonjI/AAAAAAAAAHw/hnNvAlveFIE/s640/bga_05_df_neo20x.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Higher magnification image of same area&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The 200 μm nominal pad is actually 89.5 μm in diameter and the 152 μm trace is actually 57.9 μm. The undercut was over 50% in this case - 110.5 μm on the pad and 94.1 μm on the trace.&lt;br /&gt;&lt;br /&gt;In order to verify that the undercut was not specific to this one board I tried a more recent one - my 0201 passive test panel from last week.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-MegefV9KrKs/T4-2oa3yqBI/AAAAAAAAAH4/2B0adF2igfY/s1600/pad0201_01_df_neo5x.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://2.bp.blogspot.com/-MegefV9KrKs/T4-2oa3yqBI/AAAAAAAAAH4/2B0adF2igfY/s640/pad0201_01_df_neo5x.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;0201 capacitor footprint&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Both pads are nominally 250 μm wide. Actual measured dimensions are 187 μm and 190 μm for undercut of 63 and 60 μm respectively.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-BLjNvkqGBjk/T4-3VGl1DGI/AAAAAAAAAIA/Q6oDCJks9Sw/s1600/pad0201_02_df_neo10x.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://2.bp.blogspot.com/-BLjNvkqGBjk/T4-3VGl1DGI/AAAAAAAAAIA/Q6oDCJks9Sw/s640/pad0201_02_df_neo10x.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Higher magnification view of a single pad&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This pad measured 189 μm wide. Edge roughness was very small and hard to measure but it looks to be under 5 μm.&lt;br /&gt;&lt;br /&gt;The same board also contained an 0.8mm BGA footprint. Pads are nominally 400 μm on 800 μm centers.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-5v42IpWGMjs/T4-3_Intj0I/AAAAAAAAAII/mB8DWi7dQhA/s1600/bga08mm_01_df_neo5x.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://4.bp.blogspot.com/-5v42IpWGMjs/T4-3_Intj0I/AAAAAAAAAII/mB8DWi7dQhA/s640/bga08mm_01_df_neo5x.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;0.8mm BGA footprint&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The results were consistent with previous measurements - actual pad sizes are (clockwise from top left) 329 μm, 329 μm, 331 μm, and 332 μm. Undercut values are 71 μm, 71 μm, 69 μm, and 68 μm.&lt;br /&gt;&lt;br /&gt;In conclusion, the fabricator used by the DorkbotPDX batch order exhibits nontrivial undercut on small features. Observed undercut values ranged from 68 to 133 μm and were fairly consistent within a single board but varied from board to board. The 0.5mm BGA test board exhibited an average undercut of 113.5 ± 19.5 μm and the 0201 test board exhibited an average undercut of 67 ± 4 μm.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-1207880916309881283?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 19 Apr 2012 04:19:17 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>OggStreamer: #oggstreamer  pictures of completed device</title>
	<guid>http://oggstreamer.wordpress.com/?p=346</guid>
	<link>http://oggstreamer.wordpress.com/2012/04/17/oggstreamer-pictures-of-completed-device/</link>
	<description>&lt;p&gt;Mechanics and Electronics are completed (we will see what story emc-compliance testing will tell), but for now the &amp;#8220;Hardware&amp;#8221; is ready. The last piece to add to this puzzle was a countersunk-headed screw that holds the cinch-connector in place. I got the screw samples from &lt;a href=&quot;http://www.bossard.com/&quot;&gt;Bossard&lt;/a&gt; &amp;#8211; thank you.&lt;/p&gt;
&lt;p&gt;Here some pictures:&lt;br /&gt;
&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/04/dsc02159.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-347&quot; title=&quot;SONY DSC&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/04/dsc02159.jpg?w=300&amp;h=200&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/04/dsc02161.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-348&quot; title=&quot;SONY DSC&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/04/dsc02161.jpg?w=300&amp;h=200&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/04/dsc02150.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-349&quot; title=&quot;SONY DSC&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/04/dsc02150.jpg?w=300&amp;h=200&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/346/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/346/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=346&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 18 Apr 2012 22:29:31 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: 41 Icarus 挖矿</title>
	<guid>http://www.openmobilefree.net/?p=1308</guid>
	<link>http://www.openmobilefree.net/?p=1308</link>
	<description>&lt;p&gt;&lt;a title=&quot;Icarus bitcointalk thread&quot; href=&quot;https://bitcointalk.org/index.php?topic=51371.0;all&quot; target=&quot;_blank&quot;&gt;Icarus&lt;/a&gt; is designed by ngzhang, it&amp;#8217;s open source hardware. all design files can found at &lt;a href=&quot;https://github.com/ngzhang/Icarus&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;, it&amp;#8217;s support by Cgminer. more information can be found at &lt;a href=&quot;http://en.qi-hardware.com/wiki/Icarus&quot; target=&quot;_blank&quot;&gt;this wiki page&lt;/a&gt;, 41 Icarus running at 15GH/s, it mine ~8~10BTC per day, every Icarus needs ~25W, there 16 Icarus connect to one ATX 650 W power. other are using the power adapter(12V 2A). the Cgminer status can be found here:  &lt;a title=&quot;cgminer + 41 Icarus + 2 mining pool&quot; href=&quot;http://downloads.openmobilefree.net/Icarus/&quot; target=&quot;_blank&quot;&gt;http://downloads.openmobilefree.net/Icarus/&lt;/a&gt;  those Icarus information: &lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/README&quot;&gt;http://downloads.openmobilefree.net/Icarus/README&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s not only for bitcoin mining also can be used as FPGA develop/learning board.&lt;/p&gt;
&lt;p&gt;~~~~~~~~&lt;/p&gt;
&lt;p&gt;41 Icarus 同时可以达到 15GH/s , 一天可以挖出 10BTC，每个 Icarus 需要 ~25W ， 41 个 Icarus 当中 16 个接到了 ATX 650W 电源上。其它的用的自带的电源适配器（12V 2A），软件运行的详细信息 见： &lt;a title=&quot;cgminer + 41 Icarus + 2 mining pool&quot; href=&quot;http://downloads.openmobilefree.net/Icarus/&quot; target=&quot;_blank&quot;&gt;http://downloads.openmobilefree.net/Icarus/&lt;/a&gt; 硬件信息见：&lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/README&quot;&gt;http://downloads.openmobilefree.net/Icarus/README&lt;/a&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_1309&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1480.jpg&quot;&gt;&lt;img class=&quot;size-single-thumbnail wp-image-1309&quot; title=&quot;41 Icarus&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1480-640x360.jpg&quot; alt=&quot;41 Icarus Mining&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;41 Icarus&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;attachment_1335&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1563.jpg&quot;&gt;&lt;img class=&quot; wp-image-1335  &quot; title=&quot;41_Icarus&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/IMG_1563-300x225.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;41_Icarus_Dark&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Apr 2012 16:16:23 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: 复古耳机</title>
	<guid>http://www.openmobilefree.net/?p=1320</guid>
	<link>http://www.openmobilefree.net/?p=1320</link>
	<description>&lt;p&gt;There are too many people says my phone call is not clear. they cannot hear me clearly. so I try to find some headphone on TaoBao. found &lt;a href=&quot;http://item.taobao.com/item.htm?id=13542366638&quot;&gt;this one&lt;/a&gt;, designed for iPhone. it needs some &lt;a href=&quot;http://item.taobao.com/item.htm?id=12613840840&quot;&gt;convert line&lt;/a&gt; for other phones. so I just order this headphone + convert line. after I receive those two interesting things. I know the seller didn&amp;#8217;t tested the convert line at all just as the other taobao shop. they are just take information form other placae, no test at all. it&amp;#8217;s better without this convert line. this convert line make the sound smaller and make the headphone button not working. but it&amp;#8217;s good news that we don&amp;#8217;t needs this convert line. after use this headphone, my wife no longer complain that the phone call is not clear. &lt;img src=&quot;http://www.openmobilefree.net/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt;  but if you use this headphone outside, people will think you are strange: &amp;#8216;What the f**k!&amp;#8217;&lt;/p&gt;
&lt;p&gt;~~~~~~~~&lt;/p&gt;
&lt;p&gt;由于有太多的人说的我手机不清楚。就在淘宝网上找了找有趣的耳机。发现了&lt;a href=&quot;http://item.taobao.com/item.htm?id=13542366638&quot;&gt;这个&lt;/a&gt;，从淘宝介绍上看是专门给 iPhone 设计的。需要一根&lt;a href=&quot;http://item.taobao.com/item.htm?id=12613840840&quot;&gt;转接线&lt;/a&gt;耳机。于是被坑爹下单买了这个复古听筒式耳机＋转接线。两天后收到货。玩了几下。发现没有转接线反而清楚。而且听筒上的按键也可以接／挂电话。接上转接线后声音明显变小。听筒上的按键也失灵。还好转接线只有 5 块钱。打电话给老婆再没有报怨不清楚的情况。就是外出有点过于拉风：&amp;#8217;我操&amp;#8217;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;attachment_1322&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/P1000-headphone_2.jpg&quot;&gt;&lt;img class=&quot;size-single-thumbnail wp-image-1322 &quot; title=&quot;P1000-headphone_2&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/P1000-headphone_2-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Headphone 2&lt;/p&gt;&lt;/div&gt;
&lt;div id=&quot;attachment_1321&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/P1000-headphone_1.jpg&quot;&gt;&lt;img class=&quot;size-single-thumbnail wp-image-1321 &quot; title=&quot;P1000-headphone_1&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/04/P1000-headphone_1-640x360.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Headphone 1&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Apr 2012 16:02:53 +0000</pubDate>
</item>
<item>
	<title>Tuxbrain: Superofertón Protoboard + Cables de conexión</title>
	<guid permalink="False">http://www.tuxbrain.com/212 at http://www.tuxbrain.com</guid>
	<link>http://www.tuxbrain.com/en/superofert%C3%B3n-protoboard-cables-de-conexi%C3%B3n</link>
	<description>&lt;p&gt;Bueno, bueno, bueno... Lo que os hemos traido.&lt;/p&gt;
&lt;p&gt;Si necesitas una Protoboard, quieres cambiar la que ya tienes o simplemente las coleccionas por que sí, esta es tu oportunidad de hacerte con todas las que quieras por un precio inigualable 3,99€ con el IVA incluido.&lt;/p&gt;
&lt;p&gt;Además el modelo que os ofrecemos viene con una cajita de cables de diferentes medidas que os facilitará trabajar con esta placa de pruebas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tuxbrain.net/shop/product_info.php?cPath=25_352&amp;products_id=75&quot; target=&quot;_blank&quot;&gt;Aquí tenéis el link al producto&lt;/a&gt; y una fotico&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tuxbrain.com/en/superofert%C3%B3n-protoboard-cables-de-conexi%C3%B3n&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 18 Apr 2012 08:29:29 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Tapescape Catford</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7870198616607274491</guid>
	<link>http://videocircuits.blogspot.com/2012/04/tapescape-catford.html</link>
	<description>Thanks to my friend and co worker Owen for pointing this one out right under my nose&lt;br /&gt;Tapescape Catford! can't believe I missed this one, even if my laptops heat sink is bust. Definatly heading down tomorrow. Not sure about the&amp;nbsp;Video Amnesty, ill be haning on to my VHS videos and players ect :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-HVMaX_NNL50/T4xwjprI27I/AAAAAAAAAZ0/0780nqOP_uE/s1600/532961_221278497980181_221277977980233_396542_249383622_n.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-HVMaX_NNL50/T4xwjprI27I/AAAAAAAAAZ0/0780nqOP_uE/s1600/532961_221278497980181_221277977980233_396542_249383622_n.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&quot;About&lt;br /&gt;Politics surrounding the videocassette&lt;br /&gt;Description&lt;br /&gt;We are taking over the now empty Blockbuster Video Store in Catford, South East London to explore the politics surrounding the videocassette.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using art installations, soundscapes, spoken word, discussions, talks, screenings, dance, games and more, the intervention questions the impact video has made on all our lives, how it affected our behaviour and the huge environmental cost of our short lived innovations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We will be holding a 'Video Amnesty' allowing Lewisham residents to bring in old video cassettes[1] and players to be returned to the shelves for one last time before heading off to be completely recycled and re-emerge as something new&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;FIRST VIEW OF THE LINE UP!&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;TUESDAY 17TH, 7.30PM&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;CASSETTIQUETTE&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;VH-ESSAY DIRECTED BY KAI CLEAR&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;EXT-1 INTERACTIVE AUDIO VISUAL INSTALLATIONS BY NATHAN HARMER&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;I LOVE VIDEOTAPE BY JONATHAN PIGRAM&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;MORE FILMS, AUDIO EXHIBITS AND BAR&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;TUNES BY DJ NOVA&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;text_exposed_show&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;THURSDAY 19TH, 7.30PM&lt;br /&gt;PROVOCATION: HOW TECHNOLOGY MAKES OUR BODY ITS BUSINESS: JANE FONDA, LEISURE, AND THE EMBODIMENT OF THE GOOD CITIZEN BY ROANNA MITCHELL&lt;br /&gt;HTTP://WWW.PLATFORM-7.COM/&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;APPS/BLOG/SEARCH?Q=ROANNA&lt;br /&gt;VISUAL ART RESPONSE BY DARREN SPERRING&lt;br /&gt;HTTP://WWW.PLATFORM-7.COM/&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;GALLERY#!__GALLERY/&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;2011-EXHIBITIONS/&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;VSTC27=DARREN-SPERRING&lt;br /&gt;DANCE RESPONSE BY MELANIE SIMPSON&lt;br /&gt;HTTP://WWW.YOUTUBE.COM/&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;WATCH?V=UD4WRFWQLGU&lt;br /&gt;&lt;br /&gt;FRIDAY 20TH (TBC) 8PM&lt;br /&gt;RIOT ACT 2012 (TBC)&lt;br /&gt;PERFORMANCE BY&lt;br /&gt;TOM BRESOLIN &amp;amp; ALEXIS MILNE (TBC)&lt;br /&gt;PIE N MASH FILMS – IF IT IS SAFE TO SHOW (TBC)&lt;br /&gt;HTTP://WWW.PIENMASHFILMS.COM/&lt;br /&gt;PRINCESS BRITANNIA - SHE KNOWS WHAT IS GOING ON (TBC)&lt;br /&gt;HTTPS://WWW.FACEBOOK.COM/&lt;/span&gt; &lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;PROFILE.PHP?ID=100001488826532&lt;br /&gt;LIVE PERFORMANCE BY SCULPTURE&lt;br /&gt;HTTP://TAPEBOX.CO.UK/&lt;br /&gt;&lt;br /&gt;SATURDAY 21ST, 7.30PM&lt;br /&gt;EXPLODING CINEMA&lt;br /&gt;VHS EXPLOSION&lt;br /&gt;HTTP://&lt;/span&gt; &lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;WWW.EXPLODINGCINEMA.ORG/&lt;br /&gt;&lt;br /&gt;SUNDAY 22ND&lt;br /&gt;THE MARATHON MAN FILM QUIZ, 3-6PM&lt;br /&gt;HOSTED BY DAN CALLADINE&lt;br /&gt;HTTP://&lt;/span&gt; &lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;DIGITAL-EXAMPLES.BLOGSPOT.CO.UK&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;/2012/01/&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;RETURN-OF-FERRIS-BUELLER.HTML&lt;br /&gt;VJ LEPKE, 8.30PM (TBC)&lt;br /&gt;AN ORIGINAL VHS VJ&lt;br /&gt;HTTP://SOUNDCLOUD.COM/LEPKE-B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;THE OLD BLOCKBUSTERS VIDEO STORE&lt;br /&gt;&lt;br /&gt;95 Rushey Green, Catford , SE6 4AF [map]&lt;br /&gt;www.platform-7.com&lt;br /&gt;&lt;br /&gt;This event has been enabled due to the kind support of the London Borough of Lewisham and its Valuer Team for the building and the Waste Management Team and Environmental Recycling Services for supporting our Video Amnesty&quot;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7870198616607274491?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Apr 2012 00:53:41 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Freetronics: GyroStar marine rotation sensor interfaced with Arduino</title>
	<guid>http://www.freetronics.com/blogs/news/5956447-gyrostar-marine-rotation-sensor-interfaced-with-arduino</guid>
	<link>http://www.freetronics.com/blogs/news/5956447-gyrostar-marine-rotation-sensor-interfaced-with-arduino</link>
	<description>&lt;p&gt;Michael Carey's experience in the marine electronics industry and with amateur radio means his first ever Arduino project hasn't been the typical blinking LED: instead he interfaced a MuRata GyroStar rotational sensor to a &lt;a href=&quot;http://www.freetronics.com/eleven&quot;&gt;Freetronics Eleven&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;The GyroStar is a Piezo-electronic device that measures rotation, and they're used in marine autopilots to keep the boat travelling in a straight line. Michael's idea is to incorporate it into a robot project to help it go into a straight line. Check out his video demo:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;Nice work, Michael!&lt;/p&gt;</description>
	<pubDate>Tue, 17 Apr 2012 13:19:31 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Free Electrons Quarterly  2012 Q2</title>
	<guid>http://free-electrons.com/?p=4286</guid>
	<link>http://free-electrons.com/blog/2012q2-newsletter/</link>
	<description>&lt;p&gt;The below message has been posted on our &lt;a href=&quot;http://lists.free-electrons.com/mailman/listinfo/newsletter&quot;&gt;English&lt;/a&gt; and &lt;a href=&quot;http://lists.free-electrons.com/mailman/listinfo/newsletter-fr&quot;&gt;French&lt;/a&gt; newsletters. Don&amp;#8217;t hesitate to subscribe to these newsletters if you are interested in getting these news by e-mail.&lt;/p&gt;
&lt;p&gt;This is the second Free Electrons newsletter for 2012. We are happy to share with you the latest news about our projects, training courses and contributions.&lt;/p&gt;
&lt;h3&gt;New &amp;#8220;Android system development&amp;#8221; training&lt;/h3&gt;
&lt;p&gt;As announced in our previous newsletter, we have created a new &lt;a href=&quot;http://free-electrons.com/training/android/&quot;&gt;Android system development training course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This course targets engineers who need to develop embedded systems with Google Android. In four days, through theory and practical labs, the course makes you familiar with compiling and booting Android, with adapting Android to support a new embedded board (assuming that it is already supported by the Linux kernel), and with building a real system through accessing specific hardware, customizing the filesystem and using debugging techniques. &lt;a href=&quot;http://free-electrons.com/training/android/&quot;&gt;More details and the complete agenda&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first public session of this training will take place on June 11-14 2012 in Toulouse, France (session taught in English). There are still seats available for this session. See &lt;a href=&quot;http://free-electrons.com/training/sessions/toulouse-android/&quot;&gt;cost and registration details&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will start giving on-site sessions of this course in July 2012. Do not hesitate to contact us if you want to organize on-site sessions.&lt;/p&gt;
&lt;h3&gt;Opening our training materials source code&lt;/h3&gt;
&lt;p&gt;Since Free Electrons&amp;#8217; creation in 2004, we have been releasing our training materials under the Creative Commons Attribution Share-Alike license, a free license that allows anyone to share, improve and use our embedded Linux and Linux kernel training materials. Since that time, our training materials were available as PDF files, and as OpenDocument files for the source code, but we were only updating their online version from time to time.&lt;/p&gt;
&lt;p&gt;Now, we are proud to announce that our training materials are being converted to the LaTeX language, and their latest version is available at any time from our &lt;a href=&quot;http://git.free-electrons.com/training-materials/&quot;&gt;public Git repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For the moment, our embedded Linux slides have been published (about 500 slides) in this Git repository, as well as the instructions for the practical sessions of our embedded Linux and Linux kernel courses. In the near future, we will also publish in LaTeX the slides of our Linux kernel training (which remain available under PDF and OpenDocument formats) as well as the materials of our new &amp;#8220;Android system development&amp;#8221; course.&lt;/p&gt;
&lt;p&gt;The creation of this public Git repository is a strong sign of our commitment for open training materials.&lt;/p&gt;
&lt;p&gt;The LaTeX format and the public Git repository now make it easy for everyone to follow updates on our materials, to keep one&amp;#8217;s knowledge up to date, and even to teach a training session using our materials (commercial use of our materials is welcome, as it helps to spread knowledge about Free and Open Source Software for embedded systems). &lt;/p&gt;
&lt;h3&gt;Upcoming public training sessions&lt;/h3&gt;
&lt;p&gt;Our next public training sessions dates and locations are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Embedded Linux kernel and driver development&lt;br /&gt;
   June, 4-8 2012&lt;br /&gt;
   Toulouse, France&lt;br /&gt;
   Session given in French&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/fr/formation/sessions/toulouse-developpement-noyau-linux/&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Android system development&lt;br /&gt;
   June, 11-14 2012&lt;br /&gt;
   Toulouse, France&lt;br /&gt;
   Session given in English&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/training/sessions/toulouse-android/&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded Linux system development&lt;br /&gt;
   June, 18-22 2012&lt;br /&gt;
   Avignon, France&lt;br /&gt;
   Session given in French&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/fr/formation/sessions/avignon-linux-embarque&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded Linux kernel and driver development&lt;br /&gt;
   July 2-6, 2012&lt;br /&gt;
   Avignon, France&lt;br /&gt;
   Session given in French&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/fr/formation/sessions/avignon-developpement-noyau-linux/&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded Linux kernel and driver development&lt;br /&gt;
   October, 8-12 2012&lt;br /&gt;
   Avignon, France&lt;br /&gt;
   Session given in English&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/training/sessions/avignon-embedded-linux&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded Linux system development&lt;br /&gt;
   October, 15-19 2012&lt;br /&gt;
   Toulouse, France&lt;br /&gt;
   Session given in French&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/fr/formation/sessions/toulouse-linux-embarque/&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded Linux system development&lt;br /&gt;
   December, 3-7 2012&lt;br /&gt;
   Avignon, France&lt;br /&gt;
   Session given in English&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/training/sessions/avignon-embedded-linux&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded Linux system development&lt;br /&gt;
   February, 4-8 2013&lt;br /&gt;
   Lyon, France&lt;br /&gt;
   Session given in French&lt;br /&gt;
   &lt;a href=&quot;http://free-electrons.com/fr/formation/sessions/lyon-linux-embarque/&quot;&gt;Details&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Projects&lt;/h3&gt;
&lt;p&gt;Since the beginning of the year, we have been involved in the following projects for various customers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boot time optimization and power management evaluation for a MIPS-based platform used in a payment terminal;&lt;/li&gt;
&lt;li&gt;Filesystem size optimization, embedded Linux build system integration, Ethernet PHY driver development for an AT91 ARM platform used in satellite video processing;&lt;/li&gt;
&lt;li&gt;Embedded Linux build system integration and generic embedded Linux debugging and support for an AT91 ARM platform used as a gateway between medical devices;&lt;/li&gt;
&lt;li&gt;Starting in April, we will be working with a major ARM SoC vendor to help mainlining support for their latest SoC in the official Linux kernel sources;&lt;/li&gt;
&lt;li&gt;Continued the creation of materials for our new &amp;#8220;Android system development&amp;#8221; course.&lt;/li&gt;
&lt;li&gt;Continued our work on the Linux kernel driver for the Analog-to-Digital converters of the AT91 ARM SoC (see &amp;#8216;Contributions&amp;#8217;, below);&lt;/li&gt;
&lt;li&gt;Continued our work on real-time Linux evaluation on AT91 ARM SoC (see &amp;#8216;Contributions&amp;#8217;, below.).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Career opportunities&lt;/h3&gt;
&lt;p&gt;Free Electrons is looking for a kernel developer in the the French Riviera, to be hired with a permanent contract. The job is open to English speaking people who do not speak French, but are ready to settle in the area of Nice, and be hired through a French contract. See &lt;a href=&quot;http://free-electrons.com/blog/linux-kernel-engineer-job-nice-2012/&quot;&gt;details&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Conferences and contributions&lt;/h3&gt;
&lt;h4&gt;Embedded Linux Conference and Android Builders Summit&lt;/h4&gt;
&lt;p&gt;Three engineers of Free Electrons attended the Embedded Linux Conference 2012 and Android Builders Summit 2012 in Redwood Shores, near San Francisco in California, on February. This strong participation of our engineers to technical conferences is a key factor to make sure we remain up to date on embedded Linux technologies and keep a close contact with the community.&lt;/p&gt;
&lt;p&gt;During the conference, we have published daily reports about the various talks that we thought were interesting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/android-builders-summit-2012-first-day/&quot;&gt;First day at the Android Builders Summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/abs2012-day-2-yocto-dev-day/&quot;&gt;Android Builders Summit: day 2, and Yocto Developer Day&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/elc-2012-day-1/&quot;&gt;Embedded Linux Conference day 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/elc-2012-day-2/&quot;&gt;Embedded Linux Conference day 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/elc-2012-day-3/&quot;&gt;Embedded Linux Conference day 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After the conference, we also posted videos of the talks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/abs-2012-videos/&quot;&gt;Android Builders Summit 2012 videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/elc-2012-videos/&quot;&gt;Embedded Linux Conference 2012 videos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our scripts to encode videos to the royalty-free VP8 codec and add a title sequence to the videos are now available on &lt;a href=&quot;http://git.free-electrons.com/video-scripts/&quot;&gt;on our public git server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At this conference, our engineer Thomas Petazzoni has given a talk titled &amp;#8220;Buildroot, a nice, simple and efficient embedded Linux build system&amp;#8221;. Here are &lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_petazzoni.pdf&quot;&gt;the slides&lt;/a&gt; and &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-petazzoni-buildroot-embedded-linux-build-system.webm&quot;&gt;the video&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;FOSDEM conference&lt;/h4&gt;
&lt;p&gt;Two of our engineers participated to the FOSDEM conference, a community-driven open-source conference, in early February.&lt;/p&gt;
&lt;p&gt;Our engineer Maxime Ripard gave a talk on his work around the IIO kernel subsystem, which he used to write an ADC driver for the AT91 SoC. Here are &lt;a href=&quot;http://fosdem.org/2012/schedule/event/693/127_iio-a-new-subsystem.pdf&quot;&gt;the slides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our engineer Thomas Petazzoni gave a talk about &amp;#8220;Using Qt for non-graphical applications&amp;#8221;. Here are &lt;a href=&quot;http://fosdem.org/2012/schedule/event/700/132_qt-for-non-graphical-apps.pdf&quot;&gt;the slides&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;AT91 Analog-to-Digital converter drivers&lt;/h4&gt;
&lt;p&gt;Details about the driver for the AT91 Analog-to-Digital converters driver written by Maxime Ripard from Free Electrons have been published on the Atmel Linux4Sam wiki. This driver relies on the IIO framework, and we are in the process of getting this driver merged upstream. See &lt;a href=&quot;http://www.at91.com/linux4sam/bin/view/Linux4SAM/IioAdcDriver&quot;&gt;the Atmel Linux4Sam wiki page&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Real-time Linux benchmarks&lt;/h4&gt;
&lt;p&gt;A report of extensive real-time benchmarks conducted by Gregory Clement from Free Electrons on AT91 platforms has been published on the Atmel Linux4Sam Wiki. This report compares a vanilla Linux kernel, the PREEMPT-RT patches and the Xenomai co-kernel approach through timer-based and GPIO-based benchmarks.  See &lt;a href=&quot;http://www.at91.com/linux4sam/bin/view/Linux4SAM/RealTime&quot;&gt;the Atmel Linux4Sam wiki page&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Buildroot&lt;/h4&gt;
&lt;p&gt;Free Electrons&amp;#8217; involvement in Buildroot is still strong:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maxime Ripard and Thomas Petazzoni participated to the Buildroot Developer Day organized in Brussels before the FOSDEM conference. A report of this meeting, which gathered several other Buildroot developers, is available at &lt;a href=&quot;http://lists.busybox.net/pipermail/buildroot/2012-February/050371.html&quot;&gt;the Buildroot mailing list archives&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Since the beginning of the year, Thomas Petazzoni has contributed 64 patches that have been merged: support for the LTT-ng Linux tracing solution, support to represent host utilities in the menuconfig, many updates and fixes to external toolchain support and many other fixes.&lt;/li&gt;
&lt;li&gt;In the same time-frame, Maxime Ripard has contributed 13 patches that have been merged: support for systemd, improvements to the package infrastructure and various fixes.&lt;/li&gt;
&lt;li&gt;Thomas Petazzoni has implemented a Web interface that publicly shows the result of our random configuration builds, available at http://autobuild.buildroot.org. The Buildroot community is doing random configuration builds 24/7 on three machines, with various configurations. This Web interface collects the build results and sends a summary every day on the Buildroot mailing-list. This has already allowed to fix many build issues, and will help to improve Buildroot&amp;#8217;s quality in the future.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Linux kernel course&lt;/h4&gt;
&lt;p&gt;Participants to our Embedded Linux kernel and driver development course have also started contributing to the Linux kernel sources during the course itself. Here are the patches which have been merged so far: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lkml.org/lkml/2012/3/22/270&quot;&gt;https://lkml.org/lkml/2012/3/22/270&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lkml.org/lkml/2012/3/22/267&quot;&gt;https://lkml.org/lkml/2012/3/22/267&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During our git lab, instead of asking people to make dummy code changes, we ask them to make real improvements to the Linux sources, and send them for real to the right maintainers and mailing lists.  This way, people get a better understanding of how they can interact with the Linux kernel developers to merge their changes and contributions.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;http://free-electrons.com/doc/training/linux-kernel/slides.pdf&quot;&gt;our slides&lt;/a&gt; and &lt;a href=&quot;http://free-electrons.com/doc/training/linux-kernel/labs.pdf&quot;&gt;practical lab instructions&lt;/a&gt; for our git lectures and lab.&lt;/p&gt;
&lt;h4&gt;Blog posts&lt;/h4&gt;
&lt;p&gt;Free Electrons has published several blog posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/bdd-2012-brussels/&quot;&gt;Buildroot Developer Day, Brussels edition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/announcing-android-system-training/&quot;&gt;Announcing our Android system development training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/free-electrons-fosdem-2012/&quot;&gt;Free Electrons at FOSDEM: two talks and video recording&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/free-electrons-at-abs-elc-2012/&quot;&gt;Free Electrons at the Android Builders Summit and the Embedded Linux Conference: one talk and video recording&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/mailman-howto-ubuntu-10-04/&quot;&gt;HOWTO – Mailing lists with Mailman on Ubuntu 10.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Our blog posts on Android Builders Summit and Embedded Linux Conference listed previously&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/arm-xz-kernel-decompression-benchmarks/&quot;&gt;Linux on ARM: xz kernel decompression benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/uncompressed-linux-kernel-on-arm/&quot;&gt;How to boot an uncompressed Linux kernel on ARM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/android-gdbclient/&quot;&gt;Android gdbclient command&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/new-tool-to-ease-kernel-maintainer-life/&quot;&gt;A new tool to ease kernel maintainer life&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/experiment-with-yocto/&quot;&gt;Experiment with Yocto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/at91-realtime-benchmarks/&quot;&gt;Report on extensive real-time Linux benchmarks on AT91&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://free-electrons.com/blog/linux-kernel-engineer-job-nice-2012/&quot;&gt;Linux kernel engineer job in Nice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can follow Free Electrons&amp;#8217; news by reading &lt;a href=&quot;http://free-electrons.com/blog/&quot;&gt;our blog&lt;/a&gt; and by following our quick news on &lt;a href=&quot;http://twitter.com/free_electrons&quot;&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By the way, the right column of the Free Electrons blog now lists the most popular posts and pages. This can help you to find useful content that you may have missed.&lt;/p&gt;
&lt;p&gt;Free Electrons remains available to help you in your embedded Linux projects, either through its development and support services or through its training sessions. Do not hesitate to contact us!  &lt;/p&gt;
&lt;p&gt;Gregory, Maria, Maxime, Michael and Thomas &amp;#8211; Free Electrons&lt;/p&gt;</description>
	<pubDate>Tue, 17 Apr 2012 09:14:01 +0000</pubDate>
</item>
<item>
	<title>Dieter Spaar: 3G User Plane</title>
	<guid>http://www.mirider.com/weblog/2012/04/16#20120416-3G_user_plane</guid>
	<link>http://www.mirider.com/weblog/2012/04/16#20120416-3G_user_plane</link>
	<description>&lt;p&gt;
Continuing with my Node-B experiments I started to implement handling the
user plane. I can now do voice calls, video calls and data connections. Just
to make it clear, those are the very first steps only without any optimisation
for speed and far from being complete or ready for release. I consider it as
the essential &quot;building blocks&quot; necessary for the next steps towards a small 
Open Source RNC.
&lt;/p&gt;
&lt;p&gt;
So how does it work? One way to allocate a channel for user data is to modify
the existing signalling channel by sending the RRC &quot;Radio Bearer Setup&quot; message
to the phone and the NBAP &quot;Radio Link Reconfiguration Prepare/Commit&quot; messages 
to the Node-B. Besides being much more complex due to the number of possible
parameters and options this is somehow comparable to TS 04.08 &quot;Channel Mode Modify&quot;
and A-bis TS 08.58 &quot;Mode Modify&quot; in GSM. If the commands succeed the Node-B will 
allocate another UDP port for the User Plane data besides the existing UDP 
port for the Control Plane data (UDP ports because I use &quot;Iub over IP&quot; to talk 
with the Node-B).
&lt;/p&gt;
&lt;p&gt;
The User Plane data are embedded in FP (Frame protocol, TS 25.427). For
voice the data are the AMR class A, B and C bits. To ease testing with a single
phone I use a loopback which simply sends the received uplink AMR class bits 
back to the downlink.
&lt;/p&gt;
&lt;p&gt;
Signalling for a Video Call is very similar to a Voice call. The main difference
is in the CC Setup message, the bearer capability indicates UDI (Unrestricted
Digital Information) for Video. UDI is basically a 64 kbit/s channel which
transports video according to the 3GPP umbrella protocol
&lt;a href=&quot;http://en.wikipedia.org/wiki/3G-324M&quot; target=&quot;_blank&quot;&gt;
3G-324M&lt;/a&gt;) for video telephony.
Loopback is not as easy as for voice because first the four-way H.245 protocol
handshake has to be completed to agree on communication parameters, after that
the uplink video data can be resent to the downlink.
&lt;/p&gt;
&lt;p&gt;
Although UMTS is generally much more complex than GSM/GPRS, handling of data
connections is easier than for GPRS because there is no need for a PCU 
(Packet Control Unit) with all its complexity. There is the optional 
protocol PDCP (Packet Data Convergence Protocol, TS 25.323) on top of 
RLC which is used for things like header compression. But if you don't 
use it, you get the raw IP packets embedded inside RLC.
&lt;/p&gt;</description>
	<pubDate>Mon, 16 Apr 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>osPID: The Long-Awaited Firmware Update</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=326</guid>
	<link>http://www.ospid.com/blog/the-long-awaited-firmware-update/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-long-awaited-firmware-update</link>
	<description>&lt;p&gt;I&amp;#8217;ve just uploaded both &lt;a href=&quot;https://github.com/osPID/osPID-Firmware&quot;&gt;firmware&lt;/a&gt; and &lt;a href=&quot;https://github.com/osPID/osPID-Front-End&quot;&gt;front-end&lt;/a&gt; updates to github. There have been numerous tweaks and improvements, be here are the high points:&lt;/p&gt;
&lt;h2&gt;Setpoint-Profile Support&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/profscreen.png&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/profscreen.png&quot; alt=&quot;&quot; title=&quot;profscreen&quot; width=&quot;450&quot; height=&quot;310&quot; class=&quot;aligncenter size-full wp-image-328&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Rather than hard-coding a reflow profile, we went with a more flexible approach.  Using 3 different commands (setpoint STEP, setpoint RAMP, input WAIT) you can piece together a sequence that gives you your desired result.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/reflowinaction.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/reflowinaction.jpg&quot; alt=&quot;&quot; title=&quot;reflowinaction&quot; width=&quot;450&quot; height=&quot;310&quot; class=&quot;aligncenter size-full wp-image-330&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Different profiles are stored as files on the desktop side.  One profile at a time may be loaded onto the osPID and executed.  The profile is stored on the osPID EEPROM, so loading is only necessary when you wish to change the profile.&lt;/p&gt;
&lt;h2&gt;IO Card support&lt;/h2&gt;
&lt;p&gt;The previous version of the firmware was pretty much hard-coded for the digital output card and temperature input card.  This firmware breaks out all the IO code into a separate file, where pre-compiler flags let you specify which cards are being used.  This should simplify card-swaps and prototype-card usage.&lt;/p&gt;
&lt;h2&gt;Hackability&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/progsize.png&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/04/progsize.png&quot; alt=&quot;&quot; title=&quot;progsize&quot; width=&quot;429&quot; height=&quot;262&quot; class=&quot;aligncenter size-full wp-image-332&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The previous version of the firmware made awful use of the osPID&amp;#8217;s resources.  It used WAY more RAM than necessary, and only left 5k of free program space. In addition to adding a bunch of new features, the new firmware is much better on RAM usage, and leaves over 9k of free program space.  This means that if you have the itch to hack the osPID,  there&amp;#8217;s actually some room for you to do so.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s always more work to be done, but I&amp;#8217;m pretty happy with what we&amp;#8217;ve managed to accomplish with this revision.  As always, let us know if we messed up; everyone will benefit.&lt;/p&gt;</description>
	<pubDate>Sun, 15 Apr 2012 15:42:51 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Name that Ware April 2012</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2328</guid>
	<link>http://www.bunniestudios.com/blog/?p=2328</link>
	<description>&lt;p&gt;The Ware for April 2012 is shown below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/blog/images/ntw_april_12_b.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/ntw_april_12_b_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And a nice side view, showing off the relays:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/blog/images/ntw_april_12_a.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/ntw_april_12_a_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Bruce Lane for submitting this month&amp;#8217;s Ware!&lt;/p&gt;</description>
	<pubDate>Sun, 15 Apr 2012 11:28:00 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Winner, Name that Ware March 2012</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2325</guid>
	<link>http://www.bunniestudios.com/blog/?p=2325</link>
	<description>&lt;p&gt;The winner for March 2012 is MegabytePhreak! congrats, email me for your prize.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/ntw_mar_2012_soln.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The ware is a Zhaoxin 868D hot air rework station, which combines both a soldering iron and a hot air gun into a single box. I purchased it for about US$19 in the Shenzhen electronic market. &lt;/p&gt;
&lt;p&gt;When I travel to Shenzhen, I find it more economical to simply purchase equipment and dispose of it upon leaving, rather than the alternatives of paying bag check fees, or dealing with interrogation by security screeners. The iron actually has a nice bit of empty space on the inside, and the reason I had it opened up was to hide some valuables from cleaning staff while I was out. &amp;#8216;Safes&amp;#8217; in Chinese hotels are often times not bolted to the walls, so putting your valuables in them is a bit like putting a big red arrow on your stuff that says &amp;#8216;this is the box you should take&amp;#8217;. &lt;/p&gt;</description>
	<pubDate>Sun, 15 Apr 2012 11:27:46 +0000</pubDate>
</item>
<item>
	<title>GNU Radio Blog: EzTV666 DVB-T dongle on the air</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/465-eztv666-dvb-t-dongle-on-the-air</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/465-eztv666-dvb-t-dongle-on-the-air</link>
	<description>&lt;p&gt;Last week I have tested the RTL2832U-based ezcap EzTV666 DVB-T dongle on the air using various VHF signal.&lt;/p&gt;

&lt;p&gt;Already Saturday I attempted to receive APT from the NOAA-18 weather satellite. These satellites are always very strong and it was no different using the EzTV666 as you can see on the screenshot below. I was using a handheld ArrowII antenna using an extra adaptor cable, but nothing to match the 50 Ω from the antenna with the 75 Ω in the dongle.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/7047832119/&quot; title=&quot;Receiving APT from NOAA-18 weather satellite by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7223/7047832119_bef81f09f5_z.jpg&quot; border=&quot;0&quot; alt=&quot;Receiving APT from NOAA-18 weather satellite&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tuesday I took the RTL2832U SDR dongle with me to the weekly AMSAT meeting at IHK (the Engineering College in Copenhagen). Here we have some better antennas and in particular this one was much better for VHF reception:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/5605617053/&quot; title=&quot;The view from the 7 meter dish by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm6.staticflickr.com/5306/5605617053_da1e547fa7_z.jpg&quot; border=&quot;0&quot; alt=&quot;The view from the 7 meter dish&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following videos show reception of broadcast FM and narrow band FM in the form of local APRS traffic and slow-scan television. In all cases I used existing GNU Radio flow graphs from the available examples and modified them to use the rtl_source_c from the &lt;a href=&quot;http://wiki.spench.net/wiki/Gr-baz&quot;&gt;gr-baz&lt;/a&gt; library.&lt;/p&gt;
&lt;p&gt;I was using the relative gain feature of hte source, i.e. when the gain is adjusted between 0.0 and 1.0 regardless of dongle type. I found that the transition between too low, optimal and too high gain is not smooth but rather &quot;jumpy&quot; as if there were only these three values to choose from. Moreover, there appears to be some hardware AGC active somewhere, which is very annoying and can in many cases spoil reception.&lt;/p&gt;
&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://youtu.be/KsoEESkE-0k&quot; title=&quot;Local APRS traffic reception with RTL2832U SDR&quot;&gt;Watch video on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://youtu.be/5dUuP0NSuFI&quot; title=&quot;SSTV Robot reception with RTL2832U SDR&quot;&gt;Watch video on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://youtu.be/lQcr5k_CAKg&quot; title=&quot;Broadcast FM reception with RTL2832U SDR&quot;&gt;Watch video on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The gnuradio-companion GRC files used in these tests are available here: &lt;a href=&quot;https://gist.github.com/2408228&quot;&gt;https://gist.github.com/2408228&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 15 Apr 2012 09:07:08 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: Fab screwups, then taming the 0201 passive</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-1400539849285252425</guid>
	<link>http://siliconexposed.blogspot.com/2012/04/fab-screwups-then-taming-0201-passive.html</link>
	<description>Since I've already developed a reliable process for reflowing 0402 surface mount components, as well as 1mm pitch BGA, the next logical step was 0201 passives.&lt;br /&gt;&lt;br /&gt;I made a 1x1 inch test board with a bunch of 0201 footprints plus several other test structures (I hope to fool with homebrew filled vias at some point so I included an 0.8mm BGA with drilled-out pads on the same dummy board) on DorkbotPDX's batch order. When I eagerly opened my purple envelope late last month I was quite annoyed to discover that my soldermask pattern was completely wrong!&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-Rv4Z2nnW72k/T4nl_FQ0iOI/AAAAAAAAAGg/cyZQ8WMlggw/s1600/S7302610.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://1.bp.blogspot.com/-Rv4Z2nnW72k/T4nl_FQ0iOI/AAAAAAAAAGg/cyZQ8WMlggw/s400/S7302610.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Soldermask bugs&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The component values on the silkscreen were a screwup on my part but the fab had totally borked the mask. The correct pattern had the via fence unmasked and all of the areas around components masked.&lt;br /&gt;&lt;br /&gt;After emailing back and forth with Laen we figured out the problem - my soldermask polygon had gone slightly outside the board outline and a bug in his panelization script resulted in the offending vertex being deleted, rather than clamped to the board outline. He offered to make me a new batch of boards at no cost.&lt;br /&gt;&lt;br /&gt;The new boards arrived today and I inspected them briefly under the microscope. As usual they were superb quality, with near-perfect registration between layers.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-s-QNoZV5BV8/T4nnB1AeA9I/AAAAAAAAAGo/AesiVOgvP70/s1600/S7302636.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://2.bp.blogspot.com/-s-QNoZV5BV8/T4nnB1AeA9I/AAAAAAAAAGo/AesiVOgvP70/s640/S7302636.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Pre-assembly inspection of 0201 footprints&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;My first attempt at applying solder paste using a 22 gauge needle was a complete failure. There was as much paste between the pads as on them.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-hHHZu_53h1Q/T4nnfyJHwlI/AAAAAAAAAGw/o-1M5ydyGtQ/s1600/S7302637.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://2.bp.blogspot.com/-hHHZu_53h1Q/T4nnfyJHwlI/AAAAAAAAAGw/o-1M5ydyGtQ/s640/S7302637.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Somehow I don't think this will work...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I tried scraping the paste around with a scalpel blade and managed to get something halfway decent, but it still wasn't nearly as clean as I wanted. After thinking for a bit I decided to try squirting paste onto a microscope slide, then picking up a tiny blob with the blade and touching it to the component pads. This actually worked out surprisingly well!&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-HB9pSl3oFjk/T4noMDUAF1I/AAAAAAAAAG4/XDpVb3NyvQM/s1600/S7302643.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://1.bp.blogspot.com/-HB9pSl3oFjk/T4noMDUAF1I/AAAAAAAAAG4/XDpVb3NyvQM/s640/S7302643.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Paste applied with scalpel blade&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I wasn't expecting to get any better than this (for scale, the traces between the pads are only 150 μm wide) so the next step was to place components.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-C7rjGU1dKNg/T4nor_0v4WI/AAAAAAAAAHA/x63bZOaA_SY/s1600/S7302645.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://4.bp.blogspot.com/-C7rjGU1dKNg/T4nor_0v4WI/AAAAAAAAAHA/x63bZOaA_SY/s640/S7302645.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;After component placement&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This took a few tries but my super-fine-point tweezers were a huge help. The pitch I used seems to be about the sweet spot - pretty dense, but not so close that my tweezers bang into the next component in line while placing one.&lt;br /&gt;&lt;br /&gt;I ran the board through my standard reflow profile in a toaster oven, then inspected.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-TiLB6P2LxXo/T4npQqYblZI/AAAAAAAAAHI/IYNrBE7rxVs/s1600/S7302647.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://2.bp.blogspot.com/-TiLB6P2LxXo/T4npQqYblZI/AAAAAAAAAHI/IYNrBE7rxVs/s640/S7302647.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Post-reflow inspection looks good!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Everything looked good, there were no visible shorts (confirmed by electrical testing) and all connections seemed solid and low resistance. I took a few more photos at varying angles and magnifications to verify.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-3CpfV3HUDuk/T4npsrnSWUI/AAAAAAAAAHQ/XOtpqPr3hFQ/s1600/S7302649.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://3.bp.blogspot.com/-3CpfV3HUDuk/T4npsrnSWUI/AAAAAAAAAHQ/XOtpqPr3hFQ/s640/S7302649.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Angled view of a single component. Note the size of the component in relation to the 35 μm thickness of the 1-ounce copper trace!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;One of these days I need to try using stencils for paste application. In the meantime, it looks like 0201 passives are labor-intensive but definitely within reach for high-density designs.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-1400539849285252425?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 14 Apr 2012 18:23:07 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Free Electrons: Linux kernel engineer job in Nice</title>
	<guid>http://free-electrons.com/?p=4272</guid>
	<link>http://free-electrons.com/blog/linux-kernel-engineer-job-nice-2012/</link>
	<description>&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;http://free-electrons.com/graphics/penguin-works.png&quot; alt=&quot;Penguin works&quot; /&gt;Free Electrons is looking for a embedded Linux and kernel engineer in the area of Nice in France (on the French Riviera). The contract will be home based, but will also involve working at customer locations in the same area, possibly for long periods of time.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;http://free-electrons.com/company/careers/kernel-embedded-linux-experts&quot;&gt;a detailed job description&lt;/a&gt; on our &lt;a href=&quot;http://free-electrons.com/company/careers/&quot;&gt;careers&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;For this particular job opening, we absolutely need someone with prior experience with kernel and driver development, and contributions to the official Linux kernel sources will be a strong advantage. This is because a customer of ours is looking for an engineer to develop new drivers and port the Linux kernel to pre-silicon and silicon platforms. &lt;/p&gt;
&lt;p&gt;Once we find a candidate with the expected skills and profile, and once the customer agrees to contract this person for this initial project, the engineer will be hired by Free Electrons under a permanent contract, and will work on the customer site for at least 6 months.&lt;/p&gt;
&lt;p&gt;Once the initial assignment is over, our engineer will continue to work on projects for other Free Electrons customers, and will also give embedded Linux and kernel training sessions to customers throughout the world.&lt;/p&gt;
&lt;p&gt;Note that this position is open to people who do not speak French, but are ready to settle in the French Riviera and to be hired through a French contract.&lt;/p&gt;
&lt;p&gt;If you are interested in this position, see &lt;a href=&quot;http://free-electrons.com/company/careers/kernel-embedded-linux-experts/&quot;&gt;our job description&lt;/a&gt; for details about how to apply.&lt;/p&gt;</description>
	<pubDate>Fri, 13 Apr 2012 14:02:06 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Time lapse camera dolly with Arduino control</title>
	<guid>http://www.freetronics.com/blogs/news/5943885-time-lapse-camera-dolly-with-arduino-control</guid>
	<link>http://www.freetronics.com/blogs/news/5943885-time-lapse-camera-dolly-with-arduino-control</link>
	<description>&lt;p&gt;This very cool project was built by Steve Tester using an &lt;a href=&quot;http://www.freetronics.com/eleven&quot;&gt;Eleven&lt;/a&gt;, a &lt;a href=&quot;http://www.freetronics.com/protoshield-short&quot;&gt;ProtoShield Short&lt;/a&gt;, a &lt;a href=&quot;http://www.freetronics.com/terminalshield&quot;&gt;Terminal Shield&lt;/a&gt;, and various other bits of hardware.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/camera-rig_large.jpg?101156&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The Eleven controls a stepper motor that &quot;winches&quot; the dolly along the tubes while the camera takes a series of photos, which can then be stitched together to form a time-lapse video.&lt;/p&gt;
&lt;p&gt;Check out the details on Steve's blog, including a time-lapse video of the end result:&amp;nbsp;&lt;a href=&quot;http://tester.id.au/?p=248&quot;&gt;http://tester.id.au/?p=248&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 13 Apr 2012 12:21:11 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Report on extensive real-time Linux benchmarks on AT91</title>
	<guid>http://free-electrons.com/?p=4255</guid>
	<link>http://free-electrons.com/blog/at91-realtime-benchmarks/</link>
	<description>&lt;p&gt;The real time page I wrote for Atmel was finally released on the &lt;a href=&quot;http://www.at91.com/linux4sam/bin/view/Linux4SAM/RealTime&quot;&gt;Linux4Sam Atmel Wiki&lt;/a&gt;. The purpose of this page was to help new comers to use real time features with Atmel CPUs and to present the state of the real time support.&lt;/p&gt;
&lt;p&gt;Here are some figures associated to this work:&lt;/p&gt;
&lt;li&gt;On this page I present the results of more than &lt;strong&gt;300 hours&lt;/strong&gt; of benchmarks!&lt;/li&gt;
&lt;li&gt;During the setup and the tuning tests ran for more than &lt;strong&gt;600 hours&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Analysis and formatting took a &lt;strong&gt;few dozen hours&lt;/strong&gt; of work.&lt;/li&gt;
&lt;li&gt;The benchmarks have been run on &lt;strong&gt;3 boards&lt;/strong&gt;, &lt;strong&gt;3 flavors of Linux&lt;/strong&gt; (vanilla, PREEMPT-RT patches, Xenomai co-kernel approach), and &lt;strong&gt;2 kinds of tests&lt;/strong&gt; (timer-based and GPIO-based)&lt;/li&gt;</description>
	<pubDate>Fri, 13 Apr 2012 11:19:07 +0000</pubDate>
</item>
<item>
	<title>Fabricatorz: Milkymist Gets Rowdy and Jazzy In Warsaw</title>
	<guid>http://fabricatorz.com/2012/04/milkymist-gets-rowdy-and-jazzy</guid>
	<link>http://fabricatorz.com/2012/04/milkymist-gets-rowdy-and-jazzy</link>
	<description>&lt;a rel=&quot;attachment wp-att-4425&quot; href=&quot;http://fabricatorz.com/2012/04/milkymist-gets-rowdy-and-jazzy/_mg_4817-2/&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-4425&quot; title=&quot;_MG_4817&quot; src=&quot;http://fabricatorz.com/wp-content/uploads/2012/04/MG_48171-500x333.jpg&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;333&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I spent the past week in Warsaw with some friends and the &lt;a href=&quot;http://milkymist.org&quot;&gt;M1&lt;/a&gt;. I arrived on &lt;a href=&quot;http://en.wikipedia.org/wiki/Easter_Monday&quot;&gt;Wet Monday&lt;/a&gt;, an Easter tradition where Polish &quot;boys awake girls by pouring a bucket of water on their head and striking them about the legs with long thin twigs&quot;. Apparently the tradition continues out into the streets where boys splash girls they have crushes on, but I didn't see anything of the sort. Probably because it was way too cold, but also because Warsaw has a tendency to take itself way too serious. (I was told plenty of flirtatious water fights would be happening in the smaller, more &quot;traditional&quot; towns outside the city.) Fortunately I was able to recoup the fantasy that evening when I did some (visual) splashing of my own with the Milkymist alongside &lt;a href=&quot;http://www.moviestarjunkies.com/&quot;&gt;Movie Star Junkies&lt;/a&gt;, an impressive blues/punk band from Torino, Italy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Full disclosure: I've never vj'd previous to this show. But this goes to show how simple the M1 is to use: I just plugged it in, aimed the live-feed video camera at the band, toggled between its preset psychedelic patches, and Boom! an epic visual performance. Everything went so well that I got invited to perform again the next night at a different venue. Despite the change in setting and sound--from underground (literally in a basement) punk show to jazz/funk fusion jam band in a swanky loungey bar--it was just as easy to adapt and compliment the music due to the M1's smorgasbord of visual options. Check out the videos, see for yourself: &lt;a href=&quot;http://vimeo.com/fabricatorz/videos&quot;&gt;http://vimeo.com/fabricatorz/videos&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Thu, 12 Apr 2012 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Michele's GNSS blog: Spring news in the GNSS and SDR domain</title>
	<guid permalink="False">tag:blogger.com,1999:blog-5679825113811261335.post-7550591986214115117</guid>
	<link>http://michelebavaro.blogspot.com/2012/04/spring-news-in-gnss-and-sdr-domain.html</link>
	<description>&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-h0utS21RAkc/T4SjdZMYNBI/AAAAAAAAA8U/zhiEy9s6D6s/s1600/histogram.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;I have been following in the last few days interesting developments in the GNSS and SDR domain.&lt;br /&gt;&lt;h4&gt;   1. NV08C-CSM and dual constellation RAW measurements &lt;/h4&gt;It's &lt;a href=&quot;http://www.nvs-gnss.com/news/65-nvs-technologies-ag-releases-a-raw-data-output-enabled-firmware-for-its-nv08c-multi-gnss-receiver-series.html&quot; target=&quot;_blank&quot;&gt;recent news&lt;/a&gt; that NVS has lifted the constraints on the firmware with RAW data for GPS and Glonass on L1. In my opinion this is one of those rare times that the rules of the game are changed by one of its players.&lt;br /&gt;Essentially the NV08C-CSM provides real-time kinematic capability at 10Hz, with a price point as low as 35EUR/piece in small quantities. It is already possible to download an unofficial version of RTKNavi.exe and RTKConv.exe &lt;a href=&quot;http://www.onetalent-gnss.com/ideas/usb-hw-receivers/denga10&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;, but &lt;a href=&quot;http://www.rtklib.com/&quot; target=&quot;_blank&quot;&gt;RTKLIB &lt;/a&gt;will &lt;a href=&quot;http://gpspp.sakura.ne.jp/diary201203.htm&quot; target=&quot;_blank&quot;&gt;officially support the receiver from next version&lt;/a&gt; anyway.&lt;br /&gt;Below are some pics of what Denga10 and the navXperience 3G+C could do with the good old 2.4.1 &quot;Static Precise Point Positioning&quot; over three hours.. bringing down the error to less than 20cm in complete standalone mode (by using only &lt;u&gt;broadcast&lt;/u&gt; products).&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot;&gt; &lt;tbody&gt;&lt;tr&gt;  &lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-pjSicvJqG4Q/T4R7wyCzEpI/AAAAAAAAA6c/4vsUEpvpsgI/s1600/rtknavi_main1_2.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;http://4.bp.blogspot.com/-pjSicvJqG4Q/T4R7wyCzEpI/AAAAAAAAA6c/4vsUEpvpsgI/s320/rtknavi_main1_2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Rtknavi (NVS mod) doing static PPP with 14 sats&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-o1NWxo3e1IQ/T4R7xs0UevI/AAAAAAAAA6g/o4DbTv87zEw/s1600/rtknavi_main2_2.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;http://3.bp.blogspot.com/-o1NWxo3e1IQ/T4R7xs0UevI/AAAAAAAAA6g/o4DbTv87zEw/s320/rtknavi_main2_2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Rtknavi (NVS mod) available satellite close-up&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td colspan=&quot;2&quot; valign=&quot;top&quot; width=&quot;642&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-wValjyOQ2NA/T4R7yoKuChI/AAAAAAAAA6s/_kNYxXcH-xs/s1600/rtknavi_navglo.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;164&quot; src=&quot;http://1.bp.blogspot.com/-wValjyOQ2NA/T4R7yoKuChI/AAAAAAAAA6s/_kNYxXcH-xs/s640/rtknavi_navglo.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Glonass broadcast navigation data&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td colspan=&quot;2&quot; valign=&quot;top&quot; width=&quot;642&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-gqLs0coxoCs/T4R70JEpWmI/AAAAAAAAA60/OKq8KgMYrl4/s1600/rtknavi_navgps.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; src=&quot;http://4.bp.blogspot.com/-gqLs0coxoCs/T4R70JEpWmI/AAAAAAAAA60/OKq8KgMYrl4/s640/rtknavi_navgps.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;GPS broadcast navigation data&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td colspan=&quot;2&quot; valign=&quot;top&quot; width=&quot;642&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-4NcbERDXG2Q/T4R72X8nEcI/AAAAAAAAA68/pQdMIi6jVvM/s1600/rtknavi_obs_2.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;http://2.bp.blogspot.com/-4NcbERDXG2Q/T4R72X8nEcI/AAAAAAAAA68/pQdMIi6jVvM/s640/rtknavi_obs_2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;GPS/Glonass observations.. 21!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td colspan=&quot;2&quot; valign=&quot;top&quot; width=&quot;642&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-NAw1-9Mp2PE/T4R73odPsqI/AAAAAAAAA7E/OMVZwnn-HaM/s1600/rtknavi_svs_2.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;http://1.bp.blogspot.com/-NAw1-9Mp2PE/T4R73odPsqI/AAAAAAAAA7E/OMVZwnn-HaM/s640/rtknavi_svs_2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Satellites used in the fix&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-8k-8Jniq8E4/T4SAWfmg0bI/AAAAAAAAA7M/zjAkml6NrdM/s1600/hour1to3.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;http://3.bp.blogspot.com/-8k-8Jniq8E4/T4SAWfmg0bI/AAAAAAAAA7M/zjAkml6NrdM/s320/hour1to3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;From cold start, first three hours, ground track&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-J9cg50G4mXQ/T4SAXYgffeI/AAAAAAAAA7U/roeRKc9nt9Q/s1600/hour1to3_pos.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;http://2.bp.blogspot.com/-J9cg50G4mXQ/T4SAXYgffeI/AAAAAAAAA7U/roeRKc9nt9Q/s320/hour1to3_pos.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;From cold start, first three hours, position&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-o1NWxo3e1IQ/T4R7xs0UevI/AAAAAAAAA6g/o4DbTv87zEw/s1600/rtknavi_main2_2.png&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-yu8-d9J_ceI/T4SAYIlM3jI/AAAAAAAAA7c/u_pyyYpH5iI/s1600/hour3.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;http://4.bp.blogspot.com/-yu8-d9J_ceI/T4SAYIlM3jI/AAAAAAAAA7c/u_pyyYpH5iI/s320/hour3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;From cold start, third hour, ground track&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-yrlmzwelJlg/T4SAZb25oKI/AAAAAAAAA7k/lqmnWZGCfJc/s1600/hour3_pos.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;http://3.bp.blogspot.com/-yrlmzwelJlg/T4SAZb25oKI/AAAAAAAAA7k/lqmnWZGCfJc/s320/hour3_pos.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;From cold start, third hour, position&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-o1NWxo3e1IQ/T4R7xs0UevI/AAAAAAAAA6g/o4DbTv87zEw/s1600/rtknavi_main2_2.png&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The likes of Novatel, Trimble, Hemisphere, etc are not going to like it I suppose. On the other hand, users have perhaps a cheaper option to enter the high-precision domain.&lt;br /&gt;&lt;h4&gt;  2. RTL-SDR&lt;/h4&gt;For once, the group of innovators is European.&lt;br /&gt;These guys of &lt;a href=&quot;http://sdr.osmocom.org/trac/&quot; target=&quot;_blank&quot;&gt;osmocom&lt;/a&gt; are &lt;b&gt;smart &lt;/b&gt;and -what's even better- their work with the open source team.&lt;a href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot; target=&quot;_blank&quot;&gt; RTL-SDR&lt;/a&gt; is, I believe, one of the freshest finds in the Software Defined Radio domain. The &lt;a href=&quot;http://www.funcubedongle.com/&quot; target=&quot;_blank&quot;&gt;Fun Cube Dongle&lt;/a&gt;, developed in UK, is already a very clever tool. But finding the super-tuner &lt;a href=&quot;http://www.elonics.com/&quot; target=&quot;_blank&quot;&gt;Elonics&lt;/a&gt; E4000 (note, again a UK Company) in &lt;a href=&quot;http://www.reddit.com/r/RTLSDR/comments/rbqfz/rtlsdr_compatibility_list_work_in_progress_please/&quot; target=&quot;_blank&quot;&gt;25$ USB DVB-T dongles&lt;/a&gt; and being able to grab data in a 3MHz bandwidth between 64MHz and 1.7GHz... that is really cool.&lt;br /&gt;&lt;br /&gt;I had to buy one! ...actually two before I found the E4000..&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-Bztr05rzA9c/T4SXh5zDyqI/AAAAAAAAA7s/L-eVFm3f9g4/s1600/fc0012.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;http://1.bp.blogspot.com/-Bztr05rzA9c/T4SXh5zDyqI/AAAAAAAAA7s/L-eVFm3f9g4/s400/fc0012.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;A &lt;a href=&quot;http://www.terratec.net/en/products/Cinergy_T_Stick_Black_107611.html&quot; target=&quot;_blank&quot;&gt;Terratec Cinergy T Stick Black&lt;/a&gt; rev.1, with the FC0012 which &lt;a href=&quot;http://fc0012-sdr.blogspot.com.au/&quot; target=&quot;_blank&quot;&gt;is not suitable for GPS&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-lbctNm4CPXE/T4SYU8TA3dI/AAAAAAAAA70/-7z-l8HmzK0/s1600/e4000.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://2.bp.blogspot.com/-lbctNm4CPXE/T4SYU8TA3dI/AAAAAAAAA70/-7z-l8HmzK0/s400/e4000.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;A &lt;a href=&quot;http://www.aliexpress.com/product-gs/529362891-Mini-USB-DVB-T-TV-Tuner-Support-FM-DAB-MPEG-2-MPEG-4-H-264-TV28T-wholesalers.html&quot; target=&quot;_blank&quot;&gt;Newsky TV28T&lt;/a&gt;, with the E4000.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The Realtek RTL2832U demodulator uses a 28.8MHz crystal by default.. which has too poor accuracy for a GPS receiver.. but a SDR acquisition algorithm can easily handle 100+kHz of apparent Doppler shift in the frequency search :)&lt;br /&gt;So for a nominal sky plot as the one below:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-6POpaZnwy-c/T4SidVYNwAI/AAAAAAAAA78/FfhA7TVZ5jY/s1600/skyplot.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;310&quot; src=&quot;http://3.bp.blogspot.com/-6POpaZnwy-c/T4SidVYNwAI/AAAAAAAAA78/FfhA7TVZ5jY/s400/skyplot.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And a signal looking like as follows:&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-JPJoOytAdH8/T4SjauVakRI/AAAAAAAAA8M/fsEPXjFNbeI/s1600/spectrum.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;239&quot; src=&quot;http://2.bp.blogspot.com/-JPJoOytAdH8/T4SjauVakRI/AAAAAAAAA8M/fsEPXjFNbeI/s320/spectrum.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Power spectrum around GPS L1, FS=2.728MHz&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;321&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-h0utS21RAkc/T4SjdZMYNBI/AAAAAAAAA8U/zhiEy9s6D6s/s1600/histogram.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;239&quot; src=&quot;http://2.bp.blogspot.com/-h0utS21RAkc/T4SjdZMYNBI/AAAAAAAAA8U/zhiEy9s6D6s/s320/histogram.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;The ADC is saturated.. the gain I set was too high.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I could acquire the following birds:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span&gt;SV 9: Doppler +112000.0 CodeShift:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 99 xcorr: 553566.6&lt;br /&gt;SV12: Doppler +113500.0 CodeShift:&amp;nbsp;&amp;nbsp;&amp;nbsp; 502 xcorr: 301126.3&lt;br /&gt;SV15: Doppler +110000.0 CodeShift:&amp;nbsp;&amp;nbsp; 1847 xcorr: 871305.9&lt;br /&gt;SV17: Doppler +110500.0 CodeShift:&amp;nbsp;&amp;nbsp; 2225 xcorr: 401100.6&lt;br /&gt;SV18: Doppler +110000.0 CodeShift:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 38 xcorr: 368766.1&lt;br /&gt;SV26: Doppler +107000.0 CodeShift:&amp;nbsp;&amp;nbsp; 1779 xcorr: 511844.4&lt;br /&gt;SV27: Doppler +110500.0 CodeShift:&amp;nbsp;&amp;nbsp;&amp;nbsp; 264 xcorr: 650033.9&lt;br /&gt;SV28: Doppler +107500.0 CodeShift:&amp;nbsp;&amp;nbsp;&amp;nbsp; 203 xcorr: 320405.6&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-Dk2qSynIj4E/T4Si3G58LxI/AAAAAAAAA8E/pEFVYeFuRdo/s1600/visibility.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;298&quot; src=&quot;http://4.bp.blogspot.com/-Dk2qSynIj4E/T4Si3G58LxI/AAAAAAAAA8E/pEFVYeFuRdo/s400/visibility.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The next step is to have my new version of GPS-SDR processing the data in real-time.. won't be long!&lt;br /&gt;I managed to upload the binary file which is long enough for everyone with a SDR receiver to calculate the position. I used FS=2.048MHz and a nominal IF of 0.0Hz (but because of the crystal inaccuracy the IF actually falls at about 110kHz). The data type is I&amp;amp;Q interleaved int8_t.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span&gt;https://rapidshare.com/files/558977948/20120415_1714BST_fs2048_iq8.001.dat&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://rapidshare.com/files/2431212520/20120415_1714BST_fs2048_iq8.002.dat&lt;/span&gt;&lt;br /&gt;&lt;span&gt;https://rapidshare.com/files/4187716662/20120415_1714BST_fs2048_iq8.003.dat&lt;/span&gt;&lt;br /&gt;&lt;span&gt;https://rapidshare.com/files/107864226/20120415_1714BST_fs2048_iq8.004.dat &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;    3. Open source FPGA receivers&lt;/h4&gt;I waited too long for the code from the University of Tampere: they were promising to licence the &lt;a href=&quot;http://www.tkt.cs.tut.fi/research/gnss/&quot; target=&quot;_blank&quot;&gt;TUTGNSS&lt;/a&gt; and never happened.&lt;br /&gt;Finally the Open Source community is bringing to the reality an Open Source FPGA implementation of a GPS receiver based on the &lt;a href=&quot;http://www.gmat.unsw.edu.au/namuru/&quot; target=&quot;_blank&quot;&gt;Namuru&lt;/a&gt; / &lt;a href=&quot;http://www.zarlink.com/zarlink/gp2021-datasheet-aug2005.pdf&quot; target=&quot;_blank&quot;&gt;Zarlink GP2021&lt;/a&gt; correlator structure and soft CPU cores (the &lt;a href=&quot;http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm&quot; target=&quot;_blank&quot;&gt;LatticeMico32&lt;/a&gt; &lt;a href=&quot;http://en.qi-hardware.com/wiki/Milkymist_One&quot; target=&quot;_blank&quot;&gt; Milkymist&lt;/a&gt; and the Altera &lt;a href=&quot;http://www.altera.com/devices/processor/nios2/ni2-index.html&quot; target=&quot;_blank&quot;&gt;NiosIIe&lt;/a&gt;). As also scientists at the University of Tokio (remember RTKLIB?) are involved, this time I know it is going to happen.&lt;br /&gt;Some useful links:&lt;br /&gt;&lt;a href=&quot;http://gnss-sdr.ru/index.php?blogid=2&quot;&gt;http://gnss-sdr.ru/index.php?blogid=2&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/GPS_Free_Stack&quot;&gt;http://en.qi-hardware.com/wiki/GPS_Free_Stack&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.goo.ne.jp/osqzss/&quot;&gt;http://blog.goo.ne.jp/osqzss/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Stay tuned, GNSS is evolving rapidly!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5679825113811261335-7550591986214115117?l=michelebavaro.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 10 Apr 2012 22:02:00 +0000</pubDate>
	<author>noreply@blogger.com (Michele Bavaro)</author>
</item>
<item>
	<title>Moxie Processor: Notes on a novel in-game CPU: the dcpu-16</title>
	<guid permalink="False">http://moxielogic.org/blog/?p=574</guid>
	<link>http://moxielogic.org/blog/?p=574</link>
	<description>&lt;p&gt;The hacker behind the &lt;a href=&quot;http://www.minecraft.net/&quot;&gt;Minecraft&lt;/a&gt; phenomena, Notch, is working on his &lt;a href=&quot;http://0x10c.com/&quot;&gt;next game&lt;/a&gt;,  most likely another hit.  This one is interesting in that it includes an in-game 16-bit processor called the dcpu-16.  Details are sparse, but it seems as though gamers will use this processor to control spacecraft and play in-game games.  The dcpu-16 spec is currently available at &lt;a href=&quot;http://0x10c.com/doc/dcpu-16.txt&quot;&gt;http://0x10c.com/doc/dcpu-16.txt&lt;/a&gt;, and in the few days since its release there are already many community produced assemblers and emulators.&lt;/p&gt;
&lt;p&gt;Like moxie, it&amp;#8217;s a load-store architecture with variable width instructions (16 to 48 bits long).  But the dcpu-16&amp;#8242;s 16-bitness is pervasive.   There are 8 16-bit registers, and the smallest addressable unit of memory is a 16-bit word.   There are only about 16 unique opcodes in the 16-bit instruction, which means there&amp;#8217;s room for 2 6-bit operands.  With only 8 registers, a 6-bit operand can encode multiple addressing modes (direct, indirect, offset, etc) and still have room for small literal values.&lt;/p&gt;
&lt;p&gt;If you poke around github you&amp;#8217;ll find the start of a &lt;a href=&quot;https://github.com/krasin/llvm-dcpu16&quot;&gt;llvm backend&lt;/a&gt; as well as a &lt;a href=&quot;https://github.com/Wallbraker/DCPU-TCC&quot;&gt;tcc&lt;/a&gt; port.   I haven&amp;#8217;t looked into these compilers, but a C ABI for the dcpu-16 would certainly be unusual to most developers.  You would likely have a 32-bit long, but char, short and int would all be 16 bits.&lt;/p&gt;
&lt;p&gt;As far as GNU tools go, a binutils port would be pretty straight forward.  I created a branch in &lt;a href=&quot;https://github.com/atgreen/moxiedev&quot;&gt;moxiedev&lt;/a&gt; to try my hand at a dcpu-16 binutils port.  It&amp;#8217;s not very well tested, but gas, ld, objdump, etc all appear to work as advertised.  All instructions with immediate operands, whether literal values or computed by linker relocations, are encoded in their long form.  Taking advantage of the smaller encodings will require linker relaxation work.  It&amp;#8217;s not rocket science, but more work than the couple of hours I was willing to put into it.  There appears to be one bug in GNU ld related to handling relocations for ELF targets where the smallest addressable memory value is 16 bits vs 8.  I worked around it by making one small non-portable change to the target independent linker code.&lt;/p&gt;
&lt;p&gt;I think GDB should be fairly straight forward as well.  For most real targets GDB will want to insert breakpoint instructions in the text of a program, and it wants that instruction to be the same size as the smallest instruction available on the target.  Alas, the dcpu-16 has no breakpoint instruction, 16-bit or othwerwise, so the simulator will have to include special hardware breakpoint emulation logic.  My suggestion is to repurpose some of the 16-bit illegal instruction encodings.  For instance, the ISA allows for nonsensical instruction like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
  SET 5, 6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This means set the literal value 5 to 6.  Setting a literal value makes no sense, and the spec currently says that these instructions are silently ignored.  Rather than ignore them, you could use this class of instruction as special software interrupt/breakpoint/trap instructions like moxie&amp;#8217;s &lt;code&gt;swi&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A GCC port would be more challenging.  It&amp;#8217;s definitely possible, but would stretch GCC outside of its comfort zone.  You&amp;#8217;d end up excercising bits of the compiler that aren&amp;#8217;t normally tested, and I imagine would end up spending a lot of time debugging some of the darker recesses of the compiler code.  Best of luck to the brave soul who tries this!&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m very curious to see how this all plays out.  Given the massive success of Minecraft, I wouldn&amp;#8217;t be surprised if we see an app store for in-game dcpu-16 based games.   Good luck to Notch and the team at Mojang.&lt;/p&gt;</description>
	<pubDate>Mon, 09 Apr 2012 15:35:57 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Prototype smart card chips in DIL-40 case have arrived</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/04/09#20120409-cardos_prototype</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/04/09#20120409-cardos_prototype</link>
	<description>&lt;p&gt;
Finally, the first samples of the smart card chip (for the &lt;a href=&quot;http://laforge.gnumonks.org/weblog/2012/03/02#20120302-osmocom-cardos&quot;&gt;Osmocom
CardOS project&lt;/a&gt;) have arrived.  As opposed to the final smart cards,
this one has been packaged in a DIL case instead of the usual thin
credit-card sized plastic.  The reason for this is quite simple: This
way lots of I/O pins for debugging as well as JTAG can be accessible
during COS development.
&lt;/p&gt;
&lt;p&gt;
Here you can see the first incarnation of a veroboard connected to an
adapter pcb inside an Omnikey smart card reader:
&lt;center&gt;
&lt;img src=&quot;http://people.osmocom.org/laforge/photos/cc32rs512_board1.jpg&quot; width=&quot;66%&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
After confirming it worked, I soldered the wires directly to the adapter
PCB, as can be seen here:
&lt;center&gt;
&lt;img src=&quot;http://people.osmocom.org/laforge/photos/cc32rs512_board2.jpg&quot; width=&quot;66%&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
There is already a &lt;i&gt;real&lt;/i&gt; PCB design that is currently
manufactured, i.e. in a week or so there will be a picture of a clean,
professionally-produced/etched PCB with all of the prototype pins
exported.
&lt;/p&gt;
&lt;p&gt;
In terms of the COS, I haven't done much more work than compared to the
last posting, mainly due to a large number of other projects.  But we
will get there...
&lt;/p&gt;</description>
	<pubDate>Mon, 09 Apr 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Name that UART: April 2012</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/04/09#20120409-name_that_uart</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/04/09#20120409-name_that_uart</link>
	<description>&lt;p&gt;
It's sort of a cheap knock-off idea stolen from the &lt;i&gt;Name that
Ware&lt;/i&gt; on &lt;a href=&quot;http://www.bunniestudios.com/blog/&quot;&gt;bunnies
blog&lt;/a&gt;:  I'm going to post one picture every month about a UART that
I found on embedded hardware.  Unfortunately I don't have much to offer
in terms of a reward for whoever finds the true solution ;)
&lt;/p&gt;
&lt;p&gt;
In any case, every month there are devices that I'm looking into either
out of my own interest, or because the work at gpl-violations.org
requires it.  In most of them, you can find a UART to get to the u-boot
/ Linux serial console.
&lt;/p&gt;
&lt;p&gt;
So here is the device that I just took apart earlier today:
&lt;/p&gt;
&lt;center&gt;
&lt;img src=&quot;http://laforge.gnumonks.org/photos/201204-uarts_everywhere.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/center&gt;
&lt;p&gt;
The location of the UART pads was obvious, after looking at the PCB for
a very short time.  The entire unpopulated U1 footprint appeared
suspiciously like a UART level shifter for true RS232 voltage levels:
&lt;ul&gt; &lt;li&gt;You can see two signals going directly to a small
unpopualted3-pin
header&lt;/li&gt;
&lt;li&gt;There are two other signals coming from somewhere under the main SoC&lt;/li&gt;
&lt;li&gt;There are capacitors (C440, C441) directly connected to the U1 for the charge pump&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description>
	<pubDate>Mon, 09 Apr 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Keep an Arduino-compatible board in your pocket: the LeoStick has landed</title>
	<guid>http://www.freetronics.com/blogs/news/5611552-keep-an-arduino-compatible-board-in-your-pocket-the-leostick-has-landed</guid>
	<link>http://www.freetronics.com/blogs/news/5611552-keep-an-arduino-compatible-board-in-your-pocket-the-leostick-has-landed</link>
	<description>Our newest Arduino-compatible board is now available to the public after about 600 were distributed to hackers at linux.conf.au 2012 in Ballarat a few weeks ago as a sneak preview. It was a huge hit at the conference and we've since been inundated with questions about when it'll be generally available, so now with great pleasure I present the &lt;a href=&quot;http://www.freetronics.com/leostick&quot;&gt;LeoStick&lt;/a&gt;:
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.freetronics.com/ls&quot;&gt;&lt;img alt=&quot;LeoStick - Arduino Leonardo compatible board&quot; src=&quot;https://cdn.shopify.com/s/files/1/0045/8932/products/IMG_3411_c_LS_bare_with_parts_angle_large.png?100924&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;The LeoStick is a tiny breakout board for the ATmega32u4 MCU that will be used in the forthcoming Arduino Leonardo. We're shipping it with a modified pre-release version of the Leonardo bootloader, so you can pop it into your USB port and load sketches right out of the Arduino IDE. The USB plug is part of the PCB so the whole thing is really tiny. It's hard to get a concept of how small it really is by looking at photos, but perhaps this will help give some perspective:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.freetronics.com/ls&quot;&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/products/IMG_3424_LS_in_hand_closeup_large.png?100924&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;It's the size of a typical USB memory stick! I spent many, many late nights labouring over Eagle laying out the PCB trying to cram it all into the smallest space possible, and it's a seriously tight PCB. After long sessions working in Eagle with everything zoomed way in close I'd start to lose perspective on just how small it is, and every now and then I'd have to sit back, print out a hard copy of the PCB at 1:1 scale, and re-orient myself. Part of the reason for the cram-job was because we kept coming up with ideas for new features to add to it, so this isn't just equivalent to a full-size Arduino: it does &lt;i&gt;more&lt;/i&gt; than a typical Arduino. Check this out:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.freetronics.com/ls&quot;&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/Freetronics-LeoStick-web-label-002_large.png?100924&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;We combined the power, TX, and RX LEDs onto different elements of a single RGB LED, which gives a really cool effect with the colour changing as you communicate with it via USB. We also replaced the normal single-colour LED connected to pin D13 with an RGB LED, so you not only get the usual red output on D13 but you also get green on D9 and blue on D10.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Then we added a Piezo module on the bottom so you can play sounds directly from the LeoStick without having to plug anything else in. It's ready to produce RGB light and sound output straight out of the box.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;We're really proud of the end result, and there are already a bunch of people doing cool things with it. Within hours of them being distributed at linux.conf.au there were people using them to do things like play the &quot;Raiders of the Lost Ark&quot; theme on the Piezo speaker, and even to create a Morse code sender that takes text messages via the serial console and outputs them as Morse. We also saw one that had the connection to the Piezo cut and remapped to an analog input so it could be used as an input device to detect knocks and claps.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;We can't wait to see what other things people do with the &lt;a href=&quot;http://www.freetronics.com/leostick&quot;&gt;LeoStick&lt;/a&gt;, so please check it out and share your projects over on our forum!&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;a href=&quot;http://www.freetronics.com/leostick&quot;&gt;Freetronics LeoStick product page&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;a href=&quot;http://forum.freetronics.com/viewforum.php?f=27&quot;&gt;Freetronics LeoStick forum section&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 08 Apr 2012 00:08:05 +0000</pubDate>
</item>
<item>
	<title>Fabricatorz: Wise Futures and Shared Hardware, Part II</title>
	<guid>http://fabricatorz.com/2012/04/wise-futures-and-shared-hardware-part-ii</guid>
	<link>http://fabricatorz.com/2012/04/wise-futures-and-shared-hardware-part-ii</link>
	<description>&lt;a href=&quot;http://www.flickr.com/photos/christopheradams/7049745093/&quot; title=&quot;Milkymist One by christopheradams, on Flickr&quot;&gt;&lt;img src=&quot;http://farm6.staticflickr.com/5118/7049745093_789eaa32e8.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Milkymist One&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If I were to write an allegory of the computer manufacturing industry in &quot;Greater China&quot;, I might be tempted to call it &lt;em&gt;Pingguo and Shanzhai&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
Pingguo（蘋果）is the nickname by which Apple Computer is known in China. Its partner Foxconn (a Taiwanese company by the way) is the largest electronic component manufacturer in the world and the largest private employer in the PRC. Foxconn is the pinnacle of industrial scale electronics manufacturing in the Pearl River Delta (and, indeed, the world); and Apple would not be the Apple of today without Foxconn, and China.&lt;br /&gt;
&lt;br /&gt;
Shanzhai（山寨）are the noble bandits of our little allegory: small-scale black market manufacturers who skirt regulations and quality control to produce affordable, relatively low yield, but surprisingly diverse electronics. (I should point out that these innovations were enabled by another Taiwanese company, Mediatek, which sells development kits that many Shanzhai products, such as mobile phones, are built on top of.)&lt;br /&gt;
&lt;br /&gt;
Pinguo and Shanzhai are the well-known protagonists in the technological and social drama of the computer manufacturing industry that straddles the &lt;a href=&quot;http://en.wikipedia.org/wiki/Taiwan_Strait&quot;&gt;Taiwan Strait&lt;/a&gt;. But neither Pinguo nor Shanzhai tell the story of the kind of technology that I want in my life, or that I want to base my business on. &lt;br /&gt;
&lt;br /&gt;
For me the real inspirational story is that of &lt;a href=&quot;http://fabricatorz.com/projects/qi-hardware&quot;&gt;Qi Hardware&lt;/a&gt;. Qi Hardware is innovation built not at the cost of billions of dollars and legions of anonymous workers (Pingguo), nor at the cost of questionable legal and safety practices (Shanzhai). Rather, Qi Hardware is a collective dedicated to sharing knowledge, experience and technology, and represents the kind of wise future[1] I am looking to achieve.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/christopheradams/6440823289/&quot; title=&quot;Adam Wang by christopheradams, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7173/6440823289_17fb5b1a5e.jpg&quot; width=&quot;500&quot; height=&quot;337&quot; alt=&quot;Adam Wang&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In discussing Qi Hardware I am constantly looking for a language to describe this new style of innovation. I am reluctant to call it 'open' hardware for &lt;a href=&quot;http://fabricatorz.com/2012/03/wise-futures-and-shared-hardware-part-i/&quot;&gt;reasons I have already explained;&lt;/a&gt; and calling it 'copyleft' hardware (in contrast to 'copyright') puts too much emphasis on the legal underpinning.&lt;br /&gt;
&lt;br /&gt;
I finally settled on the term 'shared' hardware to describe what I feel captures the spirit of the movement. By sharing, Qi Hardware aim to lower barriers to innovation, as well as to profit and pump out genuinely cool technology!&lt;br /&gt;
&lt;br /&gt;
Let's keep telling this story.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Notes&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
[1] &lt;em&gt;wise futures&lt;/em&gt; - I came by this term by listening to public talks by &lt;a href=&quot;http://www.flickr.com/photos/christopheradams/7037739279/&quot;&gt;Rob van Kranenburg&lt;/a&gt; and &lt;a href=&quot;http://www.flickr.com/photos/christopheradams/7037724493/&quot;&gt;Adam Greenfield&lt;/a&gt; in Taipei in February of this year. You can read Part I &lt;a href=&quot;http://fabricatorz.com/2012/03/wise-futures-and-shared-hardware-part-i/&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;The first photo in this post is of the Milkymist One, which I shot in my studio a couple of weeks ago. The second photo is of Adam Wang, when I visited him in Taipei, where he tests and assembles the Milkymist.&lt;/em&gt;</description>
	<pubDate>Sun, 08 Apr 2012 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Peter Chamberlain: Works</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-5739927621489963</guid>
	<link>http://videocircuits.blogspot.com/2012/04/peter-chamberlain-works.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;1983 &lt;a href=&quot;http://www.peterchamberlain.net/&quot;&gt;Peter Chamberlain&lt;/a&gt;&lt;br /&gt;thanks to&amp;nbsp; &lt;a class=&quot;yt-user-name author&quot; dir=&quot;ltr&quot; href=&quot;http://www.youtube.com/user/ode2oddvideo&quot; rel=&quot;author&quot;&gt;ode2oddvideo&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-5739927621489963?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 07 Apr 2012 09:43:21 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: FALSE AWAKENINGS Celeste Byers</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-3458289431232229510</guid>
	<link>http://videocircuits.blogspot.com/2012/04/false-awakenings-celeste-byers.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VIDEO BY &lt;a href=&quot;http://celestebyers.com/&quot;&gt;CELESTE BYERS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;MUSIC BY DISAPPEARING PEOPLE&lt;br /&gt;SCOTT JOHNSTON &amp;amp; LANDON BATES&lt;br /&gt;&lt;br /&gt;FILMING ASSISTANCE BY&lt;br /&gt;&lt;br /&gt;MIKO REVEREZA &amp;amp; DREW FEHLMAN &lt;br /&gt;&lt;br /&gt;Video created using live action time-lapse photographs. I animated and edited in AfterEffects, then filmed the digital file on VHS&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-3458289431232229510?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 07 Apr 2012 09:35:52 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Freetronics: EtherMega giveaway on The Amp Hour podcast</title>
	<guid>http://www.freetronics.com/blogs/news/5923821-ethermega-giveaway-on-the-amp-hour-podcast</guid>
	<link>http://www.freetronics.com/blogs/news/5923821-ethermega-giveaway-on-the-amp-hour-podcast</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://theamphour.com/&quot; title=&quot;The Amp Hour&quot;&gt;&lt;img src=&quot;http://www.theamphour.com/wp-content/uploads/2010/08/TheAmpHourLogo_150.png&quot; alt=&quot;The Amp Hour&quot; title=&quot;The Amp Hour&quot; border=&quot;0&quot; hspace=&quot;5&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;Want a free EtherMega? Of course you do!&lt;/p&gt;
&lt;p&gt;Marc and I are big fans of&amp;nbsp;&lt;a href=&quot;http://www.theamphour.com/&quot;&gt;The Amp Hour&lt;/a&gt;&amp;nbsp;podcast by Dave Jones and Chris Gammell, and when Chris made a comment in episode 85 about wanting to run some kind of contest or giveaway it seemed like a great way to support the show.&lt;/p&gt;
&lt;p&gt;So, in episode 89 they put out the call: anyone who emails in a candidate for the Chip Of The Week segment will go in the draw for a &lt;a href=&quot;http://www.freetronics.com/ethermega&quot;&gt;Freetronics EtherMega (Arduino Mega2560 compatible) board with built-in Ethernet!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I won't give you all the details here of how to enter, because then you won't have to listen to the show &amp;nbsp;;-)&lt;/p&gt;
&lt;p&gt;For all the info head on over to&amp;nbsp;&lt;a href=&quot;http://www.theamphour.com/2012/04/02/the-amp-hour-89-dissimulated-demigration-dontopedalogy/&quot;&gt;Episode #89:&amp;nbsp;Dissimulated Demigration Dontopedalogy&lt;/a&gt;. Don't just listen for the contest though - it's a fun show so make sure you check it out!&lt;/p&gt;</description>
	<pubDate>Sat, 07 Apr 2012 06:19:16 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Clock One project by John Boxall</title>
	<guid>http://www.freetronics.com/blogs/news/5486892-clock-one-project-by-john-boxall</guid>
	<link>http://www.freetronics.com/blogs/news/5486892-clock-one-project-by-john-boxall</link>
	<description>&lt;p&gt;John Boxall has been working on another very cool project, this time using our Dot Matrix Display (DMD) panel, which is a 32x16 LED array. He's created a slick display that uses a combination of an &quot;analog&quot; clock face plus text for the day and date. Watch the video to see the clever border that steps along one LED every second. It really looks stunning:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;Read all the details on John's blog:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tronixstuff.wordpress.com/2012/02/02/project-clock-one/&quot;&gt;http://tronixstuff.wordpress.com/2012/02/02/project-clock-one/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Sat, 07 Apr 2012 03:46:26 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Playing games on the Dot Matrix Display</title>
	<guid>http://www.freetronics.com/blogs/news/5540482-playing-games-on-the-dot-matrix-display</guid>
	<link>http://www.freetronics.com/blogs/news/5540482-playing-games-on-the-dot-matrix-display</link>
	<description>&lt;p&gt;The always-inventive Chris Debenham has used our 32x16 LED Dot Matrix Display panels in a very creative way: he's linked them together so that one is up the right way and the other is upside down, and modified the driver library to support inverted displays - all so the cabling would be more convenient when mounting one above the other instead of side by side!&lt;/p&gt;
&lt;p&gt;But that was just the start. To really knock our socks off, he then used the resulting enormous 32x32 array (that's 1024 LEDs) as a display for games running on an Arduino, including Snake, Pong, Breakout, and Race. This is amazing:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;Wow, nice work Chris! Check out all the details on his blog:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.adebenham.com/2012/02/freetronics-dmd-games/&quot;&gt;Freetronics DMD - Games&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 07 Apr 2012 03:45:50 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Sneak peek: white 32x16 LED Dot Matrix Display panel for Arduino</title>
	<guid>http://www.freetronics.com/blogs/news/5562672-sneak-peek-white-32x16-led-dot-matrix-display-panel-for-arduino</guid>
	<link>http://www.freetronics.com/blogs/news/5562672-sneak-peek-white-32x16-led-dot-matrix-display-panel-for-arduino</link>
	<description>&lt;p&gt;Our red &lt;a href=&quot;http://www.freetronics.com/dmd&quot;&gt;32x16 LED Dot Matrix Display Panel for Arduino&lt;/a&gt; has been very popular, but we've always wanted to do other colours too. Unfortunately the economics of LEDs means that red is by far the cheapest to buy, and when each panel has 512 LEDs even a slight increase in per-LED price has a big impact on the build cost. Nevertheless we really want to do it, so we prototyped a few other colours including yellow, blue, green, and white.&lt;/p&gt;
&lt;p&gt;We gave a white prototype to our friend &lt;a href=&quot;http://www.tronixstuff.com/&quot;&gt;John Boxall of Tronixstuff&lt;/a&gt; fame, and he's made a funky video showing how cool it looks:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;In the YouTube description John says:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&quot;This example is being powered by the Arduino and therefore at low brightness. It was too bright to film when using external power - my camera just couldn't deal with the sheer intensity of the display. You have to see it to believe it.&quot;&lt;/i&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 07 Apr 2012 03:45:06 +0000</pubDate>
</item>
<item>
	<title>Transmaterial: Terrazzo Lumina</title>
	<guid permalink="False">http://transmaterial.net/?p=2014</guid>
	<link>http://transmaterial.net/index.php/2012/04/06/terrazzo-lumina/</link>
	<description>&lt;p&gt;Terrazzo Lumina Slabs and Tiles are refined concrete surfaces designed to propate and emit light. Illumination travels within the concrete via embedded light-guides and is emitted in pixelated form. The manufacturing process is quite flexible and various geometries and configurations of light terminals are possible. The placement of the light source relative to the emitting surface is also flexible (and serviceable), making the product versatile for use in bar tops, flooring, wall features, and infrastructural projects.&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.sensitile.com&quot;&gt;SensiTile Systems&lt;/a&gt;, Ypsilanti, MI, USA.&lt;br /&gt;
Find more information in &lt;a href=&quot;http://www.amazon.com/gp/product/1568988931?ie=UTF8&amp;tag=transmaterial-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1568988931&quot;&gt;Transmaterial 3&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 06 Apr 2012 14:00:09 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  Rev1.0b Gerberfiles published</title>
	<guid>http://oggstreamer.wordpress.com/?p=341</guid>
	<link>http://oggstreamer.wordpress.com/2012/04/06/oggstreamer-rev1-0b-gerberfiles-published/</link>
	<description>&lt;p&gt;The Rev1.0b PCBs look like the are working as they should &amp;#8211; So it is time to publish the Gerberfiles as well, they are put in the &lt;a href=&quot;https://sourceforge.net/p/oggstreamer/pcb-design/&quot;&gt;pcb-design&lt;/a&gt; Repository of this project on Sourceforge. These files are licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/legalcode&quot;&gt;CC SA-BY 3.0&lt;/a&gt; and there is no warranty or liability or whatsoever.&lt;/p&gt;
&lt;p&gt;Note that the some values of Rs and Cs already have changed (see &lt;a href=&quot;https://sourceforge.net/p/oggstreamer/tickets/46/&quot;&gt;Ticket #46&lt;/a&gt;) &amp;#8211; these changes are reflected in the current &lt;a href=&quot;https://sourceforge.net/p/oggstreamer/pcb-design/ci/0434b44cbbedb107404c5669040a1b87bf46c7d8/tree/St%C3%BCckliste%20Ogg%20Streamer%20Rev%201.0b.pdf&quot;&gt;Stückliste&lt;/a&gt; (partslist) but they are not reflected in the current Rev1.0b schematics neither in the BOM.&lt;/p&gt;
&lt;p&gt;And be aware: It is most likely that some more adjustments around the OPA is going to happen. &amp;#8211; and maybe I will flag the Output-Stage as optional.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/341/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/341/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=341&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 06 Apr 2012 11:29:29 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  Protocol defined for XPortPro =&gt; STM8 Communication</title>
	<guid>http://oggstreamer.wordpress.com/?p=338</guid>
	<link>http://oggstreamer.wordpress.com/2012/04/05/oggstreamer-protocol-defined-for-xportpro-stm8-communication/</link>
	<description>&lt;p&gt;The firmware of the STM8 needed some enhancement in order to provide more controlling options for vorbis quality-settings and samplerate. I decided to implement a simple one-byte protocol. The &lt;a href=&quot;https://sourceforge.net/p/oggstreamer/wiki/XPortPRO_2_STM8%20Protocol/&quot;&gt;specification for the protocol&lt;/a&gt; can be found on the wiki.&lt;/p&gt;
&lt;p&gt;I also implemented the protocol today and now the STM8-Firmware can be  considered something like RC1 &lt;img src=&quot;http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/338/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/338/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=338&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 05 Apr 2012 22:28:25 +0000</pubDate>
</item>
<item>
	<title>Crypto Stick: Purchase Crypto Sticks with Bitcoins</title>
	<guid permalink="False">http://www.crypto-stick.com/69 at http://www.crypto-stick.com</guid>
	<link>http://www.crypto-stick.com/2012/bitcoin</link>
	<description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Because the popular online payment solutions are expensive and privacy-unfriendly, we are happy to announce &lt;a href=&quot;http://bitcoin.org/&quot;&gt;Bitcoin&lt;/a&gt; as a new payment method. From now on you can purchase the Crypto Stick in our &lt;a href=&quot;https://shop.crypto-stick.com&quot;&gt;online shop&lt;/a&gt; by paying with Bitcoins. Enjoy.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 05 Apr 2012 04:19:31 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Experiment with Yocto</title>
	<guid>http://free-electrons.com/?p=4245</guid>
	<link>http://free-electrons.com/blog/experiment-with-yocto/</link>
	<description>&lt;p&gt;I recently had the opportunity to use &lt;a href=&quot;http://www.yoctoproject.org&quot;&gt;Yocto&lt;/a&gt;. I already practiced quite a lot with OpenEmbedded before. You can see Yocto as a project derived from OpenEmbedded even it is a bit more than that.&lt;/p&gt;
&lt;p&gt;In fact, Yocto is made of Poky (a build system based on OpenEmbedded), a few added build tools (swabber, pseudo, etc.), as well as a set of meta data allowing to create embedded distributions for a number of targets.&lt;/p&gt;
&lt;p&gt;The strength but also the weakness of OpenEmbedded is that it a very flexible build system. It can make production root filesystems, but also a complete distribution with its ready to use package repository, and this for multiple hardware platforms. It makes it a difficult system to get started and get efficient with. Even two years ago, the OpenEmbedded documentation contributed to making it difficult to get started. Indeed, OpenEmbedded did supply some documentation, but which only started to make sense once you start mastering it. This is quite a paradox for a piece of documentation. It lacked the elements allowing developers to understand its operation well.&lt;/p&gt;
&lt;p&gt;With Yocto, I was pleased to realize that substantial progress had been made on this side. The project comes with documentation that is much more exhaustive and above all much more accessible for beginners. Getting started with it is still not completely straightforward, but this time, this is rather because of the complexity and the rich features of the tool.&lt;/p&gt;
&lt;p&gt;In a few hours, I managed to develop a minimalistic BSP (Board Support Package) for a given board (in this case a AT91SAM9G20-EK). The concept of &lt;em&gt;layer&lt;/em&gt; allows to have a configuration layer specific to a given piece of hardware. You can even support multiple hardware platforms at once and add specific packages.  A layer is indeed just a set of packages and configurations (or configuration overrides). The BSP is just a layer specific to one or several pieces of hardware. &lt;/p&gt;
&lt;p&gt;As you can see, even to support a simple embedded board, there is already a number of concepts to deal with. There are also multiple ways of achieving the same result but which will be easier or more difficult to maintain. The concept of &amp;#8220;BSP&amp;#8221; for Yocto is therefore a kind of guideline to allow the Yocto community to have a common point of reference. I will try to illustrate the use of a BSP on the AT91SAMG20-EK board here and/or on my &lt;a href=&quot;https://plus.google.com/u/0/115533499592681008785&quot;&gt;Google+ page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another significant progress is optimizing build time for a &amp;#8220;minimalistic&amp;#8221; target, which went down from more than three hours to just over one hour now. It remains a long time for a very simple target.&lt;/p&gt;
&lt;p&gt;To build a filesystem image with only a few components, &lt;a href=&quot;http://buildroot.net/&quot;&gt;Buildroot&lt;/a&gt; remains much more appropriate. For systems that require a great number of components, more advanced functionality is then often needed, such as managing a package repository and supporting multiple hardware platforms at once for example. In this case, Yocto remains the best (the only?) option, all the more as this project addresses the traditional weaknesses of OpenEmbedded.&lt;/p&gt;</description>
	<pubDate>Wed, 04 Apr 2012 21:24:17 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Embedded Linux Conference 2012 videos</title>
	<guid>http://free-electrons.com/?p=4216</guid>
	<link>http://free-electrons.com/blog/elc-2012-videos/</link>
	<description>&lt;p&gt;The 2012 edition of the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference&quot;&gt;Embedded Linux Conference&lt;/a&gt; took place on February 15-17th 2012 at Redwood Shores near San Francisco in California. Three engineers of Free Electrons attended this conference, and we reported every day our impressions about the talks, see our blog posts for &lt;a href=&quot;http://free-electrons.com/blog/elc-2012-day-1/&quot;&gt;day 1&lt;/a&gt;, &lt;a href=&quot;http://free-electrons.com/blog/elc-2012-day-2/&quot;&gt;day 2&lt;/a&gt; and &lt;a href=&quot;http://free-electrons.com/blog/elc-2012-day-3/&quot;&gt;day 3&lt;/a&gt;. We have now taken the time to encode all the videos we have recorded during this event, and are proud to distribute them today.&lt;/p&gt;
&lt;p&gt;It is worth noting that for the first time, the Linux Foundation was also recording videos of the talks, the Linux Foundation videos are available from &lt;a href=&quot;http://video.linux.com&quot;&gt;video.linux.com&lt;/a&gt;, and we included links to these videos below for the different talks.&lt;/p&gt;
&lt;p&gt;We hope that those of you who couldn&amp;#8217;t attend the conference will enjoy those videos, with many great talks on technical embedded Linux topics.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Jon Corbet&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-corbet-kernel-report.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-corbet-kernel-report-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Editor at LWN.net&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/corbet&quot;&gt;The Kernel Report&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_corbet.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/the-kernel-report&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (53 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-corbet-kernel-report.webm&quot;&gt;full HD&lt;/a&gt; (525M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-corbet-kernel-report-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (154M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Loïc Pallardy&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-pallardy-power-consumption-unused-memory.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-pallardy-power-consumption-unused-memory-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/pallardy&quot;&gt;Saving the Power Consumption of the Unused Memory&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_pallardy.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (46 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-pallardy-power-consumption-unused-memory.webm&quot;&gt;full HD&lt;/a&gt; (378M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-pallardy-power-consumption-unused-memory-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (125M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bernhard Rosenkränzer&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-rosenkranzer-android-embedded-linux.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-rosenkranzer-android-embedded-linux-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/rosenkranzer&quot;&gt;What Android and Embedded Linux Can Learn From Each Other&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_rosenkranzer.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/what-android-and-embedded-linux-can-learn-from-each-other&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (40 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-rosenkranzer-android-embedded-linux.webm&quot;&gt;full HD&lt;/a&gt; (370M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-rosenkranzer-android-embedded-linux-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (129M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Ricardo Salveti de Araujo&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-salveti-de-araujo-ubuntu-arm-improvements-linaro.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-salveti-de-araujo-ubuntu-arm-improvements-linaro-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/araujo&quot;&gt;Ubuntu on ARM: Improvements and Optimizations Done By Linaro&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_salveti.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/ubuntu-on-arm-improvements-and-optimizations-done-by-linaro&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (46 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-salveti-de-araujo-ubuntu-arm-improvements-linaro.webm&quot;&gt;full HD&lt;/a&gt; (301M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-salveti-de-araujo-ubuntu-arm-improvements-linaro-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (140M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zach Pfeffer&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-pfeffer-binary-blobs-attack.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-pfeffer-binary-blobs-attack-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/pfeffer&quot;&gt;Binary Blobs Attack&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_pfeffer.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/binary-blobs-attack&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (50 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-pfeffer-binary-blobs-attack.webm&quot;&gt;full HD&lt;/a&gt; (486M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-pfeffer-binary-blobs-attack-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (157M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Hisao Munakata&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-munakata-encounters-upstream-resource.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-munakata-encounters-upstream-resource-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Renesas Electronics&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/munakata&quot;&gt;Close Encounters of the Upstream Resource&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_munakata.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/close-encounters-of-the-upstream-resource&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (37 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-munakata-encounters-upstream-resource.webm&quot;&gt;full HD&lt;/a&gt; (394M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-munakata-encounters-upstream-resource-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (121M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Daniel Hursh&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-hursh-automated-test-framework.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-hursh-automated-test-framework-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;IBM&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/hursh&quot;&gt;Open Source Automated Test Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_hursh.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (45 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-hursh-automated-test-framework.webm&quot;&gt;full HD&lt;/a&gt; (303M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-hursh-automated-test-framework-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (132M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Saul Wold&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-wold-yocto-overview-update.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-wold-yocto-overview-update-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intel&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/wold&quot;&gt;The Yocto Project Overview and Update&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_wold.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/yocto-project-update&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (54 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-wold-yocto-overview-update.webm&quot;&gt;full HD&lt;/a&gt; (543M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-wold-yocto-overview-update-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (171M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Sean Hudson&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-hudson-embedded-linux-pitfalls.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-hudson-embedded-linux-pitfalls-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Mentor Graphics, Inc.&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/hudson&quot;&gt;Embedded Linux Pitfalls&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_hudson.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (51 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-hudson-embedded-linux-pitfalls.webm&quot;&gt;full HD&lt;/a&gt; (483M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-hudson-embedded-linux-pitfalls-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (176M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Vincent Guittot&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-guittot-power-saving-multicore-arm.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-guittot-power-saving-multicore-arm-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/guittot&quot;&gt;Comparing Power Saving Techniques For Multicore ARM Platforms&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_guittot.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/comparing-power-saving-techniques-for-multicore-arm-platforms&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (57 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-guittot-power-saving-multicore-arm.webm&quot;&gt;full HD&lt;/a&gt; (307M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-guittot-power-saving-multicore-arm-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (154M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Tim Bird&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bird-status-embedded-linux.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bird-status-embedded-linux-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Sony Network Entertainment&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/bird1&quot;&gt;Status of Embedded Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_bird2.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/status-of-embedded-linux&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (49 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bird-status-embedded-linux.webm&quot;&gt;full HD&lt;/a&gt; (492M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bird-status-embedded-linux-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (159M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Bruce Ashfield&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-ashfield-embedded-func-multi-arch-kernel-maintainance.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-ashfield-embedded-func-multi-arch-kernel-maintainance-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Wind River&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/ashfield&quot;&gt;A View From the Trenches: Embedded Functionality and How It Impacts Multi-Arch Kernel Maintenance&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_ashfield.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (54 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-ashfield-embedded-func-multi-arch-kernel-maintainance.webm&quot;&gt;full HD&lt;/a&gt; (741M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-ashfield-embedded-func-multi-arch-kernel-maintainance-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (222M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;R Durgadoss&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-durgadoss-peak-current-management.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-durgadoss-peak-current-management-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intel&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/durgadoss&quot;&gt;PeakCurrent Management in x86-Based Smartphones&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_durgadoss.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/peakcurrent-management-in-x86-based-smartphones&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (50 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-durgadoss-peak-current-management.webm&quot;&gt;full HD&lt;/a&gt; (296M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-durgadoss-peak-current-management-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (141M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Matt Porter&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-porter-spi-framebuffer-driver.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-porter-spi-framebuffer-driver-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Texas Instruments&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/porter&quot;&gt;Passing Time With SPI Framebuffer Driver&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_porter.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/spi-framebuffer-driver&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (54 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-porter-spi-framebuffer-driver.webm&quot;&gt;full HD&lt;/a&gt; (565M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-porter-spi-framebuffer-driver-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (172M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Wookey&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-wookey-multiarch-why-you-should-care.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-wookey-multiarch-why-you-should-care-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/wookey&quot;&gt;Multiarch and Why You Should Care: Running, Installing and Crossbuilding With Multiple Architectures&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_wookey.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (42 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-wookey-multiarch-why-you-should-care.webm&quot;&gt;full HD&lt;/a&gt; (453M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-wookey-multiarch-why-you-should-care-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (143M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Amit Daniel Kachhap&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kachhap-thermal-framework-arm.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kachhap-thermal-framework-arm-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro/Samsung&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/kachhap&quot;&gt;A New Simplified Thermal Framework For ARM Platforms&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_daniel.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/a-new-simplified-thermal-framework-for-arm-platforms&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (41 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kachhap-thermal-framework-arm.webm&quot;&gt;full HD&lt;/a&gt; (226M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kachhap-thermal-framework-arm-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (115M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Tsugikazu Shibata&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-shibata-long-term-stable-industry.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-shibata-long-term-stable-industry-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;NEC&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/shibata&quot;&gt;On The Road: To Provide the Long-Term Stable Linux For The Industry&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_shibata.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/to-provide-a-long-term-stable-linux-for-industry&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (32 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-shibata-long-term-stable-industry.webm&quot;&gt;full HD&lt;/a&gt; (304M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-shibata-long-term-stable-industry-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (95M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Thomas P. Abraham&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-abraham-experiences-device-tree-arm.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-abraham-experiences-device-tree-arm-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Samsung Electronics&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/abraham&quot;&gt;Experiences With Device Tree Support Development For ARM-Based SOC&amp;#8217;s&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_abraham.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (44 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-abraham-experiences-device-tree-arm.webm&quot;&gt;full HD&lt;/a&gt; (509M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-abraham-experiences-device-tree-arm-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (155M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Paul E. McKenney&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-mckenney-rcu-safe-battery-powered-devices.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-mckenney-rcu-safe-battery-powered-devices-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;IBM&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/mckenney&quot;&gt;Making RCU Safe For Battery-Powered Devices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_mckenney.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/making-rcu-safe-for-battery-powered-devices&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (52 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-mckenney-rcu-safe-battery-powered-devices.webm&quot;&gt;full HD&lt;/a&gt; (506M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-mckenney-rcu-safe-battery-powered-devices-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (186M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Mike Anderson&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-anderson-internet-of-things.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-anderson-internet-of-things-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Chief Technology Officer at The PTR Group&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/anderson1&quot;&gt;The Internet of Things&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_anderson_iot.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/the-internet-of-things&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (50 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-anderson-internet-of-things.webm&quot;&gt;full HD&lt;/a&gt; (580M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-anderson-internet-of-things-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (186M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Thomas Petazzoni&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-petazzoni-buildroot-embedded-linux-build-system.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-petazzoni-buildroot-embedded-linux-build-system-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Free Electrons&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/petazzoni&quot;&gt;Buildroot: A Nice, Simple, and Efficient Embedded Linux Build System&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_petazzoni.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/buildroot-a-nice-simple-and-efficient-embedded-linux-build-system&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (56 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-petazzoni-buildroot-embedded-linux-build-system.webm&quot;&gt;full HD&lt;/a&gt; (594M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-petazzoni-buildroot-embedded-linux-build-system-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (182M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Steven Rostedt&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-rostedt-automated-testing-ktest.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-rostedt-automated-testing-ktest-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Red Hat&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/rostedt&quot;&gt;Automated Testing with ktest.pl (Embedded Edition)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_rostedt.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/automated-testing-with-ktestpl&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (102 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-rostedt-automated-testing-ktest.webm&quot;&gt;full HD&lt;/a&gt; (1,2G), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-rostedt-automated-testing-ktest-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (354M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;David VomLehn&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-vomlehn-mips-backtrace.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-vomlehn-mips-backtrace-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Cisco&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/vomlehn&quot;&gt;Intricacies of a MIPS Stack Backtrace Implementation&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_vomlehn.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/intricacies-of-a-mips-stack-backtrace-implementation&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (52 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-vomlehn-mips-backtrace.webm&quot;&gt;full HD&lt;/a&gt; (345M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-vomlehn-mips-backtrace-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (153M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Edward Hervey&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-hervey-gstreamer-1.0.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-hervey-gstreamer-1.0-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Collabora&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/hervey&quot;&gt;GStreamer 1.0: No Longer Compromise Flexibility For Performance&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_hervey.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/gstreamer-10-no-longer-compromise-flexibility-for-performance&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (49 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-hervey-gstreamer-1.0.webm&quot;&gt;full HD&lt;/a&gt; (540M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-hervey-gstreamer-1.0-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (174M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Tim Bird&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bird-embedded-crash-handling-linux.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bird-embedded-crash-handling-linux-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Sony Network Entertainment&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/bird2&quot;&gt;Embedded-Appropriate Crash Handling in Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_bird1.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/embedded-appropriate-crash-handling-in-linux&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (49 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bird-embedded-crash-handling-linux.webm&quot;&gt;full HD&lt;/a&gt; (292M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bird-embedded-crash-handling-linux-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (142M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Arnd Bergmann&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bergmann-arm-subarch-status.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bergmann-arm-subarch-status-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/bergmann&quot;&gt;ARM Subarchitecture Status&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_bergmann.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/arm-subarchitecture-status&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (49 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bergmann-arm-subarch-status.webm&quot;&gt;full HD&lt;/a&gt; (416M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bergmann-arm-subarch-status-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (140M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Mark Gisi&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-gisi-spdx-licensing-info.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-gisi-spdx-licensing-info-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Wind River Systems&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/gisi&quot;&gt;The Power of SPDX &amp;#8211; Sharing Critical Licensing Information Within a Linux Device Supply Chain&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/the-power-of-spdx&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (49 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-gisi-spdx-licensing-info.webm&quot;&gt;full HD&lt;/a&gt; (498M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-gisi-spdx-licensing-info-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (164M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Yoshitake Kobayashi&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kobayashi-finding-latency-bottlenecks-ftrace.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kobayashi-finding-latency-bottlenecks-ftrace-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Toshiba&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/kobayashi&quot;&gt;Ineffective and Effective Ways To Find Out Latency Bottlenecks With Ftrace&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_kobayashi.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/ineffective-and-effective-ways-to-find-out-latency-bottlenecks-with-ftrace&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (37 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kobayashi-finding-latency-bottlenecks-ftrace.webm&quot;&gt;full HD&lt;/a&gt; (251M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kobayashi-finding-latency-bottlenecks-ftrace-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (108M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Ohad Ben-Cohen&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-ben-cohen-virtio-remote-processors.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-ben-cohen-virtio-remote-processors-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Wizery / Texas Instruments&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/ben-cohen&quot;&gt;Using virtio to Talk With Remote Processors&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_ben-cohen.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/using-virtio-to-talk-with-remote-processors&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (54 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-ben-cohen-virtio-remote-processors.webm&quot;&gt;full HD&lt;/a&gt; (582M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-ben-cohen-virtio-remote-processors-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (182M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Elizabeth Flanagan&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-flanagan-licence-compliance-patterns-antipatterns.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-flanagan-licence-compliance-patterns-antipatterns-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intel&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/flanagan&quot;&gt;Embedded License Compliance Patterns and Antipatterns&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/embedded-license-compliance-patterns-and-antipatterns&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (44 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-flanagan-licence-compliance-patterns-antipatterns.webm&quot;&gt;full HD&lt;/a&gt; (391M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-flanagan-licence-compliance-patterns-antipatterns-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (144M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;David Anders&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-anders-board-bringup-lcd-display.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-anders-board-bringup-lcd-display-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Texas Instruments&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/anders&quot;&gt;Board Bringup: LCD and Display Interfaces&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_anders.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/board-bringup-lcd-and-display-interfaces&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (40 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-anders-board-bringup-lcd-display.webm&quot;&gt;full HD&lt;/a&gt; (207M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-anders-board-bringup-lcd-display-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (113M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Rob Clark&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-clark-dma-buffer-sharing.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-clark-dma-buffer-sharing-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Texas Instruments&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/semwal&quot;&gt;DMA Buffer Sharing: An Introduction&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_clark.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/dma-buffer-sharing-an-introduction&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (35 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-clark-dma-buffer-sharing.webm&quot;&gt;full HD&lt;/a&gt; (306M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-clark-dma-buffer-sharing-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (100M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Ken Tough&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-tough-emmc-optimzing-performance.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-tough-emmc-optimzing-performance-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intrinsyc&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/tough&quot;&gt;Linux on eMMC: Optimizing For Performance&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_tough.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/linux-on-emmc-optimizing-for-performance&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (52 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-tough-emmc-optimzing-performance.webm&quot;&gt;full HD&lt;/a&gt; (468M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-tough-emmc-optimzing-performance-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (165M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Paul Larson&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-larson-lava-project-update.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-larson-lava-project-update-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/larson&quot;&gt;LAVA Project Update&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_larson.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/lava-project-update&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (52 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-larson-lava-project-update.webm&quot;&gt;full HD&lt;/a&gt; (366M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-larson-lava-project-update-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (159M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Frank Rowand&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-rowand-real-time-bof.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-rowand-real-time-bof-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Sony Network Entertainment&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/rowand&quot;&gt;Real Time (BoFs)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_rowand.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (77 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-rowand-real-time-bof.webm&quot;&gt;full HD&lt;/a&gt; (924M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-rowand-real-time-bof-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (288M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Mike Turquette&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-turquette-clock-framework-bof.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-turquette-clock-framework-bof-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Texas Instruments&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/turquette&quot;&gt;Common Clock Framework (BoFs)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_turquette.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (53 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-turquette-clock-framework-bof.webm&quot;&gt;full HD&lt;/a&gt; (333M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-turquette-clock-framework-bof-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (148M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Hunyue Yau&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-yau-tools-board-bringup-system-integration.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-yau-tools-board-bringup-system-integration-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;HY Research LLC&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/yau&quot;&gt;Userland Tools and Techniques For Linux Board Bring-Up and Systems Integration&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_yau.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/userland-tools-and-techniques-for-linux-board-bring-up-and-systems-integration&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (51 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-yau-tools-board-bringup-system-integration.webm&quot;&gt;full HD&lt;/a&gt; (407M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-yau-tools-board-bringup-system-integration-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (136M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Matt Weber&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-weber-optimizing-using-opencv.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-weber-optimizing-using-opencv-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Rockwell Collins Inc.&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/weber&quot;&gt;Optimizing the Embedded Platform Using OpenCV&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_weber.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/optimizing-the-embedded-platform-using-opencv&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (37 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-weber-optimizing-using-opencv.webm&quot;&gt;full HD&lt;/a&gt; (388M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-weber-optimizing-using-opencv-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (125M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Greg Ungerer&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-ungerer-m68k-life-in-old-architecture.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-ungerer-m68k-life-in-old-architecture-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;McAfee&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/ungerer&quot;&gt;M68K: Life in the Old Architecture&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_ungerer.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/m68k-life-in-the-old-architecture&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (46 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-ungerer-m68k-life-in-old-architecture.webm&quot;&gt;full HD&lt;/a&gt; (452M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-ungerer-m68k-life-in-old-architecture-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (166M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Gary Bisson&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bisson-useful-usb-gadgets.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bisson-useful-usb-gadgets-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Adeneo Embedded&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/bisson&quot;&gt;Useful USB Gadgets on Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_bisson.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/useful-usb-gadgets-on-linux&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (43 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bisson-useful-usb-gadgets.webm&quot;&gt;full HD&lt;/a&gt; (402M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bisson-useful-usb-gadgets-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (129M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Jason Kridner&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kridner-guis.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kridner-guis-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Texas Instruments&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/kridner&quot;&gt;GUIs: Coming To Uncommon Goods Near You&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_kridner.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/guis-coming-to-uncommon-goods-near-you&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (52 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kridner-guis.webm&quot;&gt;full HD&lt;/a&gt; (476M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kridner-guis-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (166M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Mike Anderson&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-anderson-adapt-network-code-ipv6.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-anderson-adapt-network-code-ipv6-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The PTR Group&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/anderson2&quot;&gt;Adapting Your Network Code For IPv6 Support&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_anderson_ipv6.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/adapting-your-network-code-for-ipv6-support&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (63 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-anderson-adapt-network-code-ipv6.webm&quot;&gt;full HD&lt;/a&gt; (485M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-anderson-adapt-network-code-ipv6-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (216M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Koen Kooi&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kooi-producing-supporting-beaglebone.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-kooi-producing-supporting-beaglebone-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The Angstrom Distribution&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/kooi&quot;&gt;Producing the Beaglebone and Supporting It&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/producing-the-beaglebone-and-supporting-it&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (42 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kooi-producing-supporting-beaglebone.webm&quot;&gt;full HD&lt;/a&gt; (398M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-kooi-producing-supporting-beaglebone-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (126M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Danny Bennett&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bennett-html5-plasma.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-bennett-html5-plasma-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;basysKom GmbH&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/bennett&quot;&gt;HTML5 in a Plasma-Active World&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_bennett.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/html5-in-a-plasma-active-world&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (34 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bennett-html5-plasma.webm&quot;&gt;full HD&lt;/a&gt; (258M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-bennett-html5-plasma-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (75M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Marcin Mielczarczyk&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-mielczarczyk-first-open-source-gsm-stack.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-mielczarczyk-first-open-source-gsm-stack-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Tieto&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/mielczarczyk&quot;&gt;Getting the First Open Source GSM Stack in Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_mielczarczyk.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/getting-the-first-open-source-gsm-stack-in-linux&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (54 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-mielczarczyk-first-open-source-gsm-stack.webm&quot;&gt;full HD&lt;/a&gt; (439M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-mielczarczyk-first-open-source-gsm-stack-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (178M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Pierre Tardy&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-tardy-pytimechart-practical.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-tardy-pytimechart-practical-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intel&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/tardy&quot;&gt;PyTimechart Practical&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_tardy.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/pytimechart-practical&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (32 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-tardy-pytimechart-practical.webm&quot;&gt;full HD&lt;/a&gt; (260M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-tardy-pytimechart-practical-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (86M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Linus Walleij&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-walleij-pin-control-subsystem.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-walleij-pin-control-subsystem-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;ST-Ericsson&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/walleij&quot;&gt;Pin Control Subsystem Overview&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_walleij.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/pin-control-subsystem-overview&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (60 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-walleij-pin-control-subsystem.webm&quot;&gt;full HD&lt;/a&gt; (638M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-walleij-pin-control-subsystem-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (200M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Khem Raj&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-raj-openembedded-layered-approach.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-raj-openembedded-layered-approach-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;OpenEmbedded Project&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/raj&quot;&gt;OpenEmbedded &amp;#8211; A Layered Approach&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_raj.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/openembedded-a-layered-approach&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (39 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-raj-openembedded-layered-approach.webm&quot;&gt;full HD&lt;/a&gt; (227M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-raj-openembedded-layered-approach-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (108M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Lucas De Marchi&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-de-marchi-kmod.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-de-marchi-kmod-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;ProFUSION Embedded Systems&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/de-marchi&quot;&gt;Managing Kernel Modules With kmod&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_marchi.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/managing-kernel-modules-with-kmod&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (46 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-de-marchi-kmod.webm&quot;&gt;full HD&lt;/a&gt; (443M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-de-marchi-kmod-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (140M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Jean Pihet&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-pihet-new-model-system-devices-latency.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/elc/vidcaps/elc-2012-pihet-new-model-system-devices-latency-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;NewOldBits&lt;br /&gt;&lt;a href=&quot;http://events.linuxfoundation.org/events/embedded-linux-conference/pihet&quot;&gt;A New Model for the System and Devices Latency&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_pihet.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (49 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-pihet-new-model-system-devices-latency.webm&quot;&gt;full HD&lt;/a&gt; (431M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/elc/elc-2012-pihet-new-model-system-devices-latency-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (146M)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 04 Apr 2012 20:15:12 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Android Builders Summit 2012 videos</title>
	<guid>http://free-electrons.com/?p=4213</guid>
	<link>http://free-electrons.com/blog/abs-2012-videos/</link>
	<description>&lt;p&gt;On February 13-14th 2012, the second edition of the &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit&quot;&gt;Android Builders Summit&lt;/a&gt; took place in Redwood Shores, near San Francisco in California. While Free Electrons was not officially in charge of video recording for this conference, we recorded the talks we attended and that we are glad to share below. The Linux Foundation has also recorded those talks (except a few of them for which they had technical issues), and we provide those additional links below. You can also follow our reports from &lt;a href=&quot;http://free-electrons.com/blog/android-builders-summit-2012-first-day/&quot;&gt;day 1&lt;/a&gt; and &lt;a href=&quot;http://free-electrons.com/blog/abs2012-day-2-yocto-dev-day/&quot;&gt;day 2&lt;/a&gt; of this conference.&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll find below our videos of the main talks we recorded, and also the videos of the lightning talks that took place on the evening of the first day of the conference. Enjoy!&lt;/p&gt;
&lt;h3&gt;Main talks&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Karim Yaghmour&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-yaghmour-leveraging-linux-history-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-yaghmour-leveraging-linux-history-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Opersys&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/yaghmour-keynote&quot;&gt;Leveraging Linux&amp;#8217;s History With Android&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_yaghmour_heritage.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (32 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-yaghmour-leveraging-linux-history-android.webm&quot;&gt;full HD&lt;/a&gt; (386M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-yaghmour-leveraging-linux-history-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (107M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Arnd Bergmann, Tim Bird, Greg Kroah-Hartmann, Zach Pfeffer, moderated by Jonathan Corbet&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-panel-android-linux-kernel-mainline-where-are-we.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-panel-android-linux-kernel-mainline-where-are-we-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;IBM/Linaro, Sony Network Entertainment, The Linux Foundation, Linaro, LWN.net&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/android-mainline-panel&quot;&gt;Panel: Android and the Linux Kernel Mainline: Where Are We?&lt;/a&gt;&lt;br /&gt;Free Electrons video (38 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-panel-android-linux-kernel-mainline-where-are-we.webm&quot;&gt;full HD&lt;/a&gt; (525M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-panel-android-linux-kernel-mainline-where-are-we-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (156M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Marko Gargenta&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-gargenta-customizing-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-gargenta-customizing-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Marakana&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/gargentam&quot;&gt;Customizing Android&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://marakana.com/static/courseware/android/Remixing_Android/index.html&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/remixing-android&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (50 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-gargenta-customizing-android.webm&quot;&gt;full HD&lt;/a&gt; (409M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-gargenta-customizing-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (131M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Tetsuyuki Kobayashi&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-kobayashi-how-adb-works.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-kobayashi-how-adb-works-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Kyoto Microcomputer&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/kobayashi&quot;&gt;How ADB(Android Debug Bridge) Works&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_kobayashi.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/adb-android-debug-bridge--how-it-works&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (33 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-kobayashi-how-adb-works.webm&quot;&gt;full HD&lt;/a&gt; (365M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-kobayashi-how-adb-works-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (100M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Andrew Boie&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-boie-android-ota-updates.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-boie-android-ota-updates-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intel&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/boie&quot;&gt;Android OTA SW Updates&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_boie.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/android-ota-software-updates&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (61 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-boie-android-ota-updates.webm&quot;&gt;full HD&lt;/a&gt; (698M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-boie-android-ota-updates-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (189M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Benjamin Zores&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-zores-android-device-porting-walkthrough.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-zores-android-device-porting-walkthrough-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Alcatel-Lucent&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/zores&quot;&gt;Android Device Porting Walkthrough&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_zores.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/android-device-porting-walkthrough&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (69 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-zores-android-device-porting-walkthrough.webm&quot;&gt;full HD&lt;/a&gt; (534M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-zores-android-device-porting-walkthrough-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (179M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Jason Kridner, Khasim Syed Mohammed&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-kridner-mohammed-android-outside-mobile-phone-space.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-kridner-mohammed-android-outside-mobile-phone-space-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Texas Instruments&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/kridner-mohammed&quot;&gt;Using Android outside of the Mobile Phone Space&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_kridner_mohammed.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/using-android-outside-the-mobile-phone-space&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (34 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-kridner-mohammed-android-outside-mobile-phone-space.webm&quot;&gt;full HD&lt;/a&gt; (414M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-kridner-mohammed-android-outside-mobile-phone-space-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (120M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Tom Moss&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-moss-android-ecosystem.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-moss-android-ecosystem-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;3LM&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/moss&quot;&gt;The Android Ecosystem&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/the-android-ecosystem&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (27 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-moss-android-ecosystem.webm&quot;&gt;full HD&lt;/a&gt; (267M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-moss-android-ecosystem-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (82M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Karim Yaghmour&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-yaghmour-headless-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-yaghmour-headless-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Opersys&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/yaghmour&quot;&gt;Headless Android&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_yaghmour_headless.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (50 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-yaghmour-headless-android.webm&quot;&gt;full HD&lt;/a&gt; (462M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-yaghmour-headless-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (145M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Tom Foy&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-foy-android-emmc-performance.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-foy-android-emmc-performance-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intrinsyc&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/foy&quot;&gt;Android on eMMC: Optimizing for Performance&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_foy.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (34 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-foy-android-emmc-performance.webm&quot;&gt;full HD&lt;/a&gt; (234M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-foy-android-emmc-performance-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (90M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Wolfgang Mauerer&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mauerer-real-time-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mauerer-real-time-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Siemens&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/mauerer&quot;&gt;Real-Time Android&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_mauerer.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;Free Electrons video (59 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mauerer-real-time-android.webm&quot;&gt;full HD&lt;/a&gt; (418M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mauerer-real-time-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (155M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Jim Huang&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-huang-improve-android-performance.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-huang-improve-android-performance-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;0xlab&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/huang&quot;&gt;Improve Android System Component Performance&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_huang.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/improve-android-system-component-performance&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (54 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-huang-improve-android-performance.webm&quot;&gt;full HD&lt;/a&gt; (457M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-huang-improve-android-performance-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (152M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Rodrigo Chiossi&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-chiossi-androidxref.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-chiossi-androidxref-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Samsung&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/chiossi&quot;&gt;AndroidXRef: Speeding up the Development of Android Internals&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_chiossi.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/speeding-up-the-development-of-android-internals&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (38 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-chiossi-androidxref.webm&quot;&gt;full HD&lt;/a&gt; (313M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-chiossi-androidxref-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (108M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Mark Brown&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-brown-standard-audio-hal-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-brown-standard-audio-hal-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Wolfson Microelectronics&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/brown&quot;&gt;Towards a Standard Audio HAL for Android&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_brown.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/towards-a-standard-audio-hal-for-android&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (47 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-brown-standard-audio-hal-android.webm&quot;&gt;full HD&lt;/a&gt; (227M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-brown-standard-audio-hal-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (123M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Jen Costillo&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-costillo-android-sensor-subsystem.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-costillo-android-sensor-subsystem-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/costillo&quot;&gt;Topics in Designing An Android Sensor Subsystem: Pitfalls and Considerations&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_costillo.pdf&quot;&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/topics-in-designing-an-android-sensor-subsystem-pitfalls-and-considerations&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (36 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-costillo-android-sensor-subsystem.webm&quot;&gt;full HD&lt;/a&gt; (238M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-costillo-android-sensor-subsystem-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (101M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Aleksandar (Saša) Gargenta&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-gargenta-android-services-black-magic.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-gargenta-android-services-black-magic-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Marakana&lt;br /&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/gargentaa&quot;&gt;Android Services Black Magic&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://video.linux.com/videos/android-services-black-magic&quot;&gt;Linux Foundation video&lt;/a&gt;&lt;br /&gt;Free Electrons video (61 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-gargenta-android-services-black-magic.webm&quot;&gt;full HD&lt;/a&gt; (410M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-gargenta-android-services-black-magic-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (169M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Lightning talks&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Dario Laverde&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-laverde-htc-dev.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-laverde-htc-dev-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;HTC&lt;br /&gt;HTC Dev&lt;br /&gt;Free Electrons video (3 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-laverde-htc-dev.webm&quot;&gt;full HD&lt;/a&gt; (44M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-laverde-htc-dev-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (13M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Robert McQueen&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mcqueen-gstreamer-pulseaudio-in-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mcqueen-gstreamer-pulseaudio-in-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Collabora&lt;br /&gt;Integrating GStreamer and PulseAudio in Android&lt;br /&gt;Free Electrons video (4 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mcqueen-gstreamer-pulseaudio-in-android.webm&quot;&gt;full HD&lt;/a&gt; (49M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mcqueen-gstreamer-pulseaudio-in-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (16M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mark Gross&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-gross-android-build-time-host-tweakage.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-gross-android-build-time-host-tweakage-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Intel&lt;br /&gt;Android build times and host tweakage&lt;br /&gt;Free Electrons video (4 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-gross-android-build-time-host-tweakage.webm&quot;&gt;full HD&lt;/a&gt; (37M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-gross-android-build-time-host-tweakage-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (13M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tony Mansson&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mansson-debugging-native-android-code-with-ds5.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mansson-debugging-native-android-code-with-ds5-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Linaro&lt;br /&gt;Painless debugging of native code in Android-based device (using DS-5)&lt;br /&gt;Free Electrons video (4 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mansson-debugging-native-android-code-with-ds5.webm&quot;&gt;full HD&lt;/a&gt; (32M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mansson-debugging-native-android-code-with-ds5-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (13M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Paul Arssov&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-arssov-external-hardware-support-android.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-arssov-external-hardware-support-android-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;ARS Technologies Inc.&lt;br /&gt;How easy is it to support external hardware on Android platform&lt;br /&gt;Free Electrons video (4 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-arssov-external-hardware-support-android.webm&quot;&gt;full HD&lt;/a&gt; (33M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-arssov-external-hardware-support-android-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (13M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Karim Yaghmour&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-yaghmour-cyborgstack.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-yaghmour-cyborgstack-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Opersys&lt;br /&gt;Cyborgstack&lt;br /&gt;Free Electrons video (4 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-yaghmour-cyborgstack.webm&quot;&gt;full HD&lt;/a&gt; (60M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-yaghmour-cyborgstack-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (18M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Yahya Mirza&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mirza-perf-testing-analysis.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-mirza-perf-testing-analysis-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Aurora Borealis Software&lt;br /&gt;Towards a heterogeneous application for compute driver performance testing and analysis&lt;br /&gt;Free Electrons video (3 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mirza-perf-testing-analysis.webm&quot;&gt;full HD&lt;/a&gt; (47M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-mirza-perf-testing-analysis-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (14M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Joe Born&lt;/b&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-born-sonr.jpg&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://free-electrons.com/pub/video/2012/abs/vidcaps/abs-2012-born-sonr-thumb.jpg&quot; alt=&quot;Video capture&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Sonrlabs&lt;br /&gt;Sonr, Serial headphone interface and hardware&lt;br /&gt;Free Electrons video (4 minutes):&lt;br /&gt;&lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-born-sonr.webm&quot;&gt;full HD&lt;/a&gt; (38M), &lt;a href=&quot;http://free-electrons.com/pub/video/2012/abs/abs-2012-born-sonr-450p.webm&quot;&gt;450&amp;#215;800&lt;/a&gt; (13M)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 04 Apr 2012 19:57:35 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: colord-kde 0.2</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=585</guid>
	<link>http://blogs.gnome.org/hughsie/2012/04/04/colord-kde-0-2/</link>
	<description>&lt;p&gt;Daniel released&lt;a href=&quot;https://dantti.wordpress.com/2012/04/03/colord-kde-0-2-released/&quot;&gt; colord-kde 0.2&lt;/a&gt; today. I&amp;#8217;m really excited about the amount of progress he&amp;#8217;s made in such a short amount of time. He&amp;#8217;s has had a bit of rough ride with the loss of his daughter last year and this year he&amp;#8217;s been hacking on colord-kde and PackageKit and trying to make open source a better place. If you&amp;#8217;ve got a spare couple of dollars this month, he&amp;#8217;d really appreciate a donation to buy hardware to test things on.&lt;/p&gt;
&lt;p&gt;I was a strapped-for-cash geek myself a few years ago, and I know how hard it was to develop software when you don&amp;#8217;t have the right hardware. I donated $25. &lt;a href=&quot;http://www.indiegogo.com/dantti-printer-monitor?a=525675&quot;&gt;Donate here&lt;/a&gt;. Thanks.&lt;/p&gt;</description>
	<pubDate>Wed, 04 Apr 2012 11:30:03 +0000</pubDate>
</item>
<item>
	<title>Kristian Paul: Congreso Itinerante by Free Software Foundation de Ecuador</title>
	<guid permalink="False">http://kristianpaul.org/comoblog/Congreso_Itinerante_by_Free_Software_Foundation_de_Ecuador.html</guid>
	<link>http://kristianpaul.org/comoblog/Congreso_Itinerante_by_Free_Software_Foundation_de_Ecuador.html</link>
	<description>/tmp/mutt-micro-1000-16715-896461972901d8d8fb0.html



&lt;font&gt;
I'm going to give a talk about Copyleft Hardware, by April 11 at&lt;br /&gt;
Instituto Superior de Pedagogía, not too much info yet, just in case you&lt;br /&gt;
are at Ecuador at that time may be of you interest.&lt;br /&gt;
&lt;br /&gt;
More info coming at &lt;font color=&quot;#ff40ff&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://softwarelibre.info/&quot;&gt;http://softwarelibre.info/&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&amp;nbsp;(Agenda)&lt;br /&gt;
&lt;/font&gt;</description>
	<pubDate>Tue, 03 Apr 2012 22:14:33 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  12 Frontpanels produced</title>
	<guid>http://oggstreamer.wordpress.com/?p=330</guid>
	<link>http://oggstreamer.wordpress.com/2012/04/03/oggstreamer-12-frontpanels-produced/</link>
	<description>&lt;p&gt;This morning I fetched the cnc-punched alu-cases from Johann, who did a great job concerning the mechanical work. Building the frontpanel, involves two main tasks:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;deflashing of the punched holes&lt;/li&gt;
&lt;li&gt;gluing the LED-PCB on the backside of the Frontpanel.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For the 2nd task I am using a transparent hot glue. In order to get a nice and plane look I put the Frontpanels on a glas plate first, mount them together with some &lt;a href=&quot;https://shop.grrf.de/druckplatte-aus-glas-p-326.html?language=en&amp;zenid=6448d04cf8a986c0112daeef194b4125&quot;&gt;handy little tools&lt;/a&gt; i don&amp;#8217;t know the name of &lt;img src=&quot;http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  &amp;#8211; then I quickly cover all the LED holes with plenty of hot glue (be sure the hotglue-gun is well heated) and in time I press the LED-PCB into the still liquid hot glue &amp;#8211; after that I put the glasplate and frontplate into the freezer (-18 °C) for just 5 Minutes, which proved out to be a good number for descent results. It turned out that the results are better if I just swift of the glasplate (instead of using Spiritus), because if the hotglue doesn&amp;#8217;t stick to well on the glass the frontpanel comes of more easy. If the finish of the so created light-guides doesn&amp;#8217;t look smooth it  can be reworked it with a hotair-gun, (but not to long)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/04/12-frontpanels.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-331&quot; title=&quot;SONY DSC&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/04/12-frontpanels.jpg?w=500&amp;h=334&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;334&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before trying this &amp;#8220;hot glue&amp;#8221;-technique, I was considering 3D printing the Lightguids with transparent PLA. But I think the hot glue-result is way better than I could print it our Prusa Mendel &amp;#8211; Printing a plastic by layers also might have some effects on diffusion. Also the meltingpoint of the &lt;a href=&quot;http://www.pattex.de/Pattex-HOT-Sticks-Transparent.1509.0.html&quot;&gt;used hotglue&lt;/a&gt; (200 °C) is siginficantly higher than PLA (130 °C)&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/330/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/330/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=330&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 03 Apr 2012 16:54:41 +0000</pubDate>
</item>
<item>
	<title>Village Telco: Meshed Potatoes</title>
	<guid>http://villagetelco.org/?p=1288</guid>
	<link>http://villagetelco.org/2012/04/meshed-potatoes/</link>
	<description>&lt;p&gt;&lt;em&gt;The following is a guest post from Carlo Nizeti and Glen Steedman. They&amp;#8217;ve been doing some performance testing with the Mesh Potatoes. This is a &lt;a href=&quot;http://nerdpolytechnic.org/2012/04/meshed-potatoes/&quot;&gt;re-post&lt;/a&gt; from their &lt;a href=&quot;http://nerdpolytechnic.org/&quot;&gt;Nerd Polytechnic&lt;/a&gt; site which is worth checking out.  Nerd Polytechnic is a technology collective in Sydney, Australia that gets together once a month to explore technology for the pleasure of finding things out.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Today was mesh day! Finally we had a few hours free to all get together and do some long distance mesh potato testing. There was a lot going on during the day, and we did some different tests so let me setup things by giving you details of the test environment and what we looked to get out of it.&lt;/p&gt;&lt;p&gt;The test we had in mind was to see how far we can throw decent signals with our stock mesh potato units. We have been playing with them in the confines of a single room for a while now and have them singing and dancing but out in the real world what kind of distances can we get. The ideal way for us to start was to challenge the god’s of wifi and set up our 3 units in a way where they had good spacing apart, and only two units could see each other at a time.&lt;/p&gt;&lt;p&gt;Site A was in Dee Why, being manned by Glen and Dave. This is where we started in the morning to do our testing. Site B was at Long Reef headland, manned by Geoff. Site C was in Collaroy, manned by Carlo. The idea was to get fairly equal spacing between us, but have site B as the man in the middle to mesh Collaroy and Dee Why together. We had 2meter amateur radio handhelds to use for comm’s (with Geoff acting as relay) until we had the mesh up and running for voice.&lt;/p&gt;&lt;p&gt;The setup was the same at each site, a Mesh Potato on a stick of some kind (Squid Poles), Analogue phones for voice and laptops for running network performance testing (iperf / jperf).&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;size-full wp-image-59 aligncenter&quot; title=&quot;Diagram of test sites&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/LOS-measure.jpg&quot; alt=&quot;&quot; width=&quot;528&quot; height=&quot;1036&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;&lt;div id=&quot;attachment_53&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013168.jpg&quot;&gt;&lt;img class=&quot;wp-image-53   &quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013168-1024x768.jpg&quot; alt=&quot;&quot; width=&quot;491&quot; height=&quot;369&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The prius is a little RF noisy, but it is a great car for field work. Very considerate of toyota to place a good quality battery in the back with a flat working surface and a good hatch back for sun protection.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;Getting setup wasn’t too painful. All three units are using slightly different methods of power connection which is good for experimentation. The only hiccup was one mesh (the one I was holding onto) had a slightly different firmware to the other units, which may or may not be the reason why it didn’t want to mesh with the other two units. Glen re-flashed my unit with the same software and that resolved the issue. In field use it would be likely that we would all have the same code so no biggie on that one. One thing that we have noticed is flashing the units from a ubuntu virtual machine (with vmware fusion) can throw some funny errors, this time around it didn’t slow us down but it seems a switch in the middle of the equation may see the flashing process work better.)&lt;/p&gt;&lt;p&gt;Glen and Dave had site A up and running very quick. Located at the headland car park it was also one of our most visible sites. The guys got asked a few questions by the locals, some of which jokingly asked if we were installing the &lt;a title=&quot;NBN&quot; href=&quot;http://en.wikipedia.org/wiki/National_Broadband_Network&quot; target=&quot;_blank&quot;&gt;NBN&lt;/a&gt;. We of course answered yes whilst poorly attempting to hold a deadpan face (We recently found out our suburb’s are not included in the 3 year roll out plan…).&lt;/p&gt;&lt;div id=&quot;attachment_52&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013172.jpg&quot;&gt;&lt;img class=&quot;wp-image-52 &quot; title=&quot;Site A - Dee Why&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013172-768x1024.jpg&quot; alt=&quot;&quot; width=&quot;491&quot; height=&quot;655&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Site A &amp;#8211; Dee Why&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;attachment_74&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/IMAG0530.jpeg&quot;&gt;&lt;img class=&quot; wp-image-74 &quot; title=&quot;IMAG0530&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/IMAG0530-613x1024.jpg&quot; alt=&quot;&quot; width=&quot;490&quot; height=&quot;819&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Site B &amp;#8211; Long Reef Headland&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;attachment_75&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/sitec.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot; wp-image-75  &quot; title=&quot;sitec&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/sitec-504x1024.jpg&quot; alt=&quot;&quot; width=&quot;454&quot; height=&quot;922&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Site C &amp;#8211; Collaroy Beach&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Testing &amp;amp; Results&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;So the plan was to get the mesh up and running, and once we could ping each other run some tests. Site A and Site B were around 2.1 km apart and connected up. Site B and Site C never connected even after the power was bumped up.&lt;/p&gt;&lt;div id=&quot;attachment_79&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;img class=&quot; wp-image-79 &quot; title=&quot;mesh&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/mesh.jpg&quot; alt=&quot;&quot; width=&quot;587&quot; height=&quot;294&quot; /&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Here you can see the single node connected on the other side, along with Dave&amp;#8217;s Mac connected up as a client.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;Site A and Site B were able to chat away on the analogue phones with a little crackle and line quality issues. Glen being the resident voice comms guru tried a few different codec’s to see if he could improve the voice quality, but it seems most of the issue was the underlying link quality.&lt;/p&gt;&lt;div id=&quot;attachment_29&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013195.jpg&quot;&gt;&lt;img class=&quot;wp-image-29   &quot; title=&quot;OLYMPUS DIGITAL CAMERA&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013195.jpg&quot; alt=&quot;&quot; width=&quot;538&quot; height=&quot;717&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Glen making a voice call to Geoff at Site B. A member of the public was heard to be explaining to their companion that they had some idea of what we were up to until the point where Glen starts to make phone calls with an analogue phone.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;The link speed bounced around a little too. It didn’t like TCP packets much, but could handle UDP packets much nicer.&lt;/p&gt;&lt;p&gt;Between Site A and Site B the maximum throughput was around 1Meg, but as you can see with the first image below it was short lived. The average generally was closer to between 250 – 500 KBit’s. &lt;span&gt;Remember this is over a 2.1KM link with 2 standard mesh potatos with no external antennas etc etc.&lt;/span&gt; For the test Site A was connected to the Mesh Potato via Ethernet, but Site B was connected via wifi.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/UDPtest2.jpg&quot;&gt;&lt;img class=&quot;size-full wp-image-86 aligncenter&quot; title=&quot;UDPtest2&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/UDPtest2.jpg&quot; alt=&quot;&quot; width=&quot;527&quot; height=&quot;296&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/UDPTest1.jpg&quot;&gt;&lt;img class=&quot;size-full wp-image-87 aligncenter&quot; title=&quot;UDPTest1&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/UDPTest1.jpg&quot; alt=&quot;&quot; width=&quot;526&quot; height=&quot;296&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Dave did some other testing, here you can see ping results from his mac to Geoff’s PC. Not a bad response time when both computers where connected to their respective Mesh Potato’s via wifi. Dave’s Mac could also see Site B’s Mesh Potato in its wireless list, but he couldn’t connect to it.&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;wp-image-39 aligncenter&quot; title=&quot;OLYMPUS DIGITAL CAMERA&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P4013182-1024x768.jpg&quot; alt=&quot;&quot; width=&quot;614&quot; height=&quot;461&quot; /&gt;&lt;/p&gt;&lt;p&gt;Glen noticed a failure of the link at one stage during the testing, after looking up he quickly established a potential cause. This little guy really wasn’t too interested in giving up his vantage point.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P40132011.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot; wp-image-28 aligncenter&quot; title=&quot;Birdy Visits&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/P40132011.jpg&quot; alt=&quot;&quot; width=&quot;576&quot; height=&quot;768&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;So what did we learn?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;That these things are great radios, and we took them to the edge of their performance today. 2.1km out of a little wifi AP is a great result, and we are very happy with the results. The main lessons learned could be summarised as&lt;/p&gt;&lt;ol&gt;&lt;li&gt;When operating in the field make sure all your units are on the same code.&lt;/li&gt;&lt;li&gt;2.1KM is a great result, but ideally these units would be placed closer together or have external antenna’s to improve gain.&lt;/li&gt;&lt;li&gt;Field operation probably takes a little more preparation on the testing we where going to run. Next time we do a prep hour or so indoors in ideal conditions testing the commands we are going to run and how we are going to record the results.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Things to try / improve&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Run some more controlled area tests to figure out the max throughput of these units.&lt;/li&gt;&lt;li&gt;Make a prepared list of commands to run directly from the mesh. (Ie, Horst for wifi noise and wlan connection speeds between mesh units)&lt;/li&gt;&lt;li&gt;Same test as last time, but place Site C in the middle of Site A and Site B. That way we can see how the units mesh, and if they choose the faster path correctly.&lt;/li&gt;&lt;li&gt;Create a cheat sheet of commands, numbers, IP’s and passwords.&lt;/li&gt;&lt;li&gt;Figure out if we can write some scripts to query the units and dump results.&lt;/li&gt;&lt;li&gt;Do a debrief immediately after the tests to get it all down.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Lab Results&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Glen ran some tests between his two units across his apartment and found that he could move 15mbit of traffic, so the hardware it self is great.&lt;/p&gt;&lt;p&gt;Here you can see the results Glen got when he did some two way tests between two computers connected to individual mesh potatos that had meshed together. As you can see they can get a very decent throughput, this is 15MBits both way with minimal jitter. Obviously they are in the same room but it shows the hardware is capable of nice things.&lt;/p&gt;&lt;div id=&quot;attachment_102&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/Screen-Shot-2012-04-01-at-9.13.27-PM.png&quot;&gt;&lt;img class=&quot; wp-image-102 &quot; title=&quot;Screen Shot 2012-04-01 at 9.13.27 PM&quot; src=&quot;http://nerdpolytechnic.org/wp-content/uploads/2012/04/Screen-Shot-2012-04-01-at-9.13.27-PM.png&quot; alt=&quot;&quot; width=&quot;701&quot; height=&quot;362&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Ideal scenario, this is the results from Lab testing&lt;/p&gt;&lt;/div&gt;&lt;p&gt;Anyway it was a great day out, we had a lot of fun and it was great to nerd it up in the sun.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://nerdpolytechnic.org/2012/04/meshed-potatoes/&quot;&gt;http://nerdpolytechnic.org/2012/04/meshed-potatoes/&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 03 Apr 2012 15:30:59 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: A new tool to ease kernel maintainer life</title>
	<guid>http://free-electrons.com/?p=4208</guid>
	<link>http://free-electrons.com/blog/new-tool-to-ease-kernel-maintainer-life/</link>
	<description>&lt;p&gt;When you are involved in mainlining or maintaining some kernel code, a non negligible part of your time is spent checking patches or patchsets themselves . It is not the most interesting part but it is truly necessary to help merging in kernel code, or to make sure you don&amp;#8217;t break anything, for example building with an incompatible configuration.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://git.infradead.org/users/dedekind/aiaiai.git&quot;&gt;Aiaiai&lt;/a&gt; developed by Artem Bityutskiy is a tool to do most of this task for you! It uses other checking tools and scripts such as &lt;code&gt;sparse&lt;/code&gt;, &lt;code&gt;coccinelle&lt;/code&gt; and &lt;code&gt;checkpatch.pl&lt;/code&gt;, and comes with its own set of tools and scripts. I don&amp;#8217;t know what does &amp;#8220;aiaiai&amp;#8221; stands for, but in French it sounds like &amp;#8220;Ouch Ouch Ouch&amp;#8221;, the sound you could make if you forget to use this tool &lt;img src=&quot;http://free-electrons.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;PS: On &lt;a href=&quot;https://plus.google.com/u/0/115533499592681008785/posts/LRtz66ZWoVW&quot;&gt;my G+ post&lt;/a&gt;, &lt;a href=&quot;https://plus.google.com/u/0/111984225231618981770&quot;&gt;Yegor Yefremov&lt;/a&gt; pointed that &amp;#8220;aiaiai&amp;#8221; means something like &amp;#8220;tsk tsk!&amp;#8221; (shame on you!) in Russian.&lt;/p&gt;</description>
	<pubDate>Mon, 02 Apr 2012 19:53:47 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  New Streaming Server sighttpd</title>
	<guid>http://oggstreamer.wordpress.com/?p=327</guid>
	<link>http://oggstreamer.wordpress.com/2012/04/02/oggstreamer-new-streaming-server-sighttpd/</link>
	<description>&lt;p&gt;I was trying really hard to get the IceCast-Server working under the XportPro-uclinux buildsystem but after more than a week of work I ended up in desperation. And I dropped the Idea of running an instance of IceCast-Server on the Device itselfs. &amp;#8211; Of course support for upstreaming to an IceCast-Server still remains. That&amp;#8217;s the bad news. But the good one is that I found a sleek little Streaming-Server, that just does the job as it should. It only took a few hours and the &lt;a href=&quot;http://www.kfish.org/software/sighttpd/&quot;&gt;sighttpd&lt;/a&gt; &amp;#8211; Server by Conrad Parker was up and running. First tests show that this Server should be able to serve around 20 Listeners directly (for really high bandwith vorbis; tested with 350kbps).&lt;/p&gt;
&lt;p&gt;Building sighttpd is a great choice for embedded systems, as it only depends on LibOgg and LibOggz, whereas IceCast (at least) needs LibOgg, LibVorbis, LibShout, LibXML2, LibXSLT. May be it was the number of dependencies that complicated my  attempts to get IceCast running. In fact it compiled just fine &amp;#8211; but for some reason in this configuration pthread_create just didn&amp;#8217;t work as it should&amp;#8230; sighttpd also uses pthreads &amp;#8211; but no problem with this configuration.&lt;/p&gt;
&lt;p&gt;So let&amp;#8217;s stick with sighttpd &lt;img src=&quot;http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/327/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/327/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=327&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 02 Apr 2012 09:42:17 +0000</pubDate>
</item>
<item>
	<title>GNU Radio Blog: RTL2832U based software defined radios</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/464-rtl2832u-based-software-defined-radios</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/464-rtl2832u-based-software-defined-radios</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890303104/&quot; title=&quot;AGK DVB-T dongle also uses RTL2832 by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7274/6890303104_b64d434919_s.jpg&quot; border=&quot;0&quot; alt=&quot;AGK DVB-T dongle also uses RTL2832&quot; width=&quot;75&quot; height=&quot;75&quot; /&gt;&lt;/a&gt;You may have noticed the recent buzz on the internet about using cheap DVB-T dongles as software defined radio receivers. It all started on&lt;a href=&quot;http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/44461/focus=44461&quot;&gt; this mailing list&lt;/a&gt; when V4L/DVB kernel developer &lt;a href=&quot;http://palosaari.fi/linux/&quot;&gt;Antti Palosaari&lt;/a&gt; discovered that the ezcap EzTV 668 DVB-T/FM/DAB USB dongle, which is based on the &lt;a href=&quot;http://www.realtek.com.tw/products/productsView.aspx?Langid=1&amp;PNid=22&amp;PFid=35&amp;Level=4&amp;Conn=3&amp;ProdID=257&quot;&gt;RTL2832U&lt;/a&gt; chip, can be used to stream raw I/Q samples to the host computer. It is in fact the way the device supports FM and DAB reception; raw I/Q is sent to the host where the application does the demodulation.&lt;/p&gt;

&lt;p&gt;Once this was discovered it didn't take long before Steve Markgraf of OsmoSDR created the &lt;a href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot;&gt;rtl-sdr package&lt;/a&gt; that could be used to tune the dongle and dump I/Q data do a file for post processing. A few weeks late later &lt;a href=&quot;https://twitter.com/#!/spenchdotnet&quot;&gt;Balint Seeber&lt;/a&gt; could announce the existence of an &lt;a href=&quot;http://wiki.spench.net/wiki/Gr-baz#rtl_source_c&quot;&gt;rtl_source_c&lt;/a&gt; GNU Radio block in his &lt;a href=&quot;http://wiki.spench.net/wiki/Gr-baz&quot;&gt;gr-baz&lt;/a&gt; package.&lt;/p&gt;
&lt;p&gt;Obviously, I had to get one myself.&lt;/p&gt;
&lt;p&gt;I followed the link on the OsmocomSDR page and ordered a few pieces from &lt;a href=&quot;https://www.dealextreme.com/p/dvb-t-digital-tv-usb-dongle-stick-with-fm-dab-dab-44326&quot;&gt;Dealextreme&lt;/a&gt;. I got an email on March 22 saying that order has been created and payment confirmed but nothing since then. Anyway, since I have a natural born suspicion against sites with such bombastic names, I decided not to rely on a single source and tried to order a dongle from another place. Thanks to &lt;a href=&quot;https://twitter.com/#!/uhf_satcom&quot;&gt;@uhf_satcom&lt;/a&gt; I found out that &lt;a href=&quot;https://www.cosycave.co.uk/&quot;&gt;CosyCave&lt;/a&gt; also sells the &lt;a href=&quot;https://www.cosycave.co.uk/product.php?id_product=104&quot;&gt;EzTV 666&lt;/a&gt; and at £9.50 incl. VAT it is even cheaper than the $20, to which I will have to add about 150% duties and VAT. Okay, I admit that a web shop that sells herbs, medicine and a DVB-T dongle is not much less fishy than something called Dealextreme... but I can tell you now that they shipped very fast and since it came from the UK I have received it within 4 working days.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/7036347863/&quot; title=&quot;EzTV 666 USB DVB-T dongle by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7227/7036347863_2d4b809430.jpg&quot; border=&quot;0&quot; alt=&quot;EzTV 666 USB DVB-T dongle&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is really amazing how much crap you get for £9.50: A DVB-T dongle, antenna, remote control and even a CD with software:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890303098/&quot; title=&quot;EzTV 666 package contents by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7087/6890303098_f2fd5b55bc.jpg&quot; border=&quot;0&quot; alt=&quot;EzTV 666 package contents&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, a few close-ups of the dongle:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890363378/&quot; title=&quot;EzTV 666 close-up by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7109/6890363378_7d7daa5fe0.jpg&quot; border=&quot;0&quot; alt=&quot;EzTV 666 close-up&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890363386/&quot; title=&quot;EzTV 666 close-up by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6114/6890363386_3a61af1c56.jpg&quot; border=&quot;0&quot; alt=&quot;EzTV 666 close-up&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890363400/&quot; title=&quot;EzTV 666 close-up by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6231/6890363400_e0d9567bf4.jpg&quot; border=&quot;0&quot; alt=&quot;EzTV 666 close-up&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see the EzTV 666 comes with the &lt;a href=&quot;http://www.elonics.com/product.do?id=1&quot;&gt;Elonics E4000&lt;/a&gt; tuner chip. As you can see there is not much info about this tuner besides some basic properties and a generic block diagram of a direct conversion I/Q demodulator.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6892184884/&quot; title=&quot;E4000 block diagram by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7047/6892184884_8d55dfea5e_o.jpg&quot; border=&quot;0&quot; alt=&quot;E4000 block diagram&quot; width=&quot;484&quot; height=&quot;483&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The RTL2832U seems to be more common than one would think. About a year ago I bought a DVB-T dongle in a local supermarket here in Denmark. The brand is called AGK and it worked well on windows but I never got it to work under Linux so I threw it in a drawer where it has been until now. I decided to open it up and take a look at what is inside.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890303136/&quot; title=&quot;AGK DVB-T dongle by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6115/6890303136_cd0509da3f.jpg&quot; border=&quot;0&quot; alt=&quot;AGK DVB-T dongle&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Surprise, surprise! An RTL2832U chip:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890303104/&quot; title=&quot;AGK DVB-T dongle also uses RTL2832 by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7274/6890303104_b64d434919.jpg&quot; border=&quot;0&quot; alt=&quot;AGK DVB-T dongle also uses RTL2832&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The tuner, however, is something called &lt;a href=&quot;http://www.siliconmotion.com/A3.2_Partnumber_Detail.php?sn=15&quot;&gt;FC2580&lt;/a&gt; from a Korean company called &lt;a href=&quot;http://www.siliconmotion.com/&quot;&gt;FCI&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6890303118/&quot; title=&quot;AGK DVB-T dongle used FC2580 tuner by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7122/6890303118_9ffa80c4b5.jpg&quot; border=&quot;0&quot; alt=&quot;AGK DVB-T dongle used FC2580 tuner&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As with the E4000, there is not much data available but is appears to support similar frequency range, i.e. cover both VHF and UHF up to 1.7 GHz. Once I get my EzTV 666 (and 668?) working, I will also try this one. It does look like I am not the only linux hacker interested in the RTL2832U+FC2580 combination, see for example &lt;a href=&quot;https://github.com/mbarbon/rtl2832/tree/master/tuners&quot;&gt;this repository&lt;/a&gt; on Github.&lt;/p&gt;
&lt;p&gt;In the meantime there is a &lt;a href=&quot;http://www.reddit.com/r/RTLSDR/comments/rbqfz/rtlsdr_compatibility_list_work_in_progress_please/&quot;&gt;compatibility list in progress&lt;/a&gt; over at Reddit.&lt;/p&gt;</description>
	<pubDate>Mon, 02 Apr 2012 09:20:41 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>GNU Radio Blog: Gqrx and Pulseaudio</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/463-gqrx-and-pulseaudio</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/463-gqrx-and-pulseaudio</link>
	<description>&lt;p&gt;Just a quick note that Gqrx now uses pulseaudio for all audio I/O, which includes I/Q input from the Funcube Dongle.&lt;/p&gt;

&lt;p&gt;The pulseaudio source and sink block have existed for some time now in a dedicated branch. Although it still needs testing and improvements I have decided to merge it into the &lt;a href=&quot;https://github.com/csete/gqrx&quot;&gt;master branch&lt;/a&gt; since pulseaudio is the way I want to go with gqrx.&lt;/p&gt;
&lt;p&gt;Using pulseaudio allows better integration of gqrx into the linux desktop because pulseaudio is the default audio system used by most linux distributions today. Users can notice that gqrx now appears as a recording and playing application in the audio settings window.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6911734525/&quot; title=&quot;Pulseaudio input/output in GQRX by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7047/6911734525_715b592e99_z.jpg&quot; border=&quot;0&quot; alt=&quot;Pulseaudio input/output in GQRX&quot; width=&quot;640&quot; height=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The coolest thing, however, is that when gqrx uses pulseaudio for output, applications that use pulseaudio for capturing can be configured to capture the output of gqrx! The screenshot below shows the Masat-1 telemetry decoder configured to capture the audio output from gqrx (or anything else that plays on the main audio output):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.oz9aec.net/images/article/463/masat-gqrx.png&quot;&gt;&lt;img src=&quot;http://www.oz9aec.net/images/article/463/masat-gqrx.png&quot; border=&quot;0&quot; alt=&quot;Masat TLM decoder and gqrx&quot; title=&quot;Masat TLM decoder and gqrx&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The last screenshot shows Fldigi being connected to the output and decoding Morse code:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6947419123/&quot; title=&quot;Decoding Morse code by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7050/6947419123_58c4a6c0f4_z.jpg&quot; border=&quot;0&quot; alt=&quot;Decoding Morse code&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One can also do more advanced audio routing – even over the network. Unfortunately, the pulseaudio user manual is practically non-existent, so I don't know if anybody has a clue how to do such things :o)&lt;/p&gt;</description>
	<pubDate>Sat, 31 Mar 2012 14:06:29 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>Village Telco: Introducing the FitVT  Part 1</title>
	<guid>http://villagetelco.org/?p=1211</guid>
	<link>http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/</link>
	<description>&lt;p&gt;After a few months working in our labs we want to introduce you to the FitVT, our low cost/low power server for the Village Telco based on FitPC2i low power computer.&lt;/p&gt;&lt;p&gt;After testing different low power solutions based on commodity laptops, we discovered the &lt;a href=&quot;http://www.fit-pc.com/web/fit-pc/fit-pc2i-specifications/&quot;&gt;FitPC&lt;/a&gt;&lt;a name=&quot;sdfootnote1anc&quot; href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/#sdfootnote1sym&quot;&gt;&lt;/a&gt;&lt;sup&gt;1&lt;/sup&gt;. The Fitpc2i comes with two Gigabit network interfaces and the CompuLab SBC-FITPC2 series board that uses a fanless Atom Z550 32bits CPU.&lt;/p&gt;&lt;p&gt;In most of the scenarios the VT server will sit behind a village telco super-node and the Internet. Although we have tested commodity laptops using a USB-Ethernet converter as second interface, we have seen very bad performance in the data transfers of some USB dongles (USB 1.1). So if you plan to provide also Internet access from the mesh nodes, consider a solution with two built-in network interfaces.&lt;/p&gt;&lt;p&gt;Installing Ubuntu 10.04 in the &lt;a href=&quot;http://www.fit-pc.com/wiki/index.php/Fit-PC2i_Revisions&quot;&gt;fitpc2i&lt;/a&gt;&lt;a name=&quot;sdfootnote2anc&quot; href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/#sdfootnote2sym&quot;&gt;&lt;/a&gt;&lt;sup&gt;2&lt;/sup&gt; was as easy as installing Ubuntu in any other computer. Use a bootable USB image or attach an external USB-CD Drive. Just make sure that you choose a 32 bits image as the Atom CPU runs 32 bits.&lt;/p&gt;&lt;p&gt;In our laboratory we have tested the Fitpc2i with a &lt;a href=&quot;http://www.cpu-world.com/CPUs/Atom/Intel-Atom%20Z550%20AC80566UE041DW.html&quot;&gt;Intel(R) Atom(TM) CPU Z550@ 2.00GHz&lt;/a&gt;&lt;a name=&quot;sdfootnote3anc&quot; href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/#sdfootnote3sym&quot;&gt;&lt;/a&gt;&lt;sup&gt;3&lt;/sup&gt; and 2 GB of RAM. The unit runs at 35-40 C when idle so make sure that you do not forget it under a pile of books as I did. There are at least two revisions of this hardware but the process of installation should be the same.&lt;/p&gt;&lt;p&gt;CompuLab, the company behind the FiTVT provides support for Linux Mint as the hardware seems to be targeted to those that want to run a nice multimedia station at home (i.e. stream audio/video obtained from good friends to a television). We warned that the unit does not come with VGA output and has a DVI Digital output up to 1920 x 1200 through HDMI connector instead, so you will need a LCD/TV screen with HDMI or DVI input to connect the FitPC.&lt;/p&gt;&lt;p&gt;There are two useful accessories that you can consider, an analog VGA converter is powered from the DVI port and requires no external power source and the external heat-sink.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2012/02/fitvt.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1213&quot; title=&quot;fitvt&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2012/02/fitvt.png&quot; alt=&quot;fitvt low power server&quot; width=&quot;289&quot; height=&quot;194&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The main glitch in the installation process is that the stock kernel that ships with Ubuntu 10.04 has buggy R8169 network driver that has broken auto-negotation. In my case, only one of the interfaces was able to negotiate the speed, while the other interface required the &lt;em&gt;ethtool &lt;/em&gt;to force the speed to 10 Mbps.&lt;em&gt; &lt;/em&gt; Fixing the speed of the second card to 10 Mbps was the only solution so as you can upgrade your kernel.&lt;/p&gt;&lt;p&gt;Once you upgrade the kernel from version 2.6.32-33 to 2.6.32-38 you will discover that the DADHI drivers that are used Asterisk are now broken and you will have to rebuild them. The DADHI drivers depend on kernel version (i.e. wrong symbols). In a nutshell, in order to get the network cards to work you will have to (1) upgrade your kernel and (2) rebuild DADHI Asterisk drivers.&lt;/p&gt;&lt;p&gt;In the second part of this article we will describe how to get the Village Telco software bundle installed.&lt;/p&gt;&lt;div id=&quot;sdfootnote1&quot;&gt;&lt;p&gt;&lt;a name=&quot;sdfootnote1sym&quot; href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/#sdfootnote1anc&quot;&gt;&lt;/a&gt;1&lt;a href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/ http://www.fit-pc.com/web/fit-pc/fit-pc2i-specifications/&quot;&gt; http://www.fit-pc.com/web/fit-pc/fit-pc2i-specifications/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;sdfootnote2&quot;&gt;&lt;p&gt;&lt;a name=&quot;sdfootnote2sym&quot; href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/#sdfootnote2anc&quot;&gt;&lt;/a&gt;2 &lt;a href=&quot;http://www.fit-pc.com/wiki/index.php/Fit-PC2i_Revisions&quot;&gt;http://www.fit-pc.com/wiki/index.php/Fit-PC2i_Revisions&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;sdfootnote3&quot;&gt;&lt;p&gt;&lt;a name=&quot;sdfootnote3sym&quot; href=&quot;http://villagetelco.org/2012/02/introducing-the-fitvt-part-1/#sdfootnote3anc&quot;&gt;&lt;/a&gt;3 &lt;a href=&quot;http://www.cpu-world.com/CPUs/Atom/Intel-Atom%20Z550%20AC80566UE041DW.html&quot;&gt;http://www.cpu-world.com/CPUs/Atom/Intel-Atom%20Z550%20AC80566UE041DW.html&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 30 Mar 2012 15:08:55 +0000</pubDate>
</item>
<item>
	<title>Transmaterial: Coco Tiles</title>
	<guid permalink="False">http://transmaterial.net/?p=2010</guid>
	<link>http://transmaterial.net/index.php/2012/03/30/coco-tiles/</link>
	<description>&lt;p&gt;Made from reclaimed coconut shells, low-VOC resins and sustainably-harvested wood backer material, Kirei Coco Tiles may be used as decorative tiles or panels both horizontally and vertically. Featuring multiple pattern and color combinations and available in light, dark and mixed textures, the coconut shell tiles create a variety of surfaces and enhance the sustainable material palette in residential, commercial, and hospitality applications.&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.kireiusa.com&quot;&gt;Kirei&lt;/a&gt;, Solana Beach, CA, USA.&lt;br /&gt;
Find more information in &lt;a href=&quot;http://www.amazon.com/gp/product/1568988931?ie=UTF8&amp;tag=transmaterial-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1568988931&quot;&gt;Transmaterial 3&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 30 Mar 2012 14:00:34 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: FMC DEL 1ns 4cha - 15 V3 boards built</title>
	<guid>http://www.ohwr.org/news/250</guid>
	<link>http://www.ohwr.org/news/250</link>
	<pubDate>Fri, 30 Mar 2012 11:23:05 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Open Hardware Repository: PPSi - PPTP is dead, long live PPSi</title>
	<guid>http://www.ohwr.org/news/249</guid>
	<link>http://www.ohwr.org/news/249</link>
	<pubDate>Thu, 29 Mar 2012 13:59:33 +0000</pubDate>
	<author>rubini@gnudd.com (Alessandro Rubini)</author>
</item>
<item>
	<title>Open Hardware Repository: EtherBone Core - EtherBone goes BETA</title>
	<guid>http://www.ohwr.org/news/248</guid>
	<link>http://www.ohwr.org/news/248</link>
	<pubDate>Tue, 27 Mar 2012 12:28:16 +0000</pubDate>
	<author>m.kreider@gsi.de (Mathias Kreider)</author>
</item>
<item>
	<title>Bunnie Studios: Name that Ware March 2012</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2319</guid>
	<link>http://www.bunniestudios.com/blog/?p=2319</link>
	<description>&lt;p&gt;The Ware for March 2012 is shown below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/blog/images/ntw_mar_2012.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/ntw_mar_2012_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Been on the road in China this past month, so I snapped this one with my camera while on the go!&lt;/p&gt;</description>
	<pubDate>Tue, 27 Mar 2012 07:55:05 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Winner, Name that Ware February 2012</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2316</guid>
	<link>http://www.bunniestudios.com/blog/?p=2316</link>
	<description>&lt;p&gt;The winner of Name that Ware February 2012 is mangel, for correctly guessing the ware as a BBN Safekeyper box, CP1 Series, c. late 1992. Congrats, and email me for your prize!&lt;/p&gt;
&lt;p&gt;Thanks again to Ben for contributing this rare look inside such an interesting box!&lt;/p&gt;</description>
	<pubDate>Tue, 27 Mar 2012 07:54:54 +0000</pubDate>
</item>
<item>
	<title>Fabricatorz: New Milkymist Action Shots</title>
	<guid>http://fabricatorz.com/2012/03/new-milkymist-action-shots</guid>
	<link>http://fabricatorz.com/2012/03/new-milkymist-action-shots</link>
	<description>&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There isn't much video out there that does the &lt;a href=&quot;http://milkymist.org/&quot;&gt;Milkymist&lt;/a&gt; justice, an unfortunate circumstance because it really is an impressive little machine. In an attempt to remedy this &lt;a href=&quot;http://fabricatorz.com/people/barry/&quot;&gt;Barry&lt;/a&gt; and I recently shot some video with the hopes of mirroring the representation of the Milkymist with it's actual ability. We (actually, &lt;em&gt;I&lt;/em&gt;, since I'm the one responsible for the editing) fell well short of th﻿is mark. But despite the poor editing (I haven't edited video since the VHS days!) and poor image quality (who knew high-quality video required so many damn GB's?), you'll get to see how non-intimidating the set-up is and how fast this little guy can get a party started.&lt;br /&gt;
&lt;br /&gt;
The drum clips are meant to demonstrate the Mi﻿lkymist's integration with electronic instruments and external sound, both of which stimulate the visuals when plugged directly into the Milkymist or intercepted via the o﻿nboard microphone. And the club shots, well, those are testament to the Milkymist's party credibility. We actually smuggled the Milkymist into that particular party a﻿t a warehouse-like venue in San Francisco's Mission District, then set it up guerrilla-style and proceeded to project on the walls and dance floor despite the fact that ther﻿﻿e was already a house VJ. I was actually surprised how well our slapdash performance compared. During the short 15 minutes we were there the crowd turned away from the DJ and VJ projection on the far wall and towards each other in the middle of the room where we were projecting. The dancing and interaction intensified, and at one point one of the VJ's assistants came over all starry-eyed and intrigued.&lt;br /&gt;
&lt;br /&gt;
I have to say, I was a bit skeptical about the Milkymist until I saw it in action. It has some incredible psychedelic and dynamic capabilities that will only continue to expand. Keep your eyes peeled, kids.&lt;br /&gt;
&lt;br /&gt;
Footage here: &lt;a href=&quot;http://downloads.qi-hardware.com/people/bonewolf/&quot;&gt;http://downloads.qi-hardware.com/people/bonewolf/&lt;/a&gt; and more to come.</description>
	<pubDate>Tue, 27 Mar 2012 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: Building GNOME For Fedora 17</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=581</guid>
	<link>http://blogs.gnome.org/hughsie/2012/03/26/building-gnome-for-fedora-17/</link>
	<description>&lt;p&gt;At the moment the GNOME updates in Fedora are a bit of chaotic affair. They mostly work, but only because of people like Matthias who spend hours and hours building packages and putting everything together manually.&lt;/p&gt;
&lt;p&gt;For 3.3.92 I experimented doing a mega-bodhi-update and trying to get all the 3.3.92 builds in one place, and working with other people on a google spreadsheet to make sure everything was built in good time, and nothing was left behind.&lt;/p&gt;
&lt;p&gt;For the GNOME 3.4.0 release, I&amp;#8217;m asking people to copy this pattern, and try to get all the builds into *one* update rather than 90% of the builds in one mega-update and then 10% in random updates that other people have filed. If this works, I&amp;#8217;m intending to do the 3.4.1 update as one update as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; TL;DR&lt;/strong&gt;. If you&amp;#8217;re packaging a GNOME package that&amp;#8217;s just had a 3.3.92 upstream release and is about to have a 3.4.0 release, please build the package like normal, but don&amp;#8217;t file an update. Instead add the build ID to &lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0AtzJKpbiGX1zdGJzeU9waFJFZmgyQzBuN2VxU0lxbHc&quot;&gt;the spreadsheet&lt;/a&gt; and then I&amp;#8217;ll pick up the build for the mega update for F17. Hopefully this makes the updates system easier to QA, as GNOME is more and more interconnected, and it&amp;#8217; just not possible to QA updates when you have a 3.3.91 version of gnome-settings-daemon and 3.4.1 version of gnome-screenshot.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<pubDate>Mon, 26 Mar 2012 15:26:33 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Android gdbclient command</title>
	<guid>http://free-electrons.com/?p=4196</guid>
	<link>http://free-electrons.com/blog/android-gdbclient/</link>
	<description>&lt;p&gt;Before you even start building Android, Google&amp;#8217;s instructions tell you to source the &lt;code&gt;build/envsetup.sh&lt;/code&gt; shell script.&lt;/p&gt;
&lt;p&gt;This script exports a number of environment variables (that&amp;#8217;s why you have to source it), mostly setting the &lt;code&gt;PATH&lt;/code&gt; to your different toolchains and to your output directories.&lt;/p&gt;
&lt;p&gt;It also defines a number of shell functions. Among them some functions are advertised, like the well-know &lt;code&gt;lunch&lt;/code&gt;, that is used to configure to some extent the build system, or the grepping functions, but some are not, like &lt;code&gt;pid&lt;/code&gt;, which uses &lt;code&gt;adb&lt;/code&gt; to get the PID of a process running on the device.&lt;/p&gt;
&lt;p&gt;Among the latter, one seems pretty useful: &lt;code&gt;gdbclient&lt;/code&gt;. What &lt;code&gt;gdbclient&lt;/code&gt; does is obviously gdb related but in fact it does more than that.&lt;/p&gt;
&lt;p&gt;First, you run it by doing &lt;code&gt;gdbclient &amp;lt;binary&amp;gt;:&amp;lt;port&amp;gt; &amp;lt;process_name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then it sets up &lt;code&gt;adb&lt;/code&gt; with the &lt;code&gt;forward&lt;/code&gt; command so that you use it as a transport layer to your device, while it appears as (in that case) opened TCP sockets both on your machine and on the device.&lt;/p&gt;
&lt;p&gt;Then, it attaches a &lt;code&gt;gdbserver&lt;/code&gt; to the process you gave as the third argument on the device.&lt;/p&gt;
&lt;p&gt;Finally, it launches your cross-gdb on your workstation, loads the debugging symbols from the file passed as first argument, and sets up a remote debugging session. All of that through USB!&lt;/p&gt;
&lt;p&gt;This is definitely useful, and I can&amp;#8217;t say why Google doesn&amp;#8217;t advertise it more, but hey, it&amp;#8217;s there!&lt;/p&gt;</description>
	<pubDate>Mon, 26 Mar 2012 07:56:02 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: h-online article covering OpenBTS and OpenBSC</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/26#20120326-honline-article</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/26#20120326-honline-article</link>
	<description>&lt;p&gt;
You can find a 3-page article about OpenBTS, OpenBSC and related
projects available from the &lt;a href=&quot;http://www.h-online.com/open/features/Building-a-GSM-network-with-open-source-1476745.html&quot;&gt;h-online&lt;/a&gt; web site.
&lt;/p&gt;</description>
	<pubDate>Mon, 26 Mar 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: OsmoDevCon 2012 is over...</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/26#20120326-osmodevcon</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/26#20120326-osmodevcon</link>
	<description>&lt;p&gt;
We just finished the 4th and final day of the OsmoDevCon 2012.  It
contained four days of in-depth presentations and discussions related to
Free Software communications systems, most notably
&lt;a href=&quot;http://bb.osmocom.org/&quot;&gt;OsmocomBB&lt;/a&gt;,
&lt;a href=&quot;http://openbsc.osmocom.org/&quot;&gt;OpenBSC&lt;/a&gt;,
&lt;a href=&quot;http://openbts.sourceforge.net/&quot;&gt;OpenBTS&lt;/a&gt;,
&lt;a href=&quot;http://openbsc.osmocom.org/trac/wiki/osmo-nitb&quot;&gt;OsmoNITB&lt;/a&gt;,
&lt;a href=&quot;http://simtrace.osmocom.org/&quot;&gt;SIMtrace&lt;/a&gt;,
&lt;a href=&quot;http://gmr.osmocom.org/&quot;&gt;OsmoGMR&lt;/a&gt;,
&lt;a href=&quot;http://sdr.osmocom.org/&quot;&gt;OsmoSDR&lt;/a&gt;, rtl-sdr and many more.
&lt;/p&gt;
&lt;p&gt;
I think it was a great chance to make sure the key developers involved
with those projects are up-to-date with what everyone else is hacking
on.  I was especially happy with the presentations of Holger's smalltalk
implementation of certain GSM protocols/interfaces, and it seems my
small informal Erlang intro has raised some interest.
&lt;/p&gt;
&lt;p&gt;
If anything, the 4-day conference has shown that there is a massive
amount of work going on in the various different projects, and that it
has clearly grown beyond anything that a single person could still be
involved in all the sub-projects.
&lt;/p&gt;
&lt;p&gt;
Personally, I'm happy to see what has grown out of this &quot;we have a
BS-11, let's see what we can do with it&quot; that Dieter and I started in
2008.  Now we're no longer talking about BTS/A-bis/BSC, but about SS7,
MSC, TCAP/MAP, SCCP, HLR, Erlang, smalltalk, DECT, SIM/USIM, COS, SDR,
GMR/Thuraya, TETRA and more recently also femtocells as well as NodeBs.
&lt;/p&gt;
&lt;p&gt;
In the spirit of that 2008 presentation &lt;i&gt;Running your own GSM
network&lt;/i&gt; using the BS-11, Dieter Spaar has now demonstrated his talk
on &lt;i&gt;Running your own UMTS network&lt;/i&gt;, using NSN or Ericsson NodeBs.
I'm really excited to see where that will take us - despite the fact
that due to the 5 MHz wide channels, it's pretty close to impossible to
get the experimental spectrum licenses that most of us have been able to
get in recent years for our work.
&lt;/p&gt;
&lt;p&gt;
As an outlook, over the remaining year 2012, I see progress in the
following areas:
&lt;ul&gt;
&lt;li&gt;osmo-nitb will get a VLR/HLR split (async database access)&lt;/li&gt;
&lt;li&gt;we will build a stand-alone osmo-msc with A interface&lt;/li&gt;
&lt;li&gt;the signerl TCAP/MAP implementations will be used in production&lt;/li&gt;
&lt;li&gt;OsmoSDR firmware will be completed, the hardware will start shipping&lt;/li&gt;
&lt;li&gt;a new card operating system (OsmoCOS) will emerge&lt;/li&gt;
&lt;li&gt;a UMA gateway will be implemented&lt;/li&gt;
&lt;li&gt;a Free Software GPRS/EDGE PCU and RLC/MAC implementation will appear&lt;/li&gt;
&lt;li&gt;last but not least, sysmoBTS will start commercial shipment really soon now&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
I'd like to thank our host &lt;a href=&quot;http://www.cbase.org/&quot;&gt;c-base&lt;/a&gt;
for having us block their conference room for 4 days, as well as all
attendees who have travelled from all parts of Europe, but even the
United States and Russia to participate.  There definitely will be
another OsmoDevCon, though we don't know yet at which point in time.
&lt;/p&gt;</description>
	<pubDate>Mon, 26 Mar 2012 02:00:00 +0000</pubDate>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: Analysis of RadioShack Duster Spray</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-9222712013610161622</guid>
	<link>http://siliconexposed.blogspot.com/2012/03/analysis-of-radioshack-duster-spray.html</link>
	<description>In research and industry, spraying with compressed gas (usually dry nitrogen) is the standard way to remove liquid from a specimen after solvent cleaning or rinsing. By blowing the liquid off rather than letting it evaporate, spots from dissolved contamination are reduced or eliminated.&lt;br /&gt;&lt;br /&gt;I had been using RadioShack duster spray for a while but started noticing residue on samples dried with it. My hypotheses at this point were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The solvent had contamination in it, either from cleaning the sample or a contaminant in my stock bottle, and was depositing the contaminant on my samples&lt;/li&gt;&lt;li&gt;The bitterant added to the duster spray (to deter people from using it as an inhalant) was less volatile than the gas (or not volatile at all) and leaving residue on the samples&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Earlier today I decided to test the spray and see if I could find out whether it was the source of the contaminant. Since the labeling on the can indicated pretty clearly that breathing it wasn't a great idea, all of my work was done in the fume hood.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-I1kzezyOPtY/T25YzSZxofI/AAAAAAAAAF4/V7-omsxB-4k/s1600/S7302612.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://3.bp.blogspot.com/-I1kzezyOPtY/T25YzSZxofI/AAAAAAAAAF4/V7-omsxB-4k/s400/S7302612.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;The subject of today's experiments&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I began by inverting the can and spraying a liquefied sample of the duster (R-134A refrigerant, according to the label on the can) into a test tube. The tube was quickly coated in frost as the refrigerant evaporated.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-s885Gs2tI_c/T25Z536CqvI/AAAAAAAAAGA/GVgT2h5P6hQ/s1600/S7302620.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://3.bp.blogspot.com/-s885Gs2tI_c/T25Z536CqvI/AAAAAAAAAGA/GVgT2h5P6hQ/s640/S7302620.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Frost-covered test tube&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;After trying to place some of the liquid onto a microscope slide with little success (it boiled as soon as the pipette touched it) I ended up pouring it into a petri dish and leaving it on the hot plate to evaporate all of the refrigerant and condensed water.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-9ujeCmWnak4/T25alcksYcI/AAAAAAAAAGI/kZEuU30oMo0/s1600/S7302627.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://1.bp.blogspot.com/-9ujeCmWnak4/T25alcksYcI/AAAAAAAAAGI/kZEuU30oMo0/s640/S7302627.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;R-134a and condensed water slush being evaporated on the hot plate&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-e5xjw_C_Cr0/T25co_KuvCI/AAAAAAAAAGY/DJ2nlAETopo/s1600/S7302635.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://3.bp.blogspot.com/-e5xjw_C_Cr0/T25co_KuvCI/AAAAAAAAAGY/DJ2nlAETopo/s640/S7302635.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Non-volatile contamination deposited on petri dish&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-3J7Vhw9tCVo/T25cdIPoefI/AAAAAAAAAGQ/T07SKfq6yAs/s1600/S7302632.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;http://1.bp.blogspot.com/-3J7Vhw9tCVo/T25cdIPoefI/AAAAAAAAAGQ/T07SKfq6yAs/s640/S7302632.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Non-volatile contamination deposited on microscope slide&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The results were pretty conclusive - some non-volatile contaminant is definitely present in the spray. I'm not sure what it is, and see little point in trying to identify it, but I clearly need to find a new source of duster gas for my experiments.&lt;br /&gt;&lt;br /&gt;I'm looking at &lt;a href=&quot;http://www.harmonycr.com/CleanTex-MicroDuster-III-10-oz-can-valve-assembly-p/ct2511.htm&quot;&gt;CleanTex&lt;/a&gt; duster spray, from the vendors of Texwipe cleanroom wipers. According to the specs on the website it's particulate filtered down to 200nm and is pure compressed gas with no bitterant or other stuff added.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-9222712013610161622?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 24 Mar 2012 20:47:06 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Video Circuits: Sabrina Ratte EXPERIMENT III</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-2962015985038903953</guid>
	<link>http://videocircuits.blogspot.com/2012/03/sabrina-ratte-experiment-iii.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;Video feedback, AZDEN VPC-10, LZX Video Synthesizer&lt;br /&gt;&lt;br /&gt;Electronic sounds -Roger Tellier-Craig&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-2962015985038903953?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 24 Mar 2012 16:20:23 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>GNSS-SDR: Improving the precision of the software receiver GLONASS L1</title>
	<guid>http://gnss-sdr.com/xml-rss2.php?itemid=77</guid>
	<link>http://gnss-sdr.com/xml-rss2.php?itemid=77</link>
	<description>Some time ago I became interested in improving the precision of GLONASS Scilab receiver. The difference between mean value and max/min values of coordinates up to ±35 m for stationary receiver – is too big.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://gnss-sdr.ru/media/1/20120323-pvt_for_site_v1.gif&quot; width=&quot;620&quot; height=&quot;584&quot; alt=&quot;PVT solution of GLONASS L1 Scilab receiver&quot; title=&quot;PVT solution of GLONASS L1 Scilab receiver&quot; /&gt;&lt;br /&gt;
&lt;div&gt;Figure 1 PVT solution of GLONASS L1 Scilab receiver&lt;/div&gt;&lt;br /&gt;
After improving several weak parts of the code the difference between mean value and max/min values of coordinates lowered to ±6 m, i.e. almost in 6 times. Results from the updated version of the receiver is on the figure 1. The  same signal record as in the post &lt;a href=&quot;http://gnss-sdr.ru/index.php?itemid=17&quot;&gt;GLONASS - frist experiments&lt;/a&gt; was used.After analysis of the original GNSS-SDR source code several weak places were found. Their improvement could increase receiver's precision. Here is the list of these weak places:&lt;br /&gt;
1. High variance of DLL-discriminator data;&lt;br /&gt;
2. Pseudorange calculations are based on round-off measurements;&lt;br /&gt;
After reducing correlator's arms spacing from 0.5 to 0.05 chips and after lowering DLL loop  filter bandwidth  from 2.0 to 0.5 Hz with additional adding assistance from PLL-assisted-FLL variation of DLL discriminator data was lowered. This fact with additional refuse from round-off during pseudorange calculations allowed to receive results that are shown on figure 1.</description>
	<pubDate>Fri, 23 Mar 2012 14:35:50 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: OHR Support - OHWR maintenance on 2012-03-26 (Monday) 08:30 CEST</title>
	<guid>http://www.ohwr.org/news/247</guid>
	<link>http://www.ohwr.org/news/247</link>
	<pubDate>Fri, 23 Mar 2012 09:31:22 +0000</pubDate>
	<author>egarcia@splendeo.es (Enrique García)</author>
</item>
<item>
	<title>Bunnie Studios: MicroSD card FAQ</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2297</guid>
	<link>http://www.bunniestudios.com/blog/?p=2297</link>
	<description>&lt;p&gt;A while back I wrote &lt;a href=&quot;http://www.bunniestudios.com/blog/?page_id=1022&quot;&gt;an analysis of fake microSD&lt;/a&gt; cards. As a result of the post, I&amp;#8217;ve received this question regularly via email:&lt;/p&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;m trying to buy a thousand microSD cards for my embedded controller project. How do you qualify a microSD card?&amp;#8221;&lt;/p&gt;
&lt;p&gt;So, I thought it might be helpful to share my answer here. &lt;/p&gt;
&lt;p&gt;There&amp;#8217;s this awkward phase between the weekend project (where you buy your microSD card from Best Buy for $20 and have a no-questions return policy) and being Nokia (where you buy the same cards for $2 in quantities large enough to actually have leverage over vendors). When you source a few thousand cards at a time on the wholesale spot market, you&amp;#8217;re basically on your own to control quality. &lt;/p&gt;
&lt;p&gt;As far as process control, some vendors are easier to work with than others. Samsung will bump their part numbers based on die revs or other significant internal changes to the card. Sandisk, on the other hand, uses a very short part number for their cards, so you have no idea if the NAND on the inside is MLC or TLC, etc.; you just know the capacity and the card is simply guaranteed to perform to spec. To wit, Sandisk is very thorough about ensuring they meet the spec. However, it&amp;#8217;s the edge cases that usually bite you in production; regardless of the spec, every die/controller combo has some character and your embedded controller may bring out some of that color. And, of course, there&amp;#8217;s the fakes &amp;#8212; Sandisk is a huge target for fakes, people who want to borrow their good name to sell you a batch of shoddy cards. &lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re working with a distributor, get a copy of their authorization letter that certifies the relationship with the brand they are selling. It&amp;#8217;s easy to fake the certificate, but it&amp;#8217;s a good formality to pursue anyways. If you can, get the upstream brand to confirm the distribution relationship.&lt;/p&gt;
&lt;p&gt;Aside from these supply-chain side things, here&amp;#8217;s a check-list of technical tests to run on your cards:&lt;/p&gt;
&lt;p&gt;For each new distributor:&lt;/p&gt;
&lt;p&gt;1. I read out the CID and CSD registers and decode them. This is easy to do on linux with a directly connected microSD card. You cannot do this if the card is plugged into a USB adapter &amp;#8212; you need to have the card plugged into a direct SD interface. The CID and CSD should look &amp;#8220;right&amp;#8221; i.e., the manufacturer ID should make sense (unfortunately the manufacture ID codes are all secret, but I can assure you it&amp;#8217;s not supposed to be FF or 00), serial numbers should be some big number, date codes correct, etc.&lt;/p&gt;
&lt;p&gt;2. Do a &amp;#8220;full write&amp;#8221; test at least once. i.e., create a random block of data that&amp;#8217;s the putative size of the card, and dd it into the card. Then, do an md5sum of the contents of the card. This will identify loopback tricks that fake capacity. This is a relatively common trick that is surprisingly hard to detect, because many cards are only used to less than 50% capacity in real life.&lt;/p&gt;
&lt;p&gt;3. Do a reboot test, to understand the behavior of the controller/die combo during ungraceful powerdown. It&amp;#8217;s less important on systems that can never have their battery removed. &lt;/p&gt;
&lt;p&gt;Before the test, I do a recursive find piped to md5sum to get a full map of all the files in the card. Then, I use a script that writes a random amount of /dev/urandom data in odd-sized blocks (ranging from a couple hundred bytes to a couple megabytes) to the card and then calls sync, in a constant loop after boot. For each block written, the md5sum is recorded. At boot time, all old blocks are checked for md5sum consistency and then deleted. The system under test is automatically power cycled by cutting the AC power about once very 2-3 minutes plus some random interval (depends on how long it takes your device to boot). I cut on the AC power side to capture the effects of the power decay curve of the wall adapter; the logic goes that a clean power down is less likely to cause problems than a gradual powerdown. I run the test on a cohort of at least 2 systems for 2 days straight. If you want to get fancy, you have the system upload its statistics to a server so you can see exactly when it starts to fail. After a couple of days, I extract the card from the system and redo the recursive find with md5sum to verify that no non-critical files have been corrupted that would be difficult to notice without the comprehensive check. Be sure, of course, to ignore files that naturally vary. &lt;/p&gt;
&lt;p&gt;I still don&amp;#8217;t have a straight answer on why some cards perform better under this test and others fail miserably. Ultimately, however, every card I&amp;#8217;ve encountered eventually corrupts the filesystem after enough cycles, it&amp;#8217;s just a matter of how long. I feel comfortable if I can reliably get to ten thousand ungraceful reboots-while-writing before failure. Note that supposedly eMMC has design features that harden cards against these problems, but I&amp;#8217;ve never had the luxury of building such high volume systems that eMMC becomes an affordable option. Besides, I consider giving users the ability to remove the firmware card and reflash it with new code using a common USB adapter an important feature, at least in the systems I design. Mobile phone carriers would think differently.&lt;/p&gt;
&lt;p&gt;Of course, once a vendor is qualified, they can still send you bad lots.&lt;/p&gt;
&lt;p&gt;For each new lot I get, I take a few cards and burn them myself and check they boot the system before handing them over the factory. I also manually inspect the CID/CSD to ensure that the manufacturer&amp;#8217;s IDs haven&amp;#8217;t rotated and I inspect the laser markings to ensure that the lot number changes (it should &amp;#8212; if it doesn&amp;#8217;t then they are pulling something wonky on you). I also compare the circuit trace pattern on the back, visible through the reliefs in the solder resist coating. If you have easy access to an X-ray machine (some CMs have them on site) you can go so far as to compare the internal construction in the x-ray to see if the dies have been revved. If all these are the same you&amp;#8217;re probably good to go on the new lot, but I do pay attention to the failure rate data in the first couple hours of production just to make sure there isn&amp;#8217;t something to worry about.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s probably a bunch of other tests, techniques and good ideas that I should be aware of&amp;#8230;look forward to reading the comments!&lt;/p&gt;</description>
	<pubDate>Fri, 23 Mar 2012 08:05:45 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  THT components soldering</title>
	<guid>http://oggstreamer.wordpress.com/?p=324</guid>
	<link>http://oggstreamer.wordpress.com/2012/03/22/oggstreamer-tht-components-soldering/</link>
	<description>&lt;p&gt;I just soldered the remaining THT components for 3 OggStreamers, and I want to share the following picture with you:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/03/3er_nutzen_geloetet.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-325&quot; title=&quot;SONY DSC&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/03/3er_nutzen_geloetet.jpg?w=500&amp;h=365&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;365&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For those of you, who are unfamiliar with the terms THT and SMT. I want to briefly explain the difference: THT (through hole technology) are components that are mounted by sticking the lead through a drilled hole. Where as SMT (surface mount technology) components are placed on the surface of the PCB-Board. In this project the soldering of the SMT was done by a &lt;a href=&quot;http://www.youtube.com/watch?v=7BRVY6XNdM0&quot;&gt;Pick&amp;#8217;N'Place &lt;/a&gt;machine, and the THT components were soldered by hand (by me &lt;img src=&quot;http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/324/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/324/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=324&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 22 Mar 2012 15:20:47 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: China: Crowdsourced Tax Enforcement</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2269</guid>
	<link>http://www.bunniestudios.com/blog/?p=2269</link>
	<description>&lt;p&gt;Riddle me this: how does a government enforce tax collection in a cash-only society? Cash has the wonderful property of being anonymous, and therefore hard to track. As a result, cash businesses often under-report revenues, thereby dodging a portion of tax payments.&lt;/p&gt;
&lt;p&gt;China is primarily a cash-driven economy; few local places will accept payment cards of any kind (event rent payments are made in cash &amp;#8212; a big, fat stack of cash, as the largest bill in China has an equivalent value of about US$15). As such, China has a big challenge around collecting taxes.&lt;/p&gt;
&lt;p&gt;A solution to the problem is to go with a tax pre-payment system. At the beginning of every month, every business is required to pay an estimated tax. Proof of tax payment is issued in the form of &amp;#8220;fapiao&amp;#8221; (发票). They look a bit like the one below:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/blog/images/fapiao_used.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/fapiao_used_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This fapiao represents tax paid on 10元 (元 is like the $ symbol, and colloquially pronounced &amp;#8220;kuai&amp;#8221;), so the restaurant I got this from probably paid about 1-2 kuai for this fapiao. When you settle your bill in a restaurant, in addition to getting the itemized receipt, you are supposed to receive a stack of fapiao of equivalent face value. &lt;/p&gt;
&lt;p&gt;At the end of the month, the restaurant claims a tax refund on any remaining fapiao. As a result, fapiao are basically as good as money to the restaurant; hence, the fapiao are printed on watermarked paper with anti-counterfeiting measures, and employ serial numbers you can validate by sending an SMS to a government hotline. Also, restaurants have a strong incentive to omit a few fapiao from your stack, or completely forgo giving you the fapiao (they love it when foreigners dine, because they don&amp;#8217;t know about fapiao &amp;#8212; they get big business and they get the tax refund on it!). &lt;/p&gt;
&lt;p&gt;So, how does one enforce the distribution of fapiao to customers? China&amp;#8217;s clever solution is to make every fapiao a lottery ticket. If you look at the above photo carefully, you&amp;#8217;ll see two metallized patches on the fapiao. You can scratch these off, and underneath might reveal a prize! Of course, the one I have above is a losing ticket &amp;#8212; it just says &amp;#8220;thank you&amp;#8221;, with a serial number; but the prize can be thousands of kuai. &lt;/p&gt;
&lt;p&gt;And so, China has crowdsourced tax enforcement, by potentially rewarding citizens with a cash reward for asking for all of their tax pre-payment receipts, and using them up by scratching off the prize areas. The cost of this massive force multiplier is vanishingly small, as all they are offering is the &lt;em&gt;chance&lt;/em&gt; to win; I have only ever seen one winning ticket in the past couple of years, and it was for about 2 kuai. Still, it is a nice cultural touch to the end of a big meal, everyone sitting in a circle, scratching their fapiao to see if they won a prize for playing the part of a Chinese tax enforcement agent.&lt;/p&gt;
&lt;p&gt;Of course, with every new system, new problems come in. One is that the waitstaff might nick a couple of fapiao en route to the customer. So now, to get your fapiao you usually have to go in person to a special counter that manages its distribution. And, of course, the restaurant can offer a bribe in place of the fapiao. Just this past month when I was visiting Harbin, I went to collect my lottery tickets and the lady at the register glanced at my 80 kuai receipt and offered to pay me 4 kuai instead of giving me fapiao! I was a bit surprised at how brazen the offer was, but in retrospect, I clearly was not from around there, and thus unlikely to be an auditor.&lt;/p&gt;</description>
	<pubDate>Wed, 21 Mar 2012 19:48:34 +0000</pubDate>
</item>
<item>
	<title>GNSS-SDR: Successful usage cases of published projects</title>
	<guid>http://gnss-sdr.com/xml-rss2.php?itemid=71</guid>
	<link>http://gnss-sdr.com/xml-rss2.php?itemid=71</link>
	<description>Not long time ago I have noticed master's thesis in which materials from my blog are used :) Here is the link:  &lt;a href=&quot;https://dspace.ist.utl.pt/bitstream/2295/1066816/1/dissertacao.pdf&quot;&gt;https://dspace.ist.utl.pt/...&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://gnss-sdr.ru/media/1/20120321-master_thesis.jpg&quot; width=&quot;437&quot; height=&quot;619&quot; alt=&quot;master_thesis.jpg&quot; title=&quot;master_thesis.jpg&quot; /&gt;This is the second successful copy of front-end project published on my blog that I know about. In this work author didn't just copy the design but also tried to improve it and to simplify it. I should notice that it's pleasant to know that someone is interested in my project. It's even more pleasant to see how someone else improved it.&lt;br /&gt;
&lt;br /&gt;
PS I hope that in the future this note will grow bigger and bigger. :)</description>
	<pubDate>Wed, 21 Mar 2012 19:32:15 +0000</pubDate>
</item>
<item>
	<title>OggStreamer: #oggstreamer  12 pcs. SMT soildered</title>
	<guid>http://oggstreamer.wordpress.com/?p=317</guid>
	<link>http://oggstreamer.wordpress.com/2012/03/21/317/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/03/oggstreamer_smt.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-319&quot; title=&quot;oggstreamer_smt&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/03/oggstreamer_smt.jpg?w=500&amp;h=306&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;306&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yippie &amp;#8211; the kind and helpfull people at &lt;a href=&quot;http://www.abatec-ag.com/&quot;&gt;Abatec&lt;/a&gt; did the pick&amp;#8217;n'place of 12 OggStreamer-Boards. The next step is the assembling the devices, the mechanical works are already on their way &amp;#8211; so maybe next week their will be 12 fully assembled OggStreamer devices. I have to note that from this first batch only selected Beta-Testers will get a device.&lt;/p&gt;
&lt;p&gt;The software still needs some improvement, currently I am facing problems running the icecast2 Server under uclinux. icecast2 consists of 4 threads and only 2 of them start when I start the program. It could be a out-of-memory issue, but some how I doubt that. It definitely needs some remote- or printf-debugging to get the program running &amp;#8211; apart from that I am thinking of fine tuning the Input- and Output amplifiers. Maybe I will take away the output OPA, as the VS1063 already handles about the same current. The OPA was placed in the design, mainly for ESD-Protection, but I will experiment, whether the R-C combo is good enough.&lt;/p&gt;
&lt;p&gt;If anybody of you is interested in the obtaining a Bare-PCB of the current Rev1.0b design, there are five pieces, which I would give away for a small project donation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/03/oggstreamer_plain.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-318&quot; title=&quot;oggstreamer_plain&quot; src=&quot;http://oggstreamer.files.wordpress.com/2012/03/oggstreamer_plain.jpg?w=300&amp;h=199&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;199&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/317/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/317/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=317&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 21 Mar 2012 17:42:51 +0000</pubDate>
</item>
<item>
	<title>Crypto Stick: We are in Google Summer of Code 2012</title>
	<guid permalink="False">http://www.crypto-stick.com/68 at http://www.crypto-stick.com</guid>
	<link>http://www.crypto-stick.com/2012/we-are-in-gsoc</link>
	<description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;For the second time we are in Google Summer of Code (GSoC) as a subproject of &lt;a href=&quot;http://fossasia.org/blogs/fossasia-accepted-google-summer-code-organization&quot;&gt;FOSSASIA&lt;/a&gt;. This means students can get scholarship to code for the Crypto Stick. Here are a couple of &lt;a href=&quot;http://fossasia.org/gsoc-ideas&quot;&gt;ideas&lt;/a&gt; of interesting projects but you are free to suggest your own as well. If you are a student and want to join our project, register at &lt;a href=&quot;http://www.google-melange.com/gsoc/org/show/google/gsoc2012/fossasia&quot;&gt;Google Melange and apply&lt;/a&gt; for FOSSASIA.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 21 Mar 2012 14:04:13 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: The first colord-kde release!</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=578</guid>
	<link>http://blogs.gnome.org/hughsie/2012/03/21/the-first-colord-kde-release/</link>
	<description>&lt;p&gt;Great news this morning when I saw that Daniel &lt;a href=&quot;https://dantti.wordpress.com/2012/03/21/colord-kde-0-1-0-released/&quot;&gt;had released the first version of colord-kde&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dantti.wordpress.com/2012/03/21/colord-kde-0-1-0-released/&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;https://dantti.files.wordpress.com/2012/03/colord-kde6.png&quot; alt=&quot;&quot; width=&quot;879&quot; height=&quot;640&quot; /&gt;&lt;/a&gt;If you&amp;#8217;re a KDE dude, please try out the tarball and let us know what you think!&lt;/p&gt;</description>
	<pubDate>Wed, 21 Mar 2012 11:11:15 +0000</pubDate>
</item>
<item>
	<title>LZX Industries: LZX Industries at Moduluxxx/Dorkbot Sydney</title>
	<guid permalink="False">http://www.lzxindustries.net/?p=1019</guid>
	<link>http://www.lzxindustries.net/2012/03/lzx-industries-at-moduluxxxdorkbot-sydney/</link>
	<description>&lt;p&gt;Moduluxxx is a modular synthesis mini-festival being held in Sydney, Australia on April 27th and 28th.  Ed Leckie from LZX Industries will be presenting our modules as part of its Dorkbot Sydney event on 28th April, 3pm &amp;#8211; 6pm at &lt;a href=&quot;http://serialspace.org/&quot;&gt;Serial Space&lt;/a&gt;.  We&amp;#8217;re very excited to be part of this fantastic event!  You can discover more details about the event at their website, &lt;a href=&quot;https://sites.google.com/site/moduluxxx&quot;&gt;https://sites.google.com/site/moduluxxx&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;https://sites.google.com/site/moduluxxx/&quot;&gt;&lt;img src=&quot;http://www.lzxindustries.net/wp-content/uploads/2012/03/customLogo-300x75.jpg&quot; alt=&quot;&quot; title=&quot;Moduluxxx&quot; width=&quot;300&quot; height=&quot;75&quot; class=&quot;alignnone size-medium wp-image-1020&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 20 Mar 2012 14:51:37 +0000</pubDate>
</item>
<item>
	<title>Zedstar: An XML Compression Scheme</title>
	<guid>http://zedstar.org/blog/?p=251</guid>
	<link>http://zedstar.org/blog/2012/03/16/an-xml-compression-scheme/</link>
	<description>&lt;p&gt;There are different ways of compressing XML but I like the idea of doing it with a schema. Using a schema you always have the advantage of validation but you can also produce very efficient encoding of the XML data. I have been working on an XML layer for &lt;a href=&quot;http://zedstar.org/packedobjects/&quot;&gt;packedobjects&lt;/a&gt; to allow compression of XML data. Currently it takes &lt;a href=&quot;http://gitorious.org/packedobjects/packedobjects/blobs/xml/examples/c-xml/data.xml&quot;&gt;XML data&lt;/a&gt; with a &lt;a href=&quot;http://gitorious.org/packedobjects/packedobjects/blobs/xml/examples/c-xml/schema.scm&quot;&gt;schema written in packedobjects&lt;/a&gt; and produces binary data. This is very similar to &lt;a href=&quot;http://www.itu.int/ITU-T/asn1/xml/xer.htm&quot;&gt;XER&lt;/a&gt; but everything happens at runtime. This means I could support a subset of XML Schema and dynamically map to the packedobjects schema. Doing this the end user will only see an XML world.  Everything is handled by embedding &lt;a href=&quot;http://www.gnu.org/software/guile/&quot;&gt;Scheme&lt;/a&gt; to take care of the mapping between XML and s-expressions. &lt;a href=&quot;http://gitorious.org/packedobjects/packedobjects/blobs/xml/examples/c-xml/main.c&quot;&gt;From C&lt;/a&gt; you will not see this but you still have the advantage of working directly within a REPL to design your schema if you want. The Scheme layer could also be extended to handle other data formats.&lt;/p&gt;
&lt;p&gt;Running the &lt;a href=&quot;http://gitorious.org/packedobjects/packedobjects/blobs/xml/examples/c-xml/main.c&quot;&gt;example&lt;/a&gt; will show that the packedobjects compression is about 3 times smaller than gzip based compression. In similar tests I have seen similar gains over encoding with &lt;a href=&quot;http://code.google.com/p/protobuf/&quot;&gt;Protocol Buffers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<pubDate>Mon, 19 Mar 2012 07:28:23 +0000</pubDate>
</item>
<item>
	<title>OsmoSDR: Introducing RTL-SDR</title>
	<guid permalink="False">http://sdr.osmocom.org/trac/blog/rtl-sdr-introduction</guid>
	<link>http://sdr.osmocom.org/trac/blog/rtl-sdr-introduction</link>
	<description>&lt;p&gt;
While the &lt;a class=&quot;wiki&quot; href=&quot;http://sdr.osmocom.org/trac/wiki/Hardware&quot;&gt;OsmoSDR&lt;/a&gt; is still not available, some Osmocom team members (notably Steve Markgraf) have been hacking away on an alternative least-cost solution: &lt;a class=&quot;wiki&quot; href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot;&gt;rtl-sdr&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So what is &lt;a class=&quot;wiki&quot; href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot;&gt;rtl-sdr&lt;/a&gt;? It is a creative form of using consumer-grade DVB-T USB receivers, turning them into fully-fledged software defined radios.
&lt;/p&gt;
&lt;p&gt;
Those DVB-T receivers supported by &lt;a class=&quot;wiki&quot; href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot;&gt;rtl-sdr&lt;/a&gt; are based on the Realtek RTL2832U chipset plus a tuner IC like the Elonics E4000.
&lt;/p&gt;
&lt;p&gt;
The RTL2832U has some undocumented commands/registers, by which it can be placed into a mode where it simply forwards the unprocessed raw baseband samples (up to 2.8 MS/s 8-bit I+Q) via high-speed USB into the PC, where they are routed into gnuradio.
&lt;/p&gt;
&lt;p&gt;
At a street price of about USD 20 to USD 25, they are undoubtedly the most capable low-cost SDR hardware that can be bought.  So now there is really no more excuse for anyone to not learn gnuradio.  You don't have to buy a USRP, not even a FCDP or an OsmoSDR: A USD 20 device is all that's needed for receiving signals like GSM, GMR, DECT, TETRA, APCO25 and many others.
&lt;/p&gt;</description>
	<pubDate>Sun, 18 Mar 2012 18:00:20 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Using a cheap (USD 20) DVB-T USB stick as SDR receiver for (not only) gnuradio</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/18#20120318-rtl_sdr</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/18#20120318-rtl_sdr</link>
	<description>&lt;p&gt;
Fellow Osmocom hacker Steve Markgraf has been working on what now seems
to be the cheapest way to receive real-world radio signals for PC-based
SDR like gnuradio: &lt;a href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot;&gt;rtl-sdr&lt;/a&gt;.  RTL refers
to the RTL2832U chipset frequently used in such devices.  It can be used
to obtain 2.8 Ms/s of 8-bit I+Q samples.
&lt;/p&gt;
&lt;p&gt;
Below is a picture (courtesy of Steve) how the hardware looks like:
&lt;center&gt;
&lt;img src=&quot;http://sdr.osmocom.org/trac/raw-attachment/wiki/rtl-sdr/ezcap_top.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;</description>
	<pubDate>Sun, 18 Mar 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Antitronics: Let’s centralize the knitting machine technical discussions</title>
	<guid permalink="False">http://www.antitronics.com/?p=226</guid>
	<link>http://www.antitronics.com/?p=226</link>
	<description>&lt;p&gt;There are more and more people diving into hacking on knitting machines, which is really great!&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s getting to the point where there are too many people to thank for carrying this forward, you know who you are.&lt;/p&gt;
&lt;p&gt;But, the increasing popularity has  led to some problems and frustrations for people.&lt;/p&gt;
&lt;p&gt;Recently I discovered an old thread on a Ravelry forum about the PDDemulate.py disk emulator that I wrote. People were frustrated by problems they were having. By the time I discovered the thread, I had already been contacted by one of the people with the problem, and I discovered a bug in the emulator. It&amp;#8217;s now fixed in the repository. But months had gone by between the forum postings and email contact. The forum thread is still out of date, because a solution has been found but that&amp;#8217;s not indicated.&lt;/p&gt;
&lt;p&gt;I try to be responsive to people when they have problems with the code &amp;#8211; I help when I can and try to be up front if I&amp;#8217;m too busy to dive in deeply or if the problems are with an environment I don&amp;#8217;t have (I only have a KH-930, and only run the emulator under Linux). But I don&amp;#8217;t have time to find and follow every forum where this is being discussed.&lt;/p&gt;
&lt;p&gt;Through email from people using the software, I&amp;#8217;m becoming aware of more people who are working on this but unaware of others doing the same thing. It feels like there&amp;#8217;s a larger community forming around this, but it&amp;#8217;s fragmented.&lt;/p&gt;
&lt;p&gt;Therefore, I&amp;#8217;d like to respectfully suggest that we centralize the resources used for these projects, so that we can help each other, and keep a record in one place of the existing knowledge. Other forums are great, and I know there are communities with forums which reach and help the people who participate in them. Those should continue of course, but for people with deeper interest it may be appropriate to point them to this blog entry.&lt;/p&gt;
&lt;p&gt;The definitive repository for the knitting machine disk emulator and related files is here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/adafruit/knitting_machine&quot; title=&quot;Knitting Machine git repository&quot;&gt;Adafruit knitting machine rep on Github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;d like to fix or improve the code, or add information about different models of knitting machine, please fork that repo and then make pull requests to have your changes incorporated.&lt;/p&gt;
&lt;p&gt;Technical information about connecting to Brother knitting machines and about the KH-930 is here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.antitronics.com/wiki/index.php?title=Electroknit_Technical_Information&quot; title=&quot;Antitronics Knitting Machine Wiki Page&quot;&gt;Antitronics Knitting Machine Wiki Page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Discussion about the software and reverse engineering of the data formats is taking place here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://groups.yahoo.com/group/kminternals/&quot; title=&quot;Knitting machine internals group&quot;&gt;Yahoo kminternals group&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Yahoo group and git repository are the only places that I&amp;#8217;ll regularly follow, and try to respond to questions.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll still respond to email, my email address is in the code in the repository. But I&amp;#8217;ll probably ask you to go to the Yahoo group. Still, if you&amp;#8217;re self conscious about the question or whatever, you can use email.&lt;/p&gt;
&lt;p&gt;Now, let&amp;#8217;s all make great things!&lt;/p&gt;</description>
	<pubDate>Fri, 16 Mar 2012 18:59:56 +0000</pubDate>
</item>
<item>
	<title>Transmaterial: Mercury Glass</title>
	<guid permalink="False">http://transmaterial.net/?p=2006</guid>
	<link>http://transmaterial.net/index.php/2012/03/16/mercury-glass/</link>
	<description>&lt;p&gt;Silvered glass “Mercury Glass” was invented in the nineteenth century as a decorative substitute for more expensive silver tableware. Where traditional Mercury Glass has a thin glass wall, however, Suzan Etkin Enterprises creates hand blown silvered glass with thick, undulating walls and deposits a film of pure silver into the vessel interior. The thick, undulating wall gives the glass the appearance of liquid metal, transforming a 19th century technology into a 21st century material with unmatched light reflection and refraction properties.&lt;/p&gt;
&lt;p&gt;Suzan Etkin engineers and tests each project for safety. Overhead glass vessels can be filled with anti-shatter foam or resin, and Mercury glass elements can assume structural properties when reinforced with steel embedded in structural foam or resin.&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.suzanetkin.com&quot;&gt;Suzan Etkin Enterprises&lt;/a&gt;, New York, NY, USA.&lt;br /&gt;
Find more information in &lt;a href=&quot;http://www.amazon.com/gp/product/1568988931?ie=UTF8&amp;tag=transmaterial-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1568988931&quot;&gt;Transmaterial 3&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 16 Mar 2012 14:00:49 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: Zif wants new blood</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=576</guid>
	<link>http://blogs.gnome.org/hughsie/2012/03/16/zif-wants-new-blood/</link>
	<description>&lt;p&gt;A few years ago I wrote &lt;a href=&quot;http://people.freedesktop.org/~hughsient/zif/&quot;&gt;Zif&lt;/a&gt;, which is basically a package tool that works with librpm and the Fedora metadata. Zif is very much of a side project for me, mainly written out of curiosity and to try and make things work a bit faster just when using PackageKit. It seems most people try to write a package manager at some stage of their open source career. &lt;img src=&quot;http://blogs.gnome.org/hughsie/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.freedesktop.org/~hughsient/zif/&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://people.freedesktop.org/~hughsient/zif/img/logo.png&quot; alt=&quot;&quot; width=&quot;256&quot; height=&quot;256&quot; /&gt;&lt;/a&gt;&lt;em&gt;So, fast-forward a few years&lt;/em&gt;. Quite a few people are using Zif now, and there are even a few people writing new code and fixing bugs. I&amp;#8217;m wondering if anybody new to programming or new to open source wants to help me improve Zif, and to try to fix little-but-important self contained bugs &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=803975&quot;&gt;like this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyway, if you&amp;#8217;re interested, let me know. Thanks.&lt;/p&gt;</description>
	<pubDate>Fri, 16 Mar 2012 08:57:39 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Osmocom GPS timing source with u-blox LEA6-T</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/16#20120316-osmo_lea6t_gps_timing</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/16#20120316-osmo_lea6t_gps_timing</link>
	<description>&lt;p&gt;
Recently we have been looking for an inexpensive way to generate a
high-accuracy clock source for E1 lines, as it is required by a number
of classic BTSs that don't have a sufficiently accurate OCXO built-in.
&lt;/p&gt;
&lt;p&gt;
Luckily, the Digium E1 cards like TE-410P have a timing connector, to
which an 8.192 MHz signal can be injected.  Unfortunately, there don't
seem to be any OCXOs around for that frequency.  That's where the &lt;a href=&quot;http://www.u-blox.com/en/gps-modules/u-blox-6-timing-module/lea-6t.html&quot;&gt;u-blox
LEA-6T&lt;/a&gt; comes into play: It has a configurable TIMEPULSE2 output that
can generate any frequency up to 10 MHz.  We use this in our board to
generate 8.192 Mhz and want to feed that into the Digium card.
&lt;/p&gt;
&lt;p&gt;
So all we had to do is build a small board that contains the module and
connector for antenna input, clock output and the obligatory 2.5mm
stereo jack for the OsmocomBB-style UART:
&lt;center&gt;
&lt;img src=&quot;http://people.osmocom.org/laforge/photos/osmo-lea6t_small.jpg&quot; width=&quot;66%&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
Thanks to Sylvain for doing the schematics/PCB design, and thanks to
Pablo for writing the code to configurea and activate the 8.192MHz
output.
&lt;/p&gt;
&lt;p&gt;
Once the design is verified, the schematics + gerber will be available,
as well as board from the sysmocom webshop.
&lt;/p&gt;</description>
	<pubDate>Fri, 16 Mar 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Tuxbrain: Realidad Aumentada + processing 1.5 + Ubuntu 10.04</title>
	<guid permalink="False">http://www.tuxbrain.com/211 at http://www.tuxbrain.com</guid>
	<link>http://www.tuxbrain.com/en/realidad-aumentada-processing-15-ubuntu-1004</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://www.tuxbrain.com/img/captura_ar.jpg&quot; border=&quot;0&quot; /&gt;&lt;/center&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;Estos días nos ha entrado el gusanillo de trastear con Processing y la Realidad Aumentada (AR) y la verdad que le hemos tenido que dar más de una vuelta al tema ya que los tutoriales que hemos encontrado por la red utilizan normalmente versiones de Processing anteriores y la instalación es algo diferente.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Bueno, aquí va este minitutorial de nuestra ficticia serie &amp;quot;Notepartaslacrisma&amp;quot; para intentar allanaros el camino.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tuxbrain.com/en/realidad-aumentada-processing-15-ubuntu-1004&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 15 Mar 2012 17:00:06 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Safecast Geiger Counter Reference Design</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2218</guid>
	<link>http://www.bunniestudios.com/blog/?p=2218</link>
	<description>&lt;p&gt;This past weekend marked the anniversary of the Tohoku-Oki earthquake that devastated Japan. I had not felt my blood so cold since I watched the twin towers fall almost a decade earlier. I still vividly remember the twisting knots I felt in my stomach as I watched the footage of a tsunami wiping out huge swathes of Japanese countryside. In a matter of hours, entire cities were washed off the map, leaving an eerie post-apocalyptic landscape of a few survivors weeping amongst twisted wreckage. Then, in the ensuing days, Fukushima Daiichi melted down, leaving in its wake one of the worst on-going radiation contamination crisis since Chernobyl. &lt;/p&gt;
&lt;p&gt;I have good friends in Japan, and I visit often. I wanted to do something to help, but I didn&amp;#8217;t know what I could do. I was connected by &lt;a href=&quot;http://twitter.com/#!/joi&quot;&gt;Joi Ito&lt;/a&gt; to &lt;a href=&quot;http://blog.safecast.org/&quot;&gt;Safecast&lt;/a&gt;, and I joined the effort to build an open sensor network that could aggregate trustable, source-neutral radiation monitoring data. Safecast itself has many talented and hard working volunteers who have done a remarkable job of achieving their goals by instrumenting Japan with radiation monitors and aggregating data through &lt;a href=&quot;http://blog.safecast.org/2011/05/bgeigie-ninja-a-new-and-improved-bgeigie/photo-may-11-5-34-18-pm/&quot;&gt;cleverly designed and rapidly deployable&lt;/a&gt; mobile monitoring capabilities.&lt;/p&gt;
&lt;p&gt;I decided my tiny contribution to the effort would be to design a radiation monitor suitable for everyday civilian use. This is a preventative/preparedness measure, addressing the long-term issue of empowering a civilian population with few available options for power generation to self-monitor their environment. The problem with the current crop of radiation monitors is that they are basically laboratory instruments: accurate &amp;#038; reliable, but bulky, expensive, and difficult to use, requiring a degree in nuclear physics to understand exactly what the readings meant. Another problem with crises like these is that while radiation monitoring is important, it&amp;#8217;s something that is typically neglected by the civilian population until it is too late. &lt;/p&gt;
&lt;p&gt;Therefore, the challenge set out before me was to design a new Geiger counter that was not only more intuitive and easier to use than the current crop, but was also sufficiently stylish so that civilians would feel natural carrying it around on a daily basis. Furthermore, it had to provide extensive logging capabilities, as radiation monitors are typically not turned &amp;#8220;on&amp;#8221; until after the fact. It also had to operate effectively in catastrophic conditions, i.e. in scenarios where internet and power have been cut for days. Finally, the data collected by the instrument had to pass any scrutiny thrown its way, and the collected data had to be traceable to a given instrument so that if its calibration is incorrect, its data can be selectively excluded without poisoning the entire dataset. Radiation monitoring is a politically sensitive subject, and certain parties have interests to manipulate the data one way or the other to promote their views with the public. Ad-hoc data collection networks suffer from the possibility that their efforts can be discredited by institutions with big budgets who find that the readings represent an inconvenient truth.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Radiation sensing primer&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Radiation measurements are subtle, partly because radiation comes in many flavors. Many Geiger counters can only efficiently detect the most energetic kind of radiation, gamma radiation. This includes the Geiger counters frequently favored by government and regulatory agencies. However, there are weaker forms of radiation (alpha and beta) which often go overlooked that can also pose a human health risk, particularly if they are ingested or inhaled. These weaker forms of radiation are also by-products of a nuclear meltdown, and because they come from different isotopes they have different patterns of distribution and absorption in the environment. &lt;/p&gt;
&lt;p&gt;Because of the diversity of radiation sources and their varying biological impact, it is very hard to determine if an environment is safe in the face of an elevated Geiger counter reading. However, improved historical and spatial distribution records of background radiation measurements can help identify when there is a spike in radiation, which is a clearer cause for concern. &lt;/p&gt;
&lt;p&gt;In the interest of creating a complete solution for public health needs, a core design requirement of the new Geiger counter is to incorporate a sensor that could detect all three forms of radiation. This type of sensor is a &amp;#8220;pancake&amp;#8221; style Geiger tube, which has a large mica window that enables sensitivity to all three kinds of radiation. The ultimate selection of the &lt;a href=&quot;http://www.lndinc.com/products/17/&quot;&gt;LND7317 pancake tube&lt;/a&gt; plus iRover HV radiation sensing core influenced every aspect of the industrial design (ID) and internal electronics.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;There and Back Again: a Hacker&amp;#8217;s Tale&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I thought it would be interesting to share not only the final design, but also the intermediate designs that were scrapped en route to achieving a final design. Design is an iterative process, where one has to make difficult choices about what to include and more significantly what to leave out. It&amp;#8217;s extremely rare to see what got left on the cutting room floor, but I saved my notes along the way so I could share them with you now.  &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Initial Design Sketch&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/safecast_concept1.png&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/safecast/safecast_concept1_sm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Above is a rendering of the first design sketch, made back when Safecast had the name of &amp;#8220;RDTN&amp;#8221;. I do all my industrial design using Solidworks, a survival skill I picked up during my tenure at chumby designing consumer electronics. I came up with this in the first couple of weeks after the disaster. This design incorporated a &lt;a href=&quot;http://www.sparkfun.com/products/8875&quot;&gt;low-sensitivity tube from Sparkfun&lt;/a&gt;, because at that time I did not understand the importance of using a pancake tube. &lt;/p&gt;
&lt;p&gt;The biggest problem I wanted to solve with this design is user abandonment. Radiation leaks are thankfully rare events. However, this also means that when an event happens, there is typically a lack of pre-crisis background data against which to compare the post-crisis readings. Therefore, I wanted to build a device that people would be compelled to carry around every day and use for years at a time. &lt;/p&gt;
&lt;p&gt;My thought is that the average consumer would have a hard time justifying carrying around yet another gadget in their pockets or purses for the sole purpose of measuring radiation. Within weeks or even days of getting nothing but &amp;#8220;safe&amp;#8221; readings, the Geiger counter would be forgotten and left at home to languish until after the next crisis. &lt;/p&gt;
&lt;p&gt;One way to compel users to carry around a Geiger counter is to put it into something they already carry all the time. While it would be tough to convince a smartphone vendor to incorporate a very expensive and bulky Geiger tube, many smartphone users also carry around a spare battery pack, which they use almost every day. So, I thought it might be a good idea to trojan horse a Geiger tube into such a battery pack. &lt;/p&gt;
&lt;p&gt;The sketch above demonstrates such an incarnation. This design is basically a battery pack that can charge a smartphone, but also incorporates a Geiger tube, an LED flashlight (handy in an emergency when there is no power), and some logging circuitry. The Geiger counter would upload its log data to the Safecast network whenever a user plugged in to charge the phone.  &lt;/p&gt;
&lt;p&gt;The design itself is minimalist, with a shape inspired by the steam cooling towers frequently used to iconify nuclear power in western media. The shape was chosen to remind us that sometimes we have no choice but to harvest the power of the atom, and a well-equipped and informed civilian data collection network is a key factor in trusting the safety of our power sources.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;A second iteration&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The first sketch had to be abandoned, primarily because the sensor it was designed around was too small to effectively measure alpha and beta radiation. After Safecast settled on the LND7317 Geiger tube as the standard reference sensor, I started re-designing the sensor around the new tube.&lt;/p&gt;
&lt;p&gt;The problem with the larger, more sensitive sensor is that it was big – over a half-inch thick, and a couple inches in diameter. Below is a sketch of a design study aimed at creating the smallest possible Geiger counter that could also incorporate the large pancake tube. It&amp;#8217;s about the size of a hockey puck, but a bit thicker. In order to keep the size and weight of the Geiger counter reasonable, I had to abandon any notion of a dual-purpose as a battery pack. Instead, I had to rely on &amp;#8220;sex appeal&amp;#8221; alone to compel users to carry the device around. I wanted to make the Geiger counter something unique and aesthetically pleasing, something you would enjoy carrying around frequently. I started from a minimalist design – the puck – and endeavored to design-out any outward indicators or displays. Hence in this sketch, the radiation measurement is provided by a set of super-high efficiency 7-segment LEDs that could shine the numbers through a seemingly opaque white shell. The design&amp;#8217;s shape and feel was meant to be somewhere in between &lt;a href=&quot;http://disney.wikia.com/wiki/EVE&quot;&gt;&amp;#8220;Eve&amp;#8221;&lt;/a&gt; from WALL-E and an egg. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://bunniestudios.com/safecast/safecast_puck3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, this design, too, had to be abandoned because at the time when I was drawing up the sketches, I didn&amp;#8217;t have detailed mechanical drawings of the LND7317 tube. When I was finally given a sample of the tube and drawings for it, I discovered there was not only the puck-like body, but also a nearly 1&amp;#8243; long protrusion for the cathode and anode. This completely destroyed any notion of building a puck-like sensor. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Closing in on the final design&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Below is a rendering of an attempt to accommodate the accurate CAD model for the LND7317 into an ID that stayed faithful to the Eve/egg design inspirations. The puck was elongated to the minimum dimensions required to house all the internal components. Again, the hidden 7-segment LED display motif was employed. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/safecast_7seg.png&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/safecast/safecast_7seg_sm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The final design&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;After much discussion and review with the Safecast team, we decided that a key component of the user experience should be a graphic display, instead of a 7-segment LED readout. Therefore, a 128&amp;#215;128 pixel OLED panel was incorporated into the design. The OLED panel would be mounted behind a continuous outer shell, so there would be no seams or outward design features resulting from the introduction of the OLED. However, as the OLED is not bright enough to shine through an opaque white plastic exterior shell, a clear window had to be provided for the OLED. As a result, the naturally black color of the OLED caused the preferred color scheme of the exterior case to go from light colors to dark colors. User interaction would occur through a captouch button array hidden behind the same shell, with perhaps silkscreen outlines to provide hints as to where the buttons were underneath the shell. I had originally resisted the idea of using the OLED because it&amp;#8217;s very expensive, but once I saw how much an LND7317 tube would cost in volume, I realized that it would be silly to not add a premium feature like an OLED. Due to the sensor alone, the retail price of the device would be in the hundreds of dollars; so adding an OLED display would help make the device &amp;#8220;feel&amp;#8221; a lot more valuable than a 7-segment LED display, even though the OLED&amp;#8217;s presence is largely irrelevant to the core function of the apparatus. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/safecast_final_render.png&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/safecast/safecast_final_render_sm.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The design also lacks any integrated radio connection. A popular request for the design was the incorporation of a bluetooth or zigbee style radio; however, a combination of a very stringent battery life goal (several months of standby time) and low manufacturing volumes meant that it was impractical to incorporate a radio into the device. It&amp;#8217;s a slippery slope to start adding features like GPS and bluetooth – to add those features, you&amp;#8217;d need to upgrade the microcontroller, at which point you&amp;#8217;re basically building a very expensive, heavy and large cell phone with a geiger counter in it. Furthermore, the entire development effort was being done by an unpaid volunteer operating on a shoestring budget – Safecast isn&amp;#8217;t Apple. So, rather than build a buggy cell phone that can sense radiation, I&amp;#8217;d rather build an outstanding Geiger counter; hence the decision to focus efforts and resources on core functionality, with the sole allowance being the inclusion of the OLED + captouch array for improved UI. This is a controversial design decision and I fully expect to be chastised for it.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Prototypes&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Once the design was finished, the next step was to build prototypes. This is the really fun part, where you turn your ideas into something you can touch and hold. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/safecast_proto.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/safecast/safecast_proto_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/safecast_proto_side.JPG&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/safecast/safecast_proto_side_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The prototypes are made out of CNC-machined ABS (even the clear part!). The cosmetic moldings that go over the connectors were also built and they do fit, but because of their expense and fragility (CNC milled ABS lacks the robustness of injection-molded ABS), I try not to install them, even for glamor shots. To wit, the whole thing was done on a shoestring budget, as Safecast is a non-profit; two full prototypes were built, including PCB fab, assembly, and CNC milling for one and a half revisions of the cases, for a bit under $3k total. &lt;/p&gt;
&lt;p&gt;An important point readers should note about this design is that I&amp;#8217;m &lt;em&gt;not&lt;/em&gt; manufacturing this Geiger counter reference design. My contribution is limited to design IP only. Practically speaking, I&amp;#8217;d make a terrible Geiger counter supplier, because I don&amp;#8217;t have the credibility or history in the industry. Instead, the design has been donated to the community, thereby enabling &lt;a href=&quot;http://medcom.com/&quot;&gt;International Medcom&lt;/a&gt;, a business that has spent decades specialized in producing high-quality Geiger counters, to bring this to the market. If you&amp;#8217;re interested in getting one of these, keep an eye on their website.&lt;/p&gt;
&lt;p&gt;The final design features include:&lt;/p&gt;
&lt;li&gt;LND7317 pancake tube + iRover HV board
&lt;/li&gt;
&lt;li&gt;STM32-based microcontroller; sufficient CPU power to digitally sign logs with a unique private key as a non-repudiation/anti-tamper measure
&lt;/li&gt;
&lt;li&gt;450 mAh Li-poly battery
&lt;/li&gt;
&lt;li&gt;3-axis accelerometer so sensor orientation can be recorded
&lt;/li&gt;
&lt;li&gt;128&amp;#215;128 color OLED display
&lt;/li&gt;
&lt;li&gt;6-button captouch array
&lt;/li&gt;
&lt;li&gt;&amp;#8220;hold&amp;#8221; button on the back to lock the captouch array and prevent false triggering of the power-hungry UI elements
&lt;/li&gt;
&lt;li&gt;lanyard attachment (important for the Japanese market)
&lt;/li&gt;
&lt;li&gt;microUSB port for charging and data upload interface, featuring an FTDI-based serial chipset capable of loading firmware into the microcontroller
&lt;/li&gt;
&lt;li&gt;3.5mm jack capable of bidirectional audio
&lt;/li&gt;
&lt;li&gt;embedded hall-effect sensor (to detect attachments, e.g. for occluding alpha or beta radiation)
&lt;/li&gt;
&lt;li&gt;audible event notification via piezo buzzer
&lt;/li&gt;
&lt;li&gt;low-power visual event notification via conventional LED
&lt;/li&gt;
&lt;li&gt;real-time clock
&lt;/li&gt;
&lt;li&gt;a high-quality entropy source ;-)
&lt;/li&gt;
&lt;p&gt;I am a proponent of open source hardware; so here&amp;#8217;s the source files for my design! All of the following source files are licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot;&gt;CC3.0-BY-SA&lt;/a&gt; with my &lt;a href=&quot;http://bunniestudios.com/safecast/xl_crosslicense.pdf&quot;&gt;XL1.0 automatic patent cross-license&lt;/a&gt; rider (CC doesn&amp;#8217;t address patents, so I invented my own rider that piggybacks on CC to ensure that any patents that may arise from this or its derivatives are automatically cross-licensed to the community). &lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/elec/interface_electronics/altium_interface_electronics.zip&quot;&gt;Altium design source&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/elec/interface_electronics/safecast_ie3.pdf&quot;&gt;schematics&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/elec/interface_electronics/gerbers_safecast_ie.zip&quot;&gt;gerbers&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/elec/interface_electronics/safecast_ie3_bom.xls&quot;&gt;BOM&lt;/a&gt; for the mainboard electronics
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/elec/button_board/button_board.zip&quot;&gt;Altium design source&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/elec/button_board/safecast_buttonboard1.pdf&quot;&gt;schematics&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/elec/button_board/gerbers_button_board.zip&quot;&gt;gerbers&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/elec/button_board/safecast_bb1_bom.xls&quot;&gt;BOM&lt;/a&gt; for the buttonboard electronics
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bunniestudios.com/safecast/mech/safecast2.SLDPRT&quot;&gt;Solidworks design source&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/mech/safecast2.IGS&quot;&gt;IGES&lt;/a&gt; / &lt;a href=&quot;http://bunniestudios.com/safecast/mech/safecast2.STEP&quot;&gt;STEP&lt;/a&gt; for the industrial design
&lt;/li&gt;
&lt;li&gt;For those who don&amp;#8217;t have 3D design tools, you can install &lt;a href=&quot;http://www.solidworks.com/sw/products/free-cad-software-downloads.htm&quot;&gt;Solidwork&amp;#8217;s free e-drawings viewer&lt;/a&gt; and look at the &lt;a href=&quot;http://bunniestudios.com/safecast/mech/test_assy3.easm&quot;&gt;easm&lt;/a&gt; file, or if you run windows you can download &lt;a href=&quot;http://bunniestudios.com/safecast/mech/test_assy3.exe&quot;&gt;this executable&lt;/a&gt; and just run it&lt;/li&gt;
&lt;p&gt;Of course, a hardware prototype is only the beginning – there&amp;#8217;s a huge amount of effort remaining on the software. To bootstrap things, xobs and I have coded up a core demonstration system based on &lt;a href=&quot;http://leaflabs.com/&quot;&gt;Leaf Lab&amp;#8217;s&lt;/a&gt; libmaple. You can &lt;a href=&quot;https://github.com/bunnie/libmaple&quot;&gt;peruse the code&lt;/a&gt; and/or download it at github. Basically, this demo system provides an architecture to easily register drivers and facilitate power management. The validation demo shown running on the prototype photos above indicate that all of the hardware features work. But, the software has yet to have a layer of polish and shine added in terms of the UI and power management optimization. &lt;/p&gt;
&lt;p&gt;A key design goal electronics&amp;#8217; system design was to enable community participation. As such, I eschewed the use of JTAG adapters during development. Instead, hooks were provided in the hardware to enable the integrated FTDI USB-serial controller to flash the microcontroller&amp;#8217;s firmware via a &amp;#8220;bitbang&amp;#8221; interface. As a result, anyone who has an interest in developing for this Geiger counter can simply plug it into their laptop&amp;#8217;s USB port and start coding without any need for proprietary JTAG adapters or proprietary software to purchase, as the entire developer&amp;#8217;s toolchain is available in source form. We were able to code up and test the entire functionality demo (including sleep/stop/standby power management) using nothing more than the USB-serial capability built into the design. As I write this, I realize I had neglected to upload the firmware loader to github, so &lt;a href=&quot;http://bunniestudios.com/safecast/fwload.tar.gz&quot;&gt;here&amp;#8217;s a tarball&lt;/a&gt; for it; currently, the loader only runs under Linux and OSX. &lt;/p&gt;
&lt;p&gt;I think there&amp;#8217;s some fun things the community could do with the UI on a Geiger counter. At the very least, the microcontroller has sufficient power to play Tetris. Another whimsical thought was to build a subsystem that would play music out the audio port based upon the current radiation level &amp;#8212; calm, ambient music in low-radiation environments escalating to death metal and the sound track of &amp;#8220;Run Lola Run&amp;#8221; at dangerous levels. &lt;/p&gt;
&lt;p&gt;So that&amp;#8217;s it! I hope that the design ultimately helps the people of Japan – or people anywhere in the world where radiation contamination may be a concern – to feel more empowered and in control of their situation.&lt;/p&gt;</description>
	<pubDate>Wed, 14 Mar 2012 20:08:44 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Mantra - My Panda Shall Fly + Benjamin Jackson</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-5539782500138353450</guid>
	<link>http://videocircuits.blogspot.com/2012/03/mantra-my-panda-shall-fly-benjamin.html</link>
	<description>&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;New video I worked on&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Music By My Panda Shall Fly + Benjamin Jackson&lt;br /&gt;&lt;br /&gt;Directed by Andrew Corrigan&lt;br /&gt;&lt;br /&gt;Andrew Corrigan - D.O.P&lt;br /&gt;Chris King - Animation&lt;br /&gt;nickin - Animation and Technical Advisor&lt;br /&gt;&lt;br /&gt;Natalie Tabony - Choreographer&lt;br /&gt;Rachel Ensor - Dancer&lt;br /&gt;Stuart Winter - Dancer&lt;br /&gt;&lt;br /&gt;Jerry Fleming - Sound Technician&lt;br /&gt;Stuart Pardoe - AV Technician&lt;br /&gt;&lt;br /&gt;Special thanks to: Sam Taylor, Tom Loughlin, Jowey Roden&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-5539782500138353450?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 14 Mar 2012 17:30:46 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Spiral 1, Interactive Electronic Visualization Event 1</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-859068147058790210</guid>
	<link>http://videocircuits.blogspot.com/2012/03/spiral-1-interactive-electronic.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a document of the performance of spiral 1 performed live at the Interactive Electronic Visualization Event 1 in 1975&lt;br /&gt;Performance by:&lt;br /&gt;Tom DeFanti, Digital computer&lt;br /&gt;Dan Sandin, Analoge Image Processor&lt;br /&gt;Bob Snyder , Fender Rhodes piano&lt;br /&gt;&lt;br /&gt;Excerpts from video document &quot;EVE Aura&quot; by:&lt;br /&gt;Raul Zaritsky &amp;amp; Jim Morrissette&lt;br /&gt;&lt;br /&gt;The last performance of Spiral os Spiral aka Spiral PTL is on the &lt;a href=&quot;http://www.youtube.com/user/dansandin/feed?filter=2&quot;&gt;Dan Sandin YouTube channel&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-859068147058790210?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 14 Mar 2012 17:06:41 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Village Telco: New firmware release  Version 1.1 RC2</title>
	<guid>http://villagetelco.org/?p=1236</guid>
	<link>http://villagetelco.org/2012/03/new-firmware-release-version-1-1-rc2/</link>
	<description>&lt;p&gt;Thanks to the amazing work of Terry Gillett, Keith Williamson, and Elektra, I am happy to announce version 1.1 (RC2) of the SECN firmware. SECN is the firmware &lt;a title=&quot;Small Enterprise – Campus Network (SECN)&quot; href=&quot;http://villagetelco.org/2011/04/small-enterprise-campus-network-secn/&quot;&gt;developed by Terry Gillett&lt;/a&gt; which features the use of batman-adv instead of batman mesh protocol as well as easy configuration of a WiFi hotspot for the Mesh Potato. From an interesting alternative, the SECN firmware has gone on to become the default firmware for the Mesh Potato. Here is a list of features that you can find in the 1.1 firmware. So what&amp;#8217;s new in the 1.1 version?&lt;/p&gt;&lt;h4&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2012/03/basic_SECN_1-1.jpg&quot;&gt;&lt;img class=&quot;alignright size-thumbnail wp-image-1239&quot; title=&quot;SECN Basic Configuration UI for the Mesh Potato&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2012/03/basic_SECN_1-1-150x150.jpg&quot; alt=&quot;SECN Basic Configuration UI for the Mesh Potato&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;A Simple Configuration User Interface (UI)&lt;/h4&gt;&lt;p&gt;While &lt;a title=&quot;LuCI Home Page&quot; href=&quot;http://luci.subsignal.org/trac/wiki/Documentation&quot;&gt;LuCI&lt;/a&gt; is tremendously powerful, we have found that it can be intimidating for new users. It also doesn&amp;#8217;t offer the VoIP configuration features that are key to Village Telco. The new configuration UI in version 1.1 offers the most important basic options including:  setting the IP address and gateway, the WiFi hotspot, and configuring your VoIP provider details. The UI is smart enough to stop you putting in a malformed IP address or from choosing a WPA key for your hotspot that is too short, etc. It can also try to guess your gateway for you.  Of course you don&amp;#8217;t HAVE to use the web interface to configure your Mesh Potato.  You can also &lt;a title=&quot;Call to Configure&quot; href=&quot;http://villagetelco.org/get-started/call-to-configure/&quot;&gt;configure it by phone&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;Easy VoIP Setup&lt;/h4&gt;&lt;p&gt;Previously you were obliged to edit the Asterisk configuration files in order to set up a SIP account with your VoIP Service Provider.  Now all you need is the URL of the the SIP provider and your username and password.  The UI also indicates when the Mesh Potato is successfully registered to the SIP provider.   This is set to work with the most common default setting of VoIP services providers.  You can go to the Advanced setting page if you require custom VoIP options.&lt;/p&gt;&lt;h4&gt;Simple Access Point Configuration&lt;/h4&gt;&lt;p&gt;Setting up the Mesh Potato as a WiFi access point is a breeze.  Simply enter your preferred name for the WiFi network (the SSID) and then choose the form of encryption you prefer for the network.  By keeping the SSID the same for all of the Mesh Potatoes on your network, you can create a large, seamless hotspot.  Most WiFi-enabled devices will hand-off from access point to access point if you move around in the network allowing you limited mobility within the network.&lt;/p&gt;&lt;h4&gt;Security Options for your Mesh Potato&lt;/h4&gt;&lt;p&gt;Once you&amp;#8217;ve configured your Mesh Potato, you may not wish to make it so easy to access the configuration options for your Mesh Potato.  You have to consider the fact that your Mesh Potato can be reached by anyone on the mesh network.  The new firmware offers three options for securing your Mesh Potato.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;Encryption&lt;/em&gt;.  You can turn on the encrypted web interface which will secure all traffic to the Mesh Potato making it extremely difficult for anyone to intercept configuration traffic to the Mesh Potato.  This means that you would access the same web UI but using the HTTPS protocol.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Password&lt;/em&gt;.  You can require a username and password to access the UI.  This is based on the root or admin user accounts on the Mesh Potato.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Limit IP addresses&lt;/em&gt;.  You can also make the webserver accessible only through the fallback IP address.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;You can also disable the web interface entirely via the phone interface.&lt;/p&gt;&lt;h4&gt;Integrate Smartphones with your Village Telco&lt;/h4&gt;&lt;p&gt;The Mesh Potato is entirely standards-based which means that you can connect the Mesh Potato to any SIP server whether local or international.  But what if you don&amp;#8217;t have the luxury of an Internet connection?  Well of course Mesh Potatoes are designed to make local calls to each other with or without an Internet connection or SIP server but what about using your WiFi-enabled smartphone on a local Village Telco network with no Internet connection?  This is now possible with version 1.1.  You can designate one of the Mesh Potatoes on your network to offer both DHCP and SIP services so that any WiFi-enabled smartphone can connect to the mesh network and dial the Mesh Potatoes and vice versa.   This has relevance for rapid deployment of Mesh Potatoes where you may not have time or resources to establish an upstream connection but still wish to make maximum voice use of the network.&lt;/p&gt;&lt;h4&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2012/03/wireless.jpg&quot;&gt;&lt;img class=&quot;alignright size-thumbnail wp-image-1241&quot; title=&quot;Wireless Status Page&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2012/03/wireless-150x150.jpg&quot; alt=&quot;Wireless Status Page&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Wireless Status Page&lt;/h4&gt;&lt;p&gt;There is now a Wireless Status page that shows you the other mesh nodes in the network and devices that are connected to the WiFi hotspot on the Mesh Potato.  It is still a little cryptic.  In version 2 of the Mesh Potato firmware we&amp;#8217;ll have a less technical status page although the more detailed stats will still be available.&lt;/p&gt;&lt;h3&gt;How to Get It&lt;/h3&gt;&lt;p&gt;You can download version 1.1 RC2 of the SECN firmware from:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/download/firmware/secn/unstable/mp/SECN-1.1/RC2/&quot;&gt;http://villagetelco.org/download/firmware/secn/unstable/mp/SECN-1.1/RC2/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you have never flashed a Mesh Potato with a new firmware, &lt;a title=&quot;Flash Your Mesh Potato&quot; href=&quot;http://villagetelco.org/get-started/flash-your-mesh-potato/&quot;&gt;please follow this guide&lt;/a&gt;.   The default IP address for the 1.1 RC2 firmware is &lt;strong&gt;10.130.1.20&lt;/strong&gt; or you can use the fallback IP address of &lt;strong&gt;172.31.255.254&lt;/strong&gt;.  You&amp;#8217;ll note that this release is RC2 or Release Candidate 2 which means that the feature set is stable and we are not aware of any bugs but further testing is required to confirm this.&lt;/p&gt;&lt;h3&gt;But Wait There&amp;#8217;s More&lt;/h3&gt;&lt;p&gt;The SECN firmware doesn&amp;#8217;t just run on Mesh Potatoes.  It is also available for the &lt;a title=&quot;Ecommerce site for WR703n&quot; href=&quot;http://www.everbuying.com/product65368.html&quot;&gt;TP-Link WR703N&lt;/a&gt; and the &lt;a title=&quot;TP-Link MR-3020&quot; href=&quot;http://www.tp-link.com/en/products/details/?model=TL-MR3020&quot;&gt;TP-Link MR-3020&lt;/a&gt; so you can mix and match devices in your network.  The devices are completely interoperable with Mesh Potatoes running this firmware.  You can download those firmwares from:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/download/firmware/secn/unstable/tp-703n/SECN-1.1/factory/&quot;&gt;http://villagetelco.org/download/firmware/secn/unstable/tp-703n/SECN-1.1/factory/&lt;/a&gt; &lt;a href=&quot;http://villagetelco.org/download/firmware/secn/unstable/tp-3020/SECN-1.1/factory/&quot;&gt;http://villagetelco.org/download/firmware/secn/unstable/tp-3020/SECN-1.1/factory/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally, I can&amp;#8217;t thank Terry, Elektra, and Keith enough for what they&amp;#8217;ve accomplished.   All this progress is directly attributable to their hard work.&lt;/p&gt;&lt;h3&gt;Coming Next&lt;/h3&gt;&lt;p&gt;Elektra, Terry, and Keith are already working on Version 2 of the Mesh Potato firmware which will include an upgrade to OpenWRT &lt;a href=&quot;https://dev.openwrt.org/milestone/Attitude%20Adjustment%20(trunk)&quot;&gt;Attitude Adjustment&lt;/a&gt; and to the latest and greatest version of &lt;a title=&quot;Batman Advanced&quot; href=&quot;http://www.open-mesh.org/wiki/batman-adv&quot;&gt;batman-adv&lt;/a&gt;.  We also have plans for a simple UI for switching between mesh, client and master WiFi mode for those who want to do different things with their Mesh Potatoes.  Suggestions, requests are welcome.&lt;/p&gt;</description>
	<pubDate>Wed, 14 Mar 2012 11:57:59 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Cgminer web monitor</title>
	<guid>http://www.openmobilefree.net/?p=1291</guid>
	<link>http://www.openmobilefree.net/?p=1291</link>
	<description>&lt;p&gt;My Icarus + Cgmienr is here:&lt;br /&gt;
&lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/&quot; target=&quot;_blank&quot;&gt;http://downloads.openmobilefree.net/Icarus/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For setup miner.php:&lt;br /&gt;
1. change the &lt;strong&gt;$miner&lt;/strong&gt; to your hostname or IP address&lt;br /&gt;
2. change the &lt;strong&gt;$readonly&lt;/strong&gt; to true for read only.&lt;br /&gt;
3. start cgminer with two more parameters: &lt;strong&gt;&amp;#8211;api-network &amp;#8211;api-listen&lt;/strong&gt;&lt;br /&gt;
4. if you want access from public, don&amp;#8217;t forget forward the &lt;strong&gt;4028&lt;/strong&gt; port from your router&lt;/p&gt;
&lt;p&gt;The source code is here, Thanks to kanoi.&lt;br /&gt;
&lt;a href=&quot;https://github.com/kanoi/cgminer/blob/master/miner.php&quot;&gt;https://github.com/kanoi/cgminer/blob/master/miner.php&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 14 Mar 2012 09:55:46 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: Alcatel MTK phone UART pinout</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/14#20120314-alcatel_ot980d_mtk</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/14#20120314-alcatel_ot980d_mtk</link>
	<description>&lt;p&gt;
The Alcatel OT-890D is a MT6573 based smartphone.  It seems one of the
UARTs is available on test pads as seen in this picture:
&lt;center&gt;
&lt;img src=&quot;http://laforge.gnumonks.org/photos/alcatel_ot890d_small.jpg&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
The voltage level is still 3.3V, so no fancy 1.8V gear is required.
&lt;/p&gt;
&lt;p&gt;
During boot, the UART is first used at 19200 bps, where it prints the
strings &quot;MW01&quot; and &quot;MW02&quot;.  I then switches to 115200 bps where it
prints &quot;READY&quot;, and finally switches to 921600 bps, where it seems to
output some mixed binary/text messages containing AT commands and
responses between AP and BP, as well as some debug information:
&lt;pre&gt;
�Ue� � � T+CREG=2
�Ue�!�!�!T+CSQSQ=1
�Ue�!�!�!AT+CREG=2
�Uew�&quot;w�&quot;w�&quot;SQSQ=1
'Ue&quot;&quot;&quot;      AT+EFUN=1
      SML: Load!_Ue&quot;&quot;&quot;&quot;&quot;&quot;
                         SML: Load!hU(&quot;(&quot;(&quot;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
I haven't yet investigated if the binary between the text is some
standard HDLC framing or a TS 07.10 multiplex.
&lt;/p&gt;
&lt;p&gt;
If anyone knows more about the boot process (MW01/MW02/READY) or the
binary protocol, please let me know.
&lt;/p&gt;</description>
	<pubDate>Wed, 14 Mar 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: David Hall, End Piece</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-4676538700411289193</guid>
	<link>http://videocircuits.blogspot.com/2012/03/david-hall-end-piece.html</link>
	<description>1001 analogue television sets left on to document the end of PAL transmissions in the UK&lt;br /&gt;&lt;br /&gt;The exhibition runs from 16 March - 22 April, Opening hours: Wed-Fri 11am-7pm, Sat-Sun, 12pm-6pm.&lt;br /&gt;Ambika P3, 35 Marylebone Road, London NW1 5LS&lt;div&gt;&lt;a href=&quot;http://www.davidhallart.com/&quot;&gt;http://www.davidhallart.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;also&lt;br /&gt;&lt;br /&gt;this conference on video art to accompany&lt;br /&gt;&lt;a href=&quot;http://www.westminster.ac.uk/research/a-z/cream/events/exhibiting-video-conference&quot;&gt;http://www.westminster.ac.uk/research/a-z/cream/events/exhibiting-video-conference&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-4676538700411289193?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 13 Mar 2012 04:56:52 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Richard Hughes, ColorHug: SANE crashy crashy</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=572</guid>
	<link>http://blogs.gnome.org/hughsie/2012/03/12/sane-crashy-crashy/</link>
	<description>&lt;p&gt;I spend quite a lot of time triaging bugs in &lt;a href=&quot;http://blogs.gnome.org/hughsie/feed/fedoraproject.org&quot;&gt;Fedora&lt;/a&gt; for stuff I maintain upstream. The most common crasher bug I come across is &lt;a href=&quot;http://www.freedesktop.org/software/colord/&quot;&gt;colord&lt;/a&gt; segfaulting deep in &lt;a href=&quot;http://www.sane-project.org/&quot;&gt;libsane&lt;/a&gt;. Digging even more, 99% of those libsane crashers are when the user has installed closed source binary drivers to make the scanner &amp;#8220;work&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Of course, segfaulting colord just because it automatically assigns color profiles to scanners is not a good idea, even if we can blame non-free code. Something had to be done, as it was starting to make colord look bad as all the display and print color management would suddenly stop working in quite a dramatic way.&lt;/p&gt;
&lt;p&gt;Now, in an ideal world, there would be a scanner daemon, &lt;em&gt;scannerd&lt;/em&gt;, that I could patch for colord support, just like we&amp;#8217;re doing for &lt;a href=&quot;https://fedoraproject.org/wiki/Features/CUPS_colord_Support&quot;&gt;printers&lt;/a&gt; and &lt;a href=&quot;https://live.gnome.org/ThreePointOne/Features/ColorManagement&quot;&gt;dispays&lt;/a&gt;. This would then register devices with colord, and if it crashed, it could be autorestarted. Such a thing doesn&amp;#8217;t exist, and so I had to do something that involved separating the libsane code from the main colord process.&lt;/p&gt;
&lt;p&gt;In git master I&amp;#8217;ve added a tiny dbus daemon called colord-sane, that basically does nothing except for rescanning sane whenever a USB device is plugged in and creating and deleting devices in colord. It only has one method &amp;#8220;Refresh&amp;#8221; and it is started when colord is started (usually in early boot) if the UseSANE=true option is specified in /etc/colord/colord.conf&lt;/p&gt;
&lt;p&gt;In an ideal world, someone could take that code, and make a proper scannerd or saned project that adds some DeviceAdded and DeviceRemoved signals, a GetDevices() method and some more properties on each device, hopefully using something l33t like GDBusObjectServer. This would mean that the session could just use that for device discovery (e.g. in Simple Scan) and the world would be a much nicer place.&lt;/p&gt;
&lt;p&gt;So, if you see a &lt;strong&gt;tiny&lt;/strong&gt; colord-sane process show up in your system that&amp;#8217;s not doing anything, don&amp;#8217;t panic. You can disable the functionality if you know you&amp;#8217;ll never have a scanner attached.&lt;/p&gt;</description>
	<pubDate>Mon, 12 Mar 2012 10:12:28 +0000</pubDate>
</item>
<item>
	<title>Dan Reetz: Home Switches for CNCRouterParts.com CRP4896</title>
	<guid permalink="False">http://www.danreetz.com/blog/?p=888</guid>
	<link>http://www.danreetz.com/blog/2012/03/11/home-switches-for-cncrouterparts-com-crp4896/</link>
	<description>&lt;p&gt;I&amp;#8217;m outfitting my &lt;a href=&quot;http://www.cncrouterparts.com/&quot;&gt;CNCRouterParts.com&lt;/a&gt; &lt;a href=&quot;http://www.cncrouterparts.com/crp4896-4-x-8-machine-kit-p-139.html?cPath=29&quot;&gt;CRP4896 CNC router&lt;/a&gt; with home switches. The idea is to set up sensors such that the router can start from the same place every time, automatically. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m using &lt;a href=&quot;http://search.digikey.com/scripts/DkSearch/dksus.dll?WT.z_header=search_go&amp;lang=en&amp;site=us&amp;keywords=55110-3H-02-A-ND&amp;x=0&amp;y=0&quot;&gt;these sensors&lt;/a&gt;. They are compact, encapsulated Hall Effect switches. They pull low when in the presence of a magnetic field. &lt;/p&gt;
&lt;p&gt;Today&amp;#8217;s work was mounting these onto the router. I have the X axis done. &lt;/p&gt;
&lt;p&gt;First, I measured out the extrusion on the router as well as the distance between the brush support bolts on the gantry stand. In each case, the distance was 1.5&amp;#8243;. I drew up some adjustable braces in Corel Draw. I lasered a quick prototype from MDF to test the fit:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://danreetz.com/CNCRouterParts/Homing_Switch_4_DSC06776.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It fit well, and it worked, save for one thing &amp;#8211; it was resting on top of the nuts that were holding the sweeper brushes in place. I adjusted the artwork to compensate. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://danreetz.com/CNCRouterParts/Homing_Switch_3_DSC06776.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I then cut the corrected art from 1/4&amp;#8243; clear acrylic on my Epilog Zing and mounted it. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://danreetz.com/CNCRouterParts/Homing_Switch_2_DSC06776.jpg&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I secured the magnet in the slot with cyanoacrylate and tested the part. Worked. Now to connect it to Mach3 and the main driver board. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://danreetz.com/CNCRouterParts/Homing_Switch_1_DSC06776.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tested out perfectly. &lt;/p&gt;
&lt;p&gt;The artwork for the laser cutter is &lt;a href=&quot;http://danreetz.com/CNCRouterParts/limitswitchart.zip&quot;&gt;here&lt;/a&gt;. It&amp;#8217;s Open Hardware.&lt;/p&gt;</description>
	<pubDate>Sun, 11 Mar 2012 21:02:05 +0000</pubDate>
</item>
<item>
	<title>osPID: A Forum of Our Very Own</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=319</guid>
	<link>http://www.ospid.com/blog/a-forum-of-our-very-own/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-forum-of-our-very-own</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/03/forum.png&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/03/forum.png&quot; alt=&quot;&quot; title=&quot;forum&quot; width=&quot;416&quot; height=&quot;158&quot; class=&quot;aligncenter size-full wp-image-321&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
With actual osPID units being &lt;a href=&quot;http://www.ospid.com/blog/ospid-in-the-wild/&quot;&gt;spotted in the wild&lt;/a&gt;, we felt is was time to create a &lt;a href=&quot;http://www.ospid.com/forum/&quot;&gt;forum&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The goal here is a create a central place where people can get information, show off their awesome projects, and help to improve the osPID for everyone&amp;#8217;s benefit.&lt;/p&gt;
&lt;p&gt;So stop by when you get a chance.  Help us leverage the power of open source to turn the osPID into the best PID Controller it can be.&lt;/p&gt;</description>
	<pubDate>Sun, 11 Mar 2012 12:19:32 +0000</pubDate>
</item>
<item>
	<title>osPID: osPID in the Wild</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=292</guid>
	<link>http://www.ospid.com/blog/ospid-in-the-wild/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ospid-in-the-wild</link>
	<description>&lt;p&gt;Huge thanks go out to &lt;a href=&quot;http://www.unmaintained.com/index.php/ospid-sous-vide-open-source-high-tech-cooking-on-a-budget/&quot;&gt;Phil&lt;/a&gt;, who apart from identifying some early bugs has presented us with our first &amp;#8220;in the wild&amp;#8221; pictures!&lt;br /&gt;
&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/03/phils-setup.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/03/phils-setup.jpg&quot; alt=&quot;&quot; title=&quot;phil's setup&quot; width=&quot;450&quot; height=&quot;298&quot; class=&quot;aligncenter size-full wp-image-293&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;He spent an hour or two the last couple of nights setting up a sous-vide rig:  Two immersion heaters, a circulation pump, and a k-type thermocouple.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/03/its-twue.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/03/its-twue.jpg&quot; alt=&quot;&quot; title=&quot;it's twue&quot; width=&quot;450&quot; height=&quot;675&quot; class=&quot;aligncenter size-full wp-image-294&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s hard to argue with results my friends.  Being an engineer, there&amp;#8217;s always a part of me that&amp;#8217;s waiting for that huge flaw that I missed, the thing that will make what I did a complete failure.  But it has not come to pass.  osPID = tasty results.  I&amp;#8217;m over the moon.&lt;/p&gt;</description>
	<pubDate>Fri, 09 Mar 2012 12:41:01 +0000</pubDate>
</item>
<item>
	<title>Fabricatorz: Wise Futures and Shared Hardware, Part I</title>
	<guid>http://fabricatorz.com/2012/03/wise-futures-and-shared-hardware-part-i</guid>
	<link>http://fabricatorz.com/2012/03/wise-futures-and-shared-hardware-part-i</link>
	<description>&lt;img src=&quot;http://fabricatorz.com/wp-content/uploads/2012/03/teldap-2012-edited-500x373.jpg&quot; alt=&quot;Christopher Adams at TELDAP 2012&quot; title=&quot;Christopher Adams at TELDAP 2012&quot; width=&quot;500&quot; height=&quot;373&quot; class=&quot;alignnone size-medium wp-image-4202&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
A couple of weeks ago I was invited to &lt;a href=&quot;http://www.sinica.edu.tw/&quot;&gt;Academia Sinica&lt;/a&gt; in Taipei to address an audience of the &lt;a href=&quot;http://fabricatorz.com/feed/category/culturemondo.org&quot;&gt;Culturemondo&lt;/a&gt; forum on Smart Cultures, held alongside &lt;a href=&quot;http://teldap.tw/&quot;&gt;TELDAP&lt;/a&gt; and convened by &lt;a href=&quot;https://twitter.com/#!/ilya&quot;&gt;Ilya Li&lt;/a&gt;. Ilya had asked me to prepare some remarks about open hardware culture, particularly as it relates to recent developments in Taiwan and China.&lt;br /&gt;
&lt;br /&gt;
The Fabricatorz are often asked about &quot;free and open&quot; hardware. Jon shared his views on &lt;a href=&quot;http://fabricatorz.com/2011/12/open-hardware-manufacturing-from-china/&quot;&gt;open hardware manufacturing&lt;/a&gt; during a talk he gave in Miami last December. It is not an idle topic for us, as we believe that investing in our own hardware platforms is just as important to the future of our business as is the software we create.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://fabricatorz.com/wp-content/uploads/2012/03/Screenshot-01-500x375.png&quot; alt=&quot;Copying hardware is hard to do —rms&quot; title=&quot;Copying hardware is hard to do —rms&quot; width=&quot;500&quot; height=&quot;375&quot; class=&quot;alignnone size-medium wp-image-4206&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Can Hardware be Free?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The term 'open' hardware is used by way of analogy to free and open source software. The freedoms of 'free' software comprise the right to use, study, duplicate and improve  that software. These freedoms as they relate to hardware apply not to the physical device itself, but rather to its design; for it is only the hardware design that can be truly studied, duplicated, and, most important, improved.&lt;br /&gt;
&lt;br /&gt;
However, a process which begins with a free hardware design and ends with a finished product requires a non-trivial provision of capital, resources, skill, and time. This plain fact leads the founder of the free software movment, Richard Stallman, to &lt;a href=&quot;http://www.linuxtoday.com/news_story.php3?ltsn=1999-06-22-005-05-NW-LF&quot;&gt;conclude&lt;/a&gt; that &quot;freedom to copy hardware is not as important, because copying hardware is hard to do.&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://fabricatorz.com/wp-content/uploads/2012/03/Screenshot-02-500x375.png&quot; alt=&quot;People who are really serious about software should make their own hardware—Alan Kay&quot; title=&quot;People who are really serious about software&quot; width=&quot;500&quot; height=&quot;375&quot; class=&quot;alignnone size-medium wp-image-4208&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
I think the logic of that assessment is backward. The difficulty that hardware presents to our freedoms makes the issue more important, not less. It is the reason that we at Fabricatorz are investing time, money and talent to find solutions to the hardware dilemma. Recall the famous words of Alan Kay: &quot;People who are really serious about software should make their own hardware.&quot;&lt;br /&gt;
&lt;br /&gt;
Is Richard Stallman serious about software? I know we are.&lt;br /&gt;
&lt;br /&gt;
Credits (images remixed by me on an &lt;a href=&quot;http://milkymist.org/&quot;&gt;M1&lt;/a&gt;):&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/File:Richard_Matthew_Stallman_working_on_his_Lemote_Machine.JPG&quot;&gt;Richard_Matthew_Stallman_working_on_his_Lemote_Machine&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:Alan_Kay_and_the_prototype_of_the_Dynabook_(3009206205).jpg&quot;&gt;Alan_Kay_and_the_prototype_of_the_Dynabook&lt;/a&gt;</description>
	<pubDate>Fri, 09 Mar 2012 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Linux on ARM: xz kernel decompression benchmarks</title>
	<guid>http://free-electrons.com/?p=4157</guid>
	<link>http://free-electrons.com/blog/arm-xz-kernel-decompression-benchmarks/</link>
	<description>&lt;p&gt;I recently managed to find time to clean up and &lt;a href=&quot;https://lkml.org/lkml/2012/2/16/264&quot;&gt;submit&lt;/a&gt; my patches for xz kernel compression support on ARM, which I started working on back in November, during my flight to &lt;a href=&quot;http://connect.linaro.org&quot;&gt;Linaro Connect&lt;/a&gt;. However, it was too late as Russell King, the ARM Linux maintainer, already &lt;a href=&quot;http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7001/2&quot;&gt;accepted a similar patch&lt;/a&gt;, about 3 weeks before my submission. The lesson I learned was that checking a git tree is not always sufficient. I should have checked the mailing list archives too.&lt;/p&gt;
&lt;p&gt;The good news is that xz kernel compression support should be available in Linux 3.4 in a few months from now. &lt;a href=&quot;http://en.wikipedia.org/wiki/Xz&quot;&gt;xz&lt;/a&gt; is a compression format based on the LZMA2 compression algorithm. It can be considered as the successor of lzma, and achieves even better compression ratios! &lt;/p&gt;
&lt;p&gt;Before submitting my patches, I ran a few benchmarks on my own implementation. As the decompressing code is the same, the results should be the same as if I had used the patches that are going upstream. &lt;/p&gt;
&lt;h3&gt;Benchmark methodology&lt;/h3&gt;
&lt;p&gt;For both boards I tested, I used the same pre 3.3 Linux kernel from Linus Torvalds&amp;#8217; mainline git tree. I also used the U-boot bootloader in both cases.&lt;/p&gt;
&lt;p&gt;I used the very useful &lt;a href=&quot;http://elinux.org/Grabserial&quot;&gt;grabserial&lt;/a&gt; script from Tim Bird. This utility reads messages coming out of the serial line, and adds timestamps to each line it receives. This allow to measure time from the earliest power on stages, and doesn&amp;#8217;t slow down the target system by adding instrumentation to it.&lt;/p&gt;
&lt;p&gt;Our benchmarks just measure the time for the bootloader to copy the kernel to RAM, and then the time taken by the kernel to uncompress itself.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loading time is measured between &amp;#8220;reading uImage&amp;#8221; and &amp;#8220;OK&amp;#8221; (right before &amp;#8220;Starting kernel&amp;#8221;) in the bootloader messages.&lt;/li&gt;
&lt;li&gt;Compression time measured between &amp;#8220;Uncompressing Linux&amp;#8221; and &amp;#8220;done&amp;#8221;:
&lt;pre&gt;~/bin/grabserial -v -d /dev/ttyUSB0 -e 15 -t -m &quot;Uncompressing Linux&quot; -i &quot;done,&quot; &gt; booting-lzo.log&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Benchmarks on OMAP4 Panda&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;http://pandaboard.org/&quot;&gt;Panda board&lt;/a&gt; has a fast dual Cortex A9 CPU (OMAP 4430) running at 1 GHz. The standard way to boot this board is from an MMC/SD card. Unfortunately, the MMC/SD interface of the board is rather slow. &lt;/p&gt;
&lt;p&gt;In this case, we have a fast CPU, but with rather slow storage. Therefore, the time taken to copy the kernel from storage to RAM is expected to have a significant impact on boot time.&lt;/p&gt;
&lt;p&gt;This case typically represents todays multimedia and mobile devices such as phones, media players and tablets.&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Compression&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Loading time&lt;/th&gt;
&lt;th&gt;Uncompressing time&lt;/th&gt;
&lt;th&gt;Total time&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gzip&lt;/td&gt;
&lt;td&gt;3355768&lt;/td&gt;
&lt;td&gt;2.213376&lt;/td&gt;
&lt;td&gt;0.501500&lt;/td&gt;
&lt;td&gt;2.714876&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lzma&lt;/td&gt;
&lt;td&gt;2488144&lt;/td&gt;
&lt;td&gt;1.647410&lt;/td&gt;
&lt;td&gt;1.399552&lt;/td&gt;
&lt;td&gt;3.046962&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xz&lt;/td&gt;
&lt;td&gt;2366192&lt;/td&gt;
&lt;td&gt;1.566978&lt;/td&gt;
&lt;td&gt;1.299516&lt;/td&gt;
&lt;td&gt;2.866494&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lzo&lt;/td&gt;
&lt;td&gt;3697840&lt;/td&gt;
&lt;td&gt;2.471497&lt;/td&gt;
&lt;td&gt;0.160596&lt;/td&gt;
&lt;td&gt;2.632093&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;6965644&lt;/td&gt;
&lt;td&gt;4.626749&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4.626749&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Results on Calao Systems USB-A9263 (AT91)&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.calao-systems.com/articles.php?lng=en&amp;pg=5932&quot;&gt;USB-A9263&lt;/a&gt; board from &lt;a href=&quot;http://www.calao-systems.com/&quot;&gt;Calao Systems&lt;/a&gt; has a cheaper and much slower AT91SAM9263 CPU running at 200 MHz. &lt;/p&gt;
&lt;p&gt;Here we are booting from NAND flash, which is the fastest way to boot a kernel on this board. Note that we are using the &lt;code&gt;nboot&lt;/code&gt; command from U-boot, which guarantees that we just copy the number of bytes specified in the &lt;code&gt;uImage&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In this case, we have a slow CPU with slow storage. Therefore, we expect both the kernel size and the decompression algorithm to have a major impact on boot time.&lt;/p&gt;
&lt;p&gt;This case is a typical example of industrial systems (AT91SAM9263 is still very popular in such applications, as we can see from customer requests), booting from NAND storage operating with a 200 to 400 MHz CPU.&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Compression&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Loading time&lt;/th&gt;
&lt;th&gt;Uncompressing time&lt;/th&gt;
&lt;th&gt;Total time&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gzip&lt;/td&gt;
&lt;td&gt;2386936&lt;/td&gt;
&lt;td&gt;5.843289&lt;/td&gt;
&lt;td&gt;0.935495&lt;/td&gt;
&lt;td&gt;6.778784&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lzma&lt;/td&gt;
&lt;td&gt;1794344&lt;/td&gt;
&lt;td&gt;4.465542&lt;/td&gt;
&lt;td&gt;6.513644&lt;/td&gt;
&lt;td&gt;10.979186&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xz&lt;/td&gt;
&lt;td&gt;1725360&lt;/td&gt;
&lt;td&gt;4.308605&lt;/td&gt;
&lt;td&gt;4.816191&lt;/td&gt;
&lt;td&gt;9.124796&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lzo&lt;/td&gt;
&lt;td&gt;2608624&lt;/td&gt;
&lt;td&gt;6.351539&lt;/td&gt;
&lt;td&gt;0.447336&lt;/td&gt;
&lt;td&gt;6.798875&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;4647908&lt;/td&gt;
&lt;td&gt;11.080560&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;11.080560&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Lessons learned&lt;/h3&gt;
&lt;p&gt;Here's what we learned from these benchmarks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lzo is still the best solution for minimum boot time. Remember, lzo kernel compression &lt;a href=&quot;http://free-electrons.com/blog/lzo-kernel-compression/&quot;&gt;was merged by Free Electrons&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;xz is always better than lzma, both in terms of image size. Therefore, there's no reason to stick to lzma compression if you used it.&lt;/li&gt;
&lt;li&gt;Because of their heavy CPU usage, lzma and xz remain pretty bad in terms of boot time, on most types of storage devices. On systems with a fast CPU, and very slow storage though, xz should be the best solution &lt;/li&gt;
&lt;li&gt;On systems with a fast CPU, like the Panda board, boot time with xz is actually pretty close to lzo, and therefore can be a very interesting compromise between kernel size and boot time.&lt;/li&gt;
&lt;li&gt;Using a kernel image without compression is rarely a worthy solution, except in systems with a very slow CPU. This is the case of CPUs emulated on an FPGA (typically during chip development, before silicon is available). In this particular case, copying to memory is directly done by the emulator, and we just need CPU cycles to start the kernel.
&lt;/li&gt;&lt;/ul&gt;</description>
	<pubDate>Thu, 08 Mar 2012 13:33:43 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: How to boot an uncompressed Linux kernel on ARM</title>
	<guid>http://free-electrons.com/?p=4172</guid>
	<link>http://free-electrons.com/blog/uncompressed-linux-kernel-on-arm/</link>
	<description>&lt;p&gt;This is a quick post to share my experience booting uncompressed Linux kernel images, during the &lt;a href=&quot;http://free-electrons.com/blog/arm-xz-kernel-decompression-benchmarks/&quot;&gt;benchmarks of kernel compression options&lt;/a&gt;, and no compression at all was one of these options.&lt;/p&gt;
&lt;p&gt;It is sometimes useful to boot a kernel image with no compression. Though the kernel image is bigger, and takes more time to copy from storage to RAM, the kernel image no longer has to be decompressed to RAM. This is useful for systems with a very slow CPU, or very little RAM to store both the compressed and uncompressed images during the boot phase. The typical case is booting CPUs emulated by FPGA, during processor development, before the final silicon is out. For example, I saw a Cortex A15 chip boot at 11 MHz during &lt;a href=&quot;http://connect.linaro.org/&quot;&gt;Linaro Connect&lt;/a&gt; Q2.11 in Budapest. At this clock frequency, booting a kernel image with no compression saves several minutes of boot time, reducing development and test time. Note that with such hardware emulators, copying the kernel image to RAM is cheap, as it is done by the emulator from a file given by the user, before starting to emulate the system.&lt;/p&gt;
&lt;p&gt;Building a kernel image with no compression on ARM is easy, but only once you know where the uncompressed image is and what to do! For people who have never done that before, I&amp;#8217;m sharing quick instructions here.&lt;/p&gt;
&lt;p&gt;To generate your uncompressed kernel image, all you have to do is run the usual &lt;code&gt;make&lt;/code&gt; command. The file that you need is &lt;code&gt;arch/arm/boot/Image&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Depending on the bootloader that you use, this could be sufficient. However, if you use U-boot, you still need to put this image in a &lt;code&gt;uImage&lt;/code&gt; container, to let U-boot know about details such as how big the image is, what its entry point is, whether it is compressed or not&amp;#8230; The problem is you can&amp;#8217;t run &lt;code&gt;make uImage&lt;/code&gt; any more to produce this container. That&amp;#8217;s because Linux on ARM has no configuration option to keep the kernel uncompressed, and the &lt;code&gt;uImage&lt;/code&gt; file would contain a compressed kernel.&lt;/p&gt;
&lt;p&gt;Therefore, you have to create the &lt;code&gt;uImage&lt;/code&gt; by invoking the &lt;code&gt;mkimage&lt;/code&gt; command manually. To do this without having to guess the right &lt;code&gt;mkimage&lt;/code&gt; parameters, I recommend to run &lt;code&gt;make V=1 uImage&lt;/code&gt; once:&lt;/p&gt;
&lt;pre&gt;
$ make V=1 uImage
...
  Kernel: arch/arm/boot/zImage is ready
  /bin/bash /home/mike/linux/scripts/mkuboot.sh -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n 'Linux-3.3.0-rc6-00164-g4f262ac' -d arch/arm/boot/zImage arch/arm/boot/uImage
Image Name:   Linux-3.3.0-rc6-00164-g4f262ac
Created:      Thu Mar  8 13:54:00 2012
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3351272 Bytes = 3272.73 kB = 3.20 MB
Load Address: 80008000
Entry Point:  80008000
  Image arch/arm/boot/uImage is ready
&lt;/pre&gt;
&lt;p&gt;Don&amp;#8217;t be surprised if the above message says that the kernel is uncompressed (corresponding to &lt;code&gt;-C none&lt;/code&gt;). If we told U-boot that the image is already compressed, it would take care of uncompressing it to RAM before starting the kernel image.&lt;/p&gt;
&lt;p&gt;Now, you know what &lt;code&gt;mkimage&lt;/code&gt; command you need to run. Just invoke this command on the &lt;code&gt;Image&lt;/code&gt; file instead of &lt;code&gt;zImage&lt;/code&gt; (you can directly replace &lt;code&gt;mkuboot.sh&lt;/code&gt; by &lt;code&gt;mkimage&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;
$ mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n 'Linux-3.3.0-rc6-00164-g4f262ac' -d arch/arm/boot/Image arch/arm/boot/uImage
Image Name:   Linux-3.3.0-rc6-00164-g4f262ac
Created:      Thu Mar  8 14:02:27 2012
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    6958068 Bytes = 6794.99 kB = 6.64 MB
Load Address: 80008000
Entry Point:  80008000
&lt;/pre&gt;
&lt;p&gt;Now, you can use your &lt;code&gt;uImage&lt;/code&gt; file as usual.&lt;/p&gt;</description>
	<pubDate>Thu, 08 Mar 2012 13:26:49 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: New Complexity from LZX</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-6295771926897798169</guid>
	<link>http://videocircuits.blogspot.com/2012/03/new-complexity-from-lzx.html</link>
	<description>New Vids from LZX&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-6295771926897798169?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 08 Mar 2012 00:05:23 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>osPID: Quick-Start Guide</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=276</guid>
	<link>http://www.ospid.com/blog/quick-start-guide/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quick-start-guide</link>
	<description>&lt;p&gt;With the first osPIDs making their way to customers, we&amp;#8217;ve started receiving our first feedback emails.  &lt;/p&gt;
&lt;p&gt;The most obvious point made so far is that we were lacking a quick-start guide.  I&amp;#8217;ve since created a preliminary page for this &lt;a href=&quot;http://www.ospid.com/blog/resources/getting-started/&quot;&gt;here&lt;/a&gt;.  This is a work in progress, but should give you everything you need to get up and running.&lt;/p&gt;
&lt;p&gt;The second prominent issue was that the input card wasn&amp;#8217;t reading correctly.  This is strictly a firmware issue related to the switch from the MAX31855 back to the MAX6675.  What this means is that everyone will need to update their firmware. DOH!  The &lt;a href=&quot;http://www.ospid.com/blog/resources/getting-started/&quot;&gt;quick-start&lt;/a&gt; explains how to do this.&lt;/p&gt;
&lt;p&gt;There will undoubtedly be more issues as the days go by.  PLEASE complain to us. We will fix it and everyone will benefit.  The only way we will be great is if we are told when we suck.&lt;/p&gt;</description>
	<pubDate>Wed, 07 Mar 2012 22:41:34 +0000</pubDate>
</item>
<item>
	<title>LZX Industries: A quick look at Triple Video Multimode Filter</title>
	<guid permalink="False">http://www.lzxindustries.net/2012/03/a-quick-look-at-triple-video-multimode-filter/</guid>
	<link>http://www.lzxindustries.net/2012/03/a-quick-look-at-triple-video-multimode-filter/</link>
	<description>&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 06 Mar 2012 21:11:49 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Unmute Collaboration</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-140404384818728591</guid>
	<link>http://videocircuits.blogspot.com/2012/03/unmute-collaboration.html</link>
	<description>I made a new glitchy video for an interesting site&amp;nbsp;&lt;a href=&quot;http://unmute.eu/&quot;&gt;unmute.eu&lt;/a&gt; which pairs an audio and visual practitioner every fortnight around a theme and displays their work next to each other, an interesting idea!&lt;br /&gt;&lt;br /&gt;my theme was&amp;nbsp;&lt;a href=&quot;http://unmute.eu/Pages/interference.html&quot;&gt;interference&lt;/a&gt;&amp;nbsp;and the audio half was compiled by &lt;a href=&quot;http://soundcloud.com/paulnewermind&quot;&gt;Paul Nevermind&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;thanks to Sandra who asked me to be a &amp;nbsp;part of the project, it's a great idea.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-140404384818728591?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 06 Mar 2012 10:27:03 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>osPID: Pre-Orders Have been shipped</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=257</guid>
	<link>http://www.ospid.com/blog/pre-orders-have-been-shipped/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pre-orders-have-been-shipped</link>
	<description>&lt;p&gt;To Everyone who pre-ordered:  Thank you, your unit is in the mail.&lt;/p&gt;
&lt;p&gt;There are a few extra units that are being assembled as I write this.  we&amp;#8217;ll announce on twitter when orders are open.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re also working on our 2nd (larger) batch.  hopefully this will remove availability as an issue.&lt;/p&gt;</description>
	<pubDate>Mon, 05 Mar 2012 13:06:05 +0000</pubDate>
</item>
<item>
	<title>Tuxbrain: Taller de iniciación a Arduino próximo 17/03/2012</title>
	<guid permalink="False">http://www.tuxbrain.com/210 at http://www.tuxbrain.com</guid>
	<link>http://www.tuxbrain.com/en/taller-de-iniciaci%C3%B3n-arduino-pr%C3%B3ximo-17032012</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://www.tuxbrain.com/sites/default/files/tallerprimercontacto400.jpg&quot; border=&quot;0&quot; /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;Aquí estamos de nuevo, cual primavera tempranera, para ofrecerte una actividad de introducción al maravilloso universo de Arduino, el &quot;&lt;a href=&quot;https://www.tuxbrain.net/shop/product_info.php?products_id=102&quot; target=&quot;_blank&quot;&gt;taller de Iniciación a Arduino&lt;/a&gt;&quot;.&lt;/p&gt;
&lt;p&gt;El próximo día 17/03/2012 de 11:00 a 14:00 horas realizaremos el taller en las instalaciones del centro Hangar&lt;/p&gt;
&lt;p&gt;HANGAR.ORG&lt;br /&gt;
Passatge del Marquès de Santa Isabel, 40 (Can Ricart)&lt;br /&gt;
08018 Barcelona&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tuxbrain.com/en/taller-de-iniciaci%C3%B3n-arduino-pr%C3%B3ximo-17032012&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 02 Mar 2012 16:00:55 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: White Rabbit Switch Testing - Jabber Meeting 22/02/2012</title>
	<guid>http://www.ohwr.org/news/246</guid>
	<link>http://www.ohwr.org/news/246</link>
	<pubDate>Fri, 02 Mar 2012 14:14:27 +0000</pubDate>
	<author>c.prados@gsi.de (Cesar Prados)</author>
</item>
<item>
	<title>Open Hardware Repository: FMC DEL 1ns 4cha - 02-03-2012: review of V4 held</title>
	<guid>http://www.ohwr.org/news/245</guid>
	<link>http://www.ohwr.org/news/245</link>
	<pubDate>Fri, 02 Mar 2012 09:24:25 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Harald Welte: The next project on the horizon: A Free Software CardOS</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/02#20120302-osmocom-cardos</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/02#20120302-osmocom-cardos</link>
	<description>&lt;p&gt;
Now that we have a 100% free software GSM protocol stack and baseband
firmware for the network and mobile phone side, the only remaining
proprietary part is the SIM card.   And what is a SIM card?  It's a
small embedded computer / SoC with integrated flash + RAM.
&lt;/p&gt;
&lt;p&gt;
Once again, like in many other areas of the telecommunications industry,
development of Free Software has been hampered by lack of available
register-level hardware documentation.  Without such information, how
should you be able to program?  Hardware without such documentation is
an insult to every software developer.
&lt;/p&gt;
&lt;p&gt;
The next problem is that typically, the Card Operating System (COS) is
written into mask ROM of the smartcard SoC.  Making such a mask is quite
expensive, and it means that for every software version, different
silicon will have to be produced.  So unless you are going to have
millions of units in quantity, it is unlikely that it would make
economic sense.
&lt;/p&gt;
&lt;p&gt;
However, in recent years, purely flash based smartcard chips have been
available and getting less and less expensive.  However, none of them
(like the Atmel AT90SC7272 or similar devices) have freely available
documentation.  Furthermore, availability on the open market is somewhat
of a problem, mainly because they have been used extensively by people
cracking encrypted satellite TV channels.  In recent years, the
smartcard industry is trying hard to cut any kind of supply to that
group of users.
&lt;/p&gt;
&lt;p&gt;
However, luckily, we now see small/independent chip design houses in
China picking up and producing their own smartcard chips.  They are not
only cheaper, but they simply hand out the documentation to anyone who
asks them.  No questions asked, no NDA required.  Welcome to the
promised land!  That's what Free Software developers like:
&lt;ul&gt;
&lt;li&gt;Free access to documentation without any confidentiality agreements&lt;/li&gt;
&lt;li&gt;development samples available at the same price as quantity pricing
later on&lt;/li&gt;
&lt;li&gt;inexpensive development hardware with JTAG access&lt;/li&gt;
&lt;li&gt;reference source code provided without NDA&lt;/li&gt;
&lt;li&gt;they are happy that somebody wants to develop for their hardware&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
As you can see, I am quite enthusiastic about this.  I like this
no-bullshit approach.  No stupid marketing and sales droids who charge
ridiculous fees for proprietary development tools that are inflexible
and force developers to use one particular OS/IDE/toolchain.
&lt;/p&gt;
&lt;p&gt;
I'm not sure how much time there will be, given the multitude of other
projects that are all asking for attention.  However, I think this is a
chance that the Free Software community doesn't get every day.  Let's
hope some other people like bare iron programming in small embedded
systems can get excited and we can create a FOSS COS.  It doesn't have
to be something serious.  Something quite simple would be sufficient for
the beginning.  I'm not thinking of EAL4+ certification, multiple
channels and public key crypto.  SIM/USIM cards are simple, they just
require a bit of filesystem read/write operations plus authentication.
And luckily, SIM toolkit development doesn't have to be done in Java
this way, either ;)
&lt;/p&gt;</description>
	<pubDate>Fri, 02 Mar 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: OsmoSDR status update</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/02#20120302-osmosdr-update</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/02#20120302-osmosdr-update</link>
	<description>&lt;p&gt;
It has been two months since I first was able to play with the &lt;a href=&quot;http://sdr.osmocom.org/&quot;&gt;OsmoSDR&lt;/a&gt; hardware prototypes.  Back at
that time, there was no FPGA code yet, and some hardware bugs still had
to be resolved.  Nonetheless, the e4k tuner driver could already be
implemented and tuning was confirmed by looking at the analog i/q
spectrum.
&lt;/p&gt;
&lt;p&gt;
Meanwhile, the hardware has been re-worked by SR-Systems and FPGA VHDL
code written by maintech.de.  Ever since that, they dropped the ball
again with me as I had been careless enough to volunteer for writing
the firmware.
&lt;/p&gt;
&lt;p&gt;
And that's what I did or at least tried to do for quite some time during
the last two weeks.  The main problem was that I didn't have much time.
The second problem was that I never was able to get the SSC (synchronous
serial controller) receive DMA working.
&lt;/p&gt;
&lt;p&gt;
This was a really odd experience, as I've worked a lot with that very
same SSC peripheral before, while writing firmware for the &lt;a href=&quot;http://www.openpcd.org/OpenPICC_RFID_Emulator_and_Sniffer_Project&quot;&gt;OpenPICC&lt;/a&gt;
some 6 years ago.  However, this was in an at91sam7s, where the SSC is
interfaced with the PDC (Peripheral DMA Controller).  In the at91sam3u
of OsmoSDR, it interfaces with a more modern DMAC/HDMA controller,
capable of scatter-gather DMA and other fancy stuff.
&lt;/p&gt;
&lt;p&gt;
Atmel has provided reference code that uses the SSC DMA in transmit mode
(for a USB audio device playing back music via the Wolfson codec on the
SAM3U-EK board).  After thoroughly studying the DMAC/HDMA documentation I
set out to write code for DMA-based SSC receiver.  And it never worked.
&lt;/p&gt;
&lt;p&gt;
I actually wrote two independent implementations, one from scratch and
the other based on Atmel reference code.  Neither of them worked.  It
seemed to be a problem with the hardware hand-shaking between SSC and
DMAC.  The SSC was successfully receiving data, and that data could be
read out from the CPU using a polling or IRQ based driver.  But if
you're running at something like 32 Mbps and don't have a FIFO, you
desperately want to use DMA.   When the DMA handshaking was turned off,
the DMA code worked, but of course it read the same received word
several thousand times before the next data arrived on the SSC.
&lt;/p&gt;
&lt;p&gt;
In the end, I was actually convinced it must be a silicon bug.  Until I
thought well, maybe they just connected the flow controller to a
different ID in Rx and Tx direction.  Since there are only 16 such
identifiers, it was relatively easy to brute-force all of them and see
if it worked.  And voila - using the identifier 4, it worked!
&lt;/p&gt;
&lt;p&gt;
So what had happened?  The Atmel-provided reference code contained a
&lt;pre&gt;
 #define BOARD_SSC_DMA_HW_SRC_REQ_ID      AT91C_HDMA_SRC_PER_3
&lt;/pre&gt;
and that was wrong.  3 is valid for SSC TX but not for SSC RX.
Unfortunately I never found any of those magic numbers in the SAM3U
manual either.  They are not documented in the chapter of the SSC, and
they are not documented in the chapter about HDMA/DMAC either.  And they
are not identical with the Peripheral Identifiers that are used all over
the chip for the built-in peripherals.
&lt;/p&gt;
&lt;p&gt;
In case anyone else is interested, a patch can be found at &lt;a href=&quot;http://git.gnumonks.org/cgi-bin/gitweb.cgi?p=at91lib.git;a=commitdiff;h=e3a39f0d8b3174ea4d266069f13c40485ea7e16c#patch1&quot;&gt;my
at91lib git repository&lt;/a&gt;.
&lt;p&gt;
I filed a ticket with Atmel support, and they pointed out in fact there
was a table with those identifiers somewhere in the early introductory
chapters where you can see a brief summary of the features of each
integrated peripheral.  Unfortunately they use slightly different naming
in that chapter and in the DMAC, so a full-text search also didn't find
them.  Neither is that table visible in the PDF index.
&lt;/p&gt;
&lt;p&gt;
So about four man-days later it was finally working.   Another day was
spent on integrating it with the USB DMA for sending high-speed
isochronous transfers over the bus into the PC.  And ever since I'm
happily receiving something like 500,000 or 1,000,000 samples / second
from an alsa device, using snd-usb-audio.  Luckily, unlike MacOS or
Windows, the Linux audio drivers don't make arbitrary restrictions in
the sample rate.  According to the USB Audio spec, the sample rate can
be any 24bit number.  So audio devices with 16.7 Ms/s are very much
within the spec.  I hope some of the other OS driver writers would take
that to their heart.
&lt;/p&gt;
&lt;p&gt;
One of the first captures can be found at &lt;a href=&quot;http://people.osmocom.org/laforge/osmo-sdr/osmosdr_fm_capture_loud.wav.bz2&quot;&gt;this
link&lt;/a&gt;, containing a bzip2ed wave file in S16LE format Stereo (I/Q).
It contains a FM audio signal transmitted using a small pocket-sized FM
transmitter.
&lt;/p&gt;
&lt;p&gt;
There is no I/Q DC offset calibration yet, but once that is done we're
probably able to finally put the design into production.
&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 02 Mar 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: More research into the Motorola Horizon macro and Mo-bis</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/03/01#20120301-motorola_horizon</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/03/01#20120301-motorola_horizon</link>
	<description>&lt;p&gt;
Once upon a time there was an Americans company called Motorola, and they
decided to implement GSM.  Unfortunately they decided to deviate
significantly from the specification and implement their own proprietary
back-haul protocol between BTS and BSC, called Mo-bis.  It replaces the
standardized A-bis interface.
&lt;/p&gt;
&lt;p&gt;
Today, There are plenty of phased-out &lt;a href=&quot;http://openbsc.osmocom.org/trac/wiki/Motorola_Horizon_macro&quot;&gt;Motorola
Horizon / Horizon II macro BTSs&lt;/a&gt; that have been phased out.
Basically you can get them for scrap value, which makes them an ideal
target for GSM enthusiasts willing to run a single-cell network with
little investment.  So while there are actually people who are interested
in operating a power-consuming device roughly the size of a washing
machine in their home/office - they are normally not interested in
running a 19&quot; rack sized Motorola BSC with it.  Also, the BSCs are much
less frequently to be found compared to the BTS.
&lt;/p&gt;
&lt;p&gt;
So it would be great to support Mo-bis from within OpenBSC.  A couple of
brave young men have set out to try the seemingly impossible.  There's
absolutely zero documentation available on that protocol, and no
wireshark support either.  However, the University of Brno (Czech) has a
functional Motorola BTS + BSC setup, and I was able to obtain protocol
traces from them and actually experiment with the equipment in their
lab.
&lt;/p&gt;
&lt;p&gt;
The entire Motorola GSM architecture seems to be over-engineered without
end.  Basically you are looking at a distributed computer from the early
1990ies.  Lots of processor cards (m68k, ppc) interconnected by HDLC
links on top of synchronous 2Mbps links with 64k timeslots.  Those links
are available e.g. on the backplane of the BTS as a &lt;i&gt;TDM highway&lt;/i&gt;.
So basically even inside the BTS, the individual processors talk over
E1 to each other.  In the BSC, there is a token ring based LAN between
some of the cards instead.  And the MCUF in the BTS even supports to
transport those proprietary inter-cpu links via fiber optic (!).
&lt;/p&gt;
&lt;p&gt;
Each processor has a 16bit identifier by which it can be addressed in
form of &lt;i&gt;physical addresses&lt;/i&gt;.  Individual processes on the
processors have fixed &lt;i&gt;process identifiers&lt;/i&gt;, and they allocate
a variety of &lt;i&gt;mailboxes&lt;/i&gt; in which they can receive messages from
remote processors.  There are routing functions at intermediate notes.
&lt;/p&gt;
&lt;p&gt;
So any process on any processor card can send messages to any mailbox of
any other process on any other processor, independent of its physical
location (locally at the BTS, or at the remote BSC, or even at remote
BTSs).
&lt;/p&gt;
&lt;p&gt;
Besides physical addresses, there are also functional addresses.  Thos
addresses are used particularly to support fail-over.  Every board in a
BTS and BSC can be fully redundant, and if you use physical addresses,
you would address one of the two redundant boards.  Using functional
addresses, you address the function they both can perform, and some
routing magic will make sure it ends up at the current active node in
the pair.
&lt;/p&gt;
&lt;p&gt;
There are multiple processors in every TRX, and a couple of processors
for each BTS, processors in the E1 line cards, etc.  Now speaking of the
actual Mo-bis interface:  It seems to be a weird mixture between 08.58
(RSL) and 08.08 (BSSAP/BSSMAP).  However, after staring at the messages
sufficiently long, I have been able to write a more or less complete
wireshark dissector for them.  Radio Channel Activation (RACH/IMM.ASS)
are for example handled directly inside the BTS, they don't exist as
transactions on the Mo-bis like they do in A-bis.
&lt;/p&gt;
&lt;p&gt;
So implementing the actual location update / MO+MT voice call and SMS
related transactions is actually not all that hard.  What makes things
really difficult is the way the BTS is initialized at startup.
Basically what resembles the OML part of standardized A-bis.
&lt;/p&gt;
&lt;p&gt;
There is a lot of low-level management and bring-up of the individual
processes and boards,  and the download of a large 500 kByte-sized BLOB
simply called &lt;i&gt;database&lt;/i&gt;.  This binary database contains literally
hundreds of configuration parameters for the BTS and its neighbors.  It
also contains sophisticated configuration of the message routers, the
switching/multiplexing of 64k timeslots on the various links,
information on redundant paths within the back-haul network, etc.
&lt;/p&gt;
&lt;p&gt;
Interestingly, using the password combination &lt;i&gt;3beatles&lt;/i&gt; and
&lt;i&gt;4stooges&lt;/i&gt; on any of the serial consoles of the BTS or BSC, you can
enter into a &quot;god-mode&quot; which permits you to enter the &lt;i&gt;executive
monitor (EMON)&lt;/i&gt;.  The executive is the operating system they run on
both m68k and ppc processors.  It provides access to something like a
syslog of messages from the various processes, and you can manually
generate messages that are to be sent to mailboxes of processes.  You
can inspect the object table (application programs an databases),
read/write to PCMCIA flash cards, read and write to logical and physical
memory, inspect CPU and I/O usage and much more.  In fact, the
integrated Code Object Manager (COM) even allows the processors to
synchronize their code versions and remotely boot other CPUS via HDLC
channels.
&lt;/p&gt;
&lt;p&gt;
For a communications system geek like myself, it's extremely fascinating
to see such a sophisticated and versatile system.  I only wonder why on
earth somebody would come up with something as complex, only to connect
a couple of BTSs to a BSC.   Thus, the only logical explanation is that
Motorola has developed this distributed proprietary computing system way
before they went into GSM, and they probably just recycled it as it
already existed.
&lt;/p&gt;
&lt;p&gt;
If anyone knows more about the history of this, I would be excited to
hear about it.  It literally feels like being an archaeologist.
Analyzing ancient technology from our forefathers.   But then, it only
is 20 odd years old.  The only time I had a similar feeling was when I
briefly came in touch with IBM mainframes in 2001 and looking at IBMs
SNA protocol stack.
&lt;/p&gt;</description>
	<pubDate>Thu, 01 Mar 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: THAT'S INTERESTING</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-3323443372302113</guid>
	<link>http://videocircuits.blogspot.com/2012/02/thats-interesting.html</link>
	<description>&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/jjstratford&quot;&gt;Jennifer Juniper Stratford&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-3323443372302113?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 29 Feb 2012 14:12:19 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: octal_hatch (excerpts)</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-3937012428619922312</guid>
	<link>http://videocircuits.blogspot.com/2012/02/octalhatch-excerpts.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/dendriform&quot;&gt;Brian O'Reilly&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-3937012428619922312?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 29 Feb 2012 14:10:51 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: New stable release of perl-Verilog-Perl</title>
	<guid>https://chitlesh.wordpress.com/?p=1239</guid>
	<link>http://chitlesh.wordpress.com/2012/02/28/fel-new-stable-release-of-perl-verilog-perl/</link>
	<description>&lt;p&gt;Verilog-Perl 3.314(15926 &amp;#8211; the PI version!) is released and pushed to Fedora and EPEL6 testing repositories.&lt;/p&gt;
&lt;p&gt;Verilog::Language 3.314 2012/02/27 ChangeLog&lt;br /&gt;
- vhier &amp;#8211;forest and &amp;#8211;instance.  [by John Busco]&lt;br /&gt;
- Fix expansion of back-slashed escaped macros, bug441.  [Alberto Del Rio]&lt;br /&gt;
- Fix -F relative filename parsing, bug444. [Jeremy Bennett]&lt;br /&gt;
- Fix c style var array declarations. [by Jack Cummings]&lt;br /&gt;
- Fix &amp;#8211;debug parsing after -f files, bug442. [Jeremy Bennett]&lt;br /&gt;
- Fix hang on recursive substitution `defines, bug443. [Alex Solomatnikov]&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1239/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1239/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1239&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 28 Feb 2012 19:36:13 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: “The Amp Hour” Podcast</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2212</guid>
	<link>http://www.bunniestudios.com/blog/?p=2212</link>
	<description>&lt;p&gt;I was a guest on &lt;a href=&quot;http://www.theamphour.com/2012/02/27/the-amp-hour-84-bunnies-bibelot-bonification/&quot;&gt;this week&amp;#8217;s The Amp Hour radio show&lt;/a&gt;. It was good fun having a chat with show hosts Dave Jones and Chris Gammell &amp;#8212; talked about everything from PCB design at 35,000 feet to life in Asia to &lt;a href=&quot;http://adafruit.com/products/609&quot;&gt;NeTV&lt;/a&gt; and the legal challenges of system design.&lt;/p&gt;</description>
	<pubDate>Tue, 28 Feb 2012 08:55:25 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: colord-kde progress</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=570</guid>
	<link>http://blogs.gnome.org/hughsie/2012/02/27/colord-kde-progress/</link>
	<description>&lt;p&gt;In a few short days we&amp;#8217;ve already got the colord-kde repo up, and Daniel and I have been writing some initial code. Several more people have offered to help this week too.&lt;/p&gt;
&lt;p&gt;If you know C++ and Qt please &lt;a href=&quot;https://gitorious.org/colord/colord-kde/blobs/master/colord-kded/ColorD.cpp&quot;&gt;send me a patch for one of the TODOs in the kded module&lt;/a&gt;. Most are simple, for instance &lt;em&gt;//TODO: get the md5 checksum of the data&lt;/em&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 27 Feb 2012 17:37:54 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Protothon Article &quot;I got 99 problems but a glitch 'aint one&quot;</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-3102656814755109837</guid>
	<link>http://videocircuits.blogspot.com/2012/02/protothon-article-i-got-99-problems-but.html</link>
	<description>So my friend &lt;a href=&quot;http://joecoppard.com/&quot;&gt;Joe&lt;/a&gt; who runs &amp;nbsp;creative coding hackathons, talks &amp;amp; workshops did a nice write up of my work including my series of images &quot;I got 99 problems but a glitch 'aint one&quot; as a kick off of the new blog on the &amp;nbsp;&lt;a href=&quot;http://protothon.com/&quot;&gt;Protothon&lt;/a&gt;&amp;nbsp;site&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;anyway&amp;nbsp;the next Protothon event is based on &lt;a href=&quot;http://www.webrtc.org/&quot;&gt;WebRTC&lt;/a&gt; at Google Offices in Stockholm on the 24.03.2012&amp;nbsp;and looks like it's going to be allot of fun, WebRTC is basically enables web browsers with real time communications functions like in browser skype. However the fun doesn't stop there as it opens up all sorts of creative possibilities to anyone willing to experiment with the Javascript APIs and HTML5!&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-3102656814755109837?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 27 Feb 2012 13:51:58 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>GNSS-SDR: From a Bundle of ARM+FPGA to FPGA only</title>
	<guid>http://gnss-sdr.com/xml-rss2.php?itemid=57</guid>
	<link>http://gnss-sdr.com/xml-rss2.php?itemid=57</link>
	<description>In one of the previous posts I have described a simple project that realized a basic block of any GNSS-receiver. This block realized the following tasks:&lt;br /&gt;
1. Signal acquisition;&lt;br /&gt;
2. Confirmation of signal acquisition;&lt;br /&gt;
3. Pull-in process during which rough estimates of signal delay and Doppler shift were specified.For that project I used a hardware that included two main chips: FPGA and mcu. Correlator was made in FPGA and ARM7-based mcu was used to control correlator.&lt;br /&gt;
But modern FPGA allow to build SoC in them. SoC = System on Chip is an integrated circuit that integrates all components of a computer or electronc system on a single chip.&lt;br /&gt;
Typical SoC incorporates the following components:&lt;br /&gt;
- one or several microprocessors/microcontrollers/digital signal processors;&lt;br /&gt;
- memory blocks including ROM/RAM/EEPROM/FLASH;&lt;br /&gt;
- timing sources including oscillators and phased locked loops (PLLs);&lt;br /&gt;
- timers;&lt;br /&gt;
- external interfaces: USB/FireWire/Ethernet/USART/SPI/and so on;&lt;br /&gt;
- ADCs/DACs;&lt;br /&gt;
- interface bus that connects all blocks (wishbone/AMBA/so on).&lt;br /&gt;
&lt;br /&gt;
 So the step from a FPGA+MCU towards FPGA only seems very attractive.&lt;br /&gt;
&lt;br /&gt;
There are several open-source SoCs that can be implemented in FPG:&lt;br /&gt;
1. GRLIB IP LIBRARY – project of european company Gaisler ( &lt;a href=&quot;http://www.gaisler.com/cms/index.php?option=com_content&amp;task=section&amp;id=13&amp;Itemid=125&quot;&gt;http://www.gaisler.com...&lt;/a&gt; );&lt;br /&gt;
2. MILKYMIST (MM) SoC – open-source community project, headed by Sebastien Bourdeauducq ( &lt;a href=&quot;http://milkymist.org/wp/for-developers/&quot;&gt;http://milkymist.org/wp/for-developers/&lt;/a&gt; ).&lt;br /&gt;
Due to a number of resons the later project was chosen:&lt;br /&gt;
1. MM SoC demands less FPGA resources;&lt;br /&gt;
2. Digilent s3e500 port was found in internet and I have this board;&lt;br /&gt;
3. Cristian Paul Pe&amp;#241;aranda Rojas could make me interested in this project ;)&lt;br /&gt;
4. This SoC is used in commercially available device Milkymist One;&lt;br /&gt;
5. SoC is written in verilog for Xilinx FPGA Spartan6 but ports for spartan3e, spartan3a and for Altera's FPGAs also exist.&lt;br /&gt;
Digilent s3e500 MM SoC port is available through the link: &lt;a href=&quot;http://code.google.com/p/gnsssdr/source/browse/#svn%2Ftrunk%2FFPGA_PROJECTS%2FMM_SoC_based&quot;&gt;http://code.google.com/p/gnsssdr/source...&lt;/a&gt; . This project is based on the source code published on the forum ( &lt;a href=&quot;http://electronix.ru/forum/index.php?showtopic=96942&amp;hl=milkymist&quot;&gt;http://electronix.ru/forum/index.php?showtopic=96942&amp;amp;hl=milkymist&lt;/a&gt; ).&lt;br /&gt;
&lt;br /&gt;
Besides moving to MM SoC also program that realizes a basic block of any GNSS-receiver was upgraded. The program can now work with several channels in parallel (with 2 channels in the current version). Information about each channel is displayed on the terminal-screen now.:&lt;br /&gt;
1) SV number of the current channel;&lt;br /&gt;
2) Channel state (1 - acquisition; 2- acquisition confirmation; 3 - pull-in process; 4 - signal tracking);&lt;br /&gt;
3) Delay in each channel (in PRN half-chip units);&lt;br /&gt;
4) Doppler frequency of each channel (without tacking into account TCXO instability).&lt;br /&gt;
&lt;br /&gt;
Program output is shown on figure 1.&lt;br /&gt;
&lt;img src=&quot;http://gnss-sdr.ru/media/1/20120227-remark_1.gif&quot; width=&quot;595&quot; height=&quot;224&quot; alt=&quot;Program output.&quot; title=&quot;Program output.&quot; /&gt;&lt;br /&gt;
&lt;div&gt;Figure 1 Program output.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The source code is available through the link: &lt;a href=&quot;http://code.google.com/p/gnsssdr/source/browse/#svn%2Ftrunk%2FFPGA_PROJECTS%2FMM_SoC_based%2Fsoftware%2Fgps_int&quot;&gt;http://code.google.com/p/gnsssdr/source...&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;05.04.2012 UPD!&lt;/b&gt; Similar results with single channel tracking with the help of Namuru-correlator and Altera FPGA based SoC are received by Tukuji: &lt;a href=&quot;http://blog.goo.ne.jp/osqzss/e/af7fe0fe97a2c6b886fdb849efcd6c6f&quot;&gt;http://blog.goo.ne.jp/osqzss/...&lt;/a&gt;</description>
	<pubDate>Mon, 27 Feb 2012 13:51:32 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Felisha Ledesma</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-268788910375599122</guid>
	<link>http://videocircuits.blogspot.com/2012/02/felisha-ledesma.html</link>
	<description>&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/28489144&quot;&gt;Good Amount - Orange Pack&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user6191348&quot;&gt;Felisha Ledesma&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/34182033&quot;&gt;Good Amount - Data Time&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user6191348&quot;&gt;Felisha Ledesma&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/user6191348&quot;&gt;Felisha Ledesma&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-268788910375599122?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 27 Feb 2012 13:50:45 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Tuxbrain: SmartTop Efika MX &quot;Poor Man&quot; VESA Mount</title>
	<guid permalink="False">http://www.tuxbrain.com/208 at http://www.tuxbrain.com</guid>
	<link>http://www.tuxbrain.com/en/content/smarttop-efika-mx-poor-man-vesa-mount</link>
	<description>&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.tuxbrain.com/sites/default/files/efika_poor_vesa_mount_00.jpg&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Topic says all :), we have found a cheap and easy way to mount the&lt;a href=&quot;http://www.tuxbrain.com/oscommerce/products/1900&quot;&gt; Efika MX SmartTop&lt;/a&gt; in the back off a monitor/TV with a free Vesa mount , the solution is so cheap that we will include a a kit with the necessary if you buy one from our shop :) here is the HOWTO: &lt;br /&gt;The key is this little piece of plastic:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tuxbrain.com/en/content/smarttop-efika-mx-poor-man-vesa-mount&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 26 Feb 2012 23:31:26 +0000</pubDate>
</item>
<item>
	<title>Antitronics: Latest work on the knitting machine stuff</title>
	<guid permalink="False">http://www.antitronics.com/?p=215</guid>
	<link>http://www.antitronics.com/?p=215</link>
	<description>&lt;p&gt;Lately I&amp;#8217;ve been working on the knitting machine code some more. First, the thing that will affect fellow hackers and knitters the most -&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 3/1/12: After some more thought, I&amp;#8217;m recommending against simply using a serial adapter, as I had previously written here. My reasoning is this -&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While I&amp;#8217;d like to make it as easy as possible for people to connect to their knitting machines, I&amp;#8217;ve only tested this on one model of machine. A standard USB serial module may present voltages to the knitting machine which are outside the range that the external drives do. While I&amp;#8217;ve determined that this is probably safe for the one model of knitting machine that I have, I can&amp;#8217;t be sure that it&amp;#8217;s not going to stress the input circuitry on some models. The absolute safest way to do this is to use the exact same signal voltages that the external disk drive does. In order to do this, using an FTDI interface is the best way. The cost for using adafruit&amp;#8217;s &amp;#8220;FTDI Friend&amp;#8221; is only about $5 more than using a standard serial interface, and since these old knitting machines are irreplaceable and often very expensive when you can find them, I&amp;#8217;d rather do this the absolute safest way. I have no reports of problems from using regular serial interfaces, but I think that this is a case where absolutely correct engineering is more appropriate than a hack to save a few dollars.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll be updating the wiki page very soon with directions for how to use the FTDI Friend to interface with the knitting machine.&lt;/p&gt;
&lt;p&gt;&lt;del datetime=&quot;2012-03-01T12:49:57+00:00&quot;&gt;I&amp;#8217;ve now thoroughly tested connecting a PC to the knitting machine using only a standard USB serial adapter. This means that you don&amp;#8217;t have to fool with FTDI interfaces, inverting signals, etc. All it takes is a serial adapter, a female DB-9 connector, and four jumper wires. That&amp;#8217;s documented &lt;a href=&quot;http://www.antitronics.com/wiki/index.php?title=Electroknit_Technical_Information#Using_a_USB_serial_adapter_WITH_flow_control&quot;&gt;on the wiki page&lt;/a&gt;.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;This makes it much easier for the less technical among us to connect their machine to a computer.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
The rest will have more impact in the long run . . .
&lt;p&gt;I&amp;#8217;ve obtained an actual Brother FB100 external floppy drive, and successfully connected it through a serial adapter. It requires a 5V adapter &amp;#8211; I&amp;#8217;m using the &lt;a href=&quot;https://www.adafruit.com/products/284&quot;&gt;adafruit FTDI friend&lt;/a&gt;. It&amp;#8217;s a little complex &amp;#8211; you have to rejumper and reprogram the FTDI friend. That&amp;#8217;s also documented on the wiki page &lt;a href=&quot;http://www.antitronics.com/wiki/index.php?title=Electroknit_Technical_Information&amp;action=submit#Connecting_the_Brother_FB100_disk_drive_to_a_computer&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are some files currently in the &amp;#8216;experimental&amp;#8217; directory &lt;a href=&quot;https://github.com/adafruit/knitting_machine&quot;&gt;in the source repo&lt;/a&gt; which communicate with the disk drive, and extract information from knitting machine disks into the format used by my disk emulator. I&amp;#8217;m planning to use these to help fill in some gaps in knowledge about the file format used by the knitting machine.&lt;/p&gt;
&lt;p&gt;Most people won&amp;#8217;t have use for this code to interface with the floppy drive, as the drives are rare.&lt;/p&gt;
&lt;p&gt;I have other plans for this investigation, so I may have more to say about it soon.&lt;/p&gt;</description>
	<pubDate>Sun, 26 Feb 2012 20:20:21 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: New ArduEye using Stonyman image sensor chips</title>
	<guid>tag:diydrones.com,2012-02-25:705844:BlogPost:793728</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:793728</link>
	<description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Awhile ago we (Centeye) started ArduEye, a project to implement an &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/ardueye-brutally-minimalist&quot; target=&quot;_self&quot;&gt;open source programmable vision sensor&lt;/a&gt; built around the Arduino platform. The first ArduEye version used a simple Tam image sensor chip and a plastic lens attached directly to the chip. After much experimentation and some feedback from users, we now have a second generation ArduEye.&lt;/p&gt;
&lt;p&gt;The second generation ArduEye is meant to be extremely flexible, ultimately allowing one to implement a wide variety of different sensor configurations. A basic, complete ArduEye is shown below, and contains the following basic components:&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/qFb7mdFH0L8TBrpfNi6Yfi57kPjcryDfbf29eSdjLTMrJHGLwU7H2DVgKABfqTAJPDMXPTuirOfrkBk2v9UO3pJU1MkSzMgW/StonymanUnoRocket_1.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/qFb7mdFH0L8TBrpfNi6Yfi57kPjcryDfbf29eSdjLTMrJHGLwU7H2DVgKABfqTAJPDMXPTuirOfrkBk2v9UO3pJU1MkSzMgW/StonymanUnoRocket_1.jpg&quot; width=&quot;602&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An Arduino- Currently we are supporting Arduino UNO-sized boards (e.g. UNO, Duemilanove, Pro) and the Arduino MEGA. When the ARM-driven DUE comes out, we will surely support that as well.&lt;/p&gt;
&lt;p&gt;A shield board- this board plugs into the Arduino, and has a number of places to mount one or more image sensor breakout boards. This shield also has places to mount an optional external ADC as well as additional power supply capacitors if desired.&lt;/p&gt;
&lt;p&gt;A Stonyman image sensor on a breakout board- The Stonyman is a Centeye-designed 112x112 resolution image sensor chip with an extremely simple interface: 5 digital lines in, which are pulse in predefined sequences, and one analog line out, which contains the pixel. The Stonyman chips are wirebonded directly to a 1-inch square breakout board, which can plug into the shield.&lt;/p&gt;
&lt;p&gt;Optics- Possibilities include printed pinholes, printed slits, and cell-phone camera lenses, depending on what you want to do.&lt;/p&gt;
&lt;p&gt;Example application- The &quot;application&quot; is an Arduino sketch programmed into the Arduino. This sketch determines what the ArduEye does. One sketch can make it track bright lights, another sketch can measure optical flow, and so on. We are releasing, initially, a base sketch that demonstrates light tracking, optical flow, and odometry. Let us know what other example applications you would like to see.&lt;/p&gt;
&lt;p&gt;ArduEye libraries- These libraries are to be installed in your Arduino IDE's &quot;libraries&quot; file, and include functions to operate the Stonyman image sensor chip as well as acquire and process images, including measuring optical flow.&lt;/p&gt;
&lt;p&gt;GUI- Finally, we created a basic GUI that serves as a visual dump terminal for the ArduEye. You can now communicate with the ArduEye via either the GUI or the basic Arduino IDE's serial terminal. The GUI was written in Processing.&lt;/p&gt;
&lt;p&gt;We designed the system to allow easy hacking to implement a wide variety of vision sensors by exploring combinations of optics, image sensing, and image processing. I personally find it useful, and actually use this system for prototyping things at Centeye- I can prototype a new vision sensor in just a couple hours. The target applications are quite broad and include just about anything that may use embedded vision, whether robotics, sensor nets, industrial controls, interactive electronic sculptures (yes this has come up), and so forth.&lt;/p&gt;
&lt;p&gt;The video at the top shows some of the basic things you can do with this ArduEye. You'll see the ArduEye interfacing with a host PC using both the Arduino IDE's serial terminal and the ArduEye GUI. For more details, including links to the hardware design files and source code, go to the &lt;a href=&quot;http://www.ardueye.com&quot; target=&quot;_blank&quot;&gt;ArduEye wiki site&lt;/a&gt;. The site is a work in progress, but is adequate to get people started. The sample &quot;first application&quot; and GUI is what was used to generate the above video.&lt;/p&gt;
&lt;p&gt;Right now we are having 200 Stonyman breakout boards being assembled- they should be ready within a month. We'll make more if this is well-received. We can assemble a few in-house at Centeye- I'll do this if enough people twist my arm and promise to really play with the hardware. :)&lt;/p&gt;
&lt;p&gt;Please let me know your thoughts. In particular, are there any other &quot;sample application&quot; sketches you'd like us to implement?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
	<pubDate>Sat, 25 Feb 2012 21:25:30 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Embedded Linux Conference day 3</title>
	<guid>http://free-electrons.com/?p=4122</guid>
	<link>http://free-electrons.com/blog/elc-2012-day-3/</link>
	<description>&lt;p&gt;Finally, the last day of the 2012 edition of the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference&quot;&gt;Embedded Linux Conference&lt;/a&gt; has arrived. Including the Android Builders Summit, it was a very busy week with five full days of presentations, a very intensive learning session, but also highly motivating and refreshing. Here is, with a little bit of delay, the report of this last day.&lt;/p&gt;
&lt;p&gt;Thanks to the kind help of Benjamin Zores (from Alcatel/Lucent, the &lt;a href=&quot;http://www.geexbox.org/&quot;&gt;GeeXboX&lt;/a&gt; and &lt;a href=&quot;http://www.openbricks.org&quot;&gt;OpenBricks&lt;/a&gt; projects) who kindly accepted to record the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/yau&quot;&gt;Userland Tools and Techniques For Linux Board Bring-Up and Systems Integration&lt;/a&gt;, both Grégory and myself could attend the talk from Greg Ungerer titled &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/ungerer&quot;&gt;M68K: Life in the Old Architecture&lt;/a&gt;. Greg started with a very nice and clear explanation of the history of the &lt;a href=&quot;http://en.wikipedia.org/wiki/68k&quot;&gt;68k architecture&lt;/a&gt; from a hardware perspective, and detailed its evolution into the &lt;a href=&quot;http://en.wikipedia.org/wiki/Freescale_ColdFire&quot;&gt;Coldfire&lt;/a&gt; architecture. The history is quite complicated: the first 68k processors had no MMU, and then MMU was added starting at the 68030 family. However, when Freescale started with Coldfire, which uses a subset of the 68k instruction set, they removed the MMU, until Coldfire V4e, on which an MMU is available. Originally, the Linux port in &lt;code&gt;arch/m68k&lt;/code&gt; only supported the classic 68k with MMU, and support for non-MMU Coldfires was added in uClinux. Later, support for non-MMU Coldfires was added into the mainline kernel in &lt;code&gt;arch/m68knommu&lt;/code&gt;, with unfortunately a lot of duplication from &lt;code&gt;arch/m68k&lt;/code&gt;. The two directories have been merged again some time ago: the merge had already been done in a mechanic fashion (merging identical files, renaming different files that had similar names), and a huge cleanup effort has taken place since then. The cleanup effort is not completely done yet, but it&amp;#8217;s getting close, according to Greg Ungerer. At the end of the session, there has been a question on how m68k/coldfire developers typically generate their userspace, and Greg said he uses something similar to Buildroot, which in fact is uClinux-dist. I jumped in, and said that we would definitely like to have Coldfire support, especially since the activity on uClinux-dist isn&amp;#8217;t very strong. I also asked what were the remaining differences between the uClinux kernel and the mainline kernel, and according to Greg, there is almost no difference now except maybe support for a few boards. Greg only uses the mainline Linux kernel now for his m68k and Coldfire developments.&lt;/p&gt;
&lt;p&gt;The next conference I attended was the talk from Gary Bisson (Adeneo Embedded) titled &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/bisson&quot;&gt;Useful USB Gadgets on Linux&lt;/a&gt;. I rescued the speaker by lending my laptop because his laptop had no VGA output. Fortunately, the speaker was French, so he could adapt quickly to our bizarre &lt;code&gt;azerty&lt;/code&gt; keyboard layout. Gary gave quite a bit of context on what USB is, and explained the USB terminology such as interfaces, end-points, configurations, etc. He then quickly described the Linux USB Gadget stack and gadgetfs for the implementation of USB gadget drivers in userspace. He then presented the existing USB gadget drivers in the kernel, mainly the zero gadget driver (for testing purposes), the mass storage gadget driver, the serial gadget driver and the Ethernet gadget driver. At the end of the presentation, he made a demonstration on a BeagleBoard-XM with the gadget multi driver, which allows to expose multiple gadget interfaces at the same time. So he showed that he could expose the Ethernet interface, the Mass Storage interface and the Serial interface, and demonstrated their usage from the host machine. Overall the talk was good, but I was personally expecting a more in-depth look at USB Gadget driver development, and not only usage: I have already been using gadget drivers for some time now, and I was more interested in having details on developing custom gadget drivers rather than simply on using the existing ones.&lt;/p&gt;
&lt;div id=&quot;attachment_4142&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/feteam.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/feteam.jpg&quot; alt=&quot;Free Electrons engineering team. From left to right: Grégory Clément, Maxime Ripard and Thomas Petazzoni&quot; title=&quot;Free Electrons engineering team. From left to right: Grégory Clément, Maxime Ripard and Thomas Petazzoni&quot; width=&quot;450&quot; height=&quot;338&quot; class=&quot;size-full wp-image-4142&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Free Electrons engineering team (missing: Michael Opdenacker). From left to right: Grégory Clément, Maxime Ripard and Thomas Petazzoni&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;After a quick break, Grégory and I attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/mielczarczyk&quot;&gt;Getting the First Open Source GSM Stack in Linux&lt;/a&gt; talk by Marcin Mielczarczyk from Tieto. It was an absolutely excellent talk. Marcin described the work he and one of his colleague did to reverse engineer a cheap Chinese phone and port U-Boot and Linux on it. Marcin started by giving details about the landscape of those cheap Chinese phones, and it was quite funny: there are brands like &lt;i&gt;Nokla&lt;/i&gt;, &lt;i&gt;Sany Eracsson&lt;/i&gt; or &lt;i&gt;SciPhone&lt;/i&gt; that create phones that are similar in shape and design to phones from the original brands, but with completely different hardware, and usually completely different software. Marcin said that the great thing about those phones is that they are really cheap (which is nice when you need to do some hardware modifications on them for reverse engineering purposes), can easily be bought from auction sites like eBay, and usually do not use any sort of encryption or signature mechanism to prevent the execution of a different operating system or bootloader. The motivation of Marcin in getting Linux to run on such a phone was to ultimately be able to run the complete &lt;a href=&quot;http://bb.osmocom.org/trac/&quot;&gt;OsmocomBB&lt;/a&gt; software GSM stack inside the phone. OsmocomBB is a free software implementation of a GSM communication stack, lead by Harald Welte. For the moment, the OsmocomBB project uses phones based on the Calypso based-band processor, and only use the phone for the layer 1 (physical layer) of the communication, while the above layers (layer 2 and 3) are implemented in a PC that communicates with the phone over a serial port. Marcin would like to integrate everything inside the phone itself, in order to make the free software GSM stack completely autonomous and fully usable directly on the phone. Marcin decided to pick the &lt;a href=&quot;http://bb.osmocom.org/trac/wiki/SciphoneDreamG2&quot;&gt;SciPhoneDreamG2&lt;/a&gt;, a phone that uses the &lt;a href=&quot;http://bb.osmocom.org/trac/wiki/MT6235&quot;&gt;Mediatek 6235&lt;/a&gt; processor, which has the great advantage of being an ARM9 processor, allowing to run a full-blown Linux, and having a datasheet available on the Web. The original operating system of the phone is Nucleus, on top of which the Chinese brand has added an interface that completely mimics Android but is not Android at all. Marcin described the work he did to understand where the UART port and JTAG port was connected (for this work, he mentioned the usage of the &lt;a href=&quot;http://elinux.org/JTAG_Finder&quot;&gt;JTAG finder project&lt;/a&gt;, a software one can run on a micro-controller and that automatically finds which pins are the JTAG pins of a processor). Once he had access to a serial console and the JTAG, he dumped the memory, and started understanding how the boot process was working, and how the existing boot loader was initializing the DRAM. This work was completely done by disassembling the code, which required quite some effort, according to Marcin. Once this was done, he said that porting U-Boot only required creating a basic UART driver and a timer driver, and porting a basic Linux only required a similar UART driver and timer driver, but also an interrupt driver. Marcin and his colleague then went one in developing the other drivers, such as SD, USB, GPIOs and more, and they detailed some of the issues they faced and the time required for these different tasks. In the end, the project is not yet finished, since OsmocomBB does not run on the phone yet, but this is the next goal for Marcin and his colleague. In the end, it was a very interesting goal, detailing in an informative and amusing way an absolutely excellent reverse-engineering effort conducted by Marcin. I would strongly recommend watching the video of this talk.&lt;/p&gt;
&lt;div id=&quot;attachment_4141&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/walleij1.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/walleij1.jpg&quot; alt=&quot;Pin Control Subsystem Overview Linus Walleij&quot; title=&quot;Pin Control Subsystem Overview Linus Walleij&quot; width=&quot;400&quot; height=&quot;300&quot; class=&quot;size-full wp-image-4141&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Pin Control Subsystem Overview Linus Walleij&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The last afternoon of ELC started with a talk from Linus Walleij from Linaro, &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/walleij&quot;&gt;Pin Control Subsystem Overview&lt;/a&gt;. Linus Walleij started by describing with lots of details how I/O pins are implemented from a hardware perspective. He first described a basic I/O pin, on which the software can just control the level. On top of this, he explained the hardware logic used to generate interrupts and wake-up events from I/O pins. And finally, he added that those I/O pins are nowadays commonly multiplexed since the SoC do not have enough pins to expose all their possible features, so a given pin can be used either for one function (say, one pin of a I2C bus) or another function (say, one pin of a parallel LCD interface) or as a general purpose I/O. Since this multiplexing is controlled by software, the code for the various ARM sub-architectures in the Linux kernel have each implemented their own little framework and API to solve that problem, and it&amp;#8217;s up to each board file to set their I/O multiplexing settings. Unfortunately, since each ARM sub-architecture has its own implementation, there is no coherent API, and there is code duplication. Linus Walleij&amp;#8217;s pin mux subsystem intends to solve that. It has already been merged in mainline, in the &lt;code&gt;drivers/pinctrl&lt;/code&gt; directory, and a few ARM sub-architectures have started using it, with more to come in the near future, said Linus. Basically, the pinmux subsystem allows to describe which pins are available on the SoC, how they are grouped together in functions, and how drivers can select which function should be activated at an I/O multiplexing level. Of course, the pinmux subsystem detects conflicting usage of I/O, for example if two different drivers want to use the same pin with a different function. Linus also clarified how drivers for I/O pins block should be implemented in the kernel now. If what you have is a simple GPIO expander, then the driver for it should lie in &lt;code&gt;drivers/gpio&lt;/code&gt; and it should use the &lt;code&gt;gpio_chip&lt;/code&gt; structure. If this simple GPIO expander is also capable of generating interrupts, then the driver should still be in &lt;code&gt;drivers/gpio&lt;/code&gt;, but in addition to the &lt;code&gt;gpio_chip&lt;/code&gt; structure, it should also register an &lt;code&gt;irq_chip&lt;/code&gt; structure. And finally, if instead this I/O pin controller supports multiplexing, then the driver for it should be implemented in &lt;code&gt;drivers/pinctrl&lt;/code&gt;, and it should register into the GPIO subsystem (through the &lt;code&gt;gpio_chip&lt;/code&gt; structure), into the IRQ subsystem (through the &lt;code&gt;irq_chip&lt;/code&gt; structure) and into the pinmux subsystem (through the &lt;code&gt;pinctrl_desc&lt;/code&gt; and other related structures). All in all, Linus&amp;#8217;s presentation was a great talk, but I wished he would have put more details on the actual API and data structures: his description of the data structures through UML diagrams were a bit hard to follow.&lt;/p&gt;
&lt;p&gt;For the last session of the day, I initially planned to attend Pintu Kummar&amp;#8217;s talk on &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/kumar&quot;&gt;Controlling Linux Memory Fragmentation and Higher Order Allocation Failure: Analysis, Observations and Results&lt;/a&gt;, but this session was unfortunately canceled. Therefore, I joined my colleague Maxime Ripard and attended Lucas de Marchi talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/de-marchi&quot;&gt;Managing Kernel Modules With kmod&lt;/a&gt;. Basically, about a year ago, Lennart Poettering, developer of the systemd new userspace init implementation for Linux, listed a set of topics that he wanted to see improved in Linux to make the initialization sequence perform better. Amongst them was the development of a userspace library to manage kernel modules (query information, insert and remove modules). The problem is that until now, the only way to load and remove modules was to call the &lt;code&gt;modprobe&lt;/code&gt;, &lt;code&gt;insmod&lt;/code&gt; or &lt;code&gt;rmmod&lt;/code&gt; programs, which for each module load operation, required a costly sequence of &lt;code&gt;fork/exec&lt;/code&gt;. Since udev tries to load up to 200-300 modules at startup (sometimes just to discover that the module is already loaded), this takes a significant amount of time. So Lucas de Marchi, who works at ProFUSION, decided to step up, and did the implementation of &lt;i&gt;kmod&lt;/i&gt;. kmod is composed of a C library which implements the core logic of the module information query, module loading and module removal operation, supporting all the fine details that modprobe was supporting (such as dependency handling, module aliases and the configuration files in &lt;code&gt;/etc/modprobe.d/&lt;/code&gt; with options for modules, blacklisted modules). kmod also contains replacement programs for the &lt;code&gt;insmod&lt;/code&gt;, &lt;code&gt;lsmod&lt;/code&gt;, &lt;code&gt;rmmod&lt;/code&gt; and &lt;code&gt;modprobe&lt;/code&gt; programs, directly inside a single &lt;code&gt;kmod&lt;/code&gt; binary, with symlinks pointing to it for the various commands. &lt;i&gt;kmod&lt;/i&gt; is now a full replacement for the old &lt;i&gt;module-init-tools&lt;/i&gt;, which has been marked as obsolete by his former maintainer, Jon Masters (who has joined the &lt;i&gt;kmod&lt;/i&gt; project). Desktop distributions have started to pick up &lt;i&gt;kmod&lt;/i&gt; (Arch Linux, Fedora, and Debian in experimental), as well as embedded Linux build systems. Lucas mentioned that Buildroot had the latest version of kmod, while OpenEmbedded had a slighly older version, and that he didn&amp;#8217;t know about other build systems. In the end, this &lt;i&gt;kmod&lt;/i&gt; project does not bring a lot of new features or innovations, but is a well-appreciated initiative to make module management better in Linux. What&amp;#8217;s very impressive in the time frame in which the project was done: in about a year, the project got started, the development was done, and it is now a full replacement of the old solution, which has been marked deprecated. Great job!&lt;/p&gt;
&lt;div id=&quot;attachment_4140&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/demarchi1.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/demarchi1.jpg&quot; alt=&quot;Managing Kernel Modules With kmod, Lucas De Marchi&quot; title=&quot;Managing Kernel Modules With kmod, Lucas De Marchi&quot; width=&quot;400&quot; height=&quot;300&quot; class=&quot;size-full wp-image-4140&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Managing Kernel Modules With kmod, Lucas De Marchi&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Finally, as every ELC, the conference was closed with a game involving all the attendees, and allowing to win nice prizes such as development boards, USB scopes, audio/video portable players (PMPs), and more. The game started with a set of geek questions (such as &amp;#8220;Will the Linux kernel in version 3.3 have more or less than 15 millions lines of code ?&amp;#8221;, or &amp;#8220;Is the distance from the Earth to the Moon smaller or higher than 150.000 miles ?&amp;#8221;), and then a rock/paper/scissors game, and finally a raffle. This closing game is always a nice way of ending ELC.&lt;/p&gt;
&lt;p&gt;This year&amp;#8217;s edition of the Android Builders Summit and the Embedded Linux Conference have been great, with lots of interesting technical talks, and lots of side discussions with various developers. Many thanks to the conference organizers and speakers!&lt;/p&gt;
&lt;div id=&quot;attachment_4134&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/2012_elce_header.png&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/2012_elce_header.png&quot; alt=&quot;Embedded Linux Conference Europe 2012&quot; title=&quot;Embedded Linux Conference Europe 2012&quot; width=&quot;400&quot; class=&quot;size-full wp-image-4134&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Embedded Linux Conference Europe 2012&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;We hope that those five blog posts reporting some details about those conferences have been interesting to those who didn&amp;#8217;t have the chance to attend, and we are definitely looking forward the next edition of the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference-europe&quot;&gt;Embedded Linux Conference Europe&lt;/a&gt;, which will take place in Barcelona from November 5th to November 7th. Note that the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference-europe/cfp&quot;&gt;call for paper&lt;/a&gt; has already been published. It&amp;#8217;s time to think about what you&amp;#8217;re doing in the embedded Linux world, and to propose a corresponding talk!&lt;/p&gt;</description>
	<pubDate>Sat, 25 Feb 2012 05:30:54 +0000</pubDate>
</item>
<item>
	<title>Elphel: HomeSide 720° – A helmet mounted panoramic camera</title>
	<guid>http://blog.elphel.com/2012/02/homeside-720%c2%b0-%e2%80%93-a-helmet-mounted-panoramic-camera/</guid>
	<link>http://blog.elphel.com/2012/02/homeside-720%c2%b0-%e2%80%93-a-helmet-mounted-panoramic-camera/</link>
	<description>Seeing the impressive images of the Elphel-Eyesis 4pi camera I thought it’s time to tell you about the HomeSide 720°. Like the Eyesis its purpose is to capture panorama frames with a framerate of 5fps. The major difference is that the HomeSide 720° is mounted on a helmet. To have an acceptable weight it consists of only two instead of eight Elphel 353 delivering one forth of the resolution the 4pi does. Thus the camera is able to record 30MPix frames before stitching. Additionally it’s reconfigureable to enable HDR panorama frames.

More interesting probably is the purpose it was built for. We created the assembly for indoor virtual tours. After several drawbacks we finally have an approach which works very well. We do auto leveling, auto stabilization and path extraction by image analysis only. Furthermore we recognize crossing points where the user can decide where to go when the tour is shown in the player.

This is not so easy since we neither have GPS nor IMU data. Nevertheless its possible.

All this information goes into our new webplayer which reassembles the images to a virtual tour.

Have a look at the HomeSide 720° Virtual Tour [1]
Click into the player and use the cursor keys to navigate. You may also click and drag to change the point of view.  This tour was recorded with 10MPix i.e. one Elphel 353 with two sensors.

Important: The pi symbols shows a rendered tour, not recorded by the camera

At the moment we are improving the image quality. We are also looking for a partner to drive the development even faster to create stunning indoor virtual tours.

[1] https://homeside.at/html/inside-demo.html</description>
	<pubDate>Sat, 25 Feb 2012 00:18:34 +0000</pubDate>
</item>
<item>
	<title>Elphel: Run ImageJ plugins from the command line in Ubuntu</title>
	<guid>http://blog.elphel.com/2012/02/run-imagej-plugins-from-the-command-line-in-ubuntu/</guid>
	<link>http://blog.elphel.com/2012/02/run-imagej-plugins-from-the-command-line-in-ubuntu/</link>
	<description>1.  Get X Virtual FrameBuffer [1]
sudo apt-get install xvfb
 
2. Launch ImageJ (&quot;cd&quot; to the ij.jar directory):
Xvfb :15 &amp;amp;
DISPLAY=:15 java -Xmx12288m -jar ij.jar -run &quot;TestIJ Plugin&quot;

Comments:

	 TestIJ Plugin is the name of the compiled plugin in the ImageJ menu. No need to specify a subfolder.
	 :15 is an example.


Links that helped:

	Source 1 [2]
	Source 2 [3]
	Source 3 [4]


[1] http://en.wikipedia.org/wiki/Xvfb
[2] http://stackoverflow.com/questions/4599618/how-to-add-3rd-party-jars-to-compile-time-classpath-in-jgrasp
[3] http://imagej.1557.n6.nabble.com/How-to-set-DISPLAY-environment-variable-when-running-ImageJ-with-NO-SHOW-option-td3686181.html
[4] http://cmci.embl.de/documents/100922imagej_cluster</description>
	<pubDate>Sat, 25 Feb 2012 00:18:34 +0000</pubDate>
</item>
<item>
	<title>Transmaterial: Power Felt</title>
	<guid permalink="False">http://transmaterial.net/?p=2001</guid>
	<link>http://transmaterial.net/index.php/2012/02/24/power-felt/</link>
	<description>&lt;p&gt;Scientists at the Center for Nanotechnology and Molecular Materials at Wake Forest University have developed a thermoelectric fabric that converts body heat into electricity. The material is made of layers of interlocking carbon nanotubes and plastic fibers, and feels similar to felt. The thermoelectric technology develops electric current from temperature differences, such as the difference between anatomical temperature and room temperature.&lt;/p&gt;
&lt;p&gt;According to Wake Forest researcher Corey Hewitt, &amp;#8220;We waste a lot of energy in the form of heat. For example, recapturing a car&amp;#8217;s energy waste could help improve fuel mileage and power the radio, air conditioning or navigation system. Generally thermoelectrics are an underdeveloped technology for harvesting energy, yet there is so much opportunity.&amp;#8221;&lt;/p&gt;
&lt;p&gt;The first prototypes of Power Felt yielded 140 nanowatts of power from 72 layers of nanofabric, and the researchers are currently attempting to increase the output of the technology.&lt;/p&gt;
&lt;p&gt;&amp;#8220;I imagine being able to make a jacket with a completely thermoelectric inside liner that gathers warmth from body heat, while the exterior remains cold from the outside temperature,&amp;#8221; says Hewitt. &amp;#8220;If the Power Felt is efficient enough, you could potentially power an iPod, which would be great for distance runners. It&amp;#8217;s definitely within reach.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.wfu.edu/~carroldl/Thermoelectrics.html&quot;&gt;Wake Forest University&lt;/a&gt;, Winston-Salem, NC, USA.&lt;/p&gt;</description>
	<pubDate>Fri, 24 Feb 2012 15:00:46 +0000</pubDate>
</item>
<item>
	<title>Richard Hughes, ColorHug: Looking for a cool KDE person</title>
	<guid permalink="False">http://blogs.gnome.org/hughsie/?p=567</guid>
	<link>http://blogs.gnome.org/hughsie/2012/02/22/looking-for-a-cool-kde-person/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.gnome.org/&quot;&gt;GNOME&lt;/a&gt; has been a color managed desktop by default for two releases now, and I deliberately designed &lt;a href=&quot;http://blogs.gnome.org/hughsie/feed/www.freedesktop.org/software/colord/&quot;&gt;colord&lt;/a&gt; to have an open Freedesktop &lt;a href=&quot;https://gitorious.org/colord/master/blobs/master/src/org.freedesktop.ColorManager.xml&quot;&gt;DBus API&lt;/a&gt; that could be used by both desktops. I am a little disappointed in KDE that it hasn&amp;#8217;t made the jump too. Really, KDE just has to include a KCM module to do the &lt;a href=&quot;http://www.freedesktop.org/software/colord/faq.html#gcm&quot;&gt;6 things on this list&lt;/a&gt; and also perhaps include a simple control center panel to configure it.&lt;/p&gt;
&lt;p&gt;Basically, I need a KDE dude. Of course, I can help quite a lot and mentor the project, but I&amp;#8217;ve never really coded Qt or C++ in anger, so to speak. If you&amp;#8217;re interested, I could maybe even set up a Google summer of code place as well, although I&amp;#8217;d prefer it to be an existing person familiar with the KDE community so there is some ongoing maintainer.&lt;/p&gt;
&lt;p&gt;If anybody is interested, let me know and I&amp;#8217;ll set up a meeting and we can talk and discuss details. Thanks.&lt;/p&gt;</description>
	<pubDate>Wed, 22 Feb 2012 09:49:28 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Arduino digital clock using the Dot Matrix Display</title>
	<guid>http://www.freetronics.com/blogs/news/5730842-arduino-digital-clock-using-the-dot-matrix-display</guid>
	<link>http://www.freetronics.com/blogs/news/5730842-arduino-digital-clock-using-the-dot-matrix-display</link>
	<description>&lt;p&gt;Forum member &quot;Buzbot&quot; has posted a cool video showing a digital clock he created based on John Boxall's clock code. Check this out:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;Read more in our forum:&amp;nbsp;&lt;a href=&quot;http://forum.freetronics.com/viewtopic.php?f=26&amp;t=187&quot;&gt;http://forum.freetronics.com/viewtopic.php?f=26&amp;amp;t=187&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 21 Feb 2012 09:52:58 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: FMC Projects - 21-02-2012: XTech FMC front-panel kit eases ordering</title>
	<guid>http://www.ohwr.org/news/244</guid>
	<link>http://www.ohwr.org/news/244</link>
	<pubDate>Tue, 21 Feb 2012 08:35:04 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Free Electrons: Embedded Linux Conference day 2</title>
	<guid>http://free-electrons.com/?p=4113</guid>
	<link>http://free-electrons.com/blog/elc-2012-day-2/</link>
	<description>&lt;p&gt;Day 2 of the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference&quot;&gt;Embedded Linux Conference&lt;/a&gt; started with a keynote titled &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/anderson1&quot;&gt;The Internet of Things&lt;/a&gt;, given by Mike Anderson. With such a title, one could have feared some kind of very fuzzy-marketing-style kind of keynote, but with Mike Anderson as speaker, it clearly couldn&amp;#8217;t be the case. Mike is well-known at ELC and ELCE for all its highly technical presentation on kernel debugging, JTAG, OpenOCD and more. This keynote was not really related to embedded Linux directly, but about all the potential applications that modern technologies such as RFID, nano-robots, wireless communications have. As Mike pointed out, there are lots of potential opportunities to optimize energy usage, make our lifes easier, but there are also lots of dangers (surveillance, manipulation of information, reduction of private life, etc.).&lt;/p&gt;
&lt;div id=&quot;attachment_4116&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/mike-anderson.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/mike-anderson.jpg&quot; alt=&quot;The Internet of Things, Mike Anderson&quot; title=&quot;The Internet of Things, Mike Anderson&quot; width=&quot;226&quot; height=&quot;301&quot; class=&quot;size-full wp-image-4116&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The Internet of Things, Mike Anderson&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Right after Mike&amp;#8217;s keynote, it was the time for me to give the presentation &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/petazzoni&quot;&gt;Buildroot: A Nice, Simple, and Efficient Embedded Linux Build System&lt;/a&gt;. As a presenter, I am obviously not objective, but I think the presentation went well. I filled the entire time slot, leaving the time for about five questions at the end. Around 60-70 people were in the room, quite a good number considering the fact that there was a talk from the excellent Steven Rostedt in another room at the same time. I will put the slides of this presentation on line very soon, which was a general presentation of Buildroot, trying to emphasize all the cleanups and quality improvements we have done since the last three years, and also trying to highlight the fact that Buildroot is really easy to understand, it is not a magic black box contrary to some other embedded Linux build systems. That&amp;#8217;s the reason why I gave some details about how our package infrastructure works internally, to show that it is really simple. There were several questions about why we do not support binary packages, and of course I replied that it was a design decision in order to remain simple. At the end of the presentation, a guy from Mentor Graphics came to tell me that saying no was an excellent thing and that too many projects fail to say no to new features, and therefore they get more and more complicated.&lt;/p&gt;
&lt;p&gt;At the same time as my Buildroot&amp;#8217;s talk, Steven Rostedt from RedHat was presenting &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/rostedt&quot;&gt;Automated Testing with ktest.pl (Embedded Edition)&lt;/a&gt; and Grégory attended this conference. Grégory reports: &lt;i&gt;&amp;#8220;As indicated in the title it is the &amp;#8220;embedded&amp;#8221; version of a former conference. I don&amp;#8217;t know if Steven is really new in the embedded field or if he just pretends to, but the result is that for a newcomer in embedded Linux, this talk is really well detailed. He shows how to setup the board step by step, showing the problems you usually have. But the real topic is the ktest.pl script and how to use it. After two hours of presentation I was totally convinced by the usefulness of this script. It will help a lot to automate the tasks we usually do by hand such as git bisect, check that the stack of patches we have don&amp;#8217;t break anything, check that we don&amp;#8217;t have any regression at runtime or just at build. All these tasks can be done with ktest.pl and in a very simple way!&amp;#8221;&lt;/i&gt;&lt;/p&gt;
&lt;div id=&quot;attachment_4117&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/steven-rostedt.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/steven-rostedt.jpg&quot; alt=&quot;Automated Testing with ktest.pl (Embedded Edition), Steven Rostedt&quot; title=&quot;Automated Testing with ktest.pl (Embedded Edition), Steven Rostedt&quot; width=&quot;401&quot; height=&quot;301&quot; class=&quot;size-full wp-image-4117&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Automated Testing with ktest.pl (Embedded Edition), Steven Rostedt&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Then, I went to Tim Bird&amp;#8217;s talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/bird2&quot;&gt;Embedded-Appropriate Crash Handling in Linux&lt;/a&gt;. The initial problem that Tim wanted to solve is how to get and store information about applications that have crashed on devices in the-field. The major issue is that to debug and understand the crash you theoretically need to keep a lot of information, but in practice you cannot do this due to space constraints. Typically, a way of doing post-mortem analysis of a crashed application is to use the &lt;i&gt;core file&lt;/i&gt; that the kernel generates after the crash, and use it with gdb. Unfortunately, a core file is typically very large. Tim looked at the crash report mechanism of Android, and discovered that it was directly registering a handler for the SIGSEGV signal (and other related signals indicating an application crash) into the dynamic library loader in Bionic. This signal handler communicates with a daemon called &lt;i&gt;debuggerd&lt;/i&gt; over a socket, and this daemon then uses &lt;i&gt;ptrace&lt;/i&gt; to get details about the state of the application at the moment of the crash (register values, stack contents, etc.). Tim didn&amp;#8217;t want to require modifications at the application level or at the dynamic library loader, so instead he used the &lt;i&gt;core pattern&lt;/i&gt; mechanism provided by the Linux kernel: by writing to some file in &lt;code&gt;/proc&lt;/code&gt;, you can tell the kernel to start a userspace program when an application crashes, and the kernel dumps the core file contents as the standard input of this new process. Based on &lt;i&gt;debuggerd&lt;/i&gt;, Tim implemented such a program that also uses &lt;i&gt;ptrace&lt;/i&gt; and &lt;code&gt;/proc&lt;/code&gt; to get details about the crashed application. Tim also discussed the various ways of getting a backtrace: using the frame pointer (but this is often not available, as many people use the &lt;code&gt;-fomit-frame-pointer&lt;/code&gt; compiler option), using the unwind tables, using a &lt;i&gt;best-guess&lt;/i&gt; method (you just go through the stack, and everything that looks like a valid function address is assumed to be part of the call stack, so this method shows some false positive) or using some kind of ARM emulation (but I don&amp;#8217;t recall the name of this solution at the moment). All in all, Tim&amp;#8217;s talk was great, a good report of its experiment and good technical information about this topic.&lt;/p&gt;
&lt;p&gt;Everybody at Free Electrons wanted to attend to the &amp;#8220;ARM Subarchitecture Status&amp;#8221; presentation given by Arnd Bergmann, but we couldn&amp;#8217;t since we were responsible for recording videos of all talks. This time, it&amp;#8217;s Grégory who had the privilege of attending what looked like the most interesting talk of the slot. In fact as we follow the ARM Linux community in a close way through the mailing lists or the &lt;a href=&quot;http://www.lwn.net&quot;&gt;LWN.net&lt;/a&gt; website, nothing was really new for Grégory in Arnd&amp;#8217;s presentation. Nevertheless it was good to take the time to have a status. The interesting part for Grégory was to see how Arnd works with all the git trees coming from SoC vendors or from community and how he merges them together and merges the conflicts. It is more manual than we imagined and honestly is certainly a very hard job to do.&lt;/p&gt;
&lt;div id=&quot;attachment_4118&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/arnd-bergmann.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/arnd-bergmann.jpg&quot; alt=&quot;ARM Subarchitecture status, Arnd Bergmann&quot; title=&quot;ARM Subarchitecture status, Arnd Bergmann&quot; width=&quot;401&quot; height=&quot;301&quot; class=&quot;size-full wp-image-4118&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;ARM Subarchitecture status, Arnd Bergmann&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Later in the day, I went to David Anders talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/anders&quot;&gt;Board Bringup: LCD and Display Interfaces&lt;/a&gt; and it was really a great talk. David explained very well the hardware signals between the LCD controller that you have in your SoC and the LCD panel you&amp;#8217;re using, and how those signals affect the timing configuration that you have to set in your kernel code. He clearly explained things like pixel clock, vertical and horizontal sync, but also more complex things like the front porch and the back porch. He then went on to describe LVDS, which in fact is a serial protocol that uses two wires per-color in a differential mode to transmit the picture contents, and also talked about EDID, which is basically an I2C bus that can be used to read from the display device what display modes are available and what their timings are. He also described some of the test methods he used, from a logic analyzer up to a program called fb-test. David&amp;#8217;s talk was really great because it provided the kind of hardware details that a low-level software engineer needs to understand, and David explained them in a way that can be understood by a software engineer. Following the talk, I met David and asked some more questions and he was very nice to answer them, in a very clear way. David slides are available at &lt;a href=&quot;http://elinux.org/Elc-lcd&quot;&gt;http://elinux.org/Elc-lcd&lt;/a&gt;, and you can also check out other things that David is working on at &lt;a href=&quot;http://www.tincantools.com/&quot;&gt;TinCanTools&lt;/a&gt;, such as the very nice &lt;a href=&quot;http://www.tincantools.com/product.php?productid=16153&amp;cat=251&amp;page=1&quot;&gt;Flyswatter JTAG debugger for ARM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At the end of day, Grégory attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/rowand&quot;&gt;Real-Time discussion session&lt;/a&gt;, Maxime attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/mixon&quot;&gt;Yocto Project discussion session&lt;/a&gt; and I attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/turquette&quot;&gt;Common Clock Framework discussion session&lt;/a&gt;. This last discussion session was about work done to consolidate the multiple implementations of the clock APIs that exist in the kernel: at the moment, each ARM sub-architecture re-implements its own clock framework and the goal is to have a common clock framework in &lt;code&gt;drivers/clk/&lt;/code&gt; that can be shared by all ARM sub-architectures but also potentially by other architectures as well. The discussion lead by Mike Turquette from Texas Instruments/Linaro showed that a great deal of work has already been done, but a lot of questions remained opened. Each ARM sub-architecture has different constraints, and finding the right solution that solves the constraints of everybody isn&amp;#8217;t easy.&lt;/p&gt;
&lt;p&gt;And finally, there was the usual &lt;i&gt;Technical Showcase&lt;/i&gt;, with demonstrations of the Pandaboard, but also the newer &lt;a href=&quot;http://beagleboard.org/bone&quot;&gt;BeagleBone&lt;/a&gt; platform which looks really exciting. David Anders was demonstrating his LCD bring-up setup, another person was demonstrating an open-source GSM access point based on USRP, etc. Lots of interesting things to see, lots of nice people to discuss with.&lt;/p&gt;</description>
	<pubDate>Tue, 21 Feb 2012 04:44:41 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Embedded Linux Conference day 1</title>
	<guid>http://free-electrons.com/?p=4093</guid>
	<link>http://free-electrons.com/blog/elc-2012-day-1/</link>
	<description>&lt;p&gt;The first day of the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference&quot;&gt;Embedded Linux Conference&lt;/a&gt; started on Wednesday here at Redwood City, California.&lt;/p&gt;
&lt;p&gt;The day started with the usual &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/corbet&quot;&gt;Kernel Report&lt;/a&gt; from Jonathan Corbet. It was, as usual with Corbet&amp;#8217;s talk, a very interesting summary of what happened in the kernel through the last year, with highlights of the major new features per release, thoughts about issues like the kernel.org security problem and subsequent outage, etc.&lt;/p&gt;
&lt;div id=&quot;attachment_4107&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/corbet.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/corbet.jpg&quot; alt=&quot;The Kernel Report, Jonathan Corbet&quot; title=&quot;The Kernel Report, Jonathan Corbet&quot; width=&quot;402&quot; height=&quot;241&quot; class=&quot;size-full wp-image-4107&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The Kernel Report, Jonathan Corbet&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;After this talk, Grégory went to the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/pallardy&quot;&gt;Saving the Power Consumption of the Unused Memory&lt;/a&gt;, given by Loïc Pallardy, who works for ST Ericson in France. The purpose of the talk was to detail the kernel modifications they made to support the fact of powering down portions of the memory that are unused. In fact, DDR memories these days are capable of powering off some their areas, which allows to save power. Of course, when an area of the memory is powered off, its contents are lost, so the kernel needs to ensure that nothing valuable remained on this area of memory. Their kernel modifications allow to describe how the memory is organised (which address ranges are available and can be powered down independently) and introduce some kernel memory allocator changes to reference count those banks of memory. Of course, the next problem is that physical memory is usually highly fragmented, so they detailed how they re-used some of the existing kernel mechanisms to group unmovable pages on one side and movable pages on the other side and that allow to defragment the movable pages. This topic has been worked on since quite a long time in the kernel, as can be found in this &lt;a href=&quot;http://lwn.net/Articles/211505/&quot;&gt;LWN article&lt;/a&gt; from 2006.&lt;/p&gt;
&lt;div id=&quot;attachment_4108&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/saving-power-memory.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/saving-power-memory.jpg&quot; alt=&quot;Saving the Power Consumption of the Unused Memory, Loïc Pallardy&quot; title=&quot;Saving the Power Consumption of the Unused Memory, Loïc Pallardy&quot; width=&quot;401&quot; height=&quot;301&quot; class=&quot;size-full wp-image-4108&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Saving the Power Consumption of the Unused Memory, Loïc Pallardy&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;On my side, I attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/rosenkranzer&quot;&gt;What Android and Embedded Linux Can Learn From Each Other&lt;/a&gt; talk. The speaker detailed many of the Android kernel additions and how they could, theoretically, be re-used in non-Android embedded Linux systems. Things like re-using the Binder inter-process communication mechanism, or simple things like the RAM-based Logger mechanism. Unfortunately, none of the speaker&amp;#8217;s suggestions were backed by any sort of real experimentation, so those suggestions were mostly speculations. For example, he suggested the possibility of re-using the Android graphics stack on a non-Android system, but most likely this is a very difficult task to achieve and not necessarily worth the effort. At the end of the talk, the speaker suggested that the embedded Linux community and the Android community should talk more to each other, but looking at how Google is driving Android development, it is difficult to see this happening in the near future.&lt;/p&gt;
&lt;p&gt;Then, the talk from Hisao Munakata about &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/munakata&quot;&gt;Close Encounters of the Upstream Resource&lt;/a&gt; was an interesting and good summary of the tensions that exist within embedded companies between the &lt;i&gt;product teams&lt;/i&gt; (who have deadlines and need the product to work, and don&amp;#8217;t want to worry about upstreaming things) and the &lt;i&gt;community teams&lt;/i&gt; (who are in relation with the community and try to upstream modifications). He had really nice slides to show the multiple issues that a company faces when it produces major modifications to open-source components such as the Linux kernel, without any effort to upstream them. But he also said that things are improving, and that with Android using fairly recent kernel versions, the embedded Linux system makers are now much closer to mainline versions, which helps in getting changes merged in the official Linux kernel. He advocated that embedded Linux developers should be proficient with &lt;i&gt;git&lt;/i&gt;, because it allows to easily track the modifications, find out whether bugs have been fixed in later versions of the Linux kernel, etc. He also quickly presented the &lt;a href=&quot;http://www.linuxfoundation.org/news-media/announcements/2011/10/industry-support-long-term-support-initiative-ltsi&quot;&gt;LTSI&lt;/a&gt;, an initiative that offers long-term support around the Linux kernel. He presented it as the way of solving the fragmentation between the vendor BSPs kernel versions, the Android versions, and all other kernel versions that are floating around. However, how those versions will get merged into the official Linux kernel was not really clear.&lt;/p&gt;
&lt;p&gt;In the afternoon, Grégory went to the talk &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/guittot&quot;&gt;Comparing Power Saving Techniques For Multicore ARM Platforms&lt;/a&gt;, presented by Vincent Guittot was an other talk presented by a French guy from ST Ericson. As the one Grégory saw in the morning about power management of memories, this one was also very instructive, well documented and the speaker seemed to really know his topic. He worked the right way on Linux: only very minimal changes inside the kernel, tried to reuse the existing components, provided a git tree available and proposed some improvements on the mailing lists: good job!&lt;/p&gt;
&lt;p&gt;Grégory also attended the traditional talk from Tim Bird entitled &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/bird1&quot;&gt;Status of Embedded Linux&lt;/a&gt;. Very pleasant talk (as usual with Tim Bird). It was a very good overview of the state of embedded Linux. If you want to start working on embedded Linux this talk is a must see. Moreover Tim mentioned the valuable work done by Free Electrons by recording and sharing the conferences for many years!&lt;/p&gt;
&lt;div id=&quot;attachment_4109&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/timbird.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/timbird.jpg&quot; alt=&quot;The Status of Embedded Linux, Tim Bird&quot; title=&quot;The Status of Embedded Linux, Tim Bird&quot; width=&quot;401&quot; height=&quot;301&quot; class=&quot;size-full wp-image-4109&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The Status of Embedded Linux, Tim Bird&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Later in the day, I attended the talk &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/porter&quot;&gt;Passing Time With SPI Framebuffer Driver&lt;/a&gt; given by Matt Porter, who now works for Texas Instruments. His talk was feedback from real-life experience developing a driver for a SPI framebuffer controller. Initially, the problem was that a customer had started developing a driver, but that driver violated all the Linux development rules: no usage of the GPIO APIs, no usage of the SPI infrastructure, no usage of the device model, everything was done through a basic character driver directly manipulating the hardware registers. This is something that we also see quite sometimes at Free Electrons in the kernel code of some customers: this happens when the code has been written by developers who have only started reading the Linux Devices Driver book, but didn&amp;#8217;t go far enough in the Linux code to understand the device model and the principle of code re-usability. So clearly, Matt&amp;#8217;s experience resonated with our own experience. So, Matt went on to describe how the driver worked, modifications needed at the board configuration level, the driver itself, its integration in the device model. He also clearly detailed how a SPI framebuffer can work. On a normal framebuffer integrated into the SoC, the framebuffer memory is directly mapped into the application address space so that the application can directly draw pixels on the screen. However, when the framebuffer controller is over SPI, it is clearly not possible to map the framebuffer memory into the application address space. But fortunately, the kernel has a dedicated mechanism for such case: &lt;a href=&quot;http://lwn.net/Articles/223751/&quot;&gt;FB deferred I/O&lt;/a&gt;. What gets mapped into the application address space is normal kernel memory, but the kernel detects thanks to page faults when a portion of this memory has been changed, and calls the framebuffer driver so that the driver has an opportunity to push these changes over SPI to the framebuffer controller. Of course, this mechanism run at a configurable frequency. The device that was used by Matt Porter was a &lt;a href=&quot;http://www.adafruit.com/products/358&quot;&gt;1.8 screen available from Ada Fruit&lt;/a&gt;, this might also been a good device to use in our future &lt;a href=&quot;http://free-electrons.com/training/kernel/&quot;&gt;kernel courses&lt;/a&gt;, to let participants exercise with driver development.&lt;/p&gt;
&lt;p&gt;At the end of the day, I attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/abraham&quot;&gt;Experiences With Device Tree Support Development For ARM-Based SOC&amp;#8217;s&lt;/a&gt; by Thomas P. Abraham, from Samsung Electronics, but also from Linaro. It was clearly an excellent presentation about the device tree and how it works. It showed, with lots of code examples, how to compile the device tree source into a device tree blob, how to configure and use U-Boot to get this device tree blob loaded and passed to the kernel, how the board files in the kernel are changed to use the device tree, how device drivers are modified, how the &lt;i&gt;platform data&lt;/i&gt; mechanism is changed with the device tree, and more. Definitely a must-see for anyone doing ARM development these days.&lt;/p&gt;
&lt;p&gt;My colleague Maxime went to the talk from Paul McKenney about &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/mckenney&quot;&gt;Making RCU Safe For Battery-Powered Devices&lt;/a&gt;. Maxime reported that it was an excellent introduction to RCU: Paul introduced very progressively the various issues, so it was possible even for an RCU-newbie to follow that talk. Definitely a presentation I will watch thanks to the video recording!&lt;/p&gt;
&lt;p&gt;In the evening, there was the traditional social event of the conference. It took place at the &lt;a href=&quot;http://www.hiller.org/&quot;&gt;Hiller Aviation Museum&lt;/a&gt;, they have lots of strange aircrafts or helicopters, such as a piece of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Boeing_2707&quot;&gt;supersonic Boeing prototype plane&lt;/a&gt;, or other bizarre flying devices such as this &lt;a href=&quot;http://hiller.org/flying-platform.shtml&quot;&gt;flying platform&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 21 Feb 2012 04:43:13 +0000</pubDate>
</item>
<item>
	<title>Michele's GNSS blog: Low cost RTK performance round-up</title>
	<guid permalink="False">tag:blogger.com,1999:blog-5679825113811261335.post-765059711616999935</guid>
	<link>http://michelebavaro.blogspot.com/2012/02/low-cost-rtk-performance-round-up.html</link>
	<description>&lt;br /&gt;Having done quite a bit work since the first &lt;a href=&quot;http://www.onetalent-gnss.com/ideas/usb-hw-receivers/yuan10&quot; target=&quot;_blank&quot;&gt;Yuan10&lt;/a&gt; was built, I think it's time to write a small summary.&lt;br /&gt;&lt;br /&gt;I recently put up a &lt;a href=&quot;http://www.navxperience.com/download/3G_C_english.pdf&quot; target=&quot;_blank&quot;&gt;navXperience 3G+C antenna&lt;/a&gt; that will serve as reference for all future RTK work in this area. With the support of the reference station &lt;a href=&quot;http://www.dic.unipi.it/MasterGPSPisa/&quot; target=&quot;_blank&quot;&gt;University of Pisa&lt;/a&gt; and their reference observations at 0.2Hz I run RTKLIB (RTKNAVI and RTKPOST) for several days using several low-cost receivers that I assembled.&lt;br /&gt;This should be somehow considered the best possible scenario, having a short 1.5Km baseline.. nevertheless the results are quite exciting I believe.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-taGaP2V-JCg/T0I4aOmAu6I/AAAAAAAAA4A/jeeo4oXoV9s/s1600/Yuan10.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://3.bp.blogspot.com/-taGaP2V-JCg/T0I4aOmAu6I/AAAAAAAAA4A/jeeo4oXoV9s/s200/Yuan10.JPG&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;b&gt;Figure 1: &lt;a href=&quot;http://www.onetalent-gnss.com/ideas/usb-hw-receivers/yuan10&quot; target=&quot;_blank&quot;&gt;Yuan10&lt;/a&gt;: Skytraq S1315F-RAW&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-LsJ8cekLfHg/T0I82uHA-NI/AAAAAAAAA4w/_wbrsHQrP_g/s1600/stq-gtzoom.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-qY91nNBiVWg/T0I7dEIA3sI/AAAAAAAAA4I/obn0smYdggI/s1600/stq-pos.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://2.bp.blogspot.com/-qY91nNBiVWg/T0I7dEIA3sI/AAAAAAAAA4I/obn0smYdggI/s320/stq-pos.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-r43SvyRndJk/T0I8zcu92MI/AAAAAAAAA4o/orTBdSL9Cz0/s1600/stq-gt.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-qTtTX8SUllQ/T0I8Z6XWDFI/AAAAAAAAA4g/GvQhp3_76s0/s1600/stq-poszoom.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://1.bp.blogspot.com/-qTtTX8SUllQ/T0I8Z6XWDFI/AAAAAAAAA4g/GvQhp3_76s0/s320/stq-poszoom.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-r43SvyRndJk/T0I8zcu92MI/AAAAAAAAA4o/orTBdSL9Cz0/s1600/stq-gt.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://1.bp.blogspot.com/-r43SvyRndJk/T0I8zcu92MI/AAAAAAAAA4o/orTBdSL9Cz0/s320/stq-gt.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-LsJ8cekLfHg/T0I82uHA-NI/AAAAAAAAA4w/_wbrsHQrP_g/s1600/stq-gtzoom.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://2.bp.blogspot.com/-LsJ8cekLfHg/T0I82uHA-NI/AAAAAAAAA4w/_wbrsHQrP_g/s320/stq-gtzoom.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The plots above show solving of the integer ambiguities in about 5 minutes and reaching an accuracy of about 4cm square.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-Wu3bP_sa3Go/T0I_0ngZLxI/AAAAAAAAA44/nQMHoALd9ek/s1600/Rap10.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://1.bp.blogspot.com/-Wu3bP_sa3Go/T0I_0ngZLxI/AAAAAAAAA44/nQMHoALd9ek/s200/Rap10.JPG&quot; width=&quot;143&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 2: &lt;a href=&quot;http://www.onetalent-gnss.com/ideas/usb-hw-receivers/rappen10&quot; target=&quot;_blank&quot;&gt;Rappen10&lt;/a&gt; mMCX version: uBlox NEO-6P (RTK mode)&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-xcH4TXCDIas/T0JAyTJ87-I/AAAAAAAAA5A/YR583lW3M6k/s1600/ubx6-pos.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://2.bp.blogspot.com/-xcH4TXCDIas/T0JAyTJ87-I/AAAAAAAAA5A/YR583lW3M6k/s320/ubx6-pos.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-6t4jhGbwJj4/T0JA2lkvYgI/AAAAAAAAA5I/1kF3zNtWDQ8/s1600/ubx6-poszoom.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://4.bp.blogspot.com/-6t4jhGbwJj4/T0JA2lkvYgI/AAAAAAAAA5I/1kF3zNtWDQ8/s320/ubx6-poszoom.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-U1Mjq1xkMkY/T0JA6oeq_GI/AAAAAAAAA5Q/nMxTWStqxkQ/s1600/ubx6-gt.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://3.bp.blogspot.com/-U1Mjq1xkMkY/T0JA6oeq_GI/AAAAAAAAA5Q/nMxTWStqxkQ/s320/ubx6-gt.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-tDfAqBfqQYA/T0JA-pEl61I/AAAAAAAAA5Y/66Q0TJ87ZTU/s1600/ubx6-gtzoom.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://3.bp.blogspot.com/-tDfAqBfqQYA/T0JA-pEl61I/AAAAAAAAA5Y/66Q0TJ87ZTU/s320/ubx6-gtzoom.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Again, the NEO-6P brings the position down to 4cm square accuracy in less than 10 minutes.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-OouRs69kr-8/T0JCNJXCX0I/AAAAAAAAA5g/eN005dqXStI/s1600/Denga10.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://1.bp.blogspot.com/-OouRs69kr-8/T0JCNJXCX0I/AAAAAAAAA5g/eN005dqXStI/s200/Denga10.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 3: &lt;a href=&quot;http://www.onetalent-gnss.com/ideas/usb-hw-receivers/denga10&quot; target=&quot;_blank&quot;&gt;Denga10&lt;/a&gt;: &lt;/b&gt;&lt;b&gt;NVS NV08C-CSM&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border=&quot;1&quot;&gt; &lt;tbody&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-2IT7BGCuhT8/T0JLdIldgTI/AAAAAAAAA5o/V9y6f9BVe7c/s1600/nvs-pos.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://3.bp.blogspot.com/-2IT7BGCuhT8/T0JLdIldgTI/AAAAAAAAA5o/V9y6f9BVe7c/s320/nvs-pos.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-Y1n0jM16v5s/T0JLhHvXhiI/AAAAAAAAA5w/ox5C9unj5oY/s1600/nvs-poszoom.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://4.bp.blogspot.com/-Y1n0jM16v5s/T0JLhHvXhiI/AAAAAAAAA5w/ox5C9unj5oY/s320/nvs-poszoom.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-8acKW0975Zg/T0JLl50nyAI/AAAAAAAAA54/XsmOPpiadEg/s1600/nvs-gt.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://1.bp.blogspot.com/-8acKW0975Zg/T0JLl50nyAI/AAAAAAAAA54/XsmOPpiadEg/s320/nvs-gt.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-nfm3m6wdhq4/T0JLsA7SuCI/AAAAAAAAA6A/R0MNNC0shjk/s1600/nvs-gtzoom.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;http://3.bp.blogspot.com/-nfm3m6wdhq4/T0JLsA7SuCI/AAAAAAAAA6A/R0MNNC0shjk/s320/nvs-gtzoom.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The NV08C-CSM solves the carrier phase integer ambiguities and also brings down the accuracy to about 4cm square.&lt;br /&gt;&lt;br /&gt;Each of these receivers has his specialty:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the S1315F-RAW has 20Hz raw measurements update rate, which is still unmatched performance by other low-cost receivers&lt;/li&gt;&lt;li&gt;the uBlox NEO-6P has integrated PPP for high accuracy standalone mode, no other low-cost receivers claims that&lt;/li&gt;&lt;li&gt;the NVS NV08C-CSM has Glonass!&lt;/li&gt;&lt;/ul&gt;Cheers,&lt;br /&gt;Michele&lt;br /&gt;&lt;br /&gt;P.S.: I attached a trimmed version of the data used to obtain these results &lt;a href=&quot;http://www.onetalent-gnss.com/downloads/120218_lowcostrtkperformance.7z&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Please note how the NVS observations are covered by NDA and therefore not included. &lt;br /&gt;&lt;br /&gt;P.P.S.: The latest FW from NVS (dated 27 Feb 2012) improves dramatically the quality of the NV08C-CSM raw measurements: results above are not representative anymore.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5679825113811261335-765059711616999935?l=michelebavaro.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 20 Feb 2012 14:25:00 +0000</pubDate>
	<author>noreply@blogger.com (Michele Bavaro)</author>
</item>
<item>
	<title>osPID: And So It Begins</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=240</guid>
	<link>http://www.ospid.com/blog/and-so-it-begins/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=and-so-it-begins</link>
	<description>&lt;p&gt;Just a quick post to let everyone know that shipping has started.  The first units went out today!  all boards are re-flowed/assembled,  Just need to test, pack, and ship.  Here are some pics to tide you over until your osPID arrives:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/osPIDAssembled.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/osPIDAssembled.jpg&quot; alt=&quot;&quot; title=&quot;osPIDAssembled&quot; width=&quot;1000&quot; height=&quot;836&quot; class=&quot;aligncenter size-full wp-image-241&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/input1.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/input1.jpg&quot; alt=&quot;&quot; title=&quot;input&quot; width=&quot;968&quot; height=&quot;648&quot; class=&quot;aligncenter size-full wp-image-250&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/output1.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/output1.jpg&quot; alt=&quot;&quot; title=&quot;output&quot; width=&quot;968&quot; height=&quot;648&quot; class=&quot;aligncenter size-full wp-image-249&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/main1.jpg&quot;&gt;&lt;img src=&quot;http://www.ospid.com/blog/wp-content/uploads/2012/02/main1.jpg&quot; alt=&quot;&quot; title=&quot;main&quot; width=&quot;968&quot; height=&quot;648&quot; class=&quot;aligncenter size-full wp-image-248&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 20 Feb 2012 13:40:28 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Aaron Zarzutzki and the Gdeip Video Synth</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-8658828111842553522</guid>
	<link>http://videocircuits.blogspot.com/2012/02/aaron-zarzutzki-and-gdeip-video-synth.html</link>
	<description>Here is a rare outing for&amp;nbsp;Aaron's interesting video synth the&amp;nbsp;Gdeip&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://videocircuits.blogspot.com/2010/01/gdeip-diy-video-synth.html&quot;&gt;this&lt;/a&gt; old post has more&lt;br /&gt;his flickr &lt;a href=&quot;http://www.flickr.com/people/25517350@N04/&quot;&gt;here&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-8658828111842553522?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 20 Feb 2012 06:54:36 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>OggStreamer: #oggstreamer  Rev 1.0b Schematics</title>
	<guid>http://oggstreamer.wordpress.com/?p=311</guid>
	<link>http://oggstreamer.wordpress.com/2012/02/19/oggstreamer-rev-1-0b-schematics/</link>
	<description>&lt;p&gt;We were quite busy testing the prototype and fixing all the issues for our next Version Rev 1.0b &amp;#8211; the schematics are now online as PDFs and after the PCB manufacturing proves alright, I will release the PCAD and Gerber Files as well. For now the PDFs of the adapted schematics:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/02/oggstreamer_rev1_0b_digital_and_power.pdf&quot;&gt;oggstreamer_REV1_0b_digital_and_power&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://oggstreamer.files.wordpress.com/2012/02/oggstreamer_rev1_0b_analog_and_vs1063.pdf&quot;&gt;oggstreamer_REV1_0b_analog_and_vs1063&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/oggstreamer.wordpress.com/311/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/oggstreamer.wordpress.com/311/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=oggstreamer.wordpress.com&amp;blog=28866240&amp;post=311&amp;subd=oggstreamer&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 19 Feb 2012 17:02:47 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Icarus mining software compare(miner.py VS cgminer)</title>
	<guid>http://www.openmobilefree.net/?p=1265</guid>
	<link>http://www.openmobilefree.net/?p=1265</link>
	<description>&lt;p&gt;Bug fixed Cgminer: (&lt;strong&gt;655&lt;/strong&gt; shares in 2 hours):&lt;br /&gt;
 cgminer version 2.2.5 &amp;#8211; Started: [2012-02-19 18:40:12]&lt;br /&gt;
 (5s):696.2 (avg):360.8 Mh/s | Q:1285  A:659  R:1  HW:0  E:51%  U:5.45/m&lt;/p&gt;
&lt;p&gt;Cgminer (&lt;strong&gt;397&lt;/strong&gt; shares in 2 hours):&lt;br /&gt;
(5s):655.2 (avg):514.8 Mh/s | Q:1323  A:394  R:1  HW:0  E:30% U:3.25/m&lt;br /&gt;
&lt;strong&gt;before start cgminer&lt;/strong&gt;&lt;br /&gt;
  the deepbit shows: &amp;#8220;xiangfu.z@gmail.com_0&amp;#8243;:&amp;#8221;shares&amp;#8221;: &lt;strong&gt;292939&lt;/strong&gt;,&lt;br /&gt;
&lt;strong&gt;after mining 2 hours,&lt;/strong&gt;&lt;br /&gt;
  the deepbit shows: &amp;#8220;xiangfu.z@gmail.com_0&amp;#8243;:&amp;#8221;shares&amp;#8221;: &lt;strong&gt;293336&lt;/strong&gt;,&lt;/p&gt;
&lt;p&gt;Miner.py (&lt;strong&gt;608&lt;/strong&gt; shares in 2 hours):&lt;br /&gt;
&lt;strong&gt;before start cgminer&lt;/strong&gt;&lt;br /&gt;
  the deepbit shows: &amp;#8220;xiangfu.z@gmail.com_1&amp;#8243;:&amp;#8221;shares&amp;#8221;: &lt;strong&gt;144101&lt;/strong&gt;,&lt;br /&gt;
&lt;strong&gt;after mining 2 hours,&lt;/strong&gt;&lt;br /&gt;
  the deepbit shows: &amp;#8220;xiangfu.z@gmail.com_1&amp;#8243;:&amp;#8221;shares&amp;#8221;: &lt;strong&gt;144709&lt;/strong&gt;,&lt;/p&gt;</description>
	<pubDate>Sun, 19 Feb 2012 12:41:43 +0000</pubDate>
</item>
<item>
	<title>Dan Reetz: Droid 2 Global Cyanogenmod USB not working FIX</title>
	<guid permalink="False">http://www.danreetz.com/blog/?p=855</guid>
	<link>http://www.danreetz.com/blog/2012/02/18/droid-2-global-cyanogenmod-usb-not-working-fix/</link>
	<description>&lt;p&gt;So, I just upgraded my D2G to Cyanogenmod 7.1.0. Like many other people, I had immediate problems with USB. &lt;/p&gt;
&lt;p&gt;The symptoms are as follows: &lt;/p&gt;
&lt;li&gt;I plug the USB cable into my computer and into my Droid 2 Global.&lt;/li&gt;
&lt;li&gt;The Droid 2 Global does not respond in any way. No charge light, no hardware response from the PC. &lt;/li&gt;
&lt;p&gt;HOWEVER, if the phone is rebooted with the cable connected, then&lt;/p&gt;
&lt;li&gt;The USB mass storage dialog will appear and the phone will connect ONCE &lt;/li&gt;
&lt;li&gt;But if disconnected it will not reconnect again. &lt;/li&gt;
&lt;p&gt;After wasting an entire afternoon trying to get USB Mass Storage to work on CM for D2G, I called my friend Aaron Marback who has better Android and Google-fu than I do. &lt;/p&gt;
&lt;p&gt;Aaron pointed me to &lt;a href=&quot;http://forum.xda-developers.com/showpost.php?p=19768896&amp;postcount=34&quot;&gt;this post by dateno1&lt;/a&gt;. Attached is a rar file containing two files: usbd and Usb.apk. &lt;/p&gt;
&lt;p&gt;To fix the USB problems with Cyanogenmod 7.1.0 on Droid 2 Global, do the following: &lt;/p&gt;
&lt;li&gt;
&lt;a href=&quot;http://forum.xda-developers.com/showpost.php?p=19768896&amp;postcount=34&quot;&gt;Download the files linked in dateno1&amp;#8242;s post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Connect your phone to your computer and reboot it to establish a connection. Alternately copy files to SD card using card reader.&lt;/li&gt;
&lt;li&gt;Copy the files onto the root dir of your SD card.&lt;/li&gt;
&lt;li&gt;Install the app &lt;a href=&quot;https://market.android.com/details?id=com.speedsoftware.rootexplorer&amp;hl=en&quot;&gt;Root Explorer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Open Root Explorer. Navigate to the root directory of the SD card.&lt;/li&gt;
&lt;li&gt;Press and hold on the file &amp;#8220;usbd&amp;#8221;. Choose &amp;#8220;copy&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Navigate to /system/bin/. Paste.&lt;/li&gt;
&lt;li&gt;Set permissions to rwxr-xr-x or just give permissions to everyone.&lt;/li&gt;
&lt;li&gt;Navigate back to the SD card root directory. &lt;/li&gt;
&lt;li&gt;Press/hold and Copy &amp;#8220;Usb.apk&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Navigate to /system/apps/ and paste.&lt;/li&gt;
&lt;li&gt;Again, set permissions the same way.&lt;/li&gt;
&lt;li&gt;Reboot phone and enjoy USB access. &lt;/li&gt;
&lt;p&gt;Thanks to Dateno1 and Aaron Marback.&lt;/p&gt;</description>
	<pubDate>Sun, 19 Feb 2012 02:32:57 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Jonathan Brainin</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-3049035394008593487</guid>
	<link>http://videocircuits.blogspot.com/2012/02/jonathan-brainin.html</link>
	<description>Jonathan Brainin's excellent camera an pendulum based feedback experiments /artworks&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;more on his &lt;a href=&quot;http://vimeo.com/35295137&quot;&gt;vimeo&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-3049035394008593487?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 19 Feb 2012 01:07:09 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Jeff Donaldson</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7161113455629884433</guid>
	<link>http://videocircuits.blogspot.com/2012/02/jeff-donaldson.html</link>
	<description>&lt;br /&gt;check&amp;nbsp;&lt;a href=&quot;http://vimeo.com/notendo&quot;&gt;http://vimeo.com/notendo&lt;/a&gt; and the excellent&amp;nbsp;&lt;a href=&quot;http://vimeo.com/groups/glitchsafari&quot;&gt;glitchsafari&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7161113455629884433?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 19 Feb 2012 00:55:49 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Jason Akira Somma</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-68407112687866885</guid>
	<link>http://videocircuits.blogspot.com/2012/02/jason-akira-somma.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/29224386&quot;&gt;Super FX-8000 (Video Circuit Bending)&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/jasonsomma&quot;&gt;Jason Akira Somma&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/29225403&quot;&gt;AEG-1 (Custom Video Mixer/Glitcher)&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/jasonsomma&quot;&gt;Jason Akira Somma&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/jasonsomma&quot;&gt;http://vimeo.com/jasonsomma&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-68407112687866885?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 19 Feb 2012 00:49:02 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Open Hardware Repository: White Rabbit Switch Testing - Test Framework comparsion</title>
	<guid>http://www.ohwr.org/news/243</guid>
	<link>http://www.ohwr.org/news/243</link>
	<pubDate>Fri, 17 Feb 2012 18:27:01 +0000</pubDate>
	<author>c.prados@gsi.de (Cesar Prados)</author>
</item>
<item>
	<title>Open Hardware Repository: White Rabbit Switch Testing - Jabber Meeting 07/02/12</title>
	<guid>http://www.ohwr.org/news/242</guid>
	<link>http://www.ohwr.org/news/242</link>
	<pubDate>Fri, 17 Feb 2012 17:54:50 +0000</pubDate>
	<author>c.prados@gsi.de (Cesar Prados)</author>
</item>
<item>
	<title>Open Hardware Repository: White Rabbit Switch Testing - Design Proposal for the Networking Testbencher</title>
	<guid>http://www.ohwr.org/news/241</guid>
	<link>http://www.ohwr.org/news/241</link>
	<pubDate>Fri, 17 Feb 2012 17:53:34 +0000</pubDate>
	<author>c.prados@gsi.de (Cesar Prados)</author>
</item>
<item>
	<title>Transmaterial: ExoSkeleton</title>
	<guid permalink="False">http://transmaterial.net/?p=1995</guid>
	<link>http://transmaterial.net/index.php/2012/02/17/exoskeleton/</link>
	<description>&lt;p&gt;ExoSkeleton is a quilted concrete panel made from organic duck cloth canvas and cast concrete. Two layers of the canvas are quilted using reinforced stitching in a structurally stable configuration. The reinforced stitching is engineered to withstand the fluid lateral forces specific to the amount of uncured concrete relative to the diameter of the pocket created by the sewn fabric. The formwork is then hung in a vertical configuration supported at the top, similar to the arrangement of a shower curtain. At the base of the fabric, friction pilings or a trough are set plumb to the supports at the top of the fabric and serve as the foundation of the cured form.&lt;/p&gt;
&lt;p&gt;Developed by Thompson Young Design, ExoSkeleton&amp;#8217;s canvas fabric is configured to allow pumped concrete to self-support in compression and framed laterally by the tensile strength of the fabric within the diamond shaped quilted pockets, which are connected to a foundation. The canvas can be removed once the concrete is cured, or it can be incorporated into the finish.&lt;/p&gt;
&lt;p&gt;Concrete supports more than its own weight in compression, and the material nature of fabric offers a high strength in tension. As long as the balance of concrete in compression relative the tensile strength of the fabric is stable, concrete will stack. When coupled, the compressive stability of concrete and the tensile strength of fabric combine to frame the curing process of concrete to achieve infinite concrete configurations.&lt;/p&gt;
&lt;p&gt;Contact: &lt;a href=&quot;http://www.thompsonyoung.com&quot;&gt;Thompson Young Design&lt;/a&gt;, Charleston, SC, USA.&lt;/p&gt;</description>
	<pubDate>Fri, 17 Feb 2012 15:00:10 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Icarus with cgminer mining pool compare (deepbit VS p2pool)</title>
	<guid>http://www.openmobilefree.net/?p=1245</guid>
	<link>http://www.openmobilefree.net/?p=1245</link>
	<description>&lt;p&gt;&lt;strong&gt;Connect to deepbit: ~180 Shares/Hour&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Connect to p2pool : ~150 Shares/Hour&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The networks is 2MB ADSL, &lt;a href=&quot;http://en.qi-hardware.com/wiki/Icarus#Cgminer&quot;&gt;cgminer running under TP-LINK WR1043ND router with OpenWrt system&lt;/a&gt;. Icarus connect to TP-LINK WR1043ND USB prot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why p2pool is slow which V3 bitstream of icarus:&lt;/strong&gt;&lt;br /&gt;
P2pool&amp;#8217;s idea of a &amp;#8220;block&amp;#8221; changes every 10 seconds instead of 10 minutes, on p2pool you have on average 10sec to do work, so if you doing U:3/m then it takes 20sec to do the work. the block changes in that time so you&amp;#8217;re never working on the current block, this is a big problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br /&gt;
 (deepbit) cgminer -Q 4 -S /dev/ttyUSB0 -o http://pit.deepbit.net:8332/ -O xiangfu.z@gmail.com_0:1234&lt;br /&gt;
 (p2pool) cgminer -Q 4 -o http://www.openmobilefree.net:9332/ -O 1AUuX4auVWUYByhLGP1okhWsHsSm9zxqmz:x -S /dev/ttyUSB0&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;More Info:&lt;/strong&gt;&lt;br /&gt;
26 hours on deepbit:&lt;br /&gt;
 cgminer version 2.2.5 &amp;#8211; Started: [2012-02-15 19:35:52]&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
 (5s):59.5 (avg):524.4 Mh/s | Q:17086  A:4765  R:26  HW:0  E:28%  U:3.02/m&lt;br /&gt;
 TQ: 1  ST: 1  SS: 27  DW: 272  NB: 160  LW: 0  GF: 483  RF: 8&lt;br /&gt;
 Connected to http://pit.deepbit.net:8332/ with LP as user xiangfu.z@gmail.com_0&lt;/p&gt;
&lt;p&gt;1 hour on p2pool:&lt;br /&gt;
 cgminer version 2.2.5 &amp;#8211; Started: [2012-02-17 11:57:21]&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
 (5s):655.5 (avg):306.9 Mh/s | Q:367  A:146  R:40  HW:0  E:40%  U:2.50/m&lt;br /&gt;
 TQ: 1  ST: 2  SS: 36  DW: 294  NB: 6  LW: 657  GF: 0  RF: 0&lt;br /&gt;
 Connected to http://www.openmobilefree.net:9332/ with LP as user 1AUuX4auVWUYByhLGP1okhWsHsSm9zxqmz&lt;br /&gt;
 Block: 00000a20ebe31a4c1fb65aaca47e691c&amp;#8230;  Started: [12:48:08]&lt;/p&gt;</description>
	<pubDate>Fri, 17 Feb 2012 12:06:45 +0000</pubDate>
</item>
<item>
	<title>Crypto Stick: Exhibition at the Embedded World Fair in Nuremberg, 28.2.-1.3.2012</title>
	<guid permalink="False">http://www.crypto-stick.com/67 at http://www.crypto-stick.com</guid>
	<link>http://www.crypto-stick.com/2012/embedded-world</link>
	<description>&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seealso&quot;&gt;&lt;a href=&quot;http://www.crypto-stick.com/sites/default/files/styles/large/public/field/image/EW2012_2.jpeg&quot; title=&quot;Exhibition at the Embedded World Fair in Nuremberg, 28.2.-1.3.2012&quot; class=&quot;colorbox&quot; rel=&quot;gallery-67&quot;&gt;&lt;img src=&quot;http://www.crypto-stick.com/sites/default/files/styles/medium/public/field/image/EW2012_2.jpeg&quot; width=&quot;220&quot; height=&quot;205&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;og:image rdfs:seealso&quot;&gt;&lt;a href=&quot;http://www.crypto-stick.com/sites/default/files/styles/large/public/field/image/EW2012_3.jpeg&quot; title=&quot;Exhibition at the Embedded World Fair in Nuremberg, 28.2.-1.3.2012&quot; class=&quot;colorbox&quot; rel=&quot;gallery-67&quot;&gt;&lt;img src=&quot;http://www.crypto-stick.com/sites/default/files/styles/medium/public/field/image/EW2012_3.jpeg&quot; width=&quot;141&quot; height=&quot;220&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seealso&quot;&gt;&lt;a href=&quot;http://www.crypto-stick.com/sites/default/files/styles/large/public/field/image/EW2012_1.jpeg&quot; title=&quot;Exhibition at the Embedded World Fair in Nuremberg, 28.2.-1.3.2012&quot; class=&quot;colorbox&quot; rel=&quot;gallery-67&quot;&gt;&lt;img src=&quot;http://www.crypto-stick.com/sites/default/files/styles/medium/public/field/image/EW2012_1.jpeg&quot; width=&quot;220&quot; height=&quot;136&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;og:image rdfs:seealso&quot;&gt;&lt;a href=&quot;http://www.crypto-stick.com/sites/default/files/styles/large/public/field/image/EW2012_4.jpeg&quot; title=&quot;Exhibition at the Embedded World Fair in Nuremberg, 28.2.-1.3.2012&quot; class=&quot;colorbox&quot; rel=&quot;gallery-67&quot;&gt;&lt;img src=&quot;http://www.crypto-stick.com/sites/default/files/styles/medium/public/field/image/EW2012_4.jpeg&quot; width=&quot;220&quot; height=&quot;126&quot; alt=&quot;&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;As in the previous years, also in 2012 we will have a booth at the &lt;a href=&quot;http://www.embedded-world.de/&quot;&gt;Embedded World&lt;/a&gt; fair. Guests are welcome to get information about the status, latest developments, and outlook of the Crypto Stick project. Developers will be available to discuss even in-depth technical aspects such as adapting or integrating the Crypto Stick into other products and systems. The Embedded World will be held from 28th February to 1st of March in Nuremberg, Germany. See you there! Update: The exact location is hall 4A/4A-308l at Dridger &amp;amp; Schwenke's booth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2: A few pictures of the now already past event.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 17 Feb 2012 08:18:42 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: 北京的 p2pool: www.openmobilefree.net:9332</title>
	<guid>http://www.openmobilefree.net/?p=1257</guid>
	<link>http://www.openmobilefree.net/?p=1257</link>
	<description>&lt;p&gt;把我的　p2pool 发布出来，服务器在北京，会长期运行，使用方法：&lt;br /&gt;
　./cgminer -o www.openmobilefree.net:9332 -O YOUR_BITCOIN_ADDREE:x&lt;/p&gt;
&lt;p&gt;用户名是你的bitcoin 地址，密码任意。&lt;/p&gt;
&lt;p&gt;p2pool 使用的是:&lt;br /&gt;
git://github.com/forrestv/p2pool.git, commit: 5ca5a69b6cb7d6633de8c31ea8b9747bddc4eb7f&lt;/p&gt;</description>
	<pubDate>Fri, 17 Feb 2012 02:46:47 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Moog Little Phatty and the Scanimate</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-13689792341553188</guid>
	<link>http://videocircuits.blogspot.com/2012/02/moog-little-phatty-and-scanimate.html</link>
	<description>&lt;br /&gt;&lt;a href=&quot;http://www.youtube.com/user/experimentalsynth&quot;&gt;experimentalsynth&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-13689792341553188?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 16 Feb 2012 23:49:20 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Free Electrons: Android Builders Summit: day 2, and Yocto Developer Day</title>
	<guid>http://free-electrons.com/?p=4079</guid>
	<link>http://free-electrons.com/blog/abs2012-day-2-yocto-dev-day/</link>
	<description>&lt;p&gt;It&amp;#8217;s now Thursday morning here in Redwood City, California, and I didn&amp;#8217;t had the time yesterday morning to do a write-up about our second day at the Android Builders Summit. Hopefully the following write-up will give our readers some details about what happened during this day.&lt;/p&gt;
&lt;p&gt;This second of Android Builders Summit was co-located with the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/yocto-project-developer-day&quot;&gt;Yocto Developer Day&lt;/a&gt;, and as my colleagues Maxime Ripard and Grégory Clément were attending the two tracks of Android Builders Summit, I decided that I would attend the &lt;i&gt;Yocto Developer Day&lt;/i&gt;.&lt;/p&gt;
&lt;h3&gt;Yocto Developer Day&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.yoctoproject.org/&quot;&gt;Yocto&lt;/a&gt; is an umbrella project that consists in creating an embedded Linux build system, called &lt;a href=&quot;http://www.yoctoproject.org/projects/poky&quot;&gt;Poky&lt;/a&gt; and some associated development tools. &lt;i&gt;Poky&lt;/i&gt; takes its roots into the OpenEmbedded community: it re-uses the &lt;i&gt;bitbake&lt;/i&gt; recipe processor, and a set of recipes for building packages that are now shared between Yocto and OpenEmbedded through the &lt;i&gt;openembedded-core&lt;/i&gt; repository. At Free Electrons, we are strong contributors to the &lt;a href=&quot;http://buildroot.org&quot;&gt;Buildroot&lt;/a&gt; build system, and we use it for many of our customer projects. However, being pushed very strongly by Intel and the Linux Foundation, Yocto is gaining traction, and the fact that Yocto provides stable releases every 6 months now makes it a lot more usable than OpenEmbedded, which had to be checked out through Git, leaving the user with the uncertainty on whether the version (s)he got would actually work or not. And moreover, Buildroot and Yocto are not really competing projects: Buildroot is a simple root filesystem image generator, while Yocto is more a cross-distribution generator, they target projects of different sizes.&lt;/p&gt;
&lt;p&gt;I started attending the Yocto Developer Day with a general presentation talk about what Yocto is and why it is necessary. Nothing really new in this talk for someone who already uses embedded Linux build systems and understands the need for such tools. However, the thing that always surprises me is that the Yocto project claims everywhere to solve the fragmentation problem in the embedded Linux build system space (there are too many tools in this area) by creating &lt;i&gt;the&lt;/i&gt; tool, and that they envision that in 5 years, everybody will link embedded Linux build with the Yocto project. It&amp;#8217;s quite funny because at the moment, they have just created yet another build system &lt;img src=&quot;http://free-electrons.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt;  But it&amp;#8217;s true that the project is gaining traction and seems to attract the SoC vendors, which is a good thing because having a standard build system is so much better than having crappy vendor-specific build systems.&lt;/p&gt;
&lt;div id=&quot;attachment_4087&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-11.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-11.jpg&quot; alt=&quot;Yocto Developer Day: Yocto introduction by Saul Wold from Intel&quot; title=&quot;Yocto Developer Day: Yocto introduction by Saul Wold from Intel&quot; width=&quot;400&quot; class=&quot;size-full wp-image-4087&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Yocto Developer Day: Yocto introduction by Saul Wold from Intel&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The second talk, by Saul Wold, from Intel, went more into the details on how to use Yocto: what the different components are, how recipes are written, how configuration is defined, what &lt;i&gt;tasks&lt;/i&gt;, &lt;i&gt;images&lt;/i&gt;, &lt;i&gt;recipes&lt;/i&gt;, etc are. I would have liked if the talk went a bit further into the details, but it gave a very good introduction to the Poky build system.&lt;/p&gt;
&lt;p&gt;In the afternoon, I attended a hands-on session for new users to Yocto. The room setup was very impressive: about forty high-end PCs provided, each having a development board next to it. The first part of the hands-on session consisted in using Yocto to produce a basic filesystem image which we booted into Qemu. In order to solve the very long first build problem that all OpenEmbedded and Yocto users face, they had pre-built a number of packages and stored them into a &lt;i&gt;shared state&lt;/i&gt; directory. Interestingly, the size of the Yocto output directory was about 30 GB, just to build an embedded Linux system with BusyBox and a few minor things. Once this was done, we went ahead in creating our own layer, in order to define our own image and its contents it terms of packages. We used it to add a graphical splashscreen, and I also extended it to include Dropbear into the build. The whole thing went quite well. One thing that worries me is that bitbake and the build process really looks like a black box, and it seems hard to understand what&amp;#8217;s going on behind the scenes. With Buildroot, I am used to a very simple build system with which it is very easy to fully understand what&amp;#8217;s going on. Here, even the people that give speeches about Yocto or deliver a bit of training, seem to not fully understand what&amp;#8217;s going on. This impression is also validated by the complexity of the output directory (where all the build results are). But maybe it&amp;#8217;s just a matter of spending some time using it and reading some code, but the fact that people that have been developing/using Yocto for a while still do not really understand its internals is a bit surprising. Or maybe it&amp;#8217;s just a wrong impression on my side.&lt;/p&gt;
&lt;div id=&quot;attachment_4088&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1b.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1b.jpg&quot; alt=&quot;Yocto Developer Day: hands-on session starting&quot; title=&quot;Yocto Developer Day: hands-on session starting&quot; width=&quot;400&quot; class=&quot;size-full wp-image-4088&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Yocto Developer Day: hands-on session starting&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The next part of the hands-on was around the Eclipse integration of Yocto. First with &lt;a href=&quot;http://www.yoctoproject.org/projects/application-development-toolkit-adt&quot;&gt;ADT (Application Development Toolkit)&lt;/a&gt;, which integrates the cross-development thing into Eclipse. Thanks to an agent running into the target, Eclipse is able to push the application binary to the target and start &lt;i&gt;gdbserver&lt;/i&gt; on it, and therefore transparently start a debugging session for the user. I am not a big fan of Eclipse (I have been an Emacs user for a huge number of years), but it&amp;#8217;s true that for people used to Integrated Development Environments, this ADT thing provides a quite nice experience. Then, we went ahead in trying to use &lt;a href=&quot;http://www.yoctoproject.org/projects/hob&quot;&gt;HOB&lt;/a&gt;, which integrates into Eclipse the possibility of selecting which packages should be built and integrated into the image. Unfortunately, it seems it didn&amp;#8217;t work for anybody (even though we were selecting the package in the GUI, it didn&amp;#8217;t appear in the final filesystem image), but that wasn&amp;#8217;t a big problem since I don&amp;#8217;t really see the point in a tool such as HOB: editing configuration files is something that shouldn&amp;#8217;t scare any embedded Linux developer.&lt;/p&gt;
&lt;p&gt;Regardless of the contents of the hands-on, I was quite interested by how it was conducted. Instead of having some written lab instructions, and having everyone following, alone, those lab instructions, the instructor was simply demoing the various steps to be done on the video-projector screen, which we simply had to replicate. It makes the session quite interactive, with of course the drawback that everyone needs to progress at the same pace.&lt;/p&gt;
&lt;p&gt;All in all, this Yocto Developer Day was interesting, and I hope to find some time soon to experiment further with Yocto.&lt;/p&gt;
&lt;h3&gt;Android Builders Summit&lt;/h3&gt;
&lt;p&gt;My colleagues attended multiple talks about Android during this second day of the conference. In the morning, they attended &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/yaghmour&quot;&gt;Headless Android&lt;/a&gt;, &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/brown&quot;&gt;Towards a Standard Audio HAL for Android&lt;/a&gt;, &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/foy&quot;&gt;Android on eMMC: Optimizing for Performance&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&quot;attachment_4089&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1c.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1c.jpg&quot; alt=&quot;Android Builders Summit: Real-time Android&quot; title=&quot;Android Builders Summit: Real-time Android&quot; width=&quot;400&quot; class=&quot;size-full wp-image-4089&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Android Builders Summit: Real-time Android&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;In the afternoon, Grégory attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/mauerer&quot;&gt;Real-Time Android&lt;/a&gt; talk, which he said, was interesting. It showed that it was possible to integrate the PREEMPT_RT patches together with the Android kernel modifications, and provide a system having real-time capabilities for native (C/C++) applications and still the nice aspect of the Android user interface. During the same slot, Maxime attended the &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/gargentaa&quot;&gt;Android Services Black Magic&lt;/a&gt;, given by Aleksandar (Saša) Gargenta from Marakana. As usual with the Gargenta brothers, the talk was highly interesting and gave a lot of detailed information about Android services.&lt;/p&gt;
&lt;h3&gt;Some other thoughts&amp;#8230;&lt;/h3&gt;
&lt;p&gt;At the organization level, the conference organizers should make it clear in the conference program and flyer the location where the slides will be posted. At almost &lt;i&gt;every&lt;/i&gt; talk there is someone that asked if and where the slides will be posted, and the speakers are sometimes a bit uncomfortable because there is no clearly identified place to post the slides. In the past years, it was made clear that the slides would be posted on the &lt;a href=&quot;http://elinux.org&quot;&gt;elinux.org&lt;/a&gt; wiki, but this year, things are very unclear. Moreover, it&amp;#8217;s even more surprising since speakers are asked to post their slides into their Linux Foundation website account, but those slides are not being made visible. Maybe a good suggestion for the Linux Foundation would be to improve how slides are handled and posted online.&lt;/p&gt;
&lt;p&gt;Another thought about the Android Builders Summit is the surprising absence of Google, the developer and maker of Android. Google sponsors the Embedded Linux Conference which takes place right after the Android Builders Summit, but they do not sponsor the Android Builders Summit. There is also no talk from Google developers, and I haven&amp;#8217;t seen any Google person in the attendees. It&amp;#8217;s even more surprising when we know that the conference takes place in a location about 18 minutes away by car from Google headquarters in Mountain View. Maybe Google doesn&amp;#8217;t want to see Android being used in application areas other than phones and tablets?&lt;/p&gt;</description>
	<pubDate>Thu, 16 Feb 2012 20:48:11 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: First day at the Android Builders Summit</title>
	<guid>http://free-electrons.com/?p=4056</guid>
	<link>http://free-electrons.com/blog/android-builders-summit-2012-first-day/</link>
	<description>&lt;p&gt;Yesterday was the first day at the &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit&quot;&gt;Android Builders Summit 2012&lt;/a&gt;, here in Redwood City, near San Francisco, California. My colleagues Grégory Clément and Maxime Ripard as well as myself are fortunate to attend this conference, and the contents of the first day were really interesting.&lt;/p&gt;
&lt;p&gt;Amongst others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A talk from Karim Yaghmour, well-known for having worked on the original version of the Linux Trace Toolkit, on the Adeos patch, as well as for its activity around Android. He delivered a 30 minutes talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/yaghmour-keynote&quot;&gt;Leveraging Linux&amp;#8217;s history in Android&lt;/a&gt;, which covered the differences in architecture between a standard embedded Linux system and Android, as well as how to nicely integrate BusyBox or tools like the Linux Trace Toolkit into Android. The presentation was really impressive: in just 30 minutes, Karim covered a huge number of slides, and made several live demonstrations. It is also worth noting that Karim, following the direction that Free Electrons has drawn 7 years ago, has decided to release his Android training materials under a Creative Commons BY-SA license.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/android-mainline-panel&quot;&gt;panel with multiple kernel developers&lt;/a&gt; and people involved in Android on how to integrate the specific Android kernel patches into the mainline kernel. Not many new things learned here: the issue with the Android patches is that they add a lot of new userspace-to-kernel APIs, and such code is much much harder to get in mainline than conventional driver or platform code, since such APIs need to be maintained forever. Interestingly, Zach Pfeffer from Linaro pointed out the fact that the major problems with Android integration these days are not due to the kernel patches, but rather to the horrible binary blobs and related drivers that are needed for 3D acceleration ARM SoCs (Systems On a Chip).&lt;div id=&quot;attachment_4061&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1.jpg&quot; alt=&quot;Panel « Android and the Linux Kernel Mainline: Where Are We? »&quot; title=&quot;Panel « Android and the Linux Kernel Mainline: Where Are We? »&quot; width=&quot;400&quot; class=&quot;size-full wp-image-4061&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Panel « Android and the Linux Kernel Mainline: Where Are We? »&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;A talk from Marko Gargenta on &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/gargentam&quot;&gt;how to customize Android&lt;/a&gt;. He explained how to expose a specific Linux kernel driver functionality to Android applications, through a native C library, the JNI mechanism and an Android service, with complete details in terms of source code and build system integration. This presentation, just like last year&amp;#8217;s presentation from Marko, was absolutely excellent. A lot of content, very dynamic presentation, a lot of things learned.&lt;/li&gt;
&lt;li&gt;A talk on &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/kobayashi&quot;&gt;how ADB (Android Debugger)&lt;/a&gt; works. The contents were really good as well here, with lots of details about the ADB architecture, some tips and tricks about its usage, and more. Unfortunately, the speaker was really not familiar with English, and most of its presentation was spent reading the slides. This is a bit unfortunate because the technical contents was really, really excellent. The slides are available at &lt;a href=&quot;http://www.slideshare.net/tetsu.koba/adbandroid-debug-bridge-how-it-works&quot;&gt;http://www.slideshare.net/tetsu.koba/adbandroid-debug-bridge-how-it-works&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/shah&quot;&gt;Using Android in safety-critical medical devices&lt;/a&gt;. This talk was not about technical issues, but rather about the reason for using Android in medical devices (get those devices connected together and collect some data to learn more about medical practices, their efficiency and cost) and also the legal requirements to get such devices validated by the Food and Drugs Administration in the US. A lot of useful arguments on how to convince managers that Android and Linux in general are usable in safety-critical medical devices.&lt;/li&gt;
&lt;li&gt;A talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/boie&quot;&gt;Over-The-Air updates in Android&lt;/a&gt;, which I didn&amp;#8217;t attend, but my colleague Maxime Ripard and other attendees gave an excellent feedback about it. It detailed an advanced system for safely upgrading an Android system, using binary diffs and other techniques.&lt;div id=&quot;attachment_4068&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1a1.jpg&quot;&gt;&lt;img src=&quot;http://free-electrons.com/wp-content/uploads/2012/02/12-1a1.jpg&quot; alt=&quot;Customizing Android by Marko Gargenta, Marakana&quot; title=&quot;Customizing Android by Marko Gargenta, Marakana&quot; width=&quot;400&quot; class=&quot;size-full wp-image-4068&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Customizing Android by Marko Gargenta, Marakana&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;The talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/sun&quot;&gt; Integrating Projects Using Their Own Build System Into the Android Build System&lt;/a&gt; had a really promising title and abstract, but unfortunately, the contents were disappointing. The speaker took 25 minutes just to explain how to build BusyBox (outside of any Android context) and then another 20 minutes to explain how to integrate it in the Android build system, on unreadable slides.&lt;/li&gt;
&lt;li&gt;The talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/zores&quot;&gt;Android Device Porting Walkthrough&lt;/a&gt; was really great. Benjamin Zores exhausted its time slot with a 1h15 talk instead of the 50 minutes slot allocated, but fortunately, it was the last talk of the day in this session. During this talk, Benjamin gave a huge amount of information and many details about various issues encountered in the process of adapting Android for an Alcatel business VoIP phone (the ones you see in business desks). Issues like filesystem layout, input subsystem configuration, touchscreen configuration, graphics and much much more were covered. Be sure to check out Benjamin slides at &lt;a href=&quot;http://www.slideshare.net/gxben/android-device-porting-walkthrough&quot;&gt;http://www.slideshare.net/gxben/android-device-porting-walkthrough&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Finally, the day ended with a lightning talk session moderated by Karim Yaghmour. Lightning talks are really nice, because in less than 5 minutes, you quickly hear about a project or an idea. When the speaker is not good or the topic uninteresting, you know that after 5 minutes, you&amp;#8217;ll hear someone else speaking about a different topic. The lightning talk on the integration of GStreamer in Android was really interesting, as was the lightning talk from Karim about its &lt;a href=&quot;http://www.cyborgstack.org/&quot;&gt;CyborgStack&lt;/a&gt; initiative, which creates an upstream Android source to integrate all the Android modifications that will never be mainlined by Google. See Karim slides at &lt;a href=&quot;http://www.cyborgstack.org/sites/default/files/cyborgstack-120213.pdf&quot;&gt;http://www.cyborgstack.org/sites/default/files/cyborgstack-120213.pdf&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now, it&amp;#8217;s time for breakfast, before the conferences of the second day of this Android Builders Summit.&lt;/p&gt;</description>
	<pubDate>Tue, 14 Feb 2012 16:59:53 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Name that Ware, February 2012</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2206</guid>
	<link>http://www.bunniestudios.com/blog/?p=2206</link>
	<description>&lt;p&gt;The Ware for February 2012 is shown below. Click on the images for a larger version.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/blog/images/ntw_feb_2012a.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/ntw_feb_2012a_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Below is the daughtercard that plugs into the above mainboard:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bunniestudios.com/blog/images/ntw_feb_2012b.jpg&quot;&gt;&lt;img src=&quot;http://bunniestudios.com/blog/images/ntw_feb_2012b_sm.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Many thanks to Ben for submitting this rare ware to share. &lt;/p&gt;
&lt;p&gt;Have fun!&lt;/p&gt;</description>
	<pubDate>Mon, 13 Feb 2012 18:45:29 +0000</pubDate>
</item>
<item>
	<title>Bunnie Studios: Winner, Name that Ware January 2012</title>
	<guid permalink="False">http://www.bunniestudios.com/blog/?p=2202</guid>
	<link>http://www.bunniestudios.com/blog/?p=2202</link>
	<description>&lt;p&gt;The Ware for January 2012 is a Polycom Soundpoint IP 501. The winner is Kevin Groce for being the first to name the exact model and make. Congrats, email me for your prize! Next time I&amp;#8217;ll blur the MAC address as well. I thought I&amp;#8217;d leave it in as a hint, but it turns out in the end that a MAC address can be resolved quite specifically&amp;#8230;&lt;/p&gt;</description>
	<pubDate>Mon, 13 Feb 2012 18:45:13 +0000</pubDate>
</item>
<item>
	<title>Capn's Tech: Playpause 2: Making PCBs at home</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-3784070238038836169</guid>
	<link>http://capnstech.blogspot.com/2011/05/playpause-making-pcbs-at-home.html</link>
	<description>&lt;h4&gt;For a long time, I've wanted to make PCBs at home.&lt;/h4&gt;&lt;br /&gt;In the past, I used to make my own electronics project using &lt;a href=&quot;http://en.wikipedia.org/wiki/Stripboard&quot;&gt;stripboard&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Perfboard&quot;&gt;perfboard&lt;/a&gt;.  This is reliable, if not slow.   But a stripboard design doesn't really lend itself to being constructed by others.&lt;br /&gt;&lt;br /&gt;In the past year I've started working with surface mounted devices.   SMD doesn't work very well on stripboard, so it becomes not just desirable but necessary to make PCBs.  I have put off learning how to do it for a long time, but a month or so ago, I finally got the time to give it a go.  This article covers what I currently do, and I'm writing about it here in the hope it will help others.&lt;br /&gt;&lt;br /&gt;There are three main ways of making circuit boards at home.  The first is via the “toner transfer” method.  I have &lt;a href=&quot;http://capnstech.blogspot.com/2010/10/making-pcbs-using-toner-transfer-method.html&quot;&gt;tried that in the past&lt;/a&gt;, but never been able to reliably make a circuit board greater than about a square inch: I've always had a lot of trouble getting the toner 100% fused to the PCB without cracking or smudging.&lt;br /&gt;&lt;br /&gt;The second is by using a CNC mill to mill away undesired copper, leaving copper tracks.  With the imminent completion of the CNC mill at our hackerspace, or if I one day build a CNC mill using components salvaged from old DVD drives, that might be a possibility.  However for the moment I don't have access to a CNC mill, so I can't use that method.&lt;br /&gt;&lt;br /&gt;The third is the photographic method.  With this method, a special copper-clad PCB is covered by a film of UV-sensitive dye.  Exposing the dye to ultraviolet light through artwork printed on transparent paper will leave some regions of dye exposed, and some regions unexposed.  A developer chemical will remove the exposed areas, leaving the dye in the form of green tracks on the board.  Then the board is etched in a chemical etchant, which removes the copper which is &lt;i&gt;not&lt;/i&gt; protected by the dye.  Finally, the dye is removed, leaving copper tracks.&lt;br /&gt;&lt;br /&gt;In this article I'll show how to use the photographic method, although I might try the toner transfer and CNC methods again in the future.&lt;br /&gt;&lt;br /&gt;The UV-sensitive PCB stock I'm using is sold by &lt;a href=&quot;http://kinsten.com.au/&quot;&gt;Kinsten&lt;/a&gt;, and is available in single- and doubled-sided variants.  Here is the Kinsten PCB, plus the developer (Kinsten DP-50), etchant (ammonium persulphate), and a scrubbing pad:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-f27PITnHmWs/Te2TrD3E2PI/AAAAAAAAACA/UipUhvtlvZU/s1600/SNC10195r.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://4.bp.blogspot.com/-f27PITnHmWs/Te2TrD3E2PI/AAAAAAAAACA/UipUhvtlvZU/s400/SNC10195r.JPG&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Kinsten, etchant, developer and scrubber&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;In order to generate the UV light, I made an exposer box using nearly 100 UV LEDs.  For an enclosure, I cut up and resized a cardboard box.  The box is lined with aluminium foil to reflect light towards the board I'm exposing, and the light has to travel through two diffusers of transparent paper.&lt;br /&gt;&lt;br /&gt;Here's a picture of the LED array:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-Bn8SeZPW0vA/Te2Tfto2TkI/AAAAAAAAAB4/j7sF92EhkIw/s1600/SNC10190r.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://4.bp.blogspot.com/-Bn8SeZPW0vA/Te2Tfto2TkI/AAAAAAAAAB4/j7sF92EhkIw/s400/SNC10190r.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Exposer's UV array, LED side&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;And here's a picture of how I wired up the LEDs:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-xli7H4M-FYg/Te2TepCsiiI/AAAAAAAAABg/of6K3T0PNyw/s1600/SNC10191r.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;http://2.bp.blogspot.com/-xli7H4M-FYg/Te2TepCsiiI/AAAAAAAAABg/of6K3T0PNyw/s400/SNC10191r.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Exposer's UV array, wiring side&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;(The two halves are wired differently because the second board is somewhat smaller than the first board, and wouldn't allow the straight-forward row-and-column arrangement I used on the first board).&lt;br /&gt;&lt;br /&gt;The specifications for the LEDs say the forward voltage is about 3V.  The wiring of the boards configures the LEDs into many parallel strings of four LEDs.  I power the exposer with a 12V power supply.  I have adjusted the trimpot on the power supply to get a voltage that gives me a current of 25mA through each LED.  The LEDs do get quite warm after running for a while.  Here's a picture of the exposer working:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-7HnR02o7Dh4/Te2Te1m6lJI/AAAAAAAAABo/MYMTrIPcJ4Y/s1600/SNC10192r.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;373&quot; src=&quot;http://1.bp.blogspot.com/-7HnR02o7Dh4/Te2Te1m6lJI/AAAAAAAAABo/MYMTrIPcJ4Y/s400/SNC10192r.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Exposer powered up showing UV&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;NOTE: The LEDs produce a bluish-purple light, but this is not ultraviolet, it's a consequence of the spectrum from the LEDs being spread out somewhat.  Our eyes cannot perceive ultraviolet light, yet it is harmful to our eyes.  If you are working with ultraviolet light, try to limit how much UV gets into your eyes, or you may have to bear gritty and sore eyes for a few days.  UV filtering sunglasses might be a good idea.&lt;br /&gt;&lt;br /&gt;I print the artwork for the board on tracing paper I bought from the newsagent.  I print it with a laser printer, and in the printer settings dialog I set the density to be as dark as possible.  I usually print right-way-around on normal paper to verify that all the parts fit the board, then I print on the transparency &lt;i&gt;in reverse&lt;/i&gt;.  If I used a normal printout, there'd be a layer of transparency between the toner and the dye.  This can cause blurring, as the UV light can diffuse to under the artwork.  Mirroring the image means the toner can be right up against the dye.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-yA5l0fF3WiY/Te2TfNZSipI/AAAAAAAAABw/YAWl6gC--dw/s1600/SNC10193r.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://2.bp.blogspot.com/-yA5l0fF3WiY/Te2TfNZSipI/AAAAAAAAABw/YAWl6gC--dw/s400/SNC10193r.JPG&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Tracing paper with artwork&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;A few weeks ago when I first started this exercise, I didn't know how long to do the UV exposure for.  I made some board artwork of ten TQFP-32 footprints in a row, with some lines of different thicknesses.  I put the artwork and the PCB on the exposer with a piece of cardboard.  Every fifteen seconds I slid the cardboard across by one TQFP, so that by the time two minutes and thirty seconds had elapsed, I had a row of footprints that had been exposed for various times, from 0:15 to 2:30.  When I later developed the exposed PCB, what I found was that for my exposer, no pattern emerged until an exposure time of 2:00, and by 2:30 the pattern had developed very nicely.  I have since made PCBs with exposure times of 3:00 to 3:30, and they have turned out very nicely.&lt;br /&gt;&lt;br /&gt;Some people I've spoken to said I wouldn't be able to reliably make the 0.016” tracks I was hoping for.  The good news is that tracks down to 0.010” come out just perfectly, and tracks down to 0.008” (0.2mm) appear very achievable.  I think the biggest limiting factor is the quality of the artwork: I can trace small irregularities in the finished PCB to slight imperfections in the artwork, either because of dust or because there is a small hole in the toner.  It seems that the toner binds to some places on the transparency better than others.&lt;br /&gt;&lt;br /&gt;When doing the exposure, you need some way to keep the artwork flat against the PCB.  I use a glass-topped coffee table.  I tape the exposer to the bottom side of the coffee table, and put the artwork and PCB on top, held down by a heavy book.  I always clean the glass with glass cleaner before doing the exposure.&lt;br /&gt;&lt;br /&gt;The dye on the Kinsten PCB is protected by a white plastic film.  Just before exposing, I peel off the film, revealing the blue-green dye.  I do the exposing well away from the window, as otherwise ultraviolet from the sun may spoil the exposure.&lt;br /&gt;&lt;br /&gt;I don't have a picture of a PCB being exposed, because when I'm doing the exposure, I have my hands full with holding the exposer and watching the exposure time.&lt;br /&gt;&lt;br /&gt;At the end of the exposure time, I cover the PCB to prevent stray UV light from damaging the exposure.  If you look carefully, you should be able to see the pattern of tracks as a very faint yellow hue on the blue-green dye.  If you can't see it, it might indicate an exposure problem.&lt;br /&gt;&lt;br /&gt;Here I'm developing the board in developer solution:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-8dgcHeAvaXA/Te2nV0xY1RI/AAAAAAAAAWI/LALM-ZO3VDk/s1600/Image207r.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/-8dgcHeAvaXA/Te2nV0xY1RI/AAAAAAAAAWI/LALM-ZO3VDk/s320/Image207r.jpg&quot; width=&quot;238&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Developing Playpause boards in developer solution&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This is 15g of Kinsten DP-50 developer, in 250ml of water.  The developer doesn't have to be hot or warm, but having it warm speeds things up a little.  While exposing the boards, I rock the container from side to side.  As the exposed dye comes off, it makes patterns in the water like smoke.&lt;br /&gt;&lt;br /&gt;Here are the boards after they have been developed.  I wash them in water, then dry them, being careful not to scratch the ink.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-ar2TpaCgEHc/Te2nWsR1OFI/AAAAAAAAAWM/GuZyfu1pwy8/s1600/Image210r.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-ar2TpaCgEHc/Te2nWsR1OFI/AAAAAAAAAWM/GuZyfu1pwy8/s1600/Image210r.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Developed boards&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Now it's time to etch the boards.  There are three main chemicals hobbyists use to etch boards.  In order of how often they're used, they are ferric chloride, ammonium persulphate, and a mixture of hydrochloric acid and peroxide bleach.  Each method has advantages and disadvantages:&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;4&quot; cellspacing=&quot;0&quot;&gt;&lt;thead&gt;&lt;tr valign=&quot;TOP&quot;&gt; &lt;th width=&quot;33%&quot;&gt;Method&lt;/th&gt; &lt;th width=&quot;33%&quot;&gt;Advantages&lt;/th&gt; &lt;th width=&quot;33%&quot;&gt;Disadvantages&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt; &lt;tbody&gt;&lt;tr valign=&quot;TOP&quot;&gt; &lt;td width=&quot;33%&quot;&gt;Ferric chloride&lt;/td&gt; &lt;td width=&quot;33%&quot;&gt;Etches at room temperature.&lt;/td&gt; &lt;td width=&quot;33%&quot;&gt;Horrid yellowy-brown colour stains &lt;i&gt;everything&lt;/i&gt; it comes in contact with.  Best done outside using things you'll never use again.&lt;/td&gt; &lt;/tr&gt;&lt;tr valign=&quot;TOP&quot;&gt; &lt;td width=&quot;33%&quot;&gt;Ammonium persulphate&lt;/td&gt; &lt;td width=&quot;33%&quot;&gt;Does not stain.  Easy to tell how much copper the solution contains, and     therefore whether the solution is still ok.&lt;/td&gt; &lt;td width=&quot;33%&quot;&gt;Only etches at 60-70ºC and above.  Can be a bit fiddly to get the right concentration.&lt;/td&gt; &lt;/tr&gt;&lt;tr valign=&quot;TOP&quot;&gt; &lt;td width=&quot;33%&quot;&gt;HCl/H&lt;sub&gt;2&lt;/sub&gt;O&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt; &lt;td width=&quot;33%&quot;&gt;Can be recharged by bubbling air through it with an aquarium pump, which means less chemicals to buy, and less to dispose of.&lt;/td&gt; &lt;td width=&quot;33%&quot;&gt;Two rather nasty corrosive chemicals, so care must be taken.&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;br /&gt;There is a lot of information about making circuit boards on the Internet.  For example, here's an interesting article about using just a &lt;a href=&quot;http://www.instructables.com/id/Sponge-Ferric-Chloride-Method-Etch-Circuit-Bo/&quot;&gt;tablespoon of ferric chloride&lt;/a&gt; per board, which I think I will do next time.  There is also lots of information on the various techniques &lt;a href=&quot;http://www.opencircuits.com/Chemical_Etchants&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have been using ammonium persulphate, which needs to be kept hot in order for it to work.  I put the etchant in a foam ice-cream container, and heat it in the microwave until I can just see vapour.  (You don't want to do this too long, as you probably don't want a film of ammonium persulphate eating away  the metal parts of your microwave).  The foam of the container helps keep the etchant hotter for longer, although it will probably not stay hot enough for the 5-10 minutes needed to etch the board.  So, bad boy that I am, I admit to re-heating the etchant in the microwave, even with the PCB in the etchant.  I haven't heard any of the arcing that usually happens if you microwave a dish that accidentally has a bit of aluminium foil in it.&lt;br /&gt;&lt;br /&gt;Anyway, here's a pic of the etch in progress:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-mFPLL0L2kr4/Te2nXKVJnYI/AAAAAAAAAWQ/Up0Umnt_vWo/s1600/Image211r.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-mFPLL0L2kr4/Te2nXKVJnYI/AAAAAAAAAWQ/Up0Umnt_vWo/s1600/Image211r.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Etching boards.  Blue is copper ions&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I etch the boards for long enough that large blank areas of the board have completely lost their copper, but not so long that the etchant has had time to start undercutting the tracks of my circuit.  After etching, I wash the boards in cold water.&lt;br /&gt;&lt;br /&gt;When you are finished, you will have a container of etchant.  If you are a cheapskate hobbyist like me, you can save the etchant in a bottle for next time.  The etchant is generally good for a couple of boards, depending on how much etchant there is, and the size of the boards you've etched.  But there will come a time (for ammonium sulphate, this is when the solution has become such a dark blue that you don't think it could become any bluer) when you have to dispose of the etchant.  The problem is that copper ions are an environmental toxin.  Apart from taking the etchant to your local waste disposal centre, one idea is to use a paintbrush to paint the etchant onto newspaper, and let the newspaper dry.  Then you can dispose of this newspaper in your garbage.&lt;br /&gt;&lt;br /&gt;Obviously, the purpose of the etchant is to eat away metals.  The problem is that any etchant that gets splashed onto metal (for example, if you're working near a sink, or if you are foolish enough to tip the etchant down the drain) will keep etching.  I'm told a drop of etchant will create pinholes in your sink faster than you'd think.  So it's probably best to keep the etchant well away from sinks and drains.  I do my etching outside, and have a plastic bucket of cold water to do my rinsing in.&lt;br /&gt;&lt;br /&gt;After the board is etched, the areas where you want copper are still covered in the dye.  This dye can be removed with acetone, or scrubbed off with a scouring pad (don't use steel wool, as the iron may react with the copper over time).  The problem is that this leaves the copper exposed to the air, which will then quickly tarnish.  There are several ways to treat this.  One way is to spray the board with special solder-through lacquer.  Another way is to use a special compound to “tin” the board with a metal that doesn't corrode as quickly as copper.  I use &lt;a href=&quot;http://ultrakeet.com.au/index.php?id=1&amp;cID=5805&amp;subID=500&quot;&gt;Cool-amp silver plating powder&lt;/a&gt; from ultrakeet.com.au.  I haven't yet worked out how to get a great, easy result with this product, but it's better than nothing.&amp;nbsp; An alternative to Cool-amp is &lt;a href=&quot;http://www.mgchemicals.com/products/421.html&quot;&gt;Liquid Tin&lt;/a&gt;, (and in .au, &lt;a href=&quot;http://www.mektronics.com.au/index.php?page=shop.product_details&amp;flypage=flypage.tpl&amp;product_id=2167&amp;category_id=204&amp;manufacturer_id=67&amp;option=com_virtuemart&amp;Itemid=57&quot;&gt;here&lt;/a&gt;), which I haven't used.&amp;nbsp; Expensive, but I know folks who swear by it, and say it lasts years.&amp;nbsp; Sounds worth it to me.&lt;br /&gt;&lt;br /&gt;Here are the etched and tinned boards:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-I4NuKH8q0u4/Te2nXw968jI/AAAAAAAAAWU/JMkp9EDUI8o/s1600/Image212r.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;http://2.bp.blogspot.com/-I4NuKH8q0u4/Te2nXw968jI/AAAAAAAAAWU/JMkp9EDUI8o/s320/Image212r.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Etched and tinned playpause boards&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;After tinning the boards, I cut them up using an abrasive wheel in my Dremel tool:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-QdBoWm-8C6I/Te2Teez9neI/AAAAAAAAABY/lnuCWyWQnqE/s1600/SNC10188r.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;http://2.bp.blogspot.com/-QdBoWm-8C6I/Te2Teez9neI/AAAAAAAAABY/lnuCWyWQnqE/s400/SNC10188r.JPG&quot; width=&quot;373&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Etched, tinned and cut playpause boards, with artwork&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Then I file the edges of the boards, and give them a bevel.  The boards are then ready for use.&lt;br /&gt;&lt;br /&gt;So there you have it: PCBs from artwork to finished.  I hope this is interesting and useful.  Special thanks to Ross McK, who showed me how to do it.  Ross is a great guy and a fine engineer, and he has taught me a lot.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Coming next: &lt;i&gt;Playpause assembly and programming&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Here's &lt;a href=&quot;http://cms.diodenring.de/de/electronic/mikrocontroller/95-pcb-diy&quot;&gt;another very interesting page&lt;/a&gt; where the author also adds a solder-stop mask.&amp;nbsp; His German heritage really shows, as his boards are wonderful!&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-3784070238038836169?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 12 Feb 2012 17:18:29 +0000</pubDate>
	<author>noreply@blogger.com (Mitch Davis)</author>
</item>
<item>
	<title>Video Circuits: 3d image manipulator // vector monitor</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-4769559593895362797</guid>
	<link>http://videocircuits.blogspot.com/2012/02/3d-image-manipulator-vector-monitor.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.youtube.com/user/synchrot/videos&quot;&gt;synchrot&lt;/a&gt;/&lt;a href=&quot;http://vimeo.com/36175976&quot;&gt;synchroton&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-4769559593895362797?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 10 Feb 2012 10:59:32 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Harald Welte: Some comments on the heated debate on SFC / Busybox / Linux GPL enforcement</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/02/09#20120209-linux_gpl_enforcement_conservancy_busybox</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/02/09#20120209-linux_gpl_enforcement_conservancy_busybox</link>
	<description>&lt;p&gt;
During the past week[s], there has been a &lt;a href=&quot;https://lwn.net/Articles/478249/&quot;&gt;heated debate&lt;/a&gt; on the alleged
methods of GPL enforcement as it is performed by the &lt;a href=&quot;http://sfconservancy.org/&quot;&gt;Software Freedom Conservancy&lt;/a&gt; on
behalf of the Busybox copyright holders.
&lt;/p&gt;
&lt;p&gt;
The extent of license enforcement on Busybox has apparently triggered the &lt;a href=&quot;http://www.elinux.org/Busybox_replacement_project&quot;&gt;proposal to
create a non-GPL replacement for it&lt;/a&gt;, which in turn has received
quite harsh responses e.g. from &lt;a href=&quot;http://mjg59.dreamwidth.org/10437.html&quot;&gt;Matthew Garrett&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
It's been relatively difficult for me to figure out what is really going
on here.  It is well-known that the Free Software Conservancy has been
actively enforcing the GPL on Busybox.  But then, at the same time
gpl-violations.org has been (and still is!) similarly active in
enforcing the GPL on the Linux kernel.  Still, I haven't yet seen calls
to write a non-GPL Linux kernel replacement.  Of course, the complexity
is on an entirely different scale, so this point is moot.
&lt;/p&gt;
&lt;p&gt;
However, for quite some time there have been rumors about the intensity
(some would say aggressiveness) of the enforcement.  I don't want to
accuse anybody of anything, so I'm going to write speculatively about
it.
&lt;/p&gt;
&lt;p&gt;
This post is to summarize my thoughts on all of this:
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is well within the right of each author / copyright holder to
decide on the enforcement strategy and license interpretation.  As such,
I respect the decision of the authors.  It is their work, they should
decide what to do.
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In any kind of GPL enforcement, you of course not only want the
complete corresponding source code to one program, but to all of the
GPL/LGPL/AGPL or otherwise copyleft licensed programs contained in the
product.  We at gpl-violations.org have always been requesting the
complete corresponding source code to all GPL licensed software during
our communication with the infringing companies.  This request was
typically honored by everyone, without the need to apply any pressure
onto it.  After all, releasing only one bit of code causes the risk to
get sued by somebody else who owns the other not-yet-compliant part of
the code.&lt;/p&gt;&lt;p&gt;
Now there have been rumors that SFC was not only requesting non-Busybox
source code, but also making it a condition for the explicit
re-instatement of the license on Busybox.   Whether or not there was
such a hard condition is subject to debate and there are different
opinions on it.  For those in the field of FOSS licensing, it has always
known that there are different lines of thought with regard to the
requirement to explicit reinstatement.  We in Germany generally think
that it is not required at all, and the existing preliminary injunctions
at least implicitly acknowledge that as they enjoin companies from
distributing a product &lt;i&gt;as long as it is not in compliance with the
license&lt;/i&gt;.  In other (particularly the U.S.), it is generally assumed
that explicit reinstatement is required.  In such a case, it may very
well be legally possible to use it as a lever to obtain source code for
other programs like the Linux kernel.  However, I am personally not sure
if that really is the right strategy.  Not everything that is possible
legally is ethically the right thing to do.  But then, ethics and legal
customs differ widely in the FOSS communities, as they do in society in
general.  Some countries and communities believe in the death penalty,
others don't.  Some countries allow abortion, others don't.  Some allow
prostitution, others don't.   So when judging about whether that
&quot;reinstatement lever&quot; is acceptable or not, we have to accept that there
may be different lines of thought.  I for my part definitely think that
the far superior method is, beyond doubt, to have a rights holder on
those other program in order to make any demand for source code (as
opposed to a mere request without implicit or explicit legal threat).
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;
There also have been rumors about a requirement on submitting future
source code releases to a compliance audit by the Conservancy.
According to SFC sources, there never was any such demand, and the
rumors are likely spawned by some incorrect claims of a defendant in a
court case, which ended up in the public record.   If there was such a
requirement, I wouldn't think it is just - at least not for a first-time
non-intentional infringement case.  If there was repeated infringement
and a clear sign that it would happen again and again, such a
requirement for future audits may be justified, depending on the case.
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;
People who claim that GPL enforcement is scaring away companies from
using Linux and/or other Free Software also have to be careful in what
they say.  If a commercial entity enters a new market (let's say Android
Tablets), then there is a certain due diligence required &lt;i&gt;before&lt;/i&gt;
entering that market.  So if you don't understand Free Software and
particularly GPL licensing, then you shouldn't place a Linux-based
device on the market.  Just think about an analogy:  If you have a
recycling company and enter a new market (disposal of hazardous
chemicals), then you cannot simply treat those chemicals as regular
waste, wait until you run into legal trouble and expect to get away with
it.&lt;/p&gt;&lt;p&gt;
I think there are still far too many GPL violations out there, and we
need to see more enforcement in order to get all the major players in
their respective lines of business into compliance.  But come on,
dealing with embedded devices in 2012 and still getting compliance
outright wrong really means that there has not been the least bit of
attention on this subject.  And without enforcement, it is never going
to change.   People who want no enforcement should simply use
MIT-style licenses.
&lt;/p&gt;&lt;p&gt;
Last, but not least, I also think GPL compliance is a matter of fair
competition.  There are some companies who really do a good job in
ensuring compliance with the various Free Software licenses.  If their
competition doesn't invest the funds into the respective skills,
procedures and business processes, they are getting an unfair
competitive advantage against those who are doing it right.  If there
was no enforcement, the motivation would be to reduce efforts in
compliance, not increase it.
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Let me conclude with a clear statement to anyone who thinks that by
replacing Busybox with a non-GPL licensed project they can evade GPL
enforcement:  It will not work.  There are others out there enforcing
the GPL.  Last but not least gpl-violations.org.  Despite the
notoriously outdated webpage, we are still alive and kicking, churning
down on the violation reports that we receive.  Armijn Hemel, Joachim
Steiger, Tim Engelhardt, Julia Gebert and Till Jaeger deserve much of
the credit for all that work, while I'm mostly spending each awake
minute hacking &lt;a href=&quot;http://osmocom.org/&quot;&gt;Free Software for mobile
communications&lt;/a&gt;. Yes, we should publish more about our activities,
and I hope to find the time to do so.  There should at least be an
annual report with the number of cases...
&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 09 Feb 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Tuxbrain: FOSDEM 2012 -  Open Source bajo 0 ;)</title>
	<guid permalink="False">http://www.tuxbrain.com/207 at http://www.tuxbrain.com</guid>
	<link>http://www.tuxbrain.com/en/fosdem-2012-open-source-bajo-0-0</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;font size=&quot;1&quot;&gt;&lt;img src=&quot;http://www.tuxbrain.com/img/fosdem2012/11.jpg&quot; align=&quot;center&quot; /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/center&gt;&lt;br /&gt;
Un año más, como no podía ser de otra manera, nos hemos echado el petate a la espalda para visitar la ya conocida entre las conocidas y cita ineludible FOSDEM.&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Nada más llegar ya nos imaginábamos que esto se iba a acabar pareciendo a un episodio de “Superviviente”,por que había caído una nevada considerable, pero nuestro espíritu “frikoso” nos ha mantenido constantes en nuestro empeño... de llegar a la Fiesta de la Cerveza !!!&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tuxbrain.com/en/fosdem-2012-open-source-bajo-0-0&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 08 Feb 2012 17:18:05 +0000</pubDate>
</item>
<item>
	<title>Village Telco: SPUD  Simple Unified Dashboard for mesh networks</title>
	<guid>http://villagetelco.org/?p=1014</guid>
	<link>http://villagetelco.org/2011/06/spud-simple-unified-dashboard-for-mesh-networks/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/06/spud-1.jpg&quot;&gt;&lt;img class=&quot;alignright size-thumbnail wp-image-1017&quot; title=&quot;Spud - Map View&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/06/spud-1-150x150.jpg&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a title=&quot;IT46 Home Page&quot; href=&quot;http://www.it46.se/&quot;&gt;IT46&lt;/a&gt; have been hard at work and have just made the first public release of SPUD (Simple Unified Dashboard), a wireless mesh network visualisation tool for BATMAN mesh networks and its users.&lt;/p&gt;&lt;p&gt;SPUD is a PHP based dashboard that communicates with the BATMAN visualization server and displays real time wireless link status. The software is written in &lt;a title=&quot;Cake PHP HOme Page&quot; href=&quot;http://cakephp.org/&quot;&gt;CakePHP&lt;/a&gt; (a PHP-based MVC framework) and uses &lt;a title=&quot;Gooble Maps API Version 3&quot; href=&quot;http://code.google.com/apis/maps/documentation/javascript/&quot;&gt;Google Maps API 1.3&lt;/a&gt; for visualization.&lt;/p&gt;&lt;p&gt;SPUD is designed to be as simple as possible to use, and to enable teams, that have installed large amount of mesh nodes, to visualize their networks quickly.&lt;/p&gt;&lt;p&gt;Some of the core features of SPUD are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Client management:&lt;/strong&gt; Bulk import of clients from CSV file, Edit client position with Google Maps, Tracking of new clients&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Link monitoring:&lt;/strong&gt; Easy overview of active wireless links, Mesh quality in each direction of a wireless link&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Customization&lt;/strong&gt;: Colours and threshold values for link quality&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;See above and below for screenshots that shows some of the functionality of SPUD.  The source code is available via SVN at&lt;/p&gt;&lt;pre&gt;svn co http://dev.villagetelco.org/svn/villagetelco/spud/trunk/&lt;/pre&gt;&lt;p&gt;and the default configuration will monitor our demo site in Bo Kaap (Cape Town)&lt;/p&gt;&lt;p&gt;Detailed installation instructions are available at&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://spud.it46.se/spud/install&quot;&gt; http://spud.villagetelco.org/install&lt;/a&gt; (user: vt-admin pass: ouagadougou) or http://dev.villagetelco.org/trac/wiki/spud_install&lt;/p&gt;&lt;p&gt;We have set up a demo site of SPUD that visualizes the Bo Kaap network. The demo is available at: &lt;a title=&quot;{user: vt-admin, password: ouagadougou}&quot; href=&quot;http://spud.it46.se/spud&quot;&gt;http://spud.villagatelco.org&lt;/a&gt;. Please feel free to play with it, and provide us your feedback!&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/06/spud-2.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-1018&quot; title=&quot;Spud - Client Detail Screen&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/06/spud-2-300x126.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;126&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 08 Feb 2012 06:49:28 +0000</pubDate>
</item>
<item>
	<title>GNSS-SDR: GLONASS L2: NEW RESULTS</title>
	<guid>http://gnss-sdr.com/xml-rss2.php?itemid=53</guid>
	<link>http://gnss-sdr.com/xml-rss2.php?itemid=53</link>
	<description>After a pause in developing GLONASS L2 software receiver for SciLab I found some time to work with it. The error that didn't allow to calculate correct PVT is fixed now. So GLONASS L2 scilab receiver is fully working now. PVT solution for L2 signals recorded in the may 2011 is shown on the figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://gnss-sdr.ru/media/1/20120207-remark_3_01.jpg&quot; width=&quot;590&quot; height=&quot;530&quot; alt=&quot;PVT Solution based on GLONASS L2 signals.&quot; title=&quot;PVT Solution based on GLONASS L2 signals.&quot; /&gt;&lt;br /&gt;
&lt;div&gt;Figure 1 PVT solution for L2.&lt;/div&gt;On the figure 2 PVT solution for L1 is presented for comparision.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://gnss-sdr.ru/media/1/20120207-remark_3_02.jpg&quot; width=&quot;590&quot; height=&quot;556&quot; alt=&quot;PVT Solution based on GLONASS L1 signals.&quot; title=&quot;PVT Solution based on GLONASS L1 signals.&quot; /&gt;&lt;br /&gt;
&lt;div&gt;Figure 2 PVT solution for L1.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The source code is available through &lt;a href=&quot;http://code.google.com/p/gnsssdr/source/browse/#svn%2Ftrunk%2FGNSS_SOFTWARE_RECEIVERS%2FPOSTPROCESSING_SCILAB_RECEIVERS%2FGLONASS%2FL2&quot;&gt;google code&lt;/a&gt;.</description>
	<pubDate>Tue, 07 Feb 2012 15:45:09 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: FMC Projects - FMC projects &amp; co. presented in FOSDEM 2012</title>
	<guid>http://www.ohwr.org/news/240</guid>
	<link>http://www.ohwr.org/news/240</link>
	<pubDate>Tue, 07 Feb 2012 13:35:35 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Yard light controller replaced with an Eleven</title>
	<guid>http://www.freetronics.com/blogs/news/5518452-yard-light-controller-replaced-with-an-eleven</guid>
	<link>http://www.freetronics.com/blogs/news/5518452-yard-light-controller-replaced-with-an-eleven</link>
	<description>&lt;p&gt;The winner of the &lt;a href=&quot;http://tronixstuff.com/&quot;&gt;Tronixstuff&lt;/a&gt; January competition, Mike Rossetti, received a &lt;a href=&quot;http://www.freetronics.com/eleven&quot;&gt;Freetronics Eleven&lt;/a&gt; as a prize, and today he wrote to the Tronixstuff Google Group with &lt;a href=&quot;http://groups.google.com/group/tronixstuff/browse_thread/thread/46ace869a707af8c&quot;&gt;details of the project he used it for&lt;/a&gt;. From his post:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;The synchro-motor-driven timer in my yard light controller burned out. So instead of spending $15US replacing the clock I decided to implement my own controller using the Freetronics Eleven! (With an ultimate cost well over $100US. But then a lot of that was acquiring some new tools and stocking my 'kit'. ;^) The cost for the parts actually used was right around $20US—not too bad!)&amp;nbsp;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Since I was using an Arduino I was determined to make two critical improvements in my yard light controller that the old synchro-clock could not accommodate:&amp;nbsp;&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;nbsp; - No need to reset the clock after a power-fail (courtesy of an RTC)&amp;nbsp;&lt;br /&gt;
&amp;nbsp; - No need to get down in the mud twice a year to adjust the clock for that blasted daylight savings time.&amp;nbsp;&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Ultimately, I was able to add one other major feature:&amp;nbsp;&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;nbsp; - Controllable using an old Sharp remote control.&amp;nbsp;&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Here's what I can do with the remote control:&amp;nbsp;&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;nbsp; - Display/adjust the current time&amp;nbsp;&lt;br /&gt;
&amp;nbsp; - Display/adjust the sun sensor level for turning on/off the lights&amp;nbsp;&lt;br /&gt;
&amp;nbsp; - Display/adjust what time the lights are turned off at night and on in the morning (as long as the sun isn't up)&amp;nbsp;&lt;br /&gt;
&amp;nbsp; - Display/adjust when daylight savings starts and ends (which Sunday of which month, i.e. DST starts 2nd Sunday of March)&amp;nbsp;&lt;br /&gt;
&amp;nbsp; - Manually turn the light on or off, overriding the sun and timer&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/lightcontrol_large.jpg?100891&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;In the picture here can see the original light control box on the left (with the cover removed). That circular opening with the clear tape on it is where the old synchro-clock was mounted. Beneath the black and yellow wires is a 20A solid-state relay I got for about $5 on eBay. I'd originally wanted (and tried like the dickens) to get everything into the original box but there just wasn't quite enough room, hence the add-on box on the right (that's the smallest Radio Shack had that would fit the Eleven). Below the 7-segment LED display can be seen the photocell and the I/R receiver. Back over in the old box is an unused Nexus S power wart. (I really wanted a smaller power supply! Doesn't anyone have such a thing? Something without a built-in plug?)&amp;nbsp;&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;That's the project for which I put the Freetronics Eleven to good use. Thanks John and thanks Freetronics for all the fun!&lt;/i&gt;&lt;/p&gt;
Thanks for sharing the project with us, Mike! We're glad you found a good use for the Eleven.</description>
	<pubDate>Tue, 07 Feb 2012 05:11:04 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: 每天都要带着相机</title>
	<guid>http://www.openmobilefree.net/?p=1238</guid>
	<link>http://www.openmobilefree.net/?p=1238</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/02/2012-02-06-133308.jpg&quot;&gt;&lt;img src=&quot;http://www.openmobilefree.net/wp-content/uploads/2012/02/2012-02-06-133308-300x225.jpg&quot; alt=&quot;&quot; title=&quot;me and aww&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1239&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
(用电脑上的摄像头拍的，还在激动中&amp;#8230;)&lt;/p&gt;</description>
	<pubDate>Mon, 06 Feb 2012 23:58:26 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: HOWTO  Mailing lists with Mailman on Ubuntu 10.04</title>
	<guid>http://free-electrons.com/?p=3953</guid>
	<link>http://free-electrons.com/blog/mailman-howto-ubuntu-10-04/</link>
	<description>&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;http://lists.free-electrons.com/images/mailman/mailman-large.jpg&quot; alt=&quot;GNU mailman logo&quot; /&gt;Free Electrons is not in the system administration business (we offer free and open-source solutions for embedded systems), but we do our best to share whatever experience we acquire, and whatever code we produce.&lt;/p&gt;
&lt;p&gt;We configured a KVM virtual machine to run our mailing lists, and we used Ubuntu 10.04, the long term support (LTS) version. Here are instructions based on this experience. You could also use the same instructions to install Ubuntu 10.04 on a tiny, low power ARM board. And if you wish to use a more recent version of Ubuntu, I expect the steps to be very similar.&lt;/p&gt;
&lt;p&gt;Here we assume that your domain is &lt;code&gt;example.com&lt;/code&gt; and that you install your mailing list software on &lt;code&gt;lists.example.com&lt;/code&gt;. It is indeed a good idea to install your mailing list software on a different server. This way, you won&amp;#8217;t mess up with your main web and mail servers. Not having CGI scripts running on it will also keep your main mail server more secure. &lt;/p&gt;
&lt;h3&gt;Install packages&lt;/h3&gt;
&lt;p&gt;Install the Apache web server. It will allow administrators to configure and manage the lists, and users to subscribe, unsubscribe and tune their subscription settings.&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install apache2
&lt;/pre&gt;
&lt;p&gt;For e-mail delivery, I chose the &lt;a href=&quot;http://www.postfix.org/&quot;&gt;Postfix&lt;/a&gt; MTA (Mail Transport Agent). &lt;a href=&quot;http://www.exim.org/&quot;&gt;Exim&lt;/a&gt; would have been a good solution too, but I am more familiar with Postfix, which is already in use on our main mail server. &lt;/p&gt;
&lt;pre&gt;
sudo apt-get install postfix
&lt;/pre&gt;
&lt;p&gt;Choose the &lt;code&gt;Internet site&lt;/code&gt; option.&lt;/p&gt;
&lt;p&gt;Now install the mailman package:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install mailman
&lt;/pre&gt;
&lt;p&gt;Select the languages that you want your mailing list interfaces to support. I chose English and French for the moment. To add more languages later, run:&lt;/p&gt;
&lt;pre&gt;
sudo dpkg-reconfigure mailman
&lt;/pre&gt;
&lt;h3&gt;Configure the Apache web server&lt;/h3&gt;
&lt;p&gt;First copy the sample Apache configuration file provided by the &lt;code&gt;mailman&lt;/code&gt; package:&lt;/p&gt;
&lt;pre&gt;
cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman
&lt;/pre&gt;
&lt;p&gt;Now, in &lt;code&gt;/etc/apache2/sites-available/mailman&lt;/code&gt;, enable short URLs by enabling:&lt;/p&gt;
&lt;pre&gt;
ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
&lt;/pre&gt;
&lt;p&gt;Also modify &lt;code&gt;/etc/mailman/mm_cfg.py&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
DEFAULT_URL_PATTERN = 'http://%s/mailman/'
&lt;/pre&gt;
&lt;p&gt;The last step is to enable your &lt;code&gt;mailman&lt;/code&gt; site in Apache:&lt;/p&gt;
&lt;pre&gt;
sudo a2ensite mailman
sudo /etc/init.d/apache2 restart
&lt;/pre&gt;
&lt;p&gt;You should now have a new symbolic link in &lt;code&gt;/etc/apache2/sites-enabled/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Check that the Mailman website works by opening your mailing lists home page: &lt;code&gt;http://lists.example.com/mailman/listinfo&lt;/code&gt;. It should look like &lt;a href=&quot;http://lists.free-electrons.com/mailman/listinfo&quot;&gt;http://lists.free-electrons.com/mailman/listinfo&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Configure postfix&lt;/h3&gt;
&lt;p&gt;Enable the following line in &lt;code&gt;/etc/mailman/mm_cfg.py&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
MTA='Postfix'
&lt;/pre&gt;
&lt;p&gt;Once the MTA is configured, generate Mailman specific aliases for Postfix:&lt;/p&gt;
&lt;pre&gt;
sudo /usr/lib/mailman/bin/genaliases
&lt;/pre&gt;
&lt;p&gt;Now, you need to configure Postfix through its &lt;code&gt;main.cf&lt;/code&gt; file. A convenient way to do this is to run the below commands:&lt;/p&gt;
&lt;pre&gt;
sudo postconf -e 'relay_domains = lists.example.com'
sudo postconf -e 'transport_maps = hash:/etc/postfix/transport'
sudo postconf -e 'mailman_destination_recipient_limit = 1'
sudo postconf -e 'alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases'
&lt;/pre&gt;
&lt;p&gt;Also add the following line to &lt;code&gt;/etc/postfix/transport&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
lists.free-electrons.com      mailman:
&lt;/pre&gt;
&lt;p&gt;and run:&lt;/p&gt;
&lt;pre&gt;
sudo postmap -v /etc/postfix/transport
&lt;/pre&gt;
&lt;p&gt;You won&amp;#8217;t have any mail delivery if you forget. I struggled for a few hours before I realized I forgot this setting.&lt;/p&gt;
&lt;p&gt;Now, set correct file ownership:&lt;/p&gt;
&lt;pre&gt;
sudo chown root:list /var/lib/mailman/data/aliases
sudo chown root:list /etc/aliases
&lt;/pre&gt;
&lt;p&gt;For logging and debugging e-mail delivery, I recommend to install the &lt;code&gt;sysklogd&lt;/code&gt; package. Without it, you won&amp;#8217;t have any &lt;code&gt;mail.info&lt;/code&gt;, &lt;code&gt;mail.warn&lt;/code&gt; and &lt;code&gt;mail.err&lt;/code&gt; files in &lt;code&gt;/var/mail/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To install this package, enable the &lt;code&gt;universe&lt;/code&gt; repository if needed (uncomment the lines with &lt;code&gt;universe&lt;/code&gt; in the &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; file), and run:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get update
sudo apt-get install sysklogd
&lt;/pre&gt;
&lt;p&gt;To avoid having two &lt;code&gt;mail.info&lt;/code&gt; and &lt;code&gt;mail.log&lt;/code&gt; files with identical contents, edit &lt;code&gt;/etc/syslog.conf&lt;/code&gt; and remove the below line:&lt;/p&gt;
&lt;pre&gt;
mail.*                          -/var/log/mail.log
&lt;/pre&gt;
&lt;p&gt;Also create a &lt;code&gt;/etc/logrotate.d/mail&lt;/code&gt; file to rotate logs, as in the below example:&lt;/p&gt;
&lt;pre&gt;
/var/log/mail.* {
        daily
        size 10M
        rotate 4
        compress
        missingok
        notifempty
        create 640 root adm
}
&lt;/pre&gt;
&lt;p&gt;Last but not least, restart Postfix:&lt;/p&gt;
&lt;pre&gt;
/etc/init.d/postfix restart
&lt;/pre&gt;
&lt;p&gt;At this point, a good idea is to check that mail delivery works:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install bsd-mailx
mailx alice@example.com
Subject: test
test
.
Cc:
&lt;/pre&gt;
&lt;p&gt;Note: that&amp;#8217;s the line containing only a dot character that allows to terminate the message.&lt;/p&gt;
&lt;p&gt;If the receipient doesn&amp;#8217;t receive this message, there is an issue in the way your mail server is configured. This could be because the firewall doesn&amp;#8217;t allow connections to outside machines through tcp port 25. Anyway, look at the logs in &lt;code&gt;/var/log/mail.*&lt;/code&gt; to get a clue. There is no point going on in this howto until you get this fixed.&lt;/p&gt;
&lt;h3&gt;Creating the mailman site list&lt;/h3&gt;
&lt;p&gt;Mailman needs a so-called &amp;#8220;site list&amp;#8221;, which is the list from which password reminders and such are sent out from. The default name for this list list &lt;code&gt;mailman&lt;/code&gt;, though you can change this through the &lt;code&gt;MAILMAN_SITE_LIST&lt;/code&gt; setting in &lt;code&gt;/etc/mailman/mm_cfg.py&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;To create this list, run:&lt;/p&gt;
&lt;pre&gt;
sudo newlist mailman
&lt;/pre&gt;
&lt;p&gt;You will have to answer a few questions like:&lt;/p&gt;
&lt;pre&gt;
Enter the email of the person running the list: postmaster@example.com
Initial newsletter password: xxx
Hit enter to notify newsletter owner...
&lt;/pre&gt;
&lt;p&gt;Choose the password carefully, as crackers will be able to highjack your mailing list if it is too easy to guess.&lt;/p&gt;
&lt;p&gt;The next required step is to add the list aliases to &lt;code&gt;/etc/aliases&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
# mailman mailing list
mailman:              &quot;|/var/lib/mailman/mail/mailman post mailman&quot;
mailman-admin:        &quot;|/var/lib/mailman/mail/mailman admin mailman&quot;
mailman-bounces:      &quot;|/var/lib/mailman/mail/mailman bounces mailman&quot;
mailman-confirm:      &quot;|/var/lib/mailman/mail/mailman confirm mailman&quot;
mailman-join:         &quot;|/var/lib/mailman/mail/mailman join mailman&quot;
mailman-leave:        &quot;|/var/lib/mailman/mail/mailman leave mailman&quot;
mailman-owner:        &quot;|/var/lib/mailman/mail/mailman owner mailman&quot;
mailman-request:      &quot;|/var/lib/mailman/mail/mailman request mailman&quot;
mailman-subscribe:    &quot;|/var/lib/mailman/mail/mailman subscribe mailman&quot;
mailman-unsubscribe:  &quot;|/var/lib/mailman/mail/mailman unsubscribe mailman&quot;
&lt;/pre&gt;
&lt;p&gt;In addition to delivering e-mail to the mailing lists, these aliases also allow to subscribe and unsubscribe by writing to special e-mail addresses. &lt;/p&gt;
&lt;p&gt;You also need to run the &lt;code&gt;newaliases&lt;/code&gt; command, without which there is no e-mail delivery:&lt;/p&gt;
&lt;pre&gt;
sudo newaliases
sudo /etc/init.d/postfix restart
sudo /etc/init.d/mailman restart
&lt;/pre&gt;
&lt;p&gt;Look at the &lt;code&gt;/var/log/mailman/error&lt;/code&gt; file for potential issues.&lt;/p&gt;
&lt;h3&gt;Create regular mailing lists&lt;/h3&gt;
&lt;p&gt;Regular mailing lists are created in the same way as above: Assuming you want to create a &lt;code&gt;newsletter&lt;/code&gt; mailing list. You will need run:&lt;/p&gt;
&lt;pre&gt;
sudo newlist newsletter
&lt;/pre&gt;
&lt;p&gt;Add your new mailing list to &lt;code&gt;/etc/aliases&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
# newletter mailing list
newsletter:              &quot;|/var/lib/mailman/mail/mailman post newsletter&quot;
newsletter-admin:        &quot;|/var/lib/mailman/mail/mailman admin newsletter&quot;
newsletter-bounces:      &quot;|/var/lib/mailman/mail/mailman bounces newsletter&quot;
newsletter-confirm:      &quot;|/var/lib/mailman/mail/mailman confirm newsletter&quot;
newsletter-join:         &quot;|/var/lib/mailman/mail/mailman join newsletter&quot;
newsletter-leave:        &quot;|/var/lib/mailman/mail/mailman leave newsletter&quot;
newsletter-owner:        &quot;|/var/lib/mailman/mail/mailman owner newsletter&quot;
newsletter-request:      &quot;|/var/lib/mailman/mail/mailman request newsletter&quot;
newsletter-subscribe:    &quot;|/var/lib/mailman/mail/mailman subscribe newsletter&quot;
newsletter-unsubscribe:  &quot;|/var/lib/mailman/mail/mailman unsubscribe newsletter&quot;
&lt;/pre&gt;
&lt;p&gt;Then, run the usual commands:&lt;/p&gt;
&lt;pre&gt;
sudo newaliases
sudo /etc/init.d/postfix restart
sudo /etc/init.d/mailman restart
&lt;/pre&gt;
&lt;h3&gt;Configuring your lists&lt;/h3&gt;
&lt;p&gt;The easiest way to configure your lists and add members is to open the &lt;code&gt;http://lists.example.com.com/mailman/listinfo&lt;/code&gt; URL with a browser.&lt;/p&gt;
&lt;p&gt;A few things are also possible from the command line. For example, you can add a member as follows:&lt;/p&gt;
&lt;pre&gt;
echo &quot;alice@example.com&quot; &gt; /tmp/foo
sudo add_members -r /tmp/foo newsletter
&lt;/pre&gt;
&lt;h3&gt;Enabling archives&lt;/h3&gt;
&lt;p&gt;Default file permissions are not completely ready to support mailing list archives:&lt;/p&gt;
&lt;pre&gt;
sudo chown -R root:list /var/lib/mailman/archives
sudo chmod o+rX /var/lib/mailman/archives/private
&lt;/pre&gt;
&lt;p&gt;The second line allows the webserver to access the archives. Note that these settings were forgotten in the official Ubuntu documentation. &lt;/p&gt;
&lt;h3&gt;Settings for newsletter mailing lists&lt;/h3&gt;
&lt;p&gt;At Free Electrons, we also use Mailman to deliver our newsletters. Mailman provides recipients with an easy mechanism to subscribe by themselves and unsubscribe whenever they want.&lt;/p&gt;
&lt;p&gt;To make it even easier to unsubscribe from a newsletter, Mailman can add a special footer to each recipient, with a custom URL that allows to unsubscribe without having to remember one&amp;#8217;s password.&lt;/p&gt;
&lt;p&gt;To enable this feature, you have to enable the following line in &lt;code&gt;/etc/mailman/mm_cfg.py&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
# Extra options
# Allow to personalize each message
# (useful to provide a password-less unsubscribe link)
OWNERS_CAN_ENABLE_PERSONALIZATION = 1
&lt;/pre&gt;
&lt;p&gt;Restart Mailman (&lt;code&gt;/etc/init.d/mailman restart&lt;/code&gt;) and go to the administrative interface for your list. Under &lt;code&gt;Non digest options&lt;/code&gt;, you will then be able to set the &lt;code&gt;Should Mailman personalize each non-digest delivery?&lt;/code&gt; option to &lt;code&gt;Full Personalization&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then, you can set a custom footer for each recipient in the &lt;code&gt;Footer added to mail sent to regular list members&lt;/code&gt; option. Here is an example:&lt;/p&gt;
&lt;pre&gt;
_______________________________________________
Free Electrons quarterly newsletter
Unsubscribe: %(user_optionsurl)s?password=%(user_password)s
Archives: http://lists.free-electrons.com/pipermail/newsletter/
&lt;/pre&gt;
&lt;p&gt;Beware that sending custom e-mails to each recipient will increase the load on your server. You may not want to do this on mailing lists with great numbers of subscribers.&lt;/p&gt;
&lt;h3&gt;Useful resources&lt;/h3&gt;
&lt;p&gt;The below ressources were useful to prepare this HOWTO document:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://help.ubuntu.com/community/Mailman&quot;&gt;Mailman &amp;#8211; Ubuntu Community documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gnu.org/software/mailman/mailman-install/index.html&quot;&gt;Mailman installation manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#8217;t hesitate to ask questions and give feedback by leaving a reply below.&lt;/p&gt;</description>
	<pubDate>Mon, 06 Feb 2012 16:55:00 +0000</pubDate>
</item>
<item>
	<title>FreakLabs: chibiArduino v0.55 Release</title>
	<guid>http://freaklabs.org/index.php/Blog/Chibi/chibiArduino-v0.55-Release.html</guid>
	<link>http://freaklabs.org/index.php/Blog/Chibi/chibiArduino-v0.55-Release.html</link>
	<description>I just released the latest version of the chibiArduino code. There are two main changes:1) The code was modified and tested to be compatible with the Arduino v1.0 IDE as well as previous versions.2) The code has been moved to github.I think that's about it. Sorry I didn't make the changes for the Arduino 1.0 compatibility sooner. It was actually pretty painless. The move to github is nice too. Its much nicer to have the repo online rather than having...</description>
	<pubDate>Mon, 06 Feb 2012 05:34:43 +0000</pubDate>
</item>
<item>
	<title>osPID: Production Update</title>
	<guid permalink="False">http://www.ospid.com/blog/?p=227</guid>
	<link>http://www.ospid.com/blog/production-update/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=production-update</link>
	<description>&lt;p&gt;Things are finally rolling at osPID HQ.  All of our parts are either on site or in transit, and production will being as soon as everything arrives.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s the good news.  The less-good news is that we&amp;#8217;ve had to push back our planned ship date.  Originally we were planning on shipping this week.  Unfortunately we&amp;#8217;ve had to push that back to the week of 2/19.&lt;/p&gt;
&lt;h2&gt;The Story&lt;/h2&gt;
&lt;p&gt;With every delay it&amp;#8217;s good to have a scapegoat, and we&amp;#8217;ve got one!  Maxim Electronics.  On the prototype temperature card, we used their MAX6675 thermocouple chip.  For the production model, we decided to use their newer (and less expensive) MAX31855 chip.&lt;/p&gt;
&lt;p&gt;When we went to order the MAX31855 however, instead of the initially advertised January delivery date, the date had been revised to July.  JULY!  We checked various suppliers, but this seems to be an issue with Maxim itself. &lt;/p&gt;
&lt;p&gt;So, faced with a choice between a 6 month delay and a more expensive chip, we decided to eat the cost and revert the board back to the MAX6675 configuration we had used in the prototype.&lt;/p&gt;
&lt;p&gt;During this whole debacle we lost our place in line with the PCB manufacturer and had to re-submit our order.  Unfortunately this put us on the other side of Chinese New Year.&lt;/p&gt;
&lt;p&gt;And that brings us to today.  We want to apologize for both the delay and the chip swap.  If you had your heart set on the MAX31855, know that from a financial perspective so did we.  We have a board designed and ready for that chip.  Once supplies of the are more reliable we will transition to it.&lt;/p&gt;</description>
	<pubDate>Sun, 05 Feb 2012 14:19:54 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Keaton Smith</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-1267594373391009253</guid>
	<link>http://videocircuits.blogspot.com/2012/02/keaton-smith.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;http://vimeo.com/keaton&quot;&gt;Keaton Smith&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-1267594373391009253?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 05 Feb 2012 05:54:56 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Snow Canon (1981)</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7839719292753828137</guid>
	<link>http://videocircuits.blogspot.com/2012/02/snow-canon-1981.html</link>
	<description>As it snowed today I was reminded of this&lt;br /&gt;&lt;br /&gt;Video by Synopsis&lt;br /&gt;Music by Steve Roach&lt;br /&gt;Graphics by Denise Gallant/Brian Samuels&lt;br /&gt;from California Images:HiFi For The Eyes&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7839719292753828137?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 05 Feb 2012 01:45:11 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>FreakLabs: Technique vs Feel</title>
	<guid>http://freaklabs.org/index.php/Blog/Misc/Technique-vs-Feel.html</guid>
	<link>http://freaklabs.org/index.php/Blog/Misc/Technique-vs-Feel.html</link>
	<description>I recently got into an interesting discussion on Twitter with some other engineers regarding the parallels between dancing and engineering. I often get a surprised look from people when I tell them I used to be a professional dancer. Perhaps its because I look like a nerd, or perhaps its because I am one. In any case, its true and its something that I spent many years and countless hours doing. The strange thing is really that it's nothing different...</description>
	<pubDate>Sat, 04 Feb 2012 22:55:43 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Free Electrons at the Android Builders Summit and the Embedded Linux Conference: one talk and video recording</title>
	<guid>http://free-electrons.com/?p=3904</guid>
	<link>http://free-electrons.com/blog/free-electrons-at-abs-elc-2012/</link>
	<description>&lt;p&gt;A good part of the Free Electrons team will be in San Francisco (actually, not in San Francisco, but in the Bay Area) from February, 13th to 17th for the &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit&quot;&gt;Android Builders Summit&lt;/a&gt; and the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference&quot;&gt;Embedded Linux Conference&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot;&gt;&lt;img alt=&quot;Android Builders Summit 2012&quot; src=&quot;https://events.linuxfoundation.org/images/stories/headers/2012/2012_abs_header.png&quot; title=&quot;Android Builders Summit 2012&quot; width=&quot;500&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Android Builders Summit 2012&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit&quot;&gt;Android Builders Summit&lt;/a&gt; is the second edition of this conference dedicated to Android system development (and not application development). Compared to last year, the conference has been extended to three parallel tracks during two days, as can be seen in the &lt;a href=&quot;https://events.linuxfoundation.org/events/android-builders-summit/schedule&quot;&gt;schedule&lt;/a&gt;. There are many talks about Android customization, Android internals, Android porting, usage of Android in specific markets (medical devices, vehicle infotainment), etc. A lot of useful talks for developers working at the Android system level.&lt;/p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot;&gt;&lt;img alt=&quot;Embedded Linux Conference 2012&quot; src=&quot;https://events.linuxfoundation.org/images/stories/headers/2012/2012_elc_header.png&quot; title=&quot;Embedded Linux Conference 2012&quot; width=&quot;500&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Embedded Linux Conference 2012&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference&quot;&gt;Embedded Linux Conference&lt;/a&gt; is now a well-established conference. Again for this 2012 edition, there will be three parallel tracks during three days. As the &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/schedule&quot;&gt;schedule&lt;/a&gt; shows, there will be talks about many, many topics: performance and optimization, power management, build systems, drivers for various types of devices, multimedia, ARM kernel support and much more.&lt;/p&gt;
&lt;p&gt;I will be giving a talk about &lt;a href=&quot;https://events.linuxfoundation.org/events/embedded-linux-conference/petazzoni&quot;&gt;Buildroot: A Nice, Simple and Efficient Embedded Linux Build System&lt;/a&gt; on the second day of the conference. The aim of the talk is to give a status on where Buildroot is, three years after a maintainer was choosen and a big clean up work was started. The project has changed a lot compared to its state three years ago, so I thought it would be nice to make a status on where Buildroot and where it is going.&lt;/p&gt;
&lt;p&gt;With my colleagues &lt;a href=&quot;http://free-electrons.com/company/staff/gregory-clement/&quot;&gt;Grégory Clément&lt;/a&gt; and &lt;a href=&quot;http://free-electrons.com/company/staff/maxime-ripard/&quot;&gt;Maxime Ripard&lt;/a&gt;, we will also record all the talks from the &lt;i&gt;Embedded Linux Conference&lt;/i&gt; in order to put the videos online, freely available, after the conference, as we have done for many &lt;a href=&quot;http://free-electrons.com/community/videos/conferences/&quot;&gt;past conferences&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We hope to meet you in San Francisco for the Android Builders Summit and the Embedded Linux Conference!&lt;/p&gt;</description>
	<pubDate>Sat, 04 Feb 2012 05:23:45 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: FMC TDC 1ns 5cha - 02-02-2012: V2 design ready</title>
	<guid>http://www.ohwr.org/news/239</guid>
	<link>http://www.ohwr.org/news/239</link>
	<pubDate>Thu, 02 Feb 2012 15:23:55 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Open Hardware Repository: Simple VME FMC Carrier (SVEC) - Schematics review held</title>
	<guid>http://www.ohwr.org/news/238</guid>
	<link>http://www.ohwr.org/news/238</link>
	<pubDate>Thu, 02 Feb 2012 13:52:22 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Dieter Spaar: Running your own Node-B</title>
	<guid>http://www.mirider.com/weblog/2012/02/02#20120202-running_your_own_node_b</guid>
	<link>http://www.mirider.com/weblog/2012/02/02#20120202-running_your_own_node_b</link>
	<description>&lt;p&gt;
Its now nearly 3 and a half year ago that I wrote the first &quot;Proof-of-Concept&quot;
code to get the Siemens BS-11 GSM Basestation up and running. So I think it was
time to start with 3G, now that LTE is being actively deployed. You also can
sometimes find reasonable priced, used Node-Bs which makes getting access to
the equipment possible. A Node-B is the 3G equivalent of a GSM BTS.
&lt;/p&gt;
&lt;p&gt;
So I spent quite a lot of time spread of several months to get a Node-B up
and running. Compared with the BS-11 this was a &lt;b&gt;lot&lt;/b&gt; more difficult
and required much more time. Of course the Air Interface is completely 
different, in my case I looked at WCDMA FDD so far, there a few more 
standards used in other parts of the world. Then you have to deal with 
a huge, different specification, the most important when dealing with a 
Node-B are NBAP (TS 25.433) and RRC (TS 25.331), around 3000 pages in total. 
NBAP, the Node-B Application Part, is used to configure the Node-B and do things 
like creating Radio Links (communication channels) to the phone. RRC, the 
Radio Resource Control, is the Layer-3 protocol for the control plane between 
the phone and the access network. It is responsible for accessing the network, 
setting up and releasing connections or paging a phone. Both NBAP and RRC make
use of ASN.1 which makes things not necessarily easier ;-) There are a few 
more protocols on the lower layers involved like MAC (TS 25.321), 
RLC (TS 25.322) and FP (TS 25.435 and TS 25.427).
&lt;/p&gt;
&lt;p&gt;
The Node-Bs I used can run &quot;Iub over IP&quot; (Iub is the interface between the
Node-B and the RNC, similar to Abis in GSM between the BTS and BSC). Originally
Iub is based on ATM which runs over E1/T1 or similar lines with higher data 
rates. However &quot;Iub over ATM&quot; adds a few more protocol layers for dealing with 
ATM and I really wanted to avoid this additional complexity. Not all Node-Bs 
can automatically do &quot;Iub over IP&quot;, usually it requires an additional hardware 
option (interface card). When using &quot;Iub over IP&quot; you have to deal with
protocols like UDP and SCTP which are much more convenient.
&lt;/p&gt;
&lt;p&gt;
The current status is a very minimal implementation of something like
an RNC to run the Node-B so that a phone can register on the network 
and do simple things like SMS on the control plane. No user plane like 
speech or data yet, but this is the next steps I plan to do. The code 
is not yet public but it will be when it gets more evolved.
&lt;/p&gt;
&lt;p&gt;
There is still a lot left to research and experiment with. For example I 
haven't looked at things like HSPA yet, I completely ignore handover to 
other cells as there is only one cell in my experimental setup. So I am
sure 3G will give a few more years of a very interesting field to
play with before looking at LTE ;-)
&lt;/p&gt;</description>
	<pubDate>Thu, 02 Feb 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Free Electrons: Announcing our Android System Development training</title>
	<guid>http://free-electrons.com/?p=3915</guid>
	<link>http://free-electrons.com/blog/announcing-android-system-training/</link>
	<description>&lt;p&gt;&lt;img alt=&quot;Android Robot&quot; src=&quot;http://free-electrons.com/graphics/android-robot.png&quot; title=&quot;Android Robot&quot; class=&quot;alignright&quot; width=&quot;150&quot; height=&quot;175&quot; /&gt;For multiple years, Free Electrons has provided two typical training courses for embedded Linux developers: an &lt;a href=&quot;http://free-electrons.com/training/embedded-linux/&quot;&gt;Embedded Linux system development&lt;/a&gt; course that focuses on the basics for embedded Linux development (bootloader and kernel configuration, compiling and usage, system integration and build systems, cross-compiling, filesystems, application development and debugging, etc.) and an &lt;a href=&quot;http://free-electrons.com/training/kernel/&quot;&gt;embedded Linux kernel and driver development&lt;/a&gt; course that focuses on kernel and driver development (kernel APIs for drivers, character drivers, device model, power management, kernel porting, etc.). In total, we have given dozens of editions of these sessions in &lt;a href=&quot;http://free-electrons.com/training/locations/&quot;&gt;multiple locations&lt;/a&gt; all around the world. We have kept our commitment to release all the training materials under a free license (the Creative Commons CC-BY-SA license), and they are therefore freely accessible for anyone at &lt;a href=&quot;http://free-electrons.com/docs/&quot;&gt;http://free-electrons.com/docs/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We are now announcing a new course, called &lt;a href=&quot;http://free-electrons.com/training/android/&quot;&gt;Android System Development&lt;/a&gt;. It is a four day training session that targets engineers who need to develop embedded systems with Google Android.&lt;/p&gt;
&lt;p&gt;Through theory and practical labs, the course makes you familiar with compiling and booting Android, with adapting Android to support a new embedded board (assuming that it is already supported by the Linux kernel), and with building a real system through accessing specific hardware, customizing the filesystem and using debugging techniques. See the &lt;a href=&quot;http://free-electrons.com/doc/training/agenda-android.pdf&quot;&gt;complete agenda&lt;/a&gt;. The training materials for this session will also be made available under the same Creative Commons CC-BY-SA license.&lt;/p&gt;
&lt;p&gt;If you are interested in this training session, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join the public session organized in Toulouse, France, on June 11-14, 2012. See &lt;a href=&quot;http://free-electrons.com/training/sessions/toulouse-android/&quot;&gt;registration and organization details&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Order an on-site training session to be held at your location. See &lt;a href=&quot;http://free-electrons.com/training/costs/&quot;&gt;registration details&lt;/a&gt;.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This training course will be given by our engineer &lt;a href=&quot;http://free-electrons.com/company/staff/maxime-ripard/&quot;&gt;Maxime Ripard&lt;/a&gt; who has gained Android experience by working at Archos on Android tablets, by making Android work on multiple TI OMAP3 based platforms and also by participating to the Android Builders Summit conference.&lt;/p&gt;
&lt;p&gt;Do not hesitate to &lt;a href=&quot;http://free-electrons.com/company/contact/&quot;&gt;contact us&lt;/a&gt; for further details about this new training course.&lt;/p&gt;</description>
	<pubDate>Wed, 01 Feb 2012 06:22:27 +0000</pubDate>
</item>
<item>
	<title>Sebastien Bourdeauducq, lekernel.net: The OV-D20 radio-club in Berlin-Hohenschönhausen</title>
	<guid permalink="False">http://lekernel.net/blog/?p=1632</guid>
	<link>http://lekernel.net/blog/2012/01/the-ov-d20-radio-club-in-berlin-hohenschonhausen/</link>
	<description>&lt;p&gt;Located close to the north-west border of the city, far from the popular districts, the &lt;a href=&quot;http://ov-d20.de&quot;&gt;D20 &amp;#8220;Ortsverbände&amp;#8221;&lt;/a&gt; of the national amateur radio club is certainly one of the most active grassroots tech clubs in Berlin.&lt;/p&gt;
&lt;p&gt;As with many amateur radio clubs, the first thing you notice is that the average age is high. And they know how to appreciate vintage equipment. We can find, for example, a neat exhibition of electronic glassware.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/glassware.jpg&quot;&gt;&lt;img src=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/glassware-225x300.jpg&quot; alt=&quot;&quot; title=&quot;glassware&quot; width=&quot;225&quot; height=&quot;300&quot; class=&quot;aligncenter size-medium wp-image-1637&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/IMG_0490.jpg&quot;&gt;&lt;img src=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/IMG_0490-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_0490&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1638&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And how about this &amp;#8220;Made in &lt;a href=&quot;http://en.wikipedia.org/wiki/East_Germany&quot;&gt;DDR&lt;/a&gt;&amp;#8221; transceiver?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/IMG_0495.jpg&quot;&gt;&lt;img src=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/IMG_0495-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_0495&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1641&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The electronics lab comes with a mix of old (but does such stuff really get old?) and more modern equipment. Do not miss the SMD tools at the right &amp;#8211; which were refreshing to see after I have been called &amp;#8220;totally crazy&amp;#8221; for hand-soldering a 0402 component on top of another in a well-known Berlin hackerspace. Phew, some people really need to catch up with technology.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/IMG_0469.jpg&quot;&gt;&lt;img src=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/IMG_0469-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_0469&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1652&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There can be very interesting things being built there, such as this modified TV antenna that can now be used to&amp;#8230; talk to &lt;a href=&quot;http://en.wikipedia.org/wiki/AMSAT&quot;&gt;AMSAT&lt;/a&gt; satellites and the ISS (yes, the space station) on the VHF band, using for example the &lt;a href=&quot;http://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System&quot;&gt;APRS&lt;/a&gt; digital protocol. So&amp;#8230; if you&amp;#8217;re growing sick of being told about mediocre computer-controlled plastic extruders and microcontroller+LED kits, pay them a visit. It&amp;#8217;s probably going to be worth the rather long travel time.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/sven.jpg&quot;&gt;&lt;img src=&quot;http://lekernel.net/blog/wp-content/uploads/2012/01/sven-225x300.jpg&quot; alt=&quot;&quot; title=&quot;sven&quot; width=&quot;225&quot; height=&quot;300&quot; class=&quot;aligncenter size-medium wp-image-1654&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 31 Jan 2012 22:02:18 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: CERN Open Hardware Licence - 31-01-2012: OHL being discussed on LWN.net</title>
	<guid>http://www.ohwr.org/news/237</guid>
	<link>http://www.ohwr.org/news/237</link>
	<description>&lt;p&gt;&lt;a href=&quot;https://lwn.net/&quot; class=&quot;external&quot;&gt;LWN.net&lt;/a&gt; is a reader-supported news site dedicated to producing the best coverage from within the Linux and free software development communities. &lt;br /&gt;In response to &lt;a href=&quot;http://www.ohwr.org/news/232&quot;&gt;CERN's Call for Comments&lt;/a&gt; LWN.net currently &lt;a href=&quot;https://lwn.net/Articles/478125/&quot; class=&quot;external&quot;&gt;discusses improvements to the CERN OHL licence&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Note that &lt;a href=&quot;http://www.ohwr.org/mailing_list/show?project_id=cernohl&quot;&gt;cernohl@ohwr.org&lt;/a&gt; is the official mailing list where the CERN Open Hardware Licence is discussed and that is guaranteed to be followed by the relevant people. Fortunately the most interesting messages from LWN.net are transmitted to this official mailing list.&lt;/p&gt;</description>
	<pubDate>Tue, 31 Jan 2012 16:56:49 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Free Electrons: Free Electrons at FOSDEM: two talks and video recording</title>
	<guid>http://free-electrons.com/?p=3901</guid>
	<link>http://free-electrons.com/blog/free-electrons-fosdem-2012/</link>
	<description>&lt;p&gt;&lt;img alt=&quot;I'm going to FOSDEM&quot; src=&quot;http://fosdem.org/2012/promo/going-to&quot; title=&quot;I'm going to FOSDEM&quot; class=&quot;alignright&quot; width=&quot;150&quot; height=&quot;89&quot; /&gt;As usual, &lt;a href=&quot;http://www.free-electrons.com&quot;&gt;Free Electrons&lt;/a&gt; will again be present at the &lt;a href=&quot;http://www.fosdem.org&quot;&gt;FOSDEM&lt;/a&gt; conference in Brussels, on February, 4th and February 5th. We will of course mostly be attending the &lt;a href=&quot;http://fosdem.org/2012/schedule/track/embedded_devroom&quot;&gt;Embedded DevRoom&lt;/a&gt;, with multiple talks around development in the embedded space.&lt;/p&gt;
&lt;p&gt;We will also be giving two talks this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My colleague &lt;a href=&quot;http://free-electrons.com/company/staff/maxime-ripard/&quot;&gt;Maxime Ripard&lt;/a&gt; will be giving a talk about &lt;a href=&quot;http://fosdem.org/2012/schedule/event/iio&quot;&gt;IIO, a new subsystem for I/O devices&lt;/a&gt;. In short, IIO is a new subsystem in the kernel to write drivers for devices like Analog-to-Digital converters. Maxime has worked on a driver inside the IIO subsystem for the internal ADCs of the AT91 processors from Atmel, and will base his talk mostly on the experience developing this driver. This talk will take place on Saturday, 12:00 AM to 1:00 PM in the Lameere room.&lt;/li&gt;
&lt;li&gt;I will be giving a talk on &lt;a href=&quot;http://fosdem.org/2012/schedule/event/using_qt_for_non_graphical_applications&quot;&gt;Using Qt for non-graphical applications&lt;/a&gt;. It is a talk that has already been given at the Embedded Linux Conference Europe, but the audience of FOSDEM and ELCE being quite different, we have chosen to propose it for FOSDEM as well, and it got accepted. This talk will take place on Sunday, 1:00 PM to 2:00 PM in the Lameere room.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also other talks that are worth noting: a &lt;a href=&quot;http://fosdem.org/2012/schedule/event/linux_soc_power&quot;&gt;SoC power management talk&lt;/a&gt; from Jean Pihet who works on OMAP power management support in the Linux kernel, a talk about &lt;a href=&quot;http://fosdem.org/2012/schedule/event/opencores_openrisc_true_open_hw&quot;&gt;OpenCores and OpenRISC&lt;/a&gt;, a talk about &lt;a href=&quot;http://fosdem.org/2012/schedule/event/safe_upgrade_of_embedded_systems&quot;&gt;Safe Upgrade of Embedded Systems&lt;/a&gt; by Arnout Vandecappelle, who contributes a lot to Buildroot, and also other talks about OpenWRT, Yocto, licensing issues in Android, the EFL libraries, and more.&lt;/p&gt;
&lt;p&gt;We will also be carrying our camcorder to video record those talks. We are trying to see with the FOSDEM organization team if it possible to record the audio directly from the room sound systems in order to provide better audio quality in our videos.&lt;/p&gt;
&lt;p&gt;If you happen to be at FOSDEM, we&amp;#8217;d be very happy to meet you!&lt;/p&gt;</description>
	<pubDate>Tue, 31 Jan 2012 09:12:16 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Jeffrey Siedler</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7962630047877593419</guid>
	<link>http://videocircuits.blogspot.com/2012/01/jeffrey-siedler.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.plaide.com/&quot;&gt;http://www.plaide.com/&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7962630047877593419?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 31 Jan 2012 03:09:19 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Free Electrons: Buildroot Developer Day, Brussels edition</title>
	<guid>http://free-electrons.com/?p=3912</guid>
	<link>http://free-electrons.com/blog/bdd-2012-brussels/</link>
	<description>&lt;p&gt;&lt;img alt=&quot;Buildroot&quot; src=&quot;http://buildroot.org/images/logo_small.png&quot; title=&quot;Buildroot&quot; class=&quot;alignright&quot; width=&quot;200&quot; height=&quot;100&quot; /&gt;Around each FOSDEM conference and Embedded Linux Conference Europe event, we  have been organizing a &lt;b&gt;Buildroot Developer Day&lt;/b&gt; for a few years, in order to gather some developers and users of the &lt;a href=&quot;http://www.buildroot.org&quot;&gt;Buildroot&lt;/a&gt; build system, in order to discuss the development of Buildroot, its features, development process, design, and more.&lt;/p&gt;
&lt;p&gt;In Prague at the last Embedded Linux Conference Europe in October 2011, we had a very interesting meeting that gathered developers from other build systems (OE-lite, OpenBricks and PXTdist), and we published a &lt;a href=&quot;http://free-electrons.com/blog/report-bdd-oct-2011/&quot;&gt;report of this meeting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next Buildroot Developer Day will take place on Friday, 3rd February, just before the FOSDEM conference, in Brussels. This is the first meeting that will gather such a number of Buildroot developers: Peter Korsgaard (Buildroot maintainer), Arnout Vandecapelle (developer from Essensium/Mind, who has been contributing a lot to Buildroot lately), Thomas De Schampheleire (also a big contributor in the last year or so), Luca Ceresoli, Yann E. Morin  (developer of Crosstool-NG), my colleague &lt;a href=&quot;http://free-electrons.com/company/staff/maxime-ripard/&quot;&gt;Maxime Ripard&lt;/a&gt; (who contributed package enhancements and improvements of the package infrastructure) and myself.&lt;/p&gt;
&lt;p&gt;This meeting is open to all Buildroot developers and users, and will take place in a location easily accessible in the center of Brussels. Do not hesitate to contact me at &lt;!--
function escramble(){
 var a,b,c,d,e,f,g,h,i
 a='&lt;a href=\&quot;mai'
 b='thomas.petazzoni'
 c='\&quot;&gt;'
 a+='lto:'
 b+='@'
 e='&lt;/a&gt;'
 f=''
 b+='free-electrons.com'
 g='&lt;img src=\&quot;'
 h=''
 i='\&quot; alt=&quot;Email us.&quot; border=&quot;0&quot;&gt;'
 if (f) d=f
 else if (h) d=g+h+i
 else d=b
 document.write(a+b+c+d+e)
}
escramble()
//--&gt; if you want to take part to this meeting.&lt;/p&gt;</description>
	<pubDate>Mon, 30 Jan 2012 21:03:55 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: FMC ADC 200k 16b 11cha - 200 ksps ADC documented</title>
	<guid>http://www.ohwr.org/news/236</guid>
	<link>http://www.ohwr.org/news/236</link>
	<description>&lt;p&gt;Ross Millar, student at the University of Glasgow, has worked for six months at CERN to debug the 200 ksps ADC, write firmware for it and develop a new version of the circuit board. He wrote &lt;a href=&quot;http://www.ohwr.org/documents/149&quot;&gt;an extensive report&lt;/a&gt; about his work.&lt;br /&gt;Before this ADC can be produced in quantity, the final design has to be verified and the firmware needs to be re-aligned with the firmware of the &lt;a href=&quot;http://www.ohwr.org/projects/fmc-adc-100m14b4cha/wiki&quot;&gt;100 MSPS ADC&lt;/a&gt; so it can more easily be maintained and driver code can be more easily shared.&lt;br /&gt;We needed to put the project on hold because of lack of manpower and the availability of a commercial and proprietary alternative for CERN's applications.&lt;/p&gt;</description>
	<pubDate>Mon, 30 Jan 2012 08:45:47 +0000</pubDate>
	<author>Erik.van.der.Bij@cern.ch (Erik van der Bij)</author>
</item>
<item>
	<title>Freetronics: Arduino for amateur radio</title>
	<guid>http://www.freetronics.com/blogs/news/5376832-arduino-for-amateur-radio</guid>
	<link>http://www.freetronics.com/blogs/news/5376832-arduino-for-amateur-radio</link>
	<description>&lt;p&gt;Peter Parker VK3YE came along to the Mini Maker Faire in Melbourne a couple of weeks ago, and picked up a &lt;a href=&quot;http://www.freetronics.com/kitten&quot;&gt;KitTen&lt;/a&gt; (an Arduino-compatible board in kit form) while he was there. He's already used it for a bunch of interesting experiments, including attaching a radio transmitter to turn it into a Morse-code CQ caller and as a fox-hunt beacon!&lt;/p&gt;
&lt;p&gt;Check out his cool video:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=kTN-68VhF&quot;&gt;http://www.youtube.com/watch?v=kTN-68VhF&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Sun, 29 Jan 2012 12:50:59 +0000</pubDate>
</item>
<item>
	<title>Harald Welte: New OsmocomBB RSSI monitor firmware</title>
	<guid>http://laforge.gnumonks.org/weblog/2012/01/28#20120128-osmocombb_rssi</guid>
	<link>http://laforge.gnumonks.org/weblog/2012/01/28#20120128-osmocombb_rssi</link>
	<description>&lt;p&gt;
Jolly has been hacking up a nice new &lt;a href=&quot;http://bb.osmocom.org/trac/wiki/rssi.bin&quot;&gt;RSSI monitoring
firmware application&lt;/a&gt; for OsmocomBB.
&lt;/p&gt;
&lt;p&gt;
I let the pictures speak for themselves:
&lt;center&gt;
&lt;img src=&quot;http://bb.osmocom.org/trac/raw-attachment/wiki/rssi.bin/osmocombb-rssi-arfcn.jpg&quot; /&gt;
&lt;img src=&quot;http://bb.osmocom.org/trac/raw-attachment/wiki/rssi.bin/osmocombb-rssi-spectrum.jpg&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
I really hope this trend continues and we'll get some actual user
interface in OsmocomBB at some point this year..
&lt;/p&gt;</description>
	<pubDate>Sat, 28 Jan 2012 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Open Hardware Repository: OHR Support - OHWR MAINTENANCE ON 2011-01-30 (MONDAY) 08:30 CEST</title>
	<guid>http://www.ohwr.org/news/235</guid>
	<link>http://www.ohwr.org/news/235</link>
	<description>&lt;p&gt;Hello everyone,&lt;/p&gt;


	&lt;p&gt;Next morning we'll be doing some server updates on the OHWR main server.&lt;/p&gt;


	&lt;p&gt;As usual, the maintenance job will happen next monday at 08:30 CEST. Our estimation is that it will take about 30 minutes to complete.&lt;/p&gt;


	&lt;p&gt;All of the ohwr.org subdomains &amp;#38; services (including svn.ohwr.org, lists.ohwr.org, and the git repositories) will be interrupted for a short while during that interval.&lt;/p&gt;


	&lt;p&gt;We apologize for any inconvenience this could cause.&lt;/p&gt;


	&lt;p&gt;Best regards,&lt;/p&gt;


	&lt;p&gt;The OHR-support Team&lt;/p&gt;</description>
	<pubDate>Fri, 27 Jan 2012 10:15:32 +0000</pubDate>
	<author>egarcia@splendeo.es (Enrique García)</author>
</item>
<item>
	<title>Freetronics: Review of the DMD Dot Matrix Display by John Boxall</title>
	<guid>http://www.freetronics.com/blogs/news/5308742-review-of-the-dmd-dot-matrix-display-by-john-boxall</guid>
	<link>http://www.freetronics.com/blogs/news/5308742-review-of-the-dmd-dot-matrix-display-by-john-boxall</link>
	<description>&lt;p&gt;Definitely the most eye-catching device we have in our range is the huge new &lt;a href=&quot;http://www.freetronics.com/dmd&quot;&gt;Dot Matrix Display panel&lt;/a&gt;, which comes bundled with a ribbon cable and an adaptor designed to fit standard Arduino headers to make it really easy to get started. It's attracted a lot of interest over on the Freetronics Forum, with new features being added to Marc's driver library very rapidly.&lt;/p&gt;
&lt;p&gt;John Boxall (of Tronixstuff fame) has just posted a review of the DMD along with videos showing it in action. Check this out:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;You can read his full review on the Tronixstuff site:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tronixstuff.wordpress.com/2012/01/24/arduino-meets-las-vegas-with-the-freetronics-dmd/&quot;&gt;Arduino meets Las Vegas with the Freetronics DMD&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 24 Jan 2012 10:58:32 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Detecting and locating lights using an Arduino and an image sensor</title>
	<guid>tag:diydrones.com,2012-01-23:705844:BlogPost:766240</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:766240</link>
	<description>&lt;p&gt; 

&lt;/p&gt;
&lt;p&gt;I've been experimenting with using an Arduino-powered vision system to detect and locate point light sources in an environment. The hardware setup is an Arduino Duemilanove, a Centeye &lt;a href=&quot;http://centeye.com/products/current-vision-chips-2/&quot; target=&quot;_blank&quot;&gt;Stonyman&lt;/a&gt; image sensor chip, and a &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/rc-micro-helicopter-hover-yaw-and-height-using-millimeter-thick&quot; target=&quot;_self&quot;&gt;printed pinhole&lt;/a&gt;. The Arduino acquires a 16x16 window of pixels centered underneath the pinhole, which covers a good part of the hemisphere field of view in front of the sensor. (This setup is part of a new ArduEye system that will be released soon...)&lt;/p&gt;
&lt;p&gt;The algorithm determines that a pixel is a point light source if the four following conditions are met: First, the pixel must be brighter than it's eight neighbors. Second, the pixel's intensity must be greater than an &quot;intensity threshold&quot;. Third, the pixel must be brighter, by a &quot;convexity threshold&quot;, than the average of it's upper and lower neighbors. Fourth, the pixel must similarly be brighter, by the same threshold, than the average of it's left and right neighbors. The algorithm detects up to ten points of light. The Arduino script then dumps the detected light locations to the Arduino serial monitor.&lt;/p&gt;
&lt;p&gt;A 16x16 resolution may not seem like much when spread out over a wide field of view. So to boost accuracy we use a well-known &quot;hyperacuity&quot; technique to refine the pixel position estimate to a precision of about a tenth of a pixel. The picture below shows the technique: If a point of light exists at a pixel, the algorithm constructs a curve using that pixel's intensity and the left and right intensities, then interpolates using a second order Lagrange polynomial, and computes the maxima of that polynomial. This gives us &quot;h&quot;, a subpixel refinement value that we then add to the pixel's whole-valued horizontal position. The algorithm then does something similar to refine the vertical position using the intensities above and below the pixel in question. (Those of you who have studied SIFT feature descriptors should recognize this technique.) The nice thing about this technique is that you can get the precision of a 140x140 image for &quot;light tracking&quot; without exceeding the Arduino's 2kB memory limit.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/JycWmgAShkiYdSnFGyBF7CKCzAXcfBz8WT-edjpaYMYzXzzpp-BiCKy*NwiMM--l5igAxJw*MZFSXx2-mwdWcyPIH1QvCzht/hyperacuity_interpolation_maxima.JPG&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/JycWmgAShkiYdSnFGyBF7CKCzAXcfBz8WT-edjpaYMYzXzzpp-BiCKy*NwiMM--l5igAxJw*MZFSXx2-mwdWcyPIH1QvCzht/hyperacuity_interpolation_maxima.JPG&quot; width=&quot;391&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The algorithm takes about 30 milliseconds to acquire a 16x16 image and another 2 or 3 milliseconds to locate the lights.&lt;/p&gt;
&lt;p&gt;The first video shows detection of a single point light source, both with and without hyperacuity position refinement. When I add a flashlight, a second point is detected. The second video shows detection of three lights (dining room pendant lamps) including when they are dimmed way down.&lt;/p&gt;
&lt;p&gt;It would be interesting to hack such a sensor with a quadrotor or another robotic platform- Bright lights could serve as markers, or even targets, for navigation. Perhaps each quad rotor could have an LED attached to it, and then the quad rotors could be programmed to fly in formation or (if you are brave) pursue each other.&lt;/p&gt;
&lt;p&gt;With additional programming, that sensor could also implement optical flow computations much like I had done in a &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/wide-field-4d-optical-flow-odometry-using-arduino-and-stonyman&quot; target=&quot;_blank&quot;&gt;previous post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;SOURCE CODE AND PCB FILES:&lt;/p&gt;
&lt;p&gt;The main Arduino sketch file can be found here: &lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/mHZ0hD6ukgzrIFy-bZvXLhur12MRv*hIgd4nCyys6Tl2nYJ0ALkI-h3R1SdmxaBwzL0PJNq36nQznfIPtwM6YVn*fMpBUQFN/LightTracker_v1.zip&quot;&gt;LightTracker_v1.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You will still need library files to run it. I've put these, as well as support documentation and Eagle files for the PCBs, in the downloads section of a Google Code project file, located here: &lt;a href=&quot;http://code.google.com/p/ardueye-rocket-libraries/downloads/list&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/ardueye-rocket-libraries/downloads/list&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 23 Jan 2012 06:00:00 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: HEX at Space Studios</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-4745119832767187609</guid>
	<link>http://videocircuits.blogspot.com/2012/01/hex-at-space-studios.html</link>
	<description>I went to see the &lt;a href=&quot;http://www.robertpepperell.com/hex.htm&quot;&gt;HEX&lt;/a&gt; exhibition as &lt;a href=&quot;http://www.spacestudios.org.uk/whats-on/exhibitions/hex&quot;&gt;Space Studios&lt;/a&gt;&amp;nbsp;the other day tis on till Jan the 4th&lt;br /&gt;If you don't know about Hex/Hexstatic and you like video feedback or even just audio visual creativity in general then this is a good introduction.&lt;br /&gt;&lt;br /&gt;here are some bad phone snaps&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-ds4hgIlhzjM/TxtKN4Iz-gI/AAAAAAAAAYM/1zZVMp20QFU/s1600/DSC00280.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-ds4hgIlhzjM/TxtKN4Iz-gI/AAAAAAAAAYM/1zZVMp20QFU/s320/DSC00280.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-SXORE3-M2W8/TxtKPLNF5hI/AAAAAAAAAYU/hKDE9IX0YLk/s1600/DSC00281.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-SXORE3-M2W8/TxtKPLNF5hI/AAAAAAAAAYU/hKDE9IX0YLk/s320/DSC00281.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-jehcriXP1wc/TxtKQKmOkEI/AAAAAAAAAYc/DbRBA0_qM0Y/s1600/DSC00285.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-jehcriXP1wc/TxtKQKmOkEI/AAAAAAAAAYc/DbRBA0_qM0Y/s320/DSC00285.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-R8X3KEU4LgA/TxtKRx8N8KI/AAAAAAAAAYk/bD5f8GOPQeA/s1600/DSC00288.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://2.bp.blogspot.com/-R8X3KEU4LgA/TxtKRx8N8KI/AAAAAAAAAYk/bD5f8GOPQeA/s320/DSC00288.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-6jjQQ45dQE8/TxtKTscMQMI/AAAAAAAAAYs/rOSsxtQR0Ks/s1600/DSC00289.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-6jjQQ45dQE8/TxtKTscMQMI/AAAAAAAAAYs/rOSsxtQR0Ks/s320/DSC00289.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-C1TMgSYOChU/TxtKVPuk3fI/AAAAAAAAAY0/_uRkBWm-7vk/s1600/DSC00291.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-C1TMgSYOChU/TxtKVPuk3fI/AAAAAAAAAY0/_uRkBWm-7vk/s320/DSC00291.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-4KuAU_qTQ8g/TxtKWDLNvDI/AAAAAAAAAY8/NoLEC5lnIUY/s1600/DSC00293.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://1.bp.blogspot.com/-4KuAU_qTQ8g/TxtKWDLNvDI/AAAAAAAAAY8/NoLEC5lnIUY/s320/DSC00293.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-5B3IHM1LOtE/TxtKXJ0z6MI/AAAAAAAAAZE/ze5LW0hW9ZY/s1600/DSC00297.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://1.bp.blogspot.com/-5B3IHM1LOtE/TxtKXJ0z6MI/AAAAAAAAAZE/ze5LW0hW9ZY/s320/DSC00297.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-BvdWN7wgIpM/TxtKYksxn3I/AAAAAAAAAZM/bwg2ZGQWuEo/s1600/DSC00299.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-BvdWN7wgIpM/TxtKYksxn3I/AAAAAAAAAZM/bwg2ZGQWuEo/s320/DSC00299.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-_RfEKZezObw/TxtKZzjMX0I/AAAAAAAAAZU/sse_V2a-zFQ/s1600/DSC00301.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-_RfEKZezObw/TxtKZzjMX0I/AAAAAAAAAZU/sse_V2a-zFQ/s320/DSC00301.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-4745119832767187609?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Jan 2012 15:31:37 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Mark Adrian Bell: pyturtle</title>
	<guid permalink="False">https://mark487.wordpress.com/?p=72</guid>
	<link>http://mark487.wordpress.com/2012/01/21/programming-for-young-learners-with-python/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://mark487.files.wordpress.com/2012/01/python.png&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-75&quot; title=&quot;python&quot; src=&quot;http://mark487.files.wordpress.com/2012/01/python.png?w=150&amp;h=132&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;132&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://python.org/about/&quot;&gt;Python&lt;/a&gt;&lt;/strong&gt; is a free &lt;a href=&quot;http://www.howstuffworks.com/question435.htm&quot;&gt;open source&lt;/a&gt; programming language. At an advanced level, it&amp;#8217;s a powerful and flexible language, but it&amp;#8217;s clear and straight forward syntax, and it&amp;#8217;s forgiving nature, make it a great way to introduce people to programming&lt;br /&gt;
and &lt;a href=&quot;http://openbookproject.net/thinkcs/python/english2e/&quot;&gt;computer science&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Younger learners can start by writing programs to draw shapes and&lt;br /&gt;
patterns in the &lt;a href=&quot;http://pythonturtle.org/&quot;&gt;PythonTurtle&lt;/a&gt; learning environment. They can also learn to write simplified functions to help &lt;a href=&quot;http://gvr.sourceforge.net/about.php&quot;&gt;Guido Van Robot&lt;/a&gt; to explore his abstract world. Both these programs provide learners with an interactive environment to learn basic concepts like sequencing, conditional branching, looping and procedural abstraction through problem solving with instant visual feedback.&lt;/p&gt;
&lt;div id=&quot;attachment_76&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://pythonturtle.org/&quot;&gt;&lt;img class=&quot; wp-image-76  &quot; title=&quot;pyturtle&quot; src=&quot;http://mark487.files.wordpress.com/2012/01/pyturtle.gif?w=295&amp;h=299&quot; alt=&quot;PythonTurtle&quot; width=&quot;295&quot; height=&quot;299&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;PythonTurtle&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;When learners are ready, they can use the Python programming language to explore a free online course book like &lt;a href=&quot;http://openbookproject.net/thinkcs/python/english2e/&quot;&gt;How to Think Like a Computer Scientist&lt;/a&gt;. Advanced learners can graduate to graphics and game programming with a free online course like &lt;a href=&quot;http://inventwithpython.com/&quot;&gt;Invent Your Own Computer Games with Python&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Python is such a flexible language that learners have the opportunity&lt;br /&gt;
to exlore procedural, functional and object oriented styles of programming that they can use later if go on to study languages like&lt;br /&gt;
C, C++, Java, and Haskell.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/mark487.wordpress.com/72/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/mark487.wordpress.com/72/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=mark487.wordpress.com&amp;blog=14598188&amp;post=72&amp;subd=mark487&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 21 Jan 2012 06:59:30 +0000</pubDate>
</item>
<item>
	<title>Mark Adrian Bell: edubuntu</title>
	<guid permalink="False">https://mark487.wordpress.com/?p=59</guid>
	<link>http://mark487.wordpress.com/2012/01/21/the-edubuntu-live-cd/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.edubuntu.org/about&quot;&gt;&lt;img class=&quot;alignleft size-full wp-image-63&quot; title=&quot;edubuntu&quot; src=&quot;http://mark487.files.wordpress.com/2012/01/edubuntu.jpg?w=640&quot; alt=&quot;Edubuntu&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;&lt;a href=&quot;http://www.edubuntu.org/about&quot;&gt;Edubuntu&lt;/a&gt;&lt;/strong&gt; live CD is suite of free and &lt;a href=&quot;http://www.howstuffworks.com/question435.htm&quot;&gt;open source&lt;/a&gt; education and general software that you can run from the CD without having to install anything. It&amp;#8217;s based on &lt;a href=&quot;http://www.ubuntu.com/ubuntu/features&quot;&gt;Ubuntu&lt;/a&gt; Linux. It gives you a &lt;a href=&quot;http://www.edubuntu.org/screenshots&quot;&gt;great range of software&lt;/a&gt; to play with for learners of all ages.&lt;/p&gt;
&lt;p&gt;If you like some of the stuff on the CD, these days most open source software has Windows or MacOS versions available from the project website for you to download and install. Or if you really dig it, and you&amp;#8217;re adventurous, you can install the whole lot to your hard drive and run &lt;a href=&quot;https://www.linux.com/learn/resource-center/376-linux-is-everywhere-an-overview-of-the-linux-operating-system&quot;&gt;Linux&lt;/a&gt; as an alternative operating system.&lt;/p&gt;
&lt;p&gt;Follow the links to find out more about &lt;a href=&quot;http://www.linux.com/learn/resource-center/376-linux-is-everywhere-an-overview-of-the-linux-operating-system&quot;&gt;Linux&lt;/a&gt;, more about &lt;a href=&quot;http://www.howstuffworks.com/question435.htm&quot;&gt;open source software&lt;/a&gt;, a place in Australia to buy &lt;a href=&quot;http://www.lsl.com.au/&quot;&gt;Linux live CDs&lt;/a&gt; in case you don&amp;#8217;t feel like downloading and burning your own, other &lt;a href=&quot;http://edubuntu.org/other-educational-systems&quot;&gt;education focused live CDs&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/mark487.wordpress.com/59/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/mark487.wordpress.com/59/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=mark487.wordpress.com&amp;blog=14598188&amp;post=59&amp;subd=mark487&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 21 Jan 2012 05:36:05 +0000</pubDate>
</item>
<item>
	<title>FabFi Wireless: Wifi and the Internet of Things</title>
	<guid permalink="False">tag:blogger.com,1999:blog-5995440889369726231.post-597410754028548704</guid>
	<link>http://feedproxy.google.com/~r/FabfiWireless/~3/h7VtLnL6Cfg/wifi-and-internet-of-things.html</link>
	<description>&lt;div dir=&quot;ltr&quot;&gt;
&lt;div&gt;
Today is a day for thinking about the future of the web. &amp;nbsp;By virtue of being the author of this blog, that gets back to the future of communications infrastructure, and especially wifi. &amp;nbsp;Apologies in advance if I wax poetic, &lt;a href=&quot;http://wikimediafoundation.org/wiki/English_Wikipedia_anti-SOPA_blackout&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt;, &lt;a href=&quot;http://www.craigslist.org/about/SOPA&quot; target=&quot;_blank&quot;&gt;Craigslist&lt;/a&gt;, and &lt;a href=&quot;http://blog.reddit.com/2012/01/stopped-they-must-be-on-this-all.html&quot; target=&quot;_blank&quot;&gt;Reddit&lt;/a&gt;&amp;nbsp;are all down today in protest of SOPA/PIPA.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In recent years there's been a lot of chatter about the nature of technological convergence and the future of global telecommunications infrastructure. &amp;nbsp;Technological optimists, particularly those interested in the developing world trumpet, &quot;mobile, mobile, mobile&quot; and, on many levels, they're right... While we won't be ditching big screens and real keyboards any time soon, all statistics point to the fact that mobile devices account for an increasing number of transactions, tasks, and &amp;nbsp;amount of user online time. &amp;nbsp;Without doubt, mobile has been disruptive in the west, speeding the transition to cloud computing; a game-changer for Africa, bringing millions online; and largely responsible for an global wave of grassroots protest movements. &amp;nbsp;The thing that people tend to miss, however, when talking about the future dominance of mobile is that the device and the communications infrastructure are not one in the same. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Our lust for data is killing mobile providers (you need only look as far as the near-extinction of the unlimited data plan), and it's technologically challenging to shrink mobile cell sizes enough to [economically] support traffic loads on limited spectrum licenses. &amp;nbsp;Mobile carriers depend on the extremely efficient use of spectrum that comes with careful site planning and modeling. &amp;nbsp;This gets exceedingly hard to do as cell sites become more numerous and demand cheaper installations. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The licensed nature of mobile spectrum/devices also makes the sort of grassroots innovation and entrepreneurship that typifies the online world very difficult. &amp;nbsp;If we were only talking about making smartphones maybe we wouldn't care, but the smartphone is only the tip of the iceberg for the growing world of ubiquitous, cloud-enabled computing.&lt;br /&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The ability to be &quot;connected&quot; at all times is clearly desirable (even if we choose to unplug sometimes for our own sanity). &amp;nbsp;Smartphones have achieved a permanent position in our pants pockets formerly afforded only to wallets and house keys; but connectedness is only useful to the degree that we can interact with our world through being connected. &amp;nbsp;Social was easy: &amp;nbsp;&lt;i&gt;&quot;I'm connected. You're connected, let's share some photos and poke each other&quot;&lt;/i&gt;, but what about STUFF? &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The natural next step for a connected person is to have a connected world to interact with. &amp;nbsp;We've already started with the big ones: Thermostats, security systems, home theater. &amp;nbsp;But the possibilities are endless, and it seems that the consumers are hungry. &amp;nbsp;If you think I'm kidding, check out&amp;nbsp;&lt;a href=&quot;http://www.kickstarter.com/projects/supermechanical/twine-listen-to-your-world-talk-to-the-internet?ref=most-funded&quot; target=&quot;_blank&quot;&gt;this Kickstarter project&lt;/a&gt;&amp;nbsp;from some of my former Media Lab colleagues that garnered a half a million bucks to create a wifi-enabled rubber(?) brick, with a temperature sensor and accelerometer, that can be used for useful stuff like telling you when your laundry is done. &amp;nbsp;Innovation to fill this new space of connected &quot;stuff&quot; will only thrive with the low entry barriers of an open internet, unlicensed spectrum and cheap hardware. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In any case, the monolithic model of wireless communication is just not going to work. &amp;nbsp;A natural consequence of having EVERYTHING connected is a whole lot of unplanned and uncoordinated wireless communications generated by cheap, duty-cycled devices, flying around all over the place. This is the sort of thing that breaks traditional mobile communications.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Wifi, especially with 802.11n and soon 802.11ac boasts so much capacity that even in an environment where 40 or more uncoordinated access points are all visible to each other (such as my bedroom), you can still expect to share 15Mbps or more with all the devices in your home, while your neighbor can do the same, simultaneously. &amp;nbsp;The limitations of wifi, in terms of range and penetration of obstacles, are strengths in the world where everything is a transmitter. &amp;nbsp;You won't send 15Mbps simultaneously to every home in my neighborhood with 4G...&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As opposed to falling off in popularity as mobile improves, wifi has continued to strengthen. &amp;nbsp;Wifi will ultimately bridge the gap between wireline and mobile providers. &amp;nbsp;&lt;a href=&quot;http://gigaom.com/broadband/cable-is-discovering-the-joys-of-wi-fi-why-not-mobile/&quot; target=&quot;_blank&quot;&gt;Cable companies have already embraced wifi as a way to increase the value of their services&lt;/a&gt;. &amp;nbsp;In Europe, mobile providers like T-Mobile have embraced wifi for years, and US mobile providers are now being forced to add wifi to offload traffic. &amp;nbsp;Ubiquitous, cheap, unlicensed. &amp;nbsp;It's a recipe for innovation, and a guarantee that wifi will only increase in importance as we become increasingly connected. &amp;nbsp;Keep hacking...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5995440889369726231-597410754028548704?l=fabfiblog.fabfolk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/FabfiWireless/~4/h7VtLnL6Cfg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 18 Jan 2012 17:24:00 +0000</pubDate>
	<author>noreply@blogger.com (Keith Berkoben)</author>
</item>
<item>
	<title>FabFi Wireless: Development Kits Live!</title>
	<guid permalink="False">tag:blogger.com,1999:blog-5995440889369726231.post-7533605143930440712</guid>
	<link>http://feedproxy.google.com/~r/FabfiWireless/~3/L9kL9uZJe3A/fabfi-development-kits-live.html</link>
	<description>&lt;div dir=&quot;ltr&quot;&gt;
Thanks to Nathan from California, the first &lt;a href=&quot;http://store.fabfolk.com/&quot; target=&quot;_blank&quot;&gt;Fabfi development kit&lt;/a&gt;&amp;nbsp;went out the door today. &amp;nbsp;With the Monday holiday, I had the chance to do a little fit testing of the hardware on a spare pole I had lying around. &amp;nbsp;The &lt;a href=&quot;http://www.itelite.net/en/Katalog/MIMO-80211-n//PRA50018dual-HV.html&quot; target=&quot;_blank&quot;&gt;itelite&lt;/a&gt;&amp;nbsp;enclosure with integrated 18dBi dual-polarization patch took some modifications to mount the RouterStation, but was very robust and had a solid rubber gasket and grooved interface around the edges to keep water out. &amp;nbsp;The built-in ethernet extension plug was also a nice touch. &amp;nbsp;19&quot; pigtails for the external antennas exit through an optional port on the itelite enclosure and screw directly into the 2.4Ghz antennas. &lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-CUMWiYpdZv0/TxZJAFVDtDI/AAAAAAAAGqA/UPZGI3rOI0k/s1600/2012_01_17_csDevout.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;387&quot; src=&quot;http://4.bp.blogspot.com/-CUMWiYpdZv0/TxZJAFVDtDI/AAAAAAAAGqA/UPZGI3rOI0k/s400/2012_01_17_csDevout.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-j_ggTpzA7S4/TxZJA3s4ITI/AAAAAAAAGqQ/ph8H0cfScnk/s1600/2012_01_17_csDevIn.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://3.bp.blogspot.com/-j_ggTpzA7S4/TxZJA3s4ITI/AAAAAAAAGqQ/ph8H0cfScnk/s400/2012_01_17_csDevIn.jpg&quot; width=&quot;336&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Below is a sample look at the current kit spec all mounted up. &amp;nbsp;Mounting with the top of the pole above the tops of the antennas is a common trick to protect against lightning strikes (20cm is usually enough):&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-VhjwV25HVk0/TxZJAcmDXuI/AAAAAAAAGqI/5jMD5kwQcbQ/s1600/2012_01_17_csDev.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;http://4.bp.blogspot.com/-VhjwV25HVk0/TxZJAcmDXuI/AAAAAAAAGqI/5jMD5kwQcbQ/s640/2012_01_17_csDev.jpg&quot; width=&quot;370&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I'd prefer to see the stock antenna mounts getting the antennas farther from the pole for decreased RF shadow and better spatial diversity, but this could be easily remedied with a crossbar. For applications requiring less 5Ghz gain, a clean option might be to offer a &lt;a href=&quot;http://www.sparcotech.com/cgi-bin/commerce.cgi?preadd=action&amp;key=SP-MIMO-OD6&quot; target=&quot;_blank&quot;&gt;6-way radome&lt;/a&gt;. &amp;nbsp;I might get a chance to test this out in the near future.&lt;/div&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5995440889369726231-7533605143930440712?l=fabfiblog.fabfolk.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/FabfiWireless/~4/L9kL9uZJe3A&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 18 Jan 2012 04:31:00 +0000</pubDate>
	<author>noreply@blogger.com (Keith Berkoben)</author>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Icarus mining report</title>
	<guid>http://www.openmobilefree.net/?p=1229</guid>
	<link>http://www.openmobilefree.net/?p=1229</link>
	<description>&lt;p&gt;15 days mining about Total: 4.04000000 BTC， the &lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/miner_software/&quot;&gt;mining software&lt;/a&gt; restart about 850 times. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://deepbit.net&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://deepbit.net/userbar/4edf2d91069172fdae000000_28bd0c8cf9.png&quot; title=&quot;https://deepbit.net&quot; class=&quot;alignnone&quot; width=&quot;377&quot; height=&quot;19&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 18 Jan 2012 03:12:00 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Michael Matos CUSP</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-6722115007974852561</guid>
	<link>http://videocircuits.blogspot.com/2012/01/michael-matos-cusp.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&quot;A short film of a worm like creature, who emerges from the earth, experiences joy and loss, only to return from whence he came. Created with the help of some lzx visionary modules, my dearest eurorack pals, and my lovely oscilloscope.&quot;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://Www.Skull-fuckers.com/&quot;&gt;http://Www.Skull-fuckers.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://soundcloud.com/ultra-gash-inferno&quot;&gt;http://soundcloud.com/ultra-gash-inferno&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-6722115007974852561?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 17 Jan 2012 01:41:20 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Old shots of Lucky PDF karaoke with Taki and Lucy</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-4679577636295489333</guid>
	<link>http://videocircuits.blogspot.com/2012/01/old-shots-of-l.html</link>
	<description>I helped out my friends &lt;a href=&quot;http://jesusbuiltmyhotrod.tumblr.com/&quot;&gt;Taki&lt;/a&gt; and &lt;a href=&quot;http://wordsmarter.tumblr.com/&quot;&gt;Lucy&lt;/a&gt; in creating a live video effects karaoke piece as a small part of &lt;a href=&quot;http://luckypdf.com/&quot;&gt;Lucky PDF Live&lt;/a&gt; at Frieze art fair. I just provided the live equipment set up and they did all the hard work as I was out of the country during most of the show, but I did get a chance to snap a few shots of the set up before I went.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-aKkTXmFjNOM/TxRypg_CeGI/AAAAAAAAAXo/_zzH3QGYBrc/s1600/IMG00044-20111009-1648.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://2.bp.blogspot.com/-aKkTXmFjNOM/TxRypg_CeGI/AAAAAAAAAXo/_zzH3QGYBrc/s320/IMG00044-20111009-1648.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-An85-PpuGOk/TxRytsWf7uI/AAAAAAAAAYA/h1L6E_VjI9U/s1600/IMG00047-20111009-1649.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://2.bp.blogspot.com/-An85-PpuGOk/TxRytsWf7uI/AAAAAAAAAYA/h1L6E_VjI9U/s320/IMG00047-20111009-1649.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;also Lucky PDF have been nominated for &lt;a href=&quot;http://www.samsung.com/uk/artplus/lucky-pdf.html&quot;&gt;this&lt;/a&gt; art prize so if you are in the mood please vote for them as they are hard working and all round nice guys&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-4679577636295489333?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Jan 2012 10:57:50 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Sync Generator + Encoder + Modular Synth = Video!</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7875971263401327926</guid>
	<link>http://videocircuits.blogspot.com/2012/01/sync-generator-encoder-modular-synth.html</link>
	<description>So I recently got a Sync generator that has all sorts of signals available on mini jack! I had a video encoder stashed away so I decided to see if I could use my euro rack audio modular to generate video signals, safe to say it worked like a charm! now I just need to build some video oscillators and a small mixer and my system will work pretty well.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-8HUirnTslXI/TxRtYYnal2I/AAAAAAAAAXA/0NvOgzjecp0/s1600/DSC00212.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;311&quot; src=&quot;http://3.bp.blogspot.com/-8HUirnTslXI/TxRtYYnal2I/AAAAAAAAAXA/0NvOgzjecp0/s320/DSC00212.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-ETxCtFF9gjY/TxRtbtNv_AI/AAAAAAAAAXI/o79xRsO22Zo/s1600/DSC00215.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-ETxCtFF9gjY/TxRtbtNv_AI/AAAAAAAAAXI/o79xRsO22Zo/s320/DSC00215.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-7OK7XI8m2RM/TxRtdWhnWJI/AAAAAAAAAXQ/PUj65xbLrLs/s1600/DSC00216.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://1.bp.blogspot.com/-7OK7XI8m2RM/TxRtdWhnWJI/AAAAAAAAAXQ/PUj65xbLrLs/s320/DSC00216.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-Ce5Th34xErs/TxRtl7fv3LI/AAAAAAAAAXY/XiFgw3oK-RU/s1600/DSC00217.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://2.bp.blogspot.com/-Ce5Th34xErs/TxRtl7fv3LI/AAAAAAAAAXY/XiFgw3oK-RU/s320/DSC00217.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-XHkPXAXSm-U/TxRtuXLBXNI/AAAAAAAAAXg/HBFvtcSAY3Y/s1600/DSC00221.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-XHkPXAXSm-U/TxRtuXLBXNI/AAAAAAAAAXg/HBFvtcSAY3Y/s320/DSC00221.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7875971263401327926?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 16 Jan 2012 10:38:57 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: First BGA board</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-251203046717300275</guid>
	<link>http://siliconexposed.blogspot.com/2012/01/first-bga-board.html</link>
	<description>(NOTE: This was originally scheduled to happen a lot earlier but the fab screwed up shipping on the boards. I only got them today.)&lt;br /&gt;&lt;br /&gt;A while ago I decided to get serious about doing a design based on the Spartan-6 FPGA. Unfortunately all but the smallest part in the family are BGA only. They're somewhat pricey ($40ish for the XC6SLX25) so I figured it'd be a good idea to practice on something less expensive!&lt;br /&gt;&lt;br /&gt;Quick calculations given the DorkbotPDX batch order's design rules showed that anything under 1mm pitch was not possible in a full array since a via could not fit between adjacent balls. This rules out the CPG196, CSG225, CSG324, and CSG484 packages. The remaining options are FTG256, FGG484, FGG676, and FGG900. FTG256 looked like the easiest as it had the least pins.&lt;br /&gt;&lt;br /&gt;I did a bit of catalog browsing and determined that the cheapest FTG256 part available from Xilinx was the XC3S50A, which at $10 a pop was still a bit expensive for testing BGA soldering processes.&lt;br /&gt;&lt;br /&gt;Eventually I settled on CPG56 packaged CoolRunner-II CPLDs as my first victim (&lt;a href=&quot;http://search.digikey.com/us/en/products/XC2C32A-6CPG56C/122-1403-ND/949454&quot;&gt;Digikey page&lt;/a&gt;). CPG56 is 0.5mm pitch but is only two concentric rings, not full array.&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://media.digikey.com/Photos/Xilinx%20Photos/XC2C32A-6CPG56C.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://media.digikey.com/Photos/Xilinx%20Photos/XC2C32A-6CPG56C.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;CPG56 packaged CPLD&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The next step was to design a board. I went with a simple 2-layer design that did not break out all of the balls, but seemed to offer enough IOs to be useful for casual testing.&lt;br /&gt;&lt;br /&gt;Once the boards arrived I quickly inspected them under my microscope. They were the typical DorkbotPDX batch boards - purple LPI soldermask and ENIG finish on the pads. Some of the unbonded pads (A7-A9) appeared to have lifted off the board or underetched during manufacture. Since the pads weren't being used in the board layout this was not a problem, though it did mean the chip would be attached a bit less securely. I forgot to take a photo of this but will try to upload one soon.&lt;br /&gt;&lt;br /&gt;I have a Proctor-Silex toaster oven I had used for reflow several times in the past but never on a BGA. There is no thermocouple or automatic temperature profile control on the oven yet (a Type-K thermocouple is inbound from Sparkfun as I write this) so I used my standard manual profile for lead-free solder, adjusting the thermostat by hand for each step:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Heat quickly from room temperature to just below 100C&lt;/li&gt;&lt;li&gt;Soak at 100C for 30-60 seconds&lt;/li&gt;&lt;li&gt;Ramp up to 180C, hold for 15-30 seconds&lt;/li&gt;&lt;li&gt;Ramp up to 220C, hold for 15 seconds&lt;/li&gt;&lt;li&gt;Open door, wait 30 seconds, remove board &lt;/li&gt;&lt;/ul&gt;The first two attempts at soldering failed as the chip was not even close to correctly aligned. The first (pic coming soon) was so far off (about 250 μm) that none of the balls even touched the pads. Visible holes in the flux residue showed just how far off center it had been. The second was slightly better but still not usable.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-SueRZLYPbfs/TxItaV9hPuI/AAAAAAAAAFE/3HjqjJgZXe0/s1600/S7302396.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://4.bp.blogspot.com/-SueRZLYPbfs/TxItaV9hPuI/AAAAAAAAAFE/3HjqjJgZXe0/s400/S7302396.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;One of the first two reflow attempts&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;On the third attempt I paid extra attention to centering the chip and it seemed to turn out well. I then hand-soldered the clock oscillator, voltage regulator, JTAG header, and the 0402 sized decoupling capacitors on the back.&lt;br /&gt;&lt;br /&gt;When I attempted to solder the breadboard headers I realized I had used the wrong drill size and the pins didn't fit. Since the only ones I really cared about were power and ground I just soldered two wires into the holes.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-5hDPA1v1-zE/TxIt0Jy-DSI/AAAAAAAAAFM/XYr-P5Aay1o/s1600/S7302397.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://4.bp.blogspot.com/-5hDPA1v1-zE/TxIt0Jy-DSI/AAAAAAAAAFM/XYr-P5Aay1o/s400/S7302397.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Finished board, top view&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-85icG7ZpyL4/TxIuiBwrJaI/AAAAAAAAAFU/6ZHUJROQ_Wo/s1600/S7302399.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/-85icG7ZpyL4/TxIuiBwrJaI/AAAAAAAAAFU/6ZHUJROQ_Wo/s400/S7302399.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Finished board, bottom view&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Electrical test showed no shorts anywhere between adjacent balls. Optical inspection looked good too.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-VDKIYXOhYTY/TxIxLsIatgI/AAAAAAAAAFc/piOv3uDyBUc/s1600/S7302401.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/-VDKIYXOhYTY/TxIxLsIatgI/AAAAAAAAAFc/piOv3uDyBUc/s400/S7302401.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Side view of CSBGA&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;After hooking it up to a 3.3V power rail and a JTAG programmer, I was able to successfully program it with a simple design (divide-by-2 counter). Oscilloscope confirmed a nice 10 MHz squarewave on the output when driven by 20.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-251203046717300275?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 15 Jan 2012 19:42:21 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Freetronics: Arduino-driven Christmas light display</title>
	<guid>http://www.freetronics.com/blogs/news/5176822-arduino-driven-christmas-light-display</guid>
	<link>http://www.freetronics.com/blogs/news/5176822-arduino-driven-christmas-light-display</link>
	<description>&lt;p&gt;I don't know anything about this project other than what you can see in the YouTube description, but it looks like quite an effort. 7500 LEDs controlled using a custom 50-channel output board, synchronised to music using an Arduino. It's not clear whether it's done with an Arduino Mega (which is what the description says) or one of our &lt;a href=&quot;http://www.freetronics.com/ethermega&quot;&gt;EtherMega&lt;/a&gt; boards (which it would be if all the parts came from &lt;a href=&quot;http://www.jaycar.com.au/&quot;&gt;Jaycar&lt;/a&gt;, as the description also says).&lt;/p&gt;
&lt;p&gt;Either way, it's an impressive bit of work! Enjoy:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;</description>
	<pubDate>Fri, 13 Jan 2012 03:10:46 +0000</pubDate>
</item>
<item>
	<title>LZX Industries: LZX Industries at NAMM 2012</title>
	<guid permalink="False">http://www.lzxindustries.net/?p=974</guid>
	<link>http://www.lzxindustries.net/2012/01/lzx-industries-at-namm-2012/</link>
	<description>&lt;p&gt;We&amp;#8217;re very excited about &lt;a href=&quot;http://www.namm.org&quot; target=&quot;_blank&quot;&gt;NAMM 2012&lt;/a&gt; coming up next week in Anaheim, CA.  We&amp;#8217;ll be exhibiting a large LZX Visionary modular video synthesis system at the &lt;a href=&quot;http://www.analoguehaven.com&quot; target=&quot;_blank&quot;&gt;Analogue Haven&lt;/a&gt; booth (Booth #1270, Hall E).  If you&amp;#8217;ll be there, we hope to see you!&lt;/p&gt;</description>
	<pubDate>Thu, 12 Jan 2012 15:33:24 +0000</pubDate>
</item>
<item>
	<title>Freetronics: The Maker Faire is coming to Melbourne!</title>
	<guid>http://www.freetronics.com/blogs/news/4910562-the-maker-faire-is-coming-to-melbourne</guid>
	<link>http://www.freetronics.com/blogs/news/4910562-the-maker-faire-is-coming-to-melbourne</link>
	<description>&lt;p&gt;For those of us isolated from the rest of the world by shark-infested oceans and 10-hour plane trips, seeing all the Open Hardware action in the US and Europe has left us feeling just a little bit jealous. Over the last few years I've looked enviously at pictures of the huge O'Reilly Maker Faire, wishing there was such a thing in Australia.&lt;/p&gt;
&lt;p&gt;Now, thanks to the hard work of Paul Szymkowiak (&lt;a href=&quot;http://twitter.com/paulzee&quot;&gt;@paulzee&lt;/a&gt; to his friends!) and his army of helpers, my dream is coming true!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.makerfairemelbourne.com&quot;&gt;&lt;img src=&quot;https://cdn.shopify.com/s/files/1/0045/8932/files/makerfairemelbourne_large.jpg?100755&quot; alt=&quot;Maker Faire Melbourne&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Within a few hours the venue will be announced (it's all settled, pending some official paperwork) and the call for Makers to exhibit has already gone out.&lt;/p&gt;
&lt;p&gt;The Mini Maker Faire Melbourne will take place on Saturday January 14th, 2012 to coincide with the start of linux.conf.au in Ballarat, so if you're coming into town for LCA you can drop in at Mini Maker Faire Melbourne first and then head on to the conference.&lt;/p&gt;
&lt;p&gt;More details can be found at &lt;a href=&quot;http://www.makerfairemelbourne.com&quot;&gt;www.makerfairemelbourne.com&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Wed, 11 Jan 2012 13:28:46 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: A/V Geeks and LoVid Present “The Tricks That TV Plays” and “A Tone”</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-2984693352224385439</guid>
	<link>http://videocircuits.blogspot.com/2012/01/av-geeks-and-lovid-present-tricks-that.html</link>
	<description>&lt;div&gt;&quot;&lt;a href=&quot;http://www.avgeeks.com/wp2/av-geeks-and-lovid-present-the-tricks-that-tv-plays-and-a-tone/&quot;&gt;A/V Geeks&lt;/a&gt; share an interesting evening with homebrew video and audio synthesizer masters &lt;a href=&quot;http://www.lovid.org/&quot;&gt;LoVid&lt;/a&gt;. A/V Geeks will be presenting a couple of similar themed films with “The Tricks That TV Plays” – films that highlight the visual tricks that television can play on its viewers – films include Seeing Through Commercials, Vidtronics Demo Tape and more!&quot;&lt;br /&gt;&lt;br /&gt;Date 26.01.11 Place Kings Barcade 14 West Martin Street, Raleigh, NC 27601&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-Xql27ScGFrI/TwT08uFt25I/AAAAAAAAAW4/kd5ZtwBm1DI/s1600/reversed-monkeys-300x200.jpg&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;http://www.avgeeks.com/&quot;&gt;http://www.avgeeks.com&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.lovid.org/&quot;&gt;http://www.lovid.org/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;HUGE thanks to youtuber &lt;a href=&quot;http://www.youtube.com/user/toner&quot;&gt;toner&lt;/a&gt; for the tip off&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-2984693352224385439?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 04 Jan 2012 17:03:32 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Zedstar: TCR update</title>
	<guid>http://zedstar.org/blog/?p=246</guid>
	<link>http://zedstar.org/blog/2012/01/04/tcr-update/</link>
	<description>&lt;p&gt;Building The Clashing Rocks prototype was fun. It really identified some brick wall challenges surrounding the quantity of data we had to process in real-time. Even encoding to bit-level was not going to cut it. As a result a new direction for the project will be to focus solely on recording the seismic events. This will provide more opportunity to implement techniques to work with the bandwidth constraints in place and will eliminate the hard real-time processing constraints. There will still be the challenge of synchronising, logging and presenting the data but we will focus more on providing high-level APIs and/or a DSL to help realise this. The project will still be OpenWrt based and run on different architectures.&lt;/p&gt;</description>
	<pubDate>Wed, 04 Jan 2012 14:23:38 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: fritzing as new year gift</title>
	<guid>http://chitlesh.wordpress.com/?p=1230</guid>
	<link>http://chitlesh.wordpress.com/2012/01/03/fel-fritzing-as-new-year-gift/</link>
	<description>&lt;p&gt;On the 1st january 2012, &lt;a href=&quot;http://fritzing.org/&quot;&gt;fritzing&lt;/a&gt; was pushed into fedora stable repositories, by Ed Marshall.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Screenshot - 01032012 - 09:22:11 PM&quot; src=&quot;http://chitlesh.files.wordpress.com/2012/01/screenshot-01032012-092211-pm.png?w=406&amp;h=95&quot; alt=&quot;&quot; width=&quot;406&quot; height=&quot;95&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Fritzing is an open-source initiative to support designers, artists, researchers and hobbyists to work creatively with interactive electronics. We are creating a software and website in the spirit of Processing and Arduino, developing a tool that allows users to document their prototypes, share them with others, teach electronics in a classroom, and to create a pcb layout for professional manufacturing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-1232&quot; title=&quot;Screenshot - 01032012 - 09:55:52 PM&quot; src=&quot;http://chitlesh.files.wordpress.com/2012/01/screenshot-01032012-095552-pm.png?w=406&amp;h=359&quot; alt=&quot;&quot; width=&quot;406&quot; height=&quot;359&quot; /&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Fritzing is a nice project from our german friends, which I feel is a nice place to share their openhardware. They even provide Fab service. For those of you who uses the Italian project Arduino, you will enjoy fritzing along with arduino IDE. Happy prototyping !&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1230/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1230/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1230&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 03 Jan 2012 21:01:26 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: Fix for strange characters on Arduino Ethernet</title>
	<guid>http://chitlesh.wordpress.com/?p=1227</guid>
	<link>http://chitlesh.wordpress.com/2012/01/02/fel-fix-for-strange-characters-on-arduino-ethernet/</link>
	<description>&lt;p&gt;Thibault North has released an update of avr-gcc-4.6.2 which fixes the presence of strange characters when using the Arduino Ethernet due to a corrupted transmission.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1227/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1227/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1227&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 02 Jan 2012 13:05:28 +0000</pubDate>
</item>
<item>
	<title>Michele's GNSS blog: Processing Galileo</title>
	<guid permalink="False">tag:blogger.com,1999:blog-5679825113811261335.post-6538831515575884474</guid>
	<link>http://michelebavaro.blogspot.com/2012/01/processing-galileo-pfm.html</link>
	<description>&lt;br /&gt;The first prototype of SdrNav20 is working these days to receive the Galileo signal in space.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.blogger.com/goog_730506046&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://4.bp.blogspot.com/-wr9NKiD67qA/TwBXmzKdd_I/AAAAAAAAA2Y/fl5DPqHc6WY/s400/SdrNav20.JPG&quot; width=&quot;400&quot; /&gt;&lt;span id=&quot;goog_730506042&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_730506043&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.onetalent-gnss.com/ideas/software-defined-radio/sdrnav20&quot; target=&quot;_blank&quot;&gt;Figure 1: First SdrNav20 assembled prototype.&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Using a &lt;a href=&quot;http://www.sparkfun.com/products/464&quot; target=&quot;_blank&quot;&gt;simple patch antenna&lt;/a&gt;, the first acquisition done using a 8MHz bandwidth reports the expected spectrum purity and signal properties.&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-l_uPO6bLACg/TwBYwbPdx4I/AAAAAAAAA2s/0eeVdXymnCI/s1600/spec.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-l_uPO6bLACg/TwBYwbPdx4I/AAAAAAAAA2s/0eeVdXymnCI/s320/spec.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 2: Power spectrum of signal acquired on SdrNav20 channel 1. A bandwidth of 8MHz is wide enough for BOC(1,1), but not CBOC(6,1,1/11). A bandwidth limitation is anyway introduced by the antenna SAW filter as well.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-31oiO1ROWyc/TwBYvIWJ5KI/AAAAAAAAA2k/eE560a9tsFE/s1600/hist.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-31oiO1ROWyc/TwBYvIWJ5KI/AAAAAAAAA2k/eE560a9tsFE/s320/hist.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 3: Time series and histogram of the acquired signal. The gain of the satellite tuner was set to 60dB (RF) and 8dB (IF), which could not excite the second MSB of the MAX19505 ADC.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-l_uPO6bLACg/TwBYwbPdx4I/AAAAAAAAA2s/0eeVdXymnCI/s1600/spec.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The acquisition of Galileo PFM shows the typical BOC(1,1) correlation shape.:&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/--s7vaMFwkc8/TwBcT2kVX_I/AAAAAAAAA3E/U2SW3azjNVk/s1600/boc_734870.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://1.bp.blogspot.com/--s7vaMFwkc8/TwBcT2kVX_I/AAAAAAAAA3E/U2SW3azjNVk/s320/boc_734870.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 4: BOC(1,1) correlation shape, averaged on 100 codes (400ms).&lt;/b&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;A short file (for anybody to try his/her own acquisition) can be found &lt;a href=&quot;https://rapidshare.com/files/2007425720/lb1-fs26e6_fif56e3_bw85e5_interleavediq_pfm.7z&quot; target=&quot;_blank&quot;&gt;here.&lt;/a&gt; &lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;EDIT 27/12/2012: Acquiring with SdrNav20 Galileo-FM2 (Galileo-PFM seemed momentarily disabled)&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-IaLz5b9F834/TyW9USloxHI/AAAAAAAAA3Q/A4f7hlg0O0E/s1600/boc_734898.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-IaLz5b9F834/TyW9USloxHI/AAAAAAAAA3Q/A4f7hlg0O0E/s320/boc_734898.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 5: Galileo-FM2&lt;/b&gt;&lt;b&gt; E1 correlation shape, averaged on 100 codes (400ms).&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;The messages on E1B looked good, but still dummy:&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;a98e40000000002aaaaa4f4f2ffb8000&lt;br /&gt;00955555555555555555555544790000&lt;br /&gt;a98ec0000000002aaaaa5063173b8000&lt;br /&gt;3f4a63d11ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f83b4db6d54000&lt;br /&gt;3f4a63f11ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f803cb10954000&lt;br /&gt;3f4a64111ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f8225d9ad54000&lt;br /&gt;00955555555555555555555544790000&lt;br /&gt;a990c0000000002aaaaa4823ab3b8000&lt;br /&gt;00955555555555555555555544790000&lt;br /&gt;a99140000000002aaaaa6957e27b8000&lt;br /&gt;3f4a64711ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f80a454ed54000&lt;br /&gt;3f4a64911ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f803617e554000&lt;br /&gt;3f4a64b11ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f83be7d8154000&lt;br /&gt;3f4a64d11ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f813ff0c154000&lt;br /&gt;3f4a64f11ea372ec4d3b4f84dcbb0000&lt;br /&gt;934ed3e1372ec4d3b4f82b79aa554000&lt;br /&gt;00955555555555555555555544790000&lt;br /&gt;a99440000000002aaaaa6d48287b8000&lt;br /&gt;00955555555555555555555544790000&lt;br /&gt;a994c0000000002aaaaa726410bb8000&lt;br /&gt;00955555555555555555555544790000&lt;br /&gt;a99540000000002aaaaa531059fb8000&lt;br /&gt;d3978d7c6c2e85281e379780ce9f8000&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;A sample file is &lt;a href=&quot;https://rapidshare.com/files/973835265/lb1-fs26e6_fif56e3_bw85e5_interleavediq_fm2.7z&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;Adding to the above, SdrNav20 demonstrates acquisition of L2C and L5 (or Galileo E5a):&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-swTv_adeHv8/T0FoO0P508I/AAAAAAAAA3Y/zS_onnGV_5U/s1600/gps_spec_iq.l2c.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://1.bp.blogspot.com/-swTv_adeHv8/T0FoO0P508I/AAAAAAAAA3Y/zS_onnGV_5U/s320/gps_spec_iq.l2c.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 6: Power spectrum of L2C signal captured with SdrNav20&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-gv484AU8P38/T0FovgnM7OI/AAAAAAAAA3g/TqIX919knPM/s1600/gps_allchan_iq.l2c.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://4.bp.blogspot.com/-gv484AU8P38/T0FovgnM7OI/AAAAAAAAA3g/TqIX919knPM/s320/gps_allchan_iq.l2c.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 7: Signal acquisition of GPS L2C signal (&lt;a href=&quot;http://facility.unavco.org/general-info/gnss-modernization/gnss-modernization.html&quot; target=&quot;_blank&quot;&gt;only of enabled PRNs&lt;/a&gt;)&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-7OevjAT4-Wo/T0FpIDeu-WI/AAAAAAAAA3o/Ah9PIFMATD8/s1600/gps_spec_iq.l5.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-7OevjAT4-Wo/T0FpIDeu-WI/AAAAAAAAA3o/Ah9PIFMATD8/s320/gps_spec_iq.l5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 8: &lt;/b&gt;&lt;b&gt;Power spectrum of L5 signal captured with SdrNav20&lt;/b&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-XEgUSjKRbXE/T0FpYvMcLNI/AAAAAAAAA3w/Fj0Vk_ZAM6Q/s1600/gps_allchan_iq.l5.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://2.bp.blogspot.com/-XEgUSjKRbXE/T0FpYvMcLNI/AAAAAAAAA3w/Fj0Vk_ZAM6Q/s320/gps_allchan_iq.l5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt; Figure 9: Signal acquisition of GPS L5 signal (&lt;a href=&quot;http://facility.unavco.org/general-info/gnss-modernization/gnss-modernization.html&quot; target=&quot;_blank&quot;&gt;only of enabled PRNs&lt;/a&gt;)&amp;nbsp; &lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-djqkMLFs-Pg/T0FwkxFU6nI/AAAAAAAAA34/CqjptU9YUpU/s1600/gal_e5a.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;239&quot; src=&quot;http://2.bp.blogspot.com/-djqkMLFs-Pg/T0FwkxFU6nI/AAAAAAAAA34/CqjptU9YUpU/s320/gal_e5a.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;b&gt;Figure 10: Signal acquisition of Galileo-PFM on E5a&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;A couple of files for L2C and L5 are stored respectively &lt;a href=&quot;https://rapidshare.com/files/281144026/l2_fs26e6_fif28571_bw8e6_interleavediq_pfm.7z&quot; target=&quot;_blank&quot;&gt;here &lt;/a&gt;and &lt;a href=&quot;https://rapidshare.com/files/1142402182/l5_fs26e6_fif-50e3_bw2e7_interleavediq_pfm.7z&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Please mind that L2C acquisition (without assistance) can be a long process given the length of the codes :)&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;Cheers!&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;Michele&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;P.S.: The file name is self-explicative: &lt;b&gt;fs &lt;/b&gt;is sampling frequency, &lt;b&gt;fif &lt;/b&gt;is intermediate frequency, &lt;b&gt;bw &lt;/b&gt;is bandwidth, &lt;b&gt;interleaved I&amp;amp;Q &lt;/b&gt;has 'int8_t' type samples (pretty much as the GN3Sv2 used to output).&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5679825113811261335-6538831515575884474?l=michelebavaro.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 01 Jan 2012 13:25:00 +0000</pubDate>
	<author>noreply@blogger.com (Michele Bavaro)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: SITREP - December 2011</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-6715650583434422044</guid>
	<link>http://siliconexposed.blogspot.com/2011/12/sitrep-december-2011.html</link>
	<description>Figured it's about time I posted an update since I haven't had time to write for a while, I just started the PhD program and my work has been keeping me busy.&lt;br /&gt;&lt;br /&gt;I'm going to be broadening the focus of this blog a bit to cover topics besides reverse engineering: general electronics, FPGA design, semiconductor fabrication, infosec, and various other related stuff.&lt;br /&gt;&lt;br /&gt;My focus will be on things generally considered too difficult for hobbyists, like BGA soldering and MEMS/CMOS fabrication.&lt;br /&gt;&lt;br /&gt;Expect a series of posts over the next few days on my newly upgraded lab!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-6715650583434422044?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 31 Dec 2011 23:10:33 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: Multiple Lithography in Homemade PCBs</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-5508044618486056858</guid>
	<link>http://siliconexposed.blogspot.com/2011/12/multiple-lithography-in-homemade-pcbs.html</link>
	<description>Earlier this week I decided it was about time to try making a board for some of the 24AA16 EEPROMs I had sampled from Microchip a year ago. It's a 16kbit I2C EEPROM with five pins: power, ground, I2C data and clock, and write protect.&lt;br /&gt;&lt;br /&gt;Five pin package - piece of cake, right? But, just to add to the fun, the package I picked was CSBGA with balls about 250μm apart!&lt;br /&gt;&lt;br /&gt;From the packaging specification, it can be seen that the balls are 150 μm diameter and spaced in a 2x2 grid 570μm x 520μm with one more in the center. This is a little smaller than my laser-printer contact lithography process can comfortably resolve. What to do?&lt;br /&gt;&lt;br /&gt;Conveniently I have a metallurgical microscope that I've managed to coax into service as a projection lithography system. The field of view is, however, far too small to do an entire PCB.&lt;br /&gt;&lt;br /&gt;After a little thinking I decided to try a multiple-exposure technique. The first step was to design a board layout in ExpressPCB (my preferred CAD tool is kicad but Express is a little easier for super simple layouts) with a 4-pin SIL header going to a rectangle of copper a little bigger than the CSP footprint. I also made a second mask containing the BGA  footprint and tracks going out to four large pads, and printed it at 4x  actual size. The center ball is WP# so I tied it to Vdd rather than breaking out to a separate pin.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-uvq42iGhLAw/Tv_VBNt4OSI/AAAAAAAAADw/rDSGUR1rKUI/s1600/Screenshot-138.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;310&quot; src=&quot;http://2.bp.blogspot.com/-uvq42iGhLAw/Tv_VBNt4OSI/AAAAAAAAADw/rDSGUR1rKUI/s400/Screenshot-138.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Mask design&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I then printed a mask on my printer, exposed onto precoated PCB, developed (1% w/v NaOH in distilled water), and etched (6 parts 3% H2O2 : 1 part 32% HCl at low heat) as with my standard PCB process.&lt;br /&gt;&lt;br /&gt;The next step was to strip the existing photoresist since it had been exposed to light during the etch process. A few drops of acetone did the trick nicely.&lt;br /&gt;&lt;br /&gt;I then spin-coated the board with fresh photoresist, using my standard mixture (Shipley SP24 photoresist diluted 50% v/v with acetone for a thinner layer), soft baked on a hot plate, and exposed the BGA mask onto the copper rectangle. After developing, this was the result:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-nqeXUrmJAAw/Tv_UANmNrdI/AAAAAAAAADY/-rvUNUVhN5Y/s1600/S7302314_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/-nqeXUrmJAAw/Tv_UANmNrdI/AAAAAAAAADY/-rvUNUVhN5Y/s400/S7302314_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Second photomask on top of etched metal1&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-ikZ4q5LzZ9M/Tv_Ub8kPPbI/AAAAAAAAADk/7jmgyHNI400/s1600/S7302315_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/-ikZ4q5LzZ9M/Tv_Ub8kPPbI/AAAAAAAAADk/7jmgyHNI400/s400/S7302315_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Closer view showing edge quality&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Not surprisingly, the resolution and edge roughness were vastly better than the contact lithography process. (I've scaled the same technique to 20 μm half-pitch on silicon and there's room to go a lot further.) In retrospect the traces were a little too small considering that the copper layer they're sitting on is 35 μm thick, but this was a mask design error and not a process issue.&lt;br /&gt;&lt;br /&gt;Since the thin photoresist I use is harder to see on copper than the thick stuff the board came coated with, I tossed it in the etchant for a couple of seconds to make it more obvious what was being masked.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-nRjrbqNs7XM/Tv_WTA3JbmI/AAAAAAAAAD8/PzRILuPg-Io/s1600/S7302317_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://3.bp.blogspot.com/-nRjrbqNs7XM/Tv_WTA3JbmI/AAAAAAAAAD8/PzRILuPg-Io/s400/S7302317_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;After a couple seconds in the etch bath&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The copper pad was also a bit larger than it needed to be and exceeded the FOV of the lithography system (note the unwanted photoresist shorting the pads together). I gently scraped this away with a #11 scalpel blade under 30x magnification and briefly etched to confirm good separation.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-KoVclO2IK8Q/Tv_XG_5pjgI/AAAAAAAAAEI/p9e3S8BA3gQ/s1600/S7302318_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/-KoVclO2IK8Q/Tv_XG_5pjgI/AAAAAAAAAEI/p9e3S8BA3gQ/s400/S7302318_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Surgery time!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-BPX8K0unD44/Tv_XL7K-iAI/AAAAAAAAAEU/BejcsLrYhZs/s1600/S7302320_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://3.bp.blogspot.com/-BPX8K0unD44/Tv_XL7K-iAI/AAAAAAAAAEU/BejcsLrYhZs/s400/S7302320_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;After etching, no shorts&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I then etched for a couple of minutes and removed the board to see how it was doing.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-lin-5WeR534/Tv_X8aMWnYI/AAAAAAAAAEg/58FdJ5PcLTY/s1600/S7302329_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://1.bp.blogspot.com/-lin-5WeR534/Tv_X8aMWnYI/AAAAAAAAAEg/58FdJ5PcLTY/s400/S7302329_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Almost done etching&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Things still looked very good, all traces were intact. For traces with such a high aspect ratio (about 40 μm wide in 35 μm thick copper) things looked surprisingly good, but it needed a little more time.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-PVBZLUHPmy0/Tv_YK6YkdJI/AAAAAAAAAE4/0xb-AcqCo9w/s1600/S7302330_sm.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;361&quot; src=&quot;http://4.bp.blogspot.com/-PVBZLUHPmy0/Tv_YK6YkdJI/AAAAAAAAAE4/0xb-AcqCo9w/s400/S7302330_sm.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Overetched. (photoresist stripped before taking this pic)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Unfortunately I overetched, one of the traces was gone entirely and another was seriously damaged. Some residue was still in place between two of the pads. Perhaps better agitation would help?&lt;br /&gt;&lt;br /&gt;In either case, had the traces been a little larger (perhaps 75 μm) or the copper a little thinner it would have worked beautifully. The lithography itself was flawless and even though the board was not usable it appears the technique is feasible. Given a mask respin this same board could be fabricated with little difficulty.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-5508044618486056858?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 31 Dec 2011 23:09:27 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>OsmoSDR: OsmoSDR hardware verification at 28C3</title>
	<guid permalink="False">http://sdr.osmocom.org/trac/blog/28c3-hardware</guid>
	<link>http://sdr.osmocom.org/trac/blog/28c3-hardware</link>
	<description>&lt;p&gt;
At &lt;a class=&quot;ext-link&quot; href=&quot;http://events.ccc.de/congress/2011&quot;&gt;&lt;span class=&quot;icon&quot;&gt; &lt;/span&gt;28c3&lt;/a&gt;, the OsmoSDR team was busy verifying the hardware design on the first prototypes.
&lt;/p&gt;
&lt;p&gt;
The result can be summarized as:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;SAM3U is working, enumerates on USB and can be programmed via SAM-BA
&lt;/li&gt;&lt;li&gt;E4K tuner driver is working
&lt;/li&gt;&lt;li&gt;Si570 driver is working
&lt;/li&gt;&lt;li&gt;FPGA can be flashed via JTAG bit-banging from SAM3U
&lt;/li&gt;&lt;li&gt;FPGA and SAM3U can speak via SPI
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
However, there are at least two bugs:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;USB socket footprint pin-out was mirrored
&lt;/li&gt;&lt;li&gt;clock output level of Si570 doesn't match FPGA clock input specs (amplitude too low)
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The issues have been worked around, and firmware + FPGA development has made progress.
&lt;/p&gt;</description>
	<pubDate>Sat, 31 Dec 2011 14:51:55 +0000</pubDate>
</item>
<item>
	<title>OsmoSDR: About OsmocomSDR</title>
	<guid permalink="False">http://sdr.osmocom.org/trac/blog/about</guid>
	<link>http://sdr.osmocom.org/trac/blog/about</link>
	<description>&lt;p&gt;
This is the blog of the &lt;a href=&quot;http://sdr.osmocom.org/&quot;&gt;OsmoSDR&lt;/a&gt; project, a small-size, low-cost Software Defined Radio hardware/firmware project.
&lt;/p&gt;</description>
	<pubDate>Sat, 31 Dec 2011 14:44:42 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Peter Donebauer &quot;Entering&quot; (1974)</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-543584820208942000</guid>
	<link>http://videocircuits.blogspot.com/2011/12/peter-donebauer-entering-1974.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&quot;The imagery and sound in Entering were performed 'live' by &lt;a href=&quot;http://www.donebauer.net/&quot;&gt;Donebauer&lt;/a&gt; and composer Simon Desorgher, and recorded in real time, using a colour TV studio at the Royal College of Art. Later Donebauer and Richard Monkhouse developed the Videokalos synthesiser, as an image-sound performance instrument. Entering was transmitted by the BBC in 1974.&quot;&lt;br /&gt;&lt;br /&gt;Uploaded by &lt;a href=&quot;http://vimeo.com/user6311830&quot;&gt;Visual Remix Workshop&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://rmx-visual.tumblr.com/&quot;&gt;rmx-visual.tumblr.com/&lt;/a&gt; &quot;Visual remix&quot; is a project consisting of workshop series aiming to explore ideas of remix in visual arts and design. It invites students to re-interpret or hybridize classic design/art piece and produce unique result independent of the intentions and vision of the original designer/artist.&lt;br /&gt;Project by Rafaela Drazic (&lt;a href=&quot;http://rafaeladrazic.net/&quot;&gt;rafaeladrazic.net&lt;/a&gt;)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-543584820208942000?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 31 Dec 2011 04:26:37 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Sabrina Ratté at Bubble Byte</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-749999376492531552</guid>
	<link>http://videocircuits.blogspot.com/2011/12/sabrina-ratte-at-bubble-byte.html</link>
	<description>&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-X606dbEYcZY/Tv4aDWKU1gI/AAAAAAAAAWs/sjT2b-sRGwI/s1600/Picture+3.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;http://4.bp.blogspot.com/-X606dbEYcZY/Tv4aDWKU1gI/AAAAAAAAAWs/sjT2b-sRGwI/s400/Picture+3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://cinepoeme.blogspot.com/&quot;&gt;Sabrina Ratté&lt;/a&gt;&lt;br /&gt;Activated Memory&lt;br /&gt;31/12/11 - 29/01/12&lt;br /&gt;30/12/2011 (7-11pm GMT)&lt;br /&gt;&lt;br /&gt;&quot;&lt;a href=&quot;http://bubblebyte.org/&quot;&gt;bubblebyte.org&lt;/a&gt; is pleased to present Activated Memory, a solo exhibition by Canadian artist Sabrina Ratté.&lt;br /&gt;&lt;br /&gt;Activated Memory is a two video project based on animated photographs of different parks and buildings of Montreal. Through the use of video feedback, 3D animation and color manipulations, the pictures render a new kind of space, a virtual world where only fragments of &quot;reality&quot; subsist. The music accompaniment is composed by Roger Tellier-Craig.&lt;br /&gt;&lt;br /&gt;In Activated Memory I, a video created for The Download section of rhizome.org, parks appear through a very minimalist form composed by trees and grass. It is a journey through the parks disposal and their interaction with light, almost creating a surreal experience while studying symmetric relationships between various elements like dunes, bridges, lost routes and nature. The park and its imaginary recall childhood visits and the way of looking at things, almost like a hologram of an idealised memory.&lt;br /&gt;&lt;br /&gt;Activated Memory II, created exclusively for bubblebyte.org, uses buildings as the main subject of observation. As a counterpoint to parks, buildings are characterised by angular forms and opaque surfaces. Architecture is used as a point of departure to create instability. Buildings discompose their limits into the frame while the geometric original shapes and dimensions of the image loose control to create an entrance to a chaotic space where forms become liquid.&quot;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-749999376492531552?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 30 Dec 2011 12:13:48 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Fabricatorz: Open Hardware Manufacturing (from China)</title>
	<guid>http://fabricatorz.com/2011/12/open-hardware-manufacturing-from-china</guid>
	<link>http://fabricatorz.com/2011/12/open-hardware-manufacturing-from-china</link>
	<description>I recently spoke at &lt;a href=&quot;http://www.ttivanguard.com/conference/2011/nextgens11.html&quot;&gt;TTI Vanguard's NEXTGEN conference&lt;/a&gt; in Miami. Totally great experience to talk to some very high level folks about the work we are doing as &lt;a href=&quot;http://fabricatorz.com/&quot;&gt;Fabricatorz&lt;/a&gt; on the &lt;a href=&quot;http://qi-hardware.com/&quot;&gt;Qi Hardware&lt;/a&gt; and &lt;a href=&quot;http://sharism.cc/milkymist&quot;&gt;Milkymist Video Synthesizer&lt;/a&gt; project. Here are my slides. The first set I did on my laptop, and the second set I *performed* using the Milkymist! In 2012, I will try to use the Milkymist for any performances (no more presentations!).&lt;br /&gt;
&lt;br /&gt;
I should note that the presentation title reflects popular interest in some of my topics, and not the specific words I would choose to represent what we are working on. In particular, we are staying away from using the words FREE, OPEN, COPYLEFT now in favor of Sharing, hence &lt;a href=&quot;http://sharism.org/&quot;&gt;Sharism&lt;/a&gt;. Also, the word Hardware is a bit problematic because of what it conjures up for computer nerds as this an already manufactured piece of hardware, like the 400K iphones foxconn is churning out a day. We take it to mean more like the glass or metal that is part of a final product. To consider the Milkymist or our projects FROM CHINA is not completely accurate. While I spend a lot of time in China, the Milkymist in particular is manufactured mostly in Taiwan.&lt;br /&gt;
&lt;br /&gt;
Oh well, words are words are words! Check out the slides below and please share. They are &lt;a href=&quot;http://sharism.org/agreement&quot;&gt;✳&lt;/a&gt; (shared by) me, aka: &lt;a href=&quot;http://sharism.org/agreement&quot;&gt;✳&lt;/a&gt; Fabricatorz.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/slide-01.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-2959&quot; title=&quot;slide-01&quot; src=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/slide-01-500x375.png&quot; alt=&quot;Open Hardware Manufacturing (from China)&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Click here for the &lt;a href=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/open-hardware-manufacturing-from-china-tti-vanguard.svg&quot;&gt;SVG presentation&lt;/a&gt; or the &lt;a href=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/open-hardware-manufacturing-from-china-tti-vanguard-outlines.svg&quot;&gt;SVG with outlines&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/slide-07.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-2960&quot; title=&quot;slide-07&quot; src=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/slide-07-500x375.png&quot; alt=&quot;Milkymist One Video Synthesizer&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Click here for the &lt;a href=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/qi-hardware-milkymist-for-the-mist.svg&quot;&gt;SVG presentation&lt;/a&gt; or the &lt;a href=&quot;http://fabricatorz.com/wp-content/uploads/2011/12/qi-hardware-milkymist-for-the-mist-outlines.svg&quot;&gt;SVG with outlines&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Ask me about the event the next time you see me; I have some great stories to tell since this event was supposed to be mostly private during the conference.&lt;br /&gt;
&lt;br /&gt;
In a more public showing, Yi from Qi Hardware is &lt;a href=&quot;http://xinchejian.com/2011/12/28/milkymist-one-video-synthesizer/&quot;&gt;presenting about the Milkymist tonite&lt;/a&gt; (&lt;a href=&quot;http://xinchejian.com/2011/12/28/milkymist-one-video-synthesizer/?lang=zh&quot;&gt;中文&lt;/a&gt; at Xinchejian, the Shanghai-based hackerspace we held the first &lt;a href=&quot;http://sharism.org/presents/shanghai&quot;&gt;Sharism Presents Shanghai&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Don't forget to &lt;a href=&quot;http://sharism.cc/milkymist&quot;&gt;Buy a Milkymist One for yourself or your friendz&lt;/a&gt; :)&lt;/strong&gt;</description>
	<pubDate>Wed, 28 Dec 2011 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Russ Cogdell Apeirogon</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7198122643555146547</guid>
	<link>http://videocircuits.blogspot.com/2011/12/russ-cogdell-apeirogon.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/russcogdell&quot;&gt;russcogdell&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7198122643555146547?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 26 Dec 2011 02:43:01 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Linux version usbboot for Ingenic xburst 4770</title>
	<guid>http://www.openmobilefree.net/?p=1226</guid>
	<link>http://www.openmobilefree.net/?p=1226</link>
	<description>&lt;p&gt;&amp;#8216;Yuenshu Fong&amp;#8217; create a Linux version usbboot for xburst 4770 cpu. you can find the source tar ball &lt;a href=&quot;http://downloads.openmobilefree.net/Ingneic/xburst-tools-linux/ingenic_boot_v1.1.tar.bz2&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 24 Dec 2011 08:23:48 +0000</pubDate>
</item>
<item>
	<title>Uwe Hermann: HOWTO: Using OpenVPN on Debian GNU/Linux</title>
	<guid permalink="False">http://www.hermann-uwe.de/1590 at http://www.hermann-uwe.de</guid>
	<link>http://www.hermann-uwe.de/blog/howto-using-openvpn-on-debian-gnu-linux</link>
	<description>&lt;p&gt;Here's a quick HOWTO for setting up an &lt;a href=&quot;http://www.openvpn.net&quot;&gt;OpenVPN&lt;/a&gt; server and client on any (Debian, in this case) Linux machine of your choice. I'm running an OpenVPN server on a box at home, and a client on my laptop, so I can securely route all my laptop traffic through my OpenVPN server, no matter where I am.&lt;/p&gt;
&lt;p&gt;I highly recommend reading the official &lt;a href=&quot;http://www.openvpn.net/index.php/open-source/documentation/howto.html&quot;&gt;OpenVPN HOWTO&lt;/a&gt; from top to bottom, at least once. But here's a short, condensed HOWTO (specifically geared towards my needs, yours might be different):&lt;/p&gt;
&lt;h2&gt;On the server:&lt;/h2&gt;
&lt;p&gt;Install OpenVPN (&lt;strong&gt;apt-get install openvpn&lt;/strong&gt;), then copy the &quot;easy-rsa&quot; files to &lt;strong&gt;/etc/openvpn/easy-rsa&lt;/strong&gt; from where we'll use them to create our keys and certificates:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa&lt;/strong&gt;
  $ &lt;strong&gt;cd /etc/openvpn/easy-rsa&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
In the &lt;strong&gt;vars&lt;/strong&gt; file change the &lt;strong&gt;KEY_SIZE&lt;/strong&gt; variable from 1024 to 4096 for good measure:&lt;/p&gt;
&lt;pre&gt;
  export KEY_SIZE=4096
&lt;/pre&gt;&lt;p&gt;
Then, read in the vars file, clean old keys and certificates (if any) and create new ones:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;. ./vars&lt;/strong&gt;
  $ &lt;strong&gt;./clean-all&lt;/strong&gt;
  $ &lt;strong&gt;./build-ca&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
You'll now have the chance to enter some data such as country code (e.g. &quot;DE&quot;), state/province, locality, organization name, organizational unit name, common name, name, and email address. The values you choose don't really matter much (except for commonName, maybe, which could be your hostname or domain or such). Finally, the &lt;strong&gt;ca.key&lt;/strong&gt; (root CA key) and &lt;strong&gt;ca.crt&lt;/strong&gt; (root CA certificate) files will be created.&lt;/p&gt;
&lt;p&gt;Next, we'll create the server key:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;./build-key-server server&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
You'll have to enter lots of info again (see above), commonName could be &quot;server&quot; or such this time. Upon &quot;Sign the certificate? [y/n]&quot; say &lt;strong&gt;y&lt;/strong&gt;, as well as upon &quot;1 out of 1 certificate requests certified, commit? [y/n]&quot;. Finally, the &lt;strong&gt;server.key&lt;/strong&gt; and &lt;strong&gt;server.crt&lt;/strong&gt; files will be created.&lt;/p&gt;
&lt;p&gt;Same procedure for creating a client key (I used &quot;client1&quot; as filename and commonName here):&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;./build-key client1&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Next up we'll generate Diffie Hellman parameters (this will take a shitload of time due to keysize=4096, go drink some coffee):&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;./build-dh&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
When this step is done, you'll have a &lt;strong&gt;dh4096.pem&lt;/strong&gt; file.&lt;/p&gt;
&lt;p&gt;As we want to use OpenVPN's &quot;tls-auth&quot; feature for perfect forward secrecy (it &quot;adds an additional HMAC signature to all SSL/TLS handshake packets for integrity verification&quot;), we'll have to generate a shared secret:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;openvpn --genkey --secret ta.key&lt;/strong&gt;
  $ &lt;strong&gt;mv ta.key keys&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
So much for creating keys. Now, we'll have to configure OpenVPN. Copy the default server config file and edit it:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cd /etc/openvpn&lt;/strong&gt;
  $ &lt;strong&gt;cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .&lt;/strong&gt;
  $ &lt;strong&gt;gunzip server.conf.gz&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
The most important change in my setup is that I use port 443/TCP instead of the usual OpenVPN default of 1194/UDP. This increases the chances that you'll be able to use OpenVPN in almost all places, even in environments which firewall/block lots of stuff. Port 443/TCP (for https) will almost always be usable. I also uncommented the following line, which tells the client to use the VPN interface (usually tun0) per default, so that all the client's traffic (web browsing, DNS, and so on) goes over the VPN:&lt;/p&gt;
&lt;pre&gt;
  push &quot;redirect-gateway def1 bypass-dhcp&quot;
&lt;/pre&gt;&lt;p&gt;
Here's my server config file (comments and commented out lines stripped):&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/small&gt;&lt;/p&gt;
&lt;pre&gt;
  port 443
  proto tcp
  dev tun
  ca /etc/openvpn/easy-rsa/keys/ca.crt
  cert /etc/openvpn/easy-rsa/keys/server.crt
  key /etc/openvpn/easy-rsa/keys/server.key  # This file should be kept secret
  dh /etc/openvpn/easy-rsa/keys/dh4096.pem
  server 10.8.0.0 255.255.255.0
  ifconfig-pool-persist ipp.txt
  push &quot;redirect-gateway def1 bypass-dhcp&quot;
  keepalive 10 120
  tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret
  comp-lzo
  user nobody
  group nogroup
  persist-key
  persist-tun
  status openvpn-status.log
  log-append openvpn.log
  verb 3
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can now start the OpenVPN server, e.g. via&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;/etc/init.d/openvpn restart&lt;/strong&gt;
&lt;/pre&gt;&lt;h2&gt;Server firewall setup/changes:&lt;/h2&gt;
&lt;p&gt;I'm running a &lt;a href=&quot;http://hermann-uwe.de/security/my-firewall-iptables-scripts&quot;&gt;custom iptables script&lt;/a&gt; on pretty much all of my boxes. Here's the relevant changes needed to allow the OpenVPN server to work properly. Basically, you need to enable IP forwarding, accept/forward tun0 traffic and setup masquerading (change &quot;eth0&quot; below, if needed):&lt;/p&gt;
&lt;pre&gt;
  echo 1 &gt; /proc/sys/net/ipv4/ip_forward
  iptables -A INPUT -i tun+ -j ACCEPT
  iptables -A FORWARD -i tun+ -j ACCEPT
  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  iptables -t nat -F POSTROUTING
  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
&lt;/pre&gt;&lt;p&gt;
My firewall script gets run upon every reboot. If you don't use such a script, you could add the above stuff to your &lt;strong&gt;/etc/rc.local&lt;/strong&gt; file.&lt;/p&gt;
&lt;h2&gt;On the client:&lt;/h2&gt;
&lt;p&gt;Install OpenVPN (&lt;strong&gt;apt-get install openvpn&lt;/strong&gt;), then copy the default client config file and edit it:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;cd /etc/openvpn&lt;/strong&gt;
  $ &lt;strong&gt;cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
Change the parameters to match the server config (port 443/TCP, and so on) and use &quot;tls-auth /etc/openvpn/ta.key 1&quot; (note the &quot;1&quot; on the client, and the &quot;0&quot; on the server!). Replace xxx.xxx.xxx.xxx with the public IP address of your OpenVPN server. If it doesn't have a public, static IP address already, you can use services such as DynDNS, or (my preferred method), my &lt;a href=&quot;http://hermann-uwe.de/blog/diy-secure-pseudo-ddns-setup-using-ssh&quot;&gt;ssh-based DIY poor man's dynamic DNS setup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's my full client config:&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;/small&gt;&lt;/p&gt;
&lt;pre&gt;
  client
  dev tun
  proto tcp
  remote xxx.xxx.xxx.xxx 443
  resolv-retry infinite
  nobind
  user nobody
  group nogroup
  persist-key
  ca /etc/openvpn/ca.crt
  cert /etc/openvpn/client1.crt
  key /etc/openvpn/client1.key
  ns-cert-type server
  tls-auth /etc/openvpn/ta.key 1
  comp-lzo
  verb 3
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now you only need to copy the required certificates and keys to the client (into &lt;strong&gt;/etc/openvpn&lt;/strong&gt;): &lt;strong&gt;client1.crt&lt;/strong&gt;, &lt;strong&gt;client1.key&lt;/strong&gt;, &lt;strong&gt;ca.crt&lt;/strong&gt;, and &lt;strong&gt;ta.key&lt;/strong&gt;. Do &lt;strong&gt;not&lt;/strong&gt; copy the other, server-specific private keys and such to the client(s)! Also, the root CA key (&lt;strong&gt;ca.key&lt;/strong&gt;) should not even be left on the server, but rather moved to some offline storage/box, so that it cannot fall into the wrong hands, e.g. in the case of a server compromise.&lt;/p&gt;
&lt;p&gt;I prefer to manually start the client on my laptop when needed, so I use &lt;strong&gt;AUTOSTART=&quot;none&quot;&lt;/strong&gt; in &lt;strong&gt;/etc/default/openvpn&lt;/strong&gt; and then start the client via:&lt;/p&gt;
&lt;pre&gt;
  $ &lt;strong&gt;openvpn /etc/openvpn/client.conf&lt;/strong&gt;
&lt;/pre&gt;&lt;p&gt;
That's it. Comments and suggestions for improving the setup and/or the security aspects of it are highly welcome!&lt;/p&gt;</description>
	<pubDate>Sat, 24 Dec 2011 00:02:25 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Neil Gravander</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-7279072563925786292</guid>
	<link>http://videocircuits.blogspot.com/2011/12/neil-gravander.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/user6751255&quot;&gt;Neil Gravander&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.myspace.com/luckyb0ne&quot;&gt;http://www.myspace.com/luckyb0ne&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://lyndensculpturegarden.org/press/nohl-2010-eighth-annual-nohl-fellowship-exhibition-opens-inova-september-30&quot;&gt;scroll down for article&amp;nbsp;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-7279072563925786292?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 23 Dec 2011 09:40:14 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Valmet Children Glitch Workshop</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-2095013955607910836</guid>
	<link>http://videocircuits.blogspot.com/2011/12/valmet-children-glitch-workshop.html</link>
	<description>&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://matiaswilkman.blogspot.com/&quot;&gt;http://matiaswilkman.blogspot.com/&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-2095013955607910836?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 21 Dec 2011 10:07:42 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Peter Zotov, whitequark: Statically compiled Ruby</title>
	<guid>http://whitequark.org/blog/2011/12/21/statically-compiled-ruby</guid>
	<link>http://whitequark.org/blog/2011/12/21/statically-compiled-ruby/</link>
	<description>&lt;p&gt;Ruby is a very dynamic language by its nature, and it has quite a generalized interface. Everything is an object,
objects communicate only by sending messages to each other, variables are untyped and everything can be modified at
runtime, even (almost) any of the builtins.&lt;/p&gt;

&lt;p&gt;This has a serious drawback, through: evaluating Ruby code is a slow process. Even when you have an expression like &lt;code&gt;5 +
2&lt;/code&gt; (which is syntactic sugar for &lt;code&gt;5.+(2)&lt;/code&gt;), one cannot safely assume that &lt;code&gt;+&lt;/code&gt; method has not been redefined as something
completely different. Thus, one is required to follow the generic method lookup procedure, which
&lt;a href=&quot;http://mccraigmccraig.files.wordpress.com/2008/10/ruby-eigenclass.png&quot;&gt;isn&amp;#8217;t trivial at all&lt;/a&gt; and therefore isn&amp;#8217;t fast either.&lt;/p&gt;

&lt;p&gt;I have found a way, through, to significantly improve Ruby code performance by restricting just a few of its
metaprogramming capabilities.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;&lt;span class=&quot;pullquote-right&quot;&gt;
Strictly speaking, I am placing just a single restriction: no method evaluation at runtime. This implies inability
to call &lt;code&gt;load&lt;/code&gt; or &lt;code&gt;require&lt;/code&gt; after the initial loading process, using &lt;code&gt;Class.new&lt;/code&gt; or &lt;code&gt;define_method&lt;/code&gt;, absence of &lt;code&gt;eval&lt;/code&gt;
family functions, certain operations with singleton classes, nested method definitions (&lt;code&gt;def a; def b; end; end&lt;/code&gt;)
and maybe a few other, even lesser used features.
&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;While all of the above may seem like a severe restriction, actually none of those features are commonly used &lt;em&gt;at
runtime&lt;/em&gt;, and, in fact, if they are actually used, that&amp;#8217;s a sign of bad code. Even on commonly used interpreters this
will lead to a huge performance drops because of VM cache invalidation.&lt;/p&gt;

&lt;p&gt;Due to the fact that all Ruby definitions are just Ruby code, any compiler is thus required to include a fully capable
interpreter. It can be observed that in any typical setting the Ruby application is executed in two stages: at the first
one it just loads all the required libraries and defines classes and methods, and at the second stage it simply executes
the code while abstaining from defining any methods. The first stage is more complex, as it is a superset of the second.&lt;/p&gt;

&lt;p&gt;I propose to execute the definition stage on a full-fledged Ruby interpreter like &lt;a href=&quot;http://rubini.us/&quot;&gt;Rubinius&lt;/a&gt;, and to generate
efficient machine code with &lt;a href=&quot;http://llvm.org/&quot;&gt;LLVM&lt;/a&gt; after it is completed. As the method definition (and redefinition) is forbidden
now, it is possbile to perform a lot of optimizations, including constant propagation, type inference and method
inlining, and compile a fully statical executable. Unfortunately this approach does not allow for Ruby MRI C extension
usage, but &lt;a href=&quot;http://en.wikipedia.org/wiki/Foreign_function_interface&quot;&gt;FFI&lt;/a&gt; can compensate for that.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s dig deeper into the compilation process.&lt;/p&gt;

&lt;h2&gt;Compilation process&lt;/h2&gt;

&lt;p&gt;First of all, to be able to operate on the AST of entire application we will need a Ruby runtime library which is
written only in Ruby (obviously using &lt;a href=&quot;http://en.wikipedia.org/wiki/Language_primitive&quot;&gt;primitives&lt;/a&gt; for basic operations). Currently, there is only one such
implementation&amp;#8211;Rubinius&amp;#8211;so it is natural to implement the compiler on top of it.&lt;/p&gt;

&lt;p&gt;Rubinius provides a lot of methods to inspect its internal state, which will prove to be useful for our purpose.
Particularly, it allows one to retrieve bytecode for any executable object.&lt;/p&gt;

&lt;p&gt;I should make a small digression here. While I have mentioned operations on AST, in fact these have a little to do with
an actual abstract syntactic tree of a Ruby source file. The syntax of Ruby is notoriously complex&amp;#8211;it&amp;#8217;s enough to say
that none of alternative implementations have their own parser&amp;#8211;and the AST, while being a bit simpler, is still too
complex to allow for convenient transformations. On the other hand, while bytecode only consists of unique opcodes, it
is an internal interface prone to unexpected changes, and in case of Rubinius&amp;#8217; bytecode, it is a bytecode for stack VM,
which isn&amp;#8217;t easily transformed either. The latter can be trivially solved.&lt;/p&gt;

&lt;h3&gt;AST transformations&lt;/h3&gt;


&lt;p&gt;The bytecode for stack-based VM is isomorphic to a bytecode for a register-based VM, and the most useful form of latter
is a SSA, or &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_Single_Assignment&quot;&gt;Static Single Assignment&lt;/a&gt; form. A transformation from stack-based form to SSA is a linear process
which practically consists of assigning a new name for each stack cell when something is pushed into it and using that
name later when the value is popped and used.&lt;/p&gt;

&lt;p&gt;It can be seen that the SSA form is isomorphic to the AST, too, and can be easily folded back to it if necessary. In
fact, this will be implicitly done in the process described later.&lt;/p&gt;

&lt;p&gt;At this point, a value for each of the arguments of a particular function call is either a literal, a result of a prior
function call or application of a primitive. Being constant, literals and results of invocation of
&lt;a href=&quot;http://en.wikipedia.org/wiki/Pure_function&quot;&gt;pure functions&lt;/a&gt; can be propagated through the AST. A lot of literals also behave like a pure function in some or
all cases.&lt;/p&gt;

&lt;p&gt;Consider this snippet of code:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;sym&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:test&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;the symbol is &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sym&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;It may be expanded into the following pseudobytecode:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;pushsymbol&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:test&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;setlocal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;                  &lt;span class=&quot;c1&quot;&gt;# pop a value and save it as local variable 0&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;pushstring&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;the symbol is &amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;getlocal&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;                  &lt;span class=&quot;c1&quot;&gt;# push a value of local variable 0&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;tostring&lt;/span&gt;                    &lt;span class=&quot;c1&quot;&gt;# convert the uppermost value to string&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;stringconcat&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;              &lt;span class=&quot;c1&quot;&gt;# concatenate two uppermost values on the stack&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;getspecial&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;             &lt;span class=&quot;c1&quot;&gt;# push the value of self on the stack&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb&quot;&gt;send&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:puts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;               &lt;span class=&quot;c1&quot;&gt;# send a message :puts to the uppermost value&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                            &lt;span class=&quot;c1&quot;&gt;# with 1 next uppermost stack value as an argument&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;leave&lt;/span&gt;                       &lt;span class=&quot;c1&quot;&gt;# return the uppermost value as expression result&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;The directly transformed SSA representation is as follows:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:test&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;setlocal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;the symbol is &amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getlocal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;d&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;e&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;stringconcat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;g&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:puts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;leave&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;After folding all local variable accesses and propagating constants, it looks like this:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;leave&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;nb&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:puts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;stringconcat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      &lt;span class=&quot;s2&quot;&gt;&amp;quot;the symbol is &amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      &lt;span class=&quot;n&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Note the resemblance of resulting structure to an AST.&lt;/p&gt;

&lt;p&gt;At this point one can notice that &lt;code&gt;tostring&lt;/code&gt; and &lt;code&gt;stringconcat&lt;/code&gt;, apart from being primitives, are pure functions and
their arguments are constant, too. So, we can expand them at compile time.&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;leave&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;nb&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:puts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&amp;quot;the symbol is test&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;The transformation is finished.&lt;/p&gt;

&lt;p&gt;In this short example, only one function call (&lt;code&gt;puts&lt;/code&gt;) is present. Ruby, where everything is an object, has a lot of
examples where simple operations (like adding integers) are actually implemented through function calls with all the
associated complexity. In this stage, if we see that a function only consists of a single primitive (like &lt;code&gt;Fixnum#+&lt;/code&gt;),
we can just replace it with that primitive, which may very well translate to a single machine instruction or even be
expanded at compile time. A common Ruby interpreter cannot do that so easily becasue even &lt;code&gt;Fixnum#+&lt;/code&gt; may be redefined at
any point at the runtime.&lt;/p&gt;

&lt;h3&gt;Type inference&lt;/h3&gt;


&lt;p&gt;If one could infer method return types from their arguments, then in a lot of cases method lookup can be performed at
compile-time, which not only avoids running the slowest part at runtime, but also allows to inline methods.&lt;/p&gt;

&lt;p&gt;To prepare for this step, we need to compute a call graph&amp;#8211;a directed and possibly cycled graph with methods as
vertexes and method calls as edges. This graph will be later used to propagate the computed type information from
primitive methods to complex ones. Let&amp;#8217;s look into this process.&lt;/p&gt;

&lt;p&gt;Suppose we have this block of code:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;addi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;n&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;world&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;adds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;whimper&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;n&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;bang! &amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;whimper&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_s&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Without taking any of the cross-references into account, not a lot of information could be confidently inferred from the
code. Let&amp;#8217;s draw a graph for those few bits which could.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;http://whitequark.org/images/static-ruby/no-xref.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The variables in square brackets represent type specialization for the functions&amp;#8211;think of C++ templates&amp;#8211;and literals
are marked with blue background. Note that while, by a common convention, methods named &lt;code&gt;to_s&lt;/code&gt; return &lt;code&gt;String&lt;/code&gt;, this
convention is not enforced, and hence the compiler cannot rely on it. A value &lt;code&gt;*&lt;/code&gt;, when used as a type, means that
there is not enough information to do any conclusions on the type of the operand.&lt;/p&gt;

&lt;p&gt;A directly derived callgraph for the code above is quite simple:&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;http://whitequark.org/images/static-ruby/callgraph.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Green arrows in the leftwards direction represent function return value types.&lt;/p&gt;

&lt;p&gt;One can note that function &lt;code&gt;addi&lt;/code&gt; always calls &lt;code&gt;add&lt;/code&gt; with an &lt;code&gt;Integer&lt;/code&gt; as a first argument, and &lt;code&gt;adds&lt;/code&gt; similarly
always passes &lt;code&gt;String&lt;/code&gt;. Looking even further, it becomes clear that for both of the argument types the &lt;code&gt;+&lt;/code&gt; operation is
a primitive which always returns the same type. So, in our particular case the &lt;code&gt;add&lt;/code&gt; function has its return type always
the same as that of its first argument. Similarly, the &lt;code&gt;addi&lt;/code&gt; and &lt;code&gt;adds&lt;/code&gt; functions just return whatever &lt;code&gt;add&lt;/code&gt; has
returned.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;http://whitequark.org/images/static-ruby/callgraph2.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Up to this point, the algorithm was actually implementation- and language-independent. (It is actually a greatly
simplified description of &lt;a href=&quot;http://en.wikipedia.org/wiki/Hindley-Milner&quot;&gt;Damas-Hindley-Milner&lt;/a&gt; type inference on untyped lambda calculus.) Now, with this
additional knowledge, one can map the now-typed methods to an optimized implementation. In this case, we will get the
biggest benefit from specializing the &lt;code&gt;add&lt;/code&gt; method and thus avoiding the &lt;code&gt;+&lt;/code&gt; method lookup on each invocation.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;http://whitequark.org/images/static-ruby/callgraph-opt.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, both of these specializations can actually be inlined to avoid method call overhead. As each of them is only
called from one location, this is safe, straightforward and will actually reduce code size.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;http://whitequark.org/images/static-ruby/callgraph-opt2.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also, this process will optimize out most, if not all of argument verification code&amp;#8211;bound checking (if a constant is
passed), &lt;code&gt;respond_to?&lt;/code&gt; and similar operations.&lt;/p&gt;

&lt;h3&gt;Advanced type inference&lt;/h3&gt;


&lt;p&gt;Hindley-Milner type inference only operates on functions, and thus it does not cover some of the problems arising from
the use of objects. For example, an array, being strictly heterogenous, is a &amp;#8220;typing black hole&amp;#8221;: it can accept objects
of any type, and it always emits unqualified objects.&lt;/p&gt;

&lt;p&gt;A solution to this problem will be presented in a future article.&lt;/p&gt;

&lt;h3&gt;Space optimizations&lt;/h3&gt;


&lt;p&gt;As it has been mentioned already, Ruby has a lot of metaprogramming methods, most of which, especially the
introspecting ones, require to keep a lot of data at runtime and sometimes have an impact of performance.&lt;/p&gt;

&lt;p&gt;For example, if something is calling &lt;code&gt;methods&lt;/code&gt; method of an instance of Float, the compiler is required to include
method lists for the entire ancestor chain for Float, which isn&amp;#8217;t very large, as symbols are used, and to add all of the
method names to the symbol table. The latter would consume 905 bytes (as of MRI 1.9.3), which isn&amp;#8217;t a big amount for a
desktop system with gigabytes of RAM, but may eat up a significant part of ROM of a microcontroller.&lt;/p&gt;

&lt;p&gt;All of the instance variable accesses (including those through &lt;code&gt;attr&lt;/code&gt; function family) can be compiled to fast indexed
access&amp;#8211;that is, unless there is a &lt;code&gt;instance_variable_set&lt;/code&gt; call somewhere. If there is, a compiler is required to
include a hashtable for looking up instance variables by name, and use a less efficient structure for storage to allow
expanding the table at runtime.&lt;/p&gt;

&lt;p&gt;By correctly inferring the possible types for metaprogramming method applications, the compiler can significantly
reduce the space requirements for compiled code. On the other hand, if such a method is applied to unqualified type
(represented by &lt;code&gt;*&lt;/code&gt; in the graphs), the compiler will then be forced to include metadata for each and every type used.&lt;/p&gt;

&lt;p&gt;A way to identify the location of such deoptimizing statements will be provided in the form of detailed optimization
log.&lt;/p&gt;

&lt;h3&gt;Code generation&lt;/h3&gt;


&lt;p&gt;At last, the machine code is generated. This topic will also be discussed in following articles.&lt;/p&gt;</description>
	<pubDate>Wed, 21 Dec 2011 05:48:00 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: gplcver crash fix and openocd update</title>
	<guid>http://chitlesh.wordpress.com/?p=1224</guid>
	<link>http://chitlesh.wordpress.com/2011/12/19/fel-gplcver-crash-fix-and-openocd-update/</link>
	<description>&lt;p&gt;Shakthi updated gplcver to fix a crash upon launch.&lt;/p&gt;
&lt;p&gt;Dean Glazeski updated openocd to &lt;a href=&quot;http://openocd.git.sourceforge.net/git/gitweb.cgi?p=openocd/openocd;a=blob_plain;f=NEWS-0.5.0;hb=HEAD&quot;&gt;0.5.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1224/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1224/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1224&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 19 Dec 2011 21:31:58 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: Some minor updates</title>
	<guid>http://chitlesh.wordpress.com/?p=1218</guid>
	<link>http://chitlesh.wordpress.com/2011/12/18/fel-some-minor-updates/</link>
	<description>&lt;p&gt;Here are some minor updates on the FEL:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dinotrace &amp;#8211; new update was pushed on testing repositories&lt;/li&gt;
&lt;li&gt;fped &amp;#8211; new update was pushed to stable repositories&lt;/li&gt;
&lt;li&gt;geda-gaf  (Fixes broken dependency libgmp.so.3 on rawhide and FTBFS with glib headers, Fixes RHBZ#604288, RHBZ#710281, L#704829 &amp;#8211; Refresh on in-use tab causes crashes)&lt;/li&gt;
&lt;li&gt;vhd2vl 2.4 &amp;#8211; new update was pushed on testing repositories&lt;/li&gt;
&lt;li&gt;Fritzing will soon be part of Fedora repositories&lt;/li&gt;
&lt;li&gt;Toped will have a technology editor which will reduce days of porting foundry&amp;#8217;s tech files.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1218/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1218/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1218&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 18 Dec 2011 15:04:56 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Wide field 4D optical flow odometry using Arduino and Stonyman image sensor</title>
	<guid>tag:diydrones.com,2011-12-16:705844:BlogPost:738182</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:738182</link>
	<description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I've been working on a new version of our ArduEye using one of our &quot;Stonyman&quot; image sensor chips and decided to see if I can grab four dimensions of optical flow (X shift, Y shift, curl, and divergence) from a wide field of view. I wirebonded a Stonyman chip to a 1&quot; square breakout board, and attached it to an Arduino Mega256 using a simple connecting shield board. I then glued a &lt;a href=&quot;http://embeddedeye.com/profiles/blogs/printed-optics-light-cheap-and&quot; target=&quot;_self&quot;&gt;simple flat printed pinhole&lt;/a&gt; onto the chip using (yay!) 5-minute model airplane epoxy. With a little black paint around the edges, the result is a simple low resolution very wide field of view camera that can operated using the Arduino.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/KTps-ypV0pncx6RHQUsZ-m1Jz*D7uqvXmA-LVltcSHbvkV53MNe1eIe15Akyiv6ka2Ypj8xauuUTRfFHoKw3lZ7AprHNw3Ji/ArduEyeWFI_side_annotated.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/KTps-ypV0pncx6RHQUsZ-m1Jz*D7uqvXmA-LVltcSHbvkV53MNe1eIe15Akyiv6ka2Ypj8xauuUTRfFHoKw3lZ7AprHNw3Ji/ArduEyeWFI_side_annotated.jpg?width=500&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/pdNlG3cyALuxz36VYHarp0Q1ARXL5iFAA4Rr4mITHa7lQ*R9uAqmkEQZjuiZ*VkuT563DNwYEu2XXzn-IM-EYf8eAS4K1wDx/ArduEyeWFI_side_fields.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/pdNlG3cyALuxz36VYHarp0Q1ARXL5iFAA4Rr4mITHa7lQ*R9uAqmkEQZjuiZ*VkuT563DNwYEu2XXzn-IM-EYf8eAS4K1wDx/ArduEyeWFI_side_fields.jpg?width=500&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/1zzTck6t1XH7pHnuLYslkkp4VzDv5uQ0qWtZgYMkKuMD9Tsi8TVDUorFgwdMyuiyqnlKoDeILrx9BsBgn2s2irLJG9TLQKLG/ArduEyeWFI_fields.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/1zzTck6t1XH7pHnuLYslkkp4VzDv5uQ0qWtZgYMkKuMD9Tsi8TVDUorFgwdMyuiyqnlKoDeILrx9BsBgn2s2irLJG9TLQKLG/ArduEyeWFI_fields.jpg?width=500&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I programmed the Arduino to grab five 8x8 pixel regions- region 0 is forward while the other four regions are about 50 degrees diagonally off forward as shown. In each region the Arduino computed X and Y optical flow and odometry (essentially an accumulation of optical flow over time).&lt;/p&gt;
&lt;p&gt;To compute X and Y shift, the algorithm summed respectively the X and Y odometry measurements from the five pixel regions. These are the first two dimensions of optical flow that most people are familiar with. To compute curl and divergence, the algorithm added the appropriate X or Y odometries from the corresponding pixel regions. For curl this results in a measurement of how the sensor rotates around it's forward axis. For divergence this results in a measurement of motion parallel to the forward axis.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/LMYboIetYHCy9fUJnfDUymBARl2Fvpvu1GdYOiERAGb8PZHME1A*i8n3Ph2TCwbgpYl8p2WKbN-7HhINcgxCU6fR*25fZuBg/ArduEye_WFI_components.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/LMYboIetYHCy9fUJnfDUymBARl2Fvpvu1GdYOiERAGb8PZHME1A*i8n3Ph2TCwbgpYl8p2WKbN-7HhINcgxCU6fR*25fZuBg/ArduEye_WFI_components.jpg?width=500&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the current configuration the system operates at about 5 to 6 Hz, though when the serial dump is on that slows to about 2 Hz. Most of the delay is in the acquisition and involves wasteful array lookups to select which pixels to read out. Using an external ADC (which the middle board supports) and better code there is room for probably an order of magnitude speed increase.&lt;/p&gt;
&lt;p&gt;The video shows a few test runs where I exposed the sensor to three of the four fundamental motions. Y shift was implemented using an air track (like some of you used in physics class). Curl motion was implemented with the aid of a well-loved turntable. Divergence was implemented by hand by moving the sensor to and from clutter. The corresponding plots show the response of all four motions, with the &quot;correct&quot; one emphasized.&lt;/p&gt;
&lt;p&gt;You can see that the four components are largely independent. There is some crosstalk- curl and divergence tend to be the biggest recipients of crosstalk since they are effectively a difference between signals (and getting an accurate number by subtracting two noisy numbers is not easy). Factors such as varying distances around the camera can cause uneven stimulation of the different pixel fields, resulting in phantom curl and div. There is also a little bit of drift. There is a lot of room for optimizing the system for sure.&lt;/p&gt;
&lt;p&gt;One immediate improvement would be to use two of these Stonyman cameras back-to-back so that near omnidirectional sensing could be performed. This would give us more information to separate the different components (X,Y,curl,div) as well as allow us to separate out the other two axes of rotation from X and Y.&lt;/p&gt;
&lt;p&gt;A setup similar to this formed the basis for our recent single sensor &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/rc-micro-helicopter-hover-yaw-and-height-using-millimeter-thick&quot; target=&quot;_self&quot;&gt;yaw and heave (height) stability sensor&lt;/a&gt; demonstration.&lt;/p&gt;
&lt;p&gt;What could something like this be used for? You could put it on a ground vehicle and do some odometry with it, either looking down or even looking up, though for looking up the odometry measurements would depend on distance to other objects in the environment. You could also mount this on a quad looking down- X and Y would give your basic optical flow for sideways drift regulation. Curl give you yaw rotation (though you already have that with a gyro). Divergence is most interesting- it would tell you about change in height.&lt;/p&gt;
&lt;p&gt;You could also implement something similar with five of &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/adns3080-optical-flow-sensor-now-available-in-the-diydrones-store&quot; target=&quot;_blank&quot;&gt;Randy's optical flow sensors&lt;/a&gt; aimed to look in the same five directions. (You could probably dispense with sensor 0 to save weight/cost in this case.)&lt;/p&gt;</description>
	<pubDate>Fri, 16 Dec 2011 16:39:09 +0000</pubDate>
</item>
<item>
	<title>Sebastien Bourdeauducq, lekernel.net: TDC core test results</title>
	<guid permalink="False">http://lekernel.net/blog/?p=1622</guid>
	<link>http://lekernel.net/blog/2011/12/tdc-core-test-results/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://lekernel.net/blog/wp-content/uploads/2011/12/mhist.png&quot;&gt;&lt;img src=&quot;http://lekernel.net/blog/wp-content/uploads/2011/12/mhist-300x237.png&quot; alt=&quot;&quot; title=&quot;mhist&quot; width=&quot;300&quot; height=&quot;237&quot; class=&quot;aligncenter size-medium wp-image-1623&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The test results for the &lt;a href=&quot;http://lekernel.net/blog/2011/09/open-source-tdc-core-for-fpgas/&quot;&gt;FPGA time to digital converter (TDC)&lt;/a&gt; core are available from &lt;a href=&quot;http://www.ohwr.org/documents/127&quot;&gt;OHWR&lt;/a&gt;. Except from one problem which I believe is due to external signal integrity problems, the core worked well on the SPEC. From these tests, the 2-sigma precision is +/- 52 ps.&lt;/p&gt;</description>
	<pubDate>Fri, 16 Dec 2011 13:03:44 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Copyleft FPGA board: Icarus</title>
	<guid>http://www.openmobilefree.net/?p=1215</guid>
	<link>http://www.openmobilefree.net/?p=1215</link>
	<description>&lt;p&gt;We bought a copyleft FPGA Develop/&lt;a href=&quot;http://bitcoin.org/&quot;&gt;Bitcoin Mining&lt;/a&gt; board: &lt;strong&gt;Icarus&lt;/strong&gt; made by Ngzhang, the PCB, FPGA code, Mining software is all  &lt;a href=&quot;https://github.com/ngzhang/Icarus&quot;&gt;open&lt;/a&gt;.  for more information please check &lt;a href=&quot;https://bitcointalk.org/index.php?topic=51371.0;all&quot;&gt;bitcointalk.org&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;I setup the Icarus with my server.&lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/miner_software/minner.sh&quot;&gt;here&lt;/a&gt; is the script file to keep it minng all the time. you can find more logs  &lt;a href=&quot;http://downloads.openmobilefree.net/Icarus/miner_software/log/&quot;&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1217&quot; title=&quot;IMG_1219_Icarus_case&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_12191-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1219_Icarus_case&quot; title=&quot;IMG_1219_Icarus_case&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1218&quot; title=&quot;IMG_1221_Icarus&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1221-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1221_Icarus&quot; title=&quot;IMG_1221_Icarus&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1223&quot; title=&quot;Icars&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/Icars-150x150.png&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;Icars&quot; title=&quot;Icars&quot; /&gt;&lt;/a&gt;</description>
	<pubDate>Thu, 08 Dec 2011 19:44:46 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Hall Effect and Proximity Sensor Module</title>
	<guid>http://www.freetronics.com/blogs/news/4829642-new-device-hall-effect-and-proximity-sensor-module</guid>
	<link>http://www.freetronics.com/blogs/news/4829642-new-device-hall-effect-and-proximity-sensor-module</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.freetronics.com/products/hall-effect-magnetic-and-proximity-sensor-module&quot;&gt;Hall Effect and Proximity Sensor Module&lt;/a&gt; is a versatile and tiny device, great for sensing magnets or other physical objects nearby:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/products/HALL-angle_large.png?100709&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Applications include detecting shaft rotation: put a magnet on a rotating shaft and then use the Hall Effect Sensor to count / measure the frequency of rotation, giving you RPM. The module also includes a very handy &quot;triggered&quot; LED, so all you need to do to test it is apply power and watch the LED! Great for debugging your project while getting it sorted.&lt;/p&gt;
&lt;p&gt;There's example code and a wiring diagram on the&amp;nbsp;&lt;a href=&quot;http://www.freetronics.com/pages/hall-effect-magnetic-and-proximity-sensor-module-quickstart-guide&quot;&gt;Hall Effect Magnetic and Proximity Sensor Module Quickstart Guide&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 08 Dec 2011 07:01:33 +0000</pubDate>
</item>
<item>
	<title>Freetronics: TronixStuff review of our modules</title>
	<guid>http://www.freetronics.com/blogs/news/4829272-tronixstuff-review-of-our-modules</guid>
	<link>http://www.freetronics.com/blogs/news/4829272-tronixstuff-review-of-our-modules</link>
	<description>&lt;p&gt;John Boxall of &lt;a href=&quot;http://tronixstuff.wordpress.com/&quot;&gt;TronixStuff&lt;/a&gt; fame (one of the best sources of Arduino tutorials anywhere!) has just posted a quick review of a whole bunch of our new modules. Included in the review are even a couple of videos, including this one showing our &lt;a href=&quot;http://www.freetronics.com/rgb&quot;&gt;RGB LED Module&lt;/a&gt; displaying different colours:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;He also combined a couple of modules, like in this video where he used the &lt;a href=&quot;http://www.freetronics.com/light&quot;&gt;Light Sensor Module&lt;/a&gt; to control the frequency of a tone being driven to the &lt;a href=&quot;http://www.freetronics.com/sound&quot;&gt;Sound &amp;amp; Buzzer Module&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Check out John's review here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tronixstuff.wordpress.com/2011/12/06/review-freetronics-module-family/&quot;&gt;http://tronixstuff.wordpress.com/2011/12/06/review-freetronics-module-family/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Thu, 08 Dec 2011 05:37:14 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Warner Jepson</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-5135470289406843879</guid>
	<link>http://videocircuits.blogspot.com/2011/12/warner-jepson.html</link>
	<description>Not sure how much Jepson was involved with the video or if he always had collaborators, never the less some beautiful images and sounds.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&quot;Orange Wind&quot; via &lt;a href=&quot;http://www.youtube.com/user/shinkoyo&quot;&gt;shinkoyo&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;Ice Box Nice Box via &lt;a href=&quot;http://www.youtube.com/user/gryflett&quot;&gt;gryflett&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Music Jepson&amp;nbsp;with Video from &lt;a href=&quot;http://www.stevebeck.tv/&quot;&gt;Stephen Beck&lt;/a&gt; via &lt;a href=&quot;http://www.youtube.com/user/zackdagoba&quot;&gt;zackdagoba&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;With Bob Pacelli on video&amp;nbsp;via &lt;a href=&quot;http://www.youtube.com/user/clemgal007&quot;&gt;clemgal007&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-5135470289406843879?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 06 Dec 2011 17:19:05 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Mirko Vogt, nanl.de: SwitchSmart!</title>
	<guid permalink="False">http://nanl.de/blog/?p=640</guid>
	<link>http://nanl.de/blog/2011/12/switchsmart/</link>
	<description>&lt;p&gt;The &amp;#8220;radio controlled power sockets&amp;#8221;-project finally got its very own name and project site:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title=&quot;SwitchSmart!&quot; href=&quot;http://www.switchsmart.org&quot; target=&quot;_blank&quot;&gt;SwitchSmart!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Several improvements happened since my last post about this project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;there&amp;#8217;s finally an Android app now!&lt;br /&gt;
&lt;img class=&quot;alignnone&quot; title=&quot;SwitchSmart Android UI&quot; src=&quot;http://switchsmart.org/wiki/images/a/a9/Switchsmart_android.png&quot; alt=&quot;&quot; width=&quot;294&quot; height=&quot;486&quot; /&gt;&lt;/li&gt;
&lt;li&gt;shared-memory is now used for sharing the states of devices between several instances&lt;/li&gt;
&lt;li&gt;there&amp;#8217;s now one more tested and working platform: the &lt;a href=&quot;http://wiki.fon.com/wiki/La_Fonera&quot;&gt;La Fonera&lt;/a&gt; router by Fon&lt;br /&gt;
&lt;img class=&quot;alignnone&quot; title=&quot;rfm12 fonera&quot; src=&quot;http://switchsmart.org/wiki/images/1/12/Fonera_rfm12.jpg&quot; alt=&quot;&quot; width=&quot;354&quot; height=&quot;370&quot; /&gt;&lt;/li&gt;
&lt;li&gt;and &amp;#8211; as usual at the end of changelogs: several bugs and timing issues got fixed &lt;img src=&quot;http://nanl.de/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Tue, 06 Dec 2011 09:55:08 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Naihanlis crates and milkymist one</title>
	<guid>http://www.openmobilefree.net/?p=1159</guid>
	<link>http://www.openmobilefree.net/?p=1159</link>
	<description>&lt;p&gt;4PM DEC 2 2011. Upon invitation from &lt;a href=&quot;http://www.amdgdesign.org&quot;&gt;&lt;strong&gt;Terrence Curry&lt;/strong&gt;&lt;/a&gt;, Associate Professor at Tsinghua University&amp;#8217;s School of Architecture, &lt;a href=&quot;http://naihanli.com&quot;&gt;&lt;strong&gt;Naihan Li&lt;/strong&gt;&lt;/a&gt; gave a talk about her crates in front of about 50 students. this event is about the story of her and her mobile furniture crates. you can find more info about her work at google &lt;img src=&quot;http://www.openmobilefree.net/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; . but here is a small picture can give you a brief idea.&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1128_Intro.jpg&quot;&gt;&lt;img src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1128_Intro-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1128_Intro&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1188&quot; /&gt;&lt;/a&gt; she will using her Media Wall while the speech. this Meida Wall is most interesting things for us. since it have DMX-Light, DMX-Laser, Speakers, Big Screen, Projector.&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1188_Media_wall.jpg&quot;&gt;&lt;img src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1188_Media_wall-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1188_Media_wall&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1189&quot; /&gt;&lt;/a&gt;  since I have no idea about architecture or design stuff, I will just put the entire event video record &lt;a href=&quot;http://www.youtube.com/watch?v=uCJ1S_i2WT0&amp;list=UUBHdqPfS7djNsDnlFFpR7rA&amp;feature=plcp&quot;&gt;somewhere&lt;/a&gt; later. then people who have interesting can download this video. there about ~50 students in this event, total time is ~1 hour, &lt;a href=&quot;http://www.milkymist.org/&quot;&gt;Milkymist One&lt;/a&gt; is keep rendering about ~20 minutes at the Answer Section, students like it since they think it part of the arcwork &lt;img src=&quot;http://www.openmobilefree.net/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  I will just put some pictures: &lt;/p&gt;

&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1188&quot; title=&quot;IMG_1128_Intro&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1128_Intro-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1128_Intro&quot; title=&quot;IMG_1128_Intro&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1189&quot; title=&quot;IMG_1188_Media_wall&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1188_Media_wall-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1188_Media_wall&quot; title=&quot;IMG_1188_Media_wall&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1193&quot; title=&quot;IMG_1126_Chairs&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1126_Chairs-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1126_Chairs&quot; title=&quot;IMG_1126_Chairs&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1194&quot; title=&quot;IMG_1141_technology_behind&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1141_technology_behind-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1141_technology_behind&quot; title=&quot;IMG_1141_technology_behind&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1195&quot; title=&quot;IMG_1176_Bar&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1176_Bar-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1176_Bar&quot; title=&quot;IMG_1176_Bar&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1196&quot; title=&quot;IMG_1177_Media_wall_2&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1177_Media_wall_2-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1177_Media_wall_2&quot; title=&quot;IMG_1177_Media_wall_2&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1197&quot; title=&quot;IMG_1180_More_stuff&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1180_More_stuff-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1180_More_stuff&quot; title=&quot;IMG_1180_More_stuff&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1198&quot; title=&quot;IMG_1181_Chairs&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1181_Chairs-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1181_Chairs&quot; title=&quot;IMG_1181_Chairs&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.openmobilefree.net/?attachment_id=1199&quot; title=&quot;IMG_1194_Small_bar&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1194_Small_bar-150x150.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;IMG_1194_Small_bar&quot; title=&quot;IMG_1194_Small_bar&quot; /&gt;&lt;/a&gt;

&lt;p&gt;&lt;strong&gt;Events Presentation&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Form_follows_function_or_does_it.pdf&quot;&gt;Professor_Curry_Form_follows_function_or_does_it.pdf&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Naihanli_Crates_%E8%AE%BE%E8%AE%A1%E7%9A%84%E6%95%85%E4%BA%8B.pdf&quot;&gt;Naihanli_Crates_设计的故事.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Events video&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=uCJ1S_i2WT0&quot;&gt;Naihanli_Tsinghua_Event_Crates_1&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=8w2_QN6ANT8&quot;&gt;Naihanli_Tsinghua_Event_Crates_2&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=3r8lLza0nx8&quot;&gt;Naihanli_Tsinghua_Event_Crates_3&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=SO6t0uvQQKg&quot;&gt;Naihanli_Tsinghua_Event_Crates_4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About Naihanli:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://naihanli.com/&quot;&gt;http://naihanli.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Naihan_Li&quot;&gt;http://en.wikipedia.org/wiki/Naihan_Li&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.core77.com/blog/design_festivals/beijing_design_week_2011_crates_by_naihan_li_20686.asp&quot;&gt;http://www.core77.com/blog/design_festivals/beijing_design_week_2011_crates_by_naihan_li_20686.asp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About Milkymist One:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://en.qi-hardware.com/wiki/Milkymist_One&quot;&gt;http://en.qi-hardware.com/wiki/Milkymist_One&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://sharism.cc/shop/product_info.php?products_id=13&quot;&gt;https://sharism.cc/shop/product_info.php?products_id=13&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 06 Dec 2011 04:21:31 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Make an optical flow sensor using an Arduino, CdS cells, and a shoebox!</title>
	<guid>tag:diydrones.com,2011-12-05:705844:BlogPost:728979</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:728979</link>
	<description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;This device is no match for an &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/adns3080-optical-flow-sensor-now-available-in-the-diydrones-store&quot; target=&quot;_blank&quot;&gt;Randy's sensor&lt;/a&gt;, but it does (minimally) work. Think of this little project as a fun hack more than anything else. But with some tweaking and size reduction someone could probably implement an occasionally working altitude hold sensor for a fixed-wing RC aircraft.&lt;/p&gt;
&lt;p&gt;This optical flow sensor uses CdS cells as light sensing elements. Recall that a CdS cell is basically a resistor whose value changes with illumination- more light results in less resistance. The fundamental sensing structure here is a pair of CdS cells connected in series to form a voltage divider. The middle node between the CdS cells forms the output. When both cells are equally illuminated, the output voltage is midway between Power and Ground (assuming the CdS cells are matched). If one cell is illuminated more than the other, the output voltage varies accordingly. An interesting quality of this CdS cell pair is that if you, say, double the amount of light striking both cells, the output changes very little.&lt;/p&gt;
&lt;p&gt;Nine of these CdS cell pairs are laid out in a row, as shown in the video. Pay attention to the photo below to see how the CdS cells are placed and how they overlap within the array. The nine resulting outputs go to ports A0 through A8 (analog inputs 0 through 8) of an Arduino Mega. This project required a 'Mega because of the number of analog input signals.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/xhIBZfu*6A9Nufb2u1XCVKcrSF0-5e9m7aaTdCK8JSoB-vJ3X9aynXJP-ufJHrcaLuDcUDQcxYpzcG-nd-QkLXCjTD86md7i/CdS_cell_array.JPG&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/xhIBZfu*6A9Nufb2u1XCVKcrSF0-5e9m7aaTdCK8JSoB-vJ3X9aynXJP-ufJHrcaLuDcUDQcxYpzcG-nd-QkLXCjTD86md7i/CdS_cell_array.JPG?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For those of you with an image processing background, you can say that a CdS cell pair forms a simple analog edge detector, and that adjacent edge detectors are 120 degrees out of phase.&lt;/p&gt;
&lt;p&gt;As light patterns travel across the CdS array, the nine analog signals will vary accordingly and can be interpreted by a basic one dimensional optical flow algorithm. For example, if a shadow moves left to right across the array, a pulse or step function will appear in sequence across ports A0 through A8 in sequence (or the other direction) which indicates visual motion.&lt;/p&gt;
&lt;p&gt;To obtain an image, I just used a slit opening, which is a variation of a pinhole camera. This slit opening was oriented perpendicular to the CdS array, which preserves visual information parallel to the CdS array and smooths out information perpendicular to it. This helps make the array more sensitive to 1D visual motion in the desired direction. (For a rough metaphor, think of a bar code.)&lt;/p&gt;
&lt;p&gt;I mounted all the electronics into a shoebox using masking tape. (For a more professional and durable version, use duct tape!) I also placed dark construction paper on the inside of the box to prevent light from bouncing around. I cut a slit opening in the box top as shown to be positioned over the CdS array.&lt;/p&gt;
&lt;p&gt;The output can be read in two ways- The Arduino port D3 generates a PWM signal that, when connected to the RC network shown, can generate an analog output representing the optical flow (5V = max positive, 0V = max negative, 2.5V = zero). Alternatively you can read it out using the Arduino environment's Serial display.&lt;/p&gt;
&lt;p&gt;The sensor is crude but does work. It needs a lot of light to function- it should work in a bright indoor environment but works better with natural outdoor lighting, say several hundred lux and up.&lt;/p&gt;
&lt;p&gt;The Arduino sketch is attached here: &lt;a href=&quot;http://api.ning.com:80/files/Lg8i9AAw*3QjsVAKSTNzWFqzmr8SVlbyBAL-JPHfenWqxZxokmWANvcL2PndatuBAstVNT9tAFZfgI3jbPcbvlsnxcMLCmmx/CdS_OF_Sensor_r1.pde&quot; target=&quot;_self&quot;&gt;CdS_OF_Sensor_r1.pde&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have fun!&lt;/p&gt;</description>
	<pubDate>Mon, 05 Dec 2011 23:25:12 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Microphone Sound Input Module</title>
	<guid>http://www.freetronics.com/blogs/news/4796252-new-device-microphone-sound-input-module</guid>
	<link>http://www.freetronics.com/blogs/news/4796252-new-device-microphone-sound-input-module</link>
	<description>&lt;p&gt;Detecting sound opens up a whole range of possibilities for your Arduino, so Marc designed our new &lt;a href=&quot;http://www.freetronics.com/mic&quot;&gt;Microphone Sound Input Module&lt;/a&gt; to provide two outputs: one providing the raw audio waveform, and one providing the sound pressure level (SPL).&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The two outputs provide independent access to either the raw signal waveform (the MIC output) or the sound pressure level (the SPL output) to provide maximum flexibility in your projects. If you want to process the audio waveform directly you can use the MIC output, or if you just want to detect sound level (for example, to detect noise above a certain&amp;nbsp;threshold) you can use the SPL output.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/products/module-MIC_large.jpg?100708&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You'll notice that near the top right corner is an LED labeled &quot;DETECT&quot;, which is linked to the SPL output and illuminates proportionally to detected sound pressure. Perfect for quick visual feedback that it's picking something up. To verify that the module is working you can just supply power and make a noise - you'll immediately see the response on the LED!&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;See how to hook it up in our &lt;a href=&quot;http://www.freetronics.com/pages/microphone-sound-input-module-quickstart-guide&quot;&gt;Microphone Sound Input Module Quickstart Guide&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 05 Dec 2011 03:08:52 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: archimedes 2.0.0 stable release</title>
	<guid>http://chitlesh.wordpress.com/?p=1210</guid>
	<link>http://chitlesh.wordpress.com/2011/12/04/fel-archimedes-2-0-0-stable-release/</link>
	<description>&lt;p&gt;Archimedes, the 2D Quantum Monte Carlo simulator for semiconductor devices, has been updated on both Fedora and EPEL testing repositories.&lt;/p&gt;
&lt;p&gt;Since last FEL release, archimedes entails the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The material parameters have been checked and modified&lt;/li&gt;
&lt;li&gt;Benchmark tests were carried out to check the validity of the framework&lt;/li&gt;
&lt;li&gt;Scattering phonons can be set to ON or OFF&lt;/li&gt;
&lt;li&gt;Support for Full band approach was implemented&lt;/li&gt;
&lt;li&gt;Parabolic, Kane and Full bank verified&lt;/li&gt;
&lt;li&gt;Full band parameters supports for all materials&lt;/li&gt;
&lt;li&gt;Initial implementation of FEM for Poisson&lt;/li&gt;
&lt;li&gt;Quantum Effective Potential modified&lt;/li&gt;
&lt;li&gt;Bohm Potential Model was implemented&lt;/li&gt;
&lt;li&gt;Calibrated Bohm Potential Model was implemented&lt;/li&gt;
&lt;li&gt;Density Gradient corrected and tested&lt;/li&gt;
&lt;li&gt;Full effective potential model was implemented&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1210/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1210&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 04 Dec 2011 13:31:58 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: Bug fix release pcb-0.20110918-3</title>
	<guid>https://chitlesh.wordpress.com/?p=1201</guid>
	<link>http://chitlesh.wordpress.com/2011/11/30/bug-fix-release-pcb-0-20110918-3/</link>
	<description>&lt;p&gt;A bugfix release of PCB layout tool editor has been pushed to Fedora testing repositories to resolve the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bug fix L#882712 Route styles are not properly loaded after nm conversion&lt;/li&gt;
&lt;li&gt;Bug fix L#699307 Panning problem when mouse button is released on scrollbar (sf-2923335)&lt;/li&gt;
&lt;li&gt;Bug fix L#891041 png export broken for tilted, square pads&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1201/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1201/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1201&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 03 Dec 2011 19:36:05 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: [FEL]: ngspice-23 stable release</title>
	<guid>http://chitlesh.wordpress.com/?p=1205</guid>
	<link>http://chitlesh.wordpress.com/2011/12/03/fel-ngspice-23-stable-release/</link>
	<description>&lt;p&gt;ngspice-23 was released into Fedora and EPEL testing repositories with the following enhancements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New devices: HiSIM2 and HiSIM_HV models from Hiroshima University have been added.&lt;/li&gt;
&lt;li&gt;New features: transient noise simulation, a random voltage generator option trrandom and random telegraph noise added to independent voltage and current sources; command wrs2p to write a s-parameter file using Touchstone vers. 1 format.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1205/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1205/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1205&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 03 Dec 2011 19:35:00 +0000</pubDate>
</item>
<item>
	<title>Liu Xiangfu, openmobilefree.net: Prepare Milkymist One for Nanhailis event</title>
	<guid>http://www.openmobilefree.net/?p=1164</guid>
	<link>http://www.openmobilefree.net/?p=1164</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://naihanli.com/&quot;&gt;Nanhanli&lt;/a&gt; a independent architect and designer for architectural and graphic design, she will give a speech at TQinghua university at DEC 2 2011, she will use her new Media Wall as the screen talk about her &lt;a href=&quot;http://www.dezeen.com/2011/10/12/the-crates-by-naihan-li/&quot;&gt;Crates&lt;/a&gt; story. there is a chance for Milkymist One that can connect to the artwork or part of artwork. since she bought a Milkymist One and we have a big &lt;a href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-November/002216.html&quot;&gt;update&lt;/a&gt; at NOV 30 2011, so we update her Milkymist One for her event.&lt;/p&gt;
&lt;p&gt;she is live at 红&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1063_RED.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1165 aligncenter&quot; title=&quot;IMG_1063_RED&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1063_RED-225x300.jpg&quot; alt=&quot;&quot; width=&quot;225&quot; height=&quot;300&quot; /&gt;&lt;/a&gt; a great place at Caochangdi Beijing. oh when I saw this building the first thing come from my mind is change them to HEX. &lt;img src=&quot;http://www.openmobilefree.net/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1065_binary.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1168 aligncenter&quot; title=&quot;IMG_1065_binary&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1065_binary-300x225.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;, will update Milkymist one is not hard, just boot it and click the &amp;#8216;Webupdate&amp;#8217;, on thing is the &amp;#8216;Webupdate&amp;#8217; will not update the standby.fpg, which will not give you the AUTO-ON feature. so I have to use &lt;a href=&quot;https://raw.github.com/milkymist/scripts/master/scripts/reflash_m1.sh&quot;&gt;reflash_m1.sh&lt;/a&gt; &amp;#8211;release for update the standby.fpg, after update just re-plug the power cable. the middle led will immediate on. no needs press middle button any more. here is a picture after new images boot. &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1086_dog_milkymist.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-1170 aligncenter&quot; title=&quot;IMG_1086_dog_milkymist&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1086_dog_milkymist-300x225.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;for prepare the event I created &lt;a href=&quot;http://downloads.openmobilefree.net/Milkymist/JJ_Crates_milkymist_event.tar.bz2&quot;&gt;7 patches&lt;/a&gt; for that. here is two screenthos:&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/Screenshot-03.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-1173&quot; title=&quot;Screenshot-03&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/Screenshot-03-300x225.png&quot; alt=&quot;Screenshot-03-JJ&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/Screenshot-04.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-1174&quot; title=&quot;Screenshot-04-JJ&quot; src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/Screenshot-04-300x225.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt; at the end of the day we project the milkymist one performance to the wall just for fun &lt;img src=&quot;http://www.openmobilefree.net/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1109_Naihanli_and_her_dog.jpg&quot;&gt;&lt;img src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1109_Naihanli_and_her_dog-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1109_Naihanli_and_her_dog&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1175&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1112_Nanhanli_Milkymist.jpg&quot;&gt;&lt;img src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1112_Nanhanli_Milkymist-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1112_Nanhanli_Milkymist&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1176&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1117_xiangfu_milkymist_on_the_wall.jpg&quot;&gt;&lt;img src=&quot;http://www.openmobilefree.net/wp-content/uploads/2011/12/IMG_1117_xiangfu_milkymist_on_the_wall-300x225.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1117_xiangfu_milkymist_on_the_wall&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1177&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 03 Dec 2011 11:09:01 +0000</pubDate>
</item>
<item>
	<title>Freetronics: EtherTen / Siri hack by Marcus Schappi featured in the Sydney Morning Herald</title>
	<guid>http://www.freetronics.com/blogs/news/4763572-etherten-siri-hack-by-marcus-schappi-featured-in-the-sydney-morning-herald</guid>
	<link>http://www.freetronics.com/blogs/news/4763572-etherten-siri-hack-by-marcus-schappi-featured-in-the-sydney-morning-herald</link>
	<description>&lt;p&gt;&lt;a href=&quot;https://twitter.com/#!/littlebirdceo&quot;&gt;Marcus Schappi&lt;/a&gt; (from Freetronics reseller &lt;a href=&quot;http://www.littlebirdelectronics.com/&quot;&gt;Little Bird Electronics&lt;/a&gt;) recently demonstrated a neat little hack where he intercepted DNS requests from an Apple iPhone 4S to send Siri queries to a proxy server, allowing it to hand off the event to a &lt;a href=&quot;http://www.freetronics.com/etherten&quot;&gt;Freetronics EtherTen&lt;/a&gt;&amp;nbsp;and control house lighting. This morning it was picked up by journalist &lt;a href=&quot;https://twitter.com/#!/bengrubb&quot;&gt;Ben Grubb&lt;/a&gt; and featured in the Sydney Morning Herald!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/art_siriAndArduino-420x0_large.jpg?100708&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Check out the story on the SMH site:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.smh.com.au/digital-life/mobiles/aussie-hacks-siri-to-automate-home-20111202-1o9zj.html&quot;&gt;Aussie hacks Siri to automate home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Great work Marcus!&lt;/p&gt;</description>
	<pubDate>Fri, 02 Dec 2011 02:25:18 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: RC micro helicopter hover (yaw and height) using millimeter thick vision camera</title>
	<guid>tag:diydrones.com,2011-12-02:705844:BlogPost:723512</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:723512</link>
	<description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;As part of Centeye's participation in the &lt;a href=&quot;http://robobees.seas.harvard.edu/&quot; target=&quot;_blank&quot;&gt;Harvard University Robobee&lt;/a&gt; project, we are trying to see just how small we can make a vision system that can control a small flying vehicle. For the Robobee project our weight budget will be on the order of 25 milligrams. The vision system for our &lt;a href=&quot;http://centeye.com/projects/vision-based-hover-in-place/&quot; target=&quot;_blank&quot;&gt;previous helicopter hovering system&lt;/a&gt; weighed about 3 to 5 grams (two orders of magnitude more!) so we have a ways to go!&lt;/p&gt;
&lt;p&gt;We recently showed that we can control the yaw and height (heave) of a helicopter using just a single sensor. This is an improvement over the eight-sensor version used previously. The above video gives an overview of the helicopter (a hacked eFlite Blade mCX2) and the vision system, along with two sample flights in my living room. Basically a human pilot (Travis Young in this video) is able to fly the helicopter around with standard control sticks (left stick = yaw and heave, right stick = swash plate servos) and, upon letting go of the sticks, the helicopter with the vision system holds yaw and heave. Note that there was no sensing in this helicopter other than vision- there was no IMU or gyro, and all sensing/image processing was performed on board the helicopter. (The laptop is for setup and diagnostics only.)&lt;/p&gt;
&lt;p&gt;The picture below shows the vision sensor itself- the image sensor and the optics weigh about 0.2g total. Image processing was performed on another board with an Atmel AVR32 processor- that was overkill and an 8-bit device could have been used.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/g27-xCR72GIimWAAAodt7XeOENAdVADpL7nJFEAMrPp66qsOhdl6rQRTogeN5SVWPCZiqz5ommSrGFkX*wfPEYgudbx9hviF/Centeye_Camera_Board.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/g27-xCR72GIimWAAAodt7XeOENAdVADpL7nJFEAMrPp66qsOhdl6rQRTogeN5SVWPCZiqz5ommSrGFkX*wfPEYgudbx9hviF/Centeye_Camera_Board.jpg&quot; width=&quot;169&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A bit more about optics: In 2009 we developed a technique for &quot;printing&quot; optics on a thin plastic sheet, using the same photoplot process used to make masks for, say, making printed circuit boards. We can print up thousands of optics on a standard letter size sheet of plastic for about $50. The simplest version is a simple pinhole, which can be cut out of the plastic and glued directly onto an image sensor chip- pretty much any clear adhesive should work.The picture below shows a close-up of a piece of printed optics next to an image sensor (the one below is a different sensor, the &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/125-milligram-optical-flow&quot; target=&quot;_self&quot;&gt;125 milligram TinyTam&lt;/a&gt; we demonstrated last year).&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/lhfCn1BA0HOlByrqqBDO*yRfwKT97ThdgFNtfnigBaYm3Z7KCoZ2SnUXphC6jdoM78cLVUGkVMBymW2hBRdHOfHpnXsWwTyc/Centeye_Printed_Optics.JPG&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/lhfCn1BA0HOlByrqqBDO*yRfwKT97ThdgFNtfnigBaYm3Z7KCoZ2SnUXphC6jdoM78cLVUGkVMBymW2hBRdHOfHpnXsWwTyc/Centeye_Printed_Optics.JPG?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;The principle of the optics is quite understandable- a cross section is below. The plastic sheet has a higher index of refraction than air, thus a near hemisphere field of view of light may be focused onto a confined region of the image sensor chip. You won't grab megapixel images in this manner, but it works well for the hundreds of pixels needed for hovering systems like this.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/0IXNeK1S5VAizOmITQpqrAFL-6rrHJnIrol5TIV2q46JBRS0bHQR6LcFVz61WLwBlriGzBpc-1vszMqhCoPRzhbZZFpaGTnc/Centeye_Printed_Optics_Cross_Section.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/0IXNeK1S5VAizOmITQpqrAFL-6rrHJnIrol5TIV2q46JBRS0bHQR6LcFVz61WLwBlriGzBpc-1vszMqhCoPRzhbZZFpaGTnc/Centeye_Printed_Optics_Cross_Section.jpg&quot; width=&quot;607&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We are actually working on a new ArduEye system, using our newer Stonyman vision chips, to allow others to hack together sensors using this type of optics. A number of variations are possible, including using slits to sense 1D motion or pinhole arrays to make a compound eye sensor. If you want more details on this optics technique, you can visit &lt;a href=&quot;http://embeddedeye.com/profiles/blogs/printed-optics-light-cheap-and&quot; target=&quot;_self&quot;&gt;this post&lt;/a&gt;, or you can pull up US patent application 12/710,073 on Google Patents. (Note: We are planning to give a blanket license of the patent for use in &lt;a href=&quot;http://freedomdefined.org/OSHW&quot; target=&quot;_blank&quot;&gt;open hardware systems&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;(Sponsor Credit: &quot;This work was partially supported by the National Science Foundation (award # CCF-0926148). Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.&quot;)&lt;/p&gt;</description>
	<pubDate>Fri, 02 Dec 2011 00:24:55 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Addressable RGB LED Module</title>
	<guid>http://www.freetronics.com/blogs/news/4762482-new-device-addressable-rgb-led-module</guid>
	<link>http://www.freetronics.com/blogs/news/4762482-new-device-addressable-rgb-led-module</link>
	<description>&lt;p&gt;At first glance the &lt;a href=&quot;http://www.freetronics.com/rgbled&quot;&gt;RGB LED Module&lt;/a&gt; looks trivial: it's an LED on a PCB, right? Look closer though and you'll see that it's far more than that.&lt;/p&gt;
&lt;p&gt;It uses a high-brightness RGB (Red/Green/Blue) LED, which means that you can generate all the colours of the rainbow. On the back of the board it includes a WS2801 constant-current multi-channel LED driver with built-in PWM (Pulse-Width Modulation) outputs, allowing you to set different brightness levels on each output independently and have them hold that illumination level without requiring any PWM outputs from your microcontroller.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/products/RGBLED-angle_large.png?100706&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Cooler still, the WS2801 can be daisy-chained so that you can serially address a whole row of RGB LED modules off just two digital I/O lines from your Arduino.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/RGBLED-daisychain_large.jpg?100706&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Check out the details including example source code to drive it from an Arduino in the &lt;a href=&quot;http://www.freetronics.com/pages/rgbled-rgb-led-quickstart-guide&quot;&gt;RGB LED Quickstart Guide&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 01 Dec 2011 23:21:32 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Impromptu in-store Arduino display at Jaycar Newcastle</title>
	<guid>http://www.freetronics.com/blogs/news/4752772-impromptu-in-store-arduino-display-at-jaycar-newcastle</guid>
	<link>http://www.freetronics.com/blogs/news/4752772-impromptu-in-store-arduino-display-at-jaycar-newcastle</link>
	<description>&lt;p&gt;This is one of those things that fall into the &quot;pure awesome&quot; category. We just received photos of an in-store display created by staff at &lt;a href=&quot;http://www.jaycar.com.au/stores.asp?search_input=2300&quot;&gt;Jaycar's Newcastle store&lt;/a&gt;, combining a &lt;a href=&quot;http://www.freetronics.com/eleven&quot;&gt;Freetronics Eleven&lt;/a&gt; with a temperature sensor, an LCD module, a solderless breadboard, and a couple of other miscellaneous parts:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/newcastle-display-1_grande.jpg?100702&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;How cool is that? Actually, the display can give you the technically correct answer to that question:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/newcastle-display-2_large.jpg?100704&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;It even offers words of inspiration to customers:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/newcastle-display-3_large.jpg?100706&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Whoever it was that set up the display: if our paths ever cross in the future, remind me that I owe you a $FAV_BEVERAGE.&lt;/p&gt;</description>
	<pubDate>Thu, 01 Dec 2011 03:26:34 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Sound and Buzzer Module</title>
	<guid>http://www.freetronics.com/blogs/news/4751932-new-device-sound-and-buzzer-module</guid>
	<link>http://www.freetronics.com/blogs/news/4751932-new-device-sound-and-buzzer-module</link>
	<description>&lt;p&gt;The new &lt;a href=&quot;http://www.freetronics.com/sound&quot;&gt;Sound and Buzzer Module&lt;/a&gt; is quite versatile, and can be used for either input or output.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/SOUND-angle_large.jpg?100700&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Piezo elements have an obvious application as sound-generating devices, and by connecting the module to a PWM output on your Arduino you can generate tones. However, with the inclusion of a 1M resistor across the terminals (pre-fitted on the module for convenience) it can also be used as a knock sensor. Just connect the module between GND and an analog input and you can detect sharp bumps, taps, or knocks!&lt;/p&gt;
&lt;p&gt;Examples are provided in the &lt;a href=&quot;http://www.freetronics.com/pages/sound-sound-and-buzzer-module-quickstart-guide&quot;&gt;Sound and Buzzer Module Quickstart Guide&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 01 Dec 2011 01:35:12 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Humidity and Temperature Sensor</title>
	<guid>http://www.freetronics.com/blogs/news/4734542-new-device-humidity-and-temperature-sensor</guid>
	<link>http://www.freetronics.com/blogs/news/4734542-new-device-humidity-and-temperature-sensor</link>
	<description>&lt;p&gt;The new Freetronics&amp;nbsp;&lt;a href=&quot;http://www.freetronics.com/humid&quot;&gt;Humidity and Temperature Sensor Module&lt;/a&gt; is very handy for environmental monitoring, combining both temperature and humidity readings in a single unit.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/products/HUMID-angle_large.png?100696&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Readings update every two seconds, with +/-0.5C and 2-5% accuracy. Perfect for logging data in your house, office, or server room, or even for building your own thermostat to control a heating or cooling system.&lt;/p&gt;
&lt;p&gt;Connecting the sensor takes just one data pin on your Arduino, and we've provided a handy tutorial to get you started: see our &lt;a href=&quot;http://www.freetronics.com/pages/humid-humidity-temperature-sensor-module-quickstart-guide&quot;&gt;Humidity and Temperature Sensor Module Quickstart Guide&lt;/a&gt; for details.&lt;/p&gt;</description>
	<pubDate>Tue, 29 Nov 2011 11:25:51 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Shift Register / Expansion Module</title>
	<guid>http://www.freetronics.com/blogs/news/4734422-new-device-shift-register-expansion-module</guid>
	<link>http://www.freetronics.com/blogs/news/4734422-new-device-shift-register-expansion-module</link>
	<description>&lt;p&gt;Another new device that's just hit the shelves is the &lt;a href=&quot;http://www.freetronics.com/expand&quot;&gt;Shift Register / Expansion Module&lt;/a&gt;, which gives you a convenient way to drive additional output lines if you start running out of I/O on your Arduino.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/EXPAND-pinout_large.jpg?100696&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Using just three I/O lines on your Arduino you can control eight outputs, and you can even daisy-chain multiple modules together to drive even more: with two modules you can drive 16 outputs with those same three I/O lines!&lt;/p&gt;
&lt;p&gt;To see an example of how to hook it up and sample code to drive it, check out the &lt;a href=&quot;http://www.freetronics.com/pages/expand-shift-register-expansion-module-quickstart-guide&quot;&gt;Shift Register / Expansion Module Quickstart Guide&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 29 Nov 2011 10:59:44 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Logic Level Converter Module</title>
	<guid>http://www.freetronics.com/blogs/news/4725142-new-device-logic-level-converter-module</guid>
	<link>http://www.freetronics.com/blogs/news/4725142-new-device-logic-level-converter-module</link>
	<description>&lt;p&gt;Another brand new device is the &lt;a href=&quot;http://www.freetronics.com/level&quot;&gt;Logic Level Converter Module&lt;/a&gt;.&amp;nbsp;Many of the most interesting sensors and devices are only available in 3.3V or even lower voltage versions these days, which can be a problem if you want to connect them to a 5V microcontroller such as an Arduino. This module easily connects different logic voltage levels together for bi-directional communication on up to 4 channels, allowing you to use low-voltage sensors with a 5V microcontroller.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/LEVEL-pinout_large.jpg?100694&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The module acts as a &quot;bridge&quot;, linking high-voltage and low-voltage parts of your project together so they can happily talk to each other. See how it can be used in the &lt;a href=&quot;http://www.freetronics.com/pages/level-logic-level-converter-module-quickstart-guide&quot;&gt;Logic Level Converter Module Quickstart Guide&lt;/a&gt;. Best of all they're dirt-cheap at only $6.95, so it's worth having a spare around in your parts drawer just for those frustrating times when you have an Arduino in one hand and a 3.3V device such as a GPS module in the other, and want to convince them to be friends and play nicely together.&lt;/p&gt;</description>
	<pubDate>Mon, 28 Nov 2011 23:52:25 +0000</pubDate>
</item>
<item>
	<title>Freetronics: New device: Light Sensor Module</title>
	<guid>http://www.freetronics.com/blogs/news/4725042-new-device-light-sensor-module</guid>
	<link>http://www.freetronics.com/blogs/news/4725042-new-device-light-sensor-module</link>
	<description>&lt;p&gt;We've just rolled out a whole new range of tiny functional modules to make it really easy to expand your projects. First came the &lt;a href=&quot;http://www.freetronics.com/am3x&quot;&gt;AM3X 3-Axis Accelerometer Module&lt;/a&gt;, and now the &lt;a href=&quot;http://www.freetronics.com/light&quot;&gt;LIGHT Light Sensor Module&lt;/a&gt;&amp;nbsp;has also landed. This module is amazingly small:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/LIGHT-angle_large.png?100694&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Well, it may not look small when it's blown up so large, but keep in mind that the connection headers are on 0.1&quot; centers! The whole board is about the size of a fingernail. The TEMT6000 sensor is a very reliable and consistent device, unlike a typical light-dependent resistor (LDR) that can vary with temperature and between different units. The TEMT6000 comes pre-calibrated so if you put a bunch of them in the same lighting conditions, you'll get the same value coming out of all of them. Brilliant.&lt;/p&gt;
&lt;p&gt;To see how easy it is to use with an Arduino, check out the &lt;a href=&quot;http://www.freetronics.com/pages/light-sensor-module-quickstart-guide&quot;&gt;Light Sensor Module Quickstart Guide&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 28 Nov 2011 23:40:15 +0000</pubDate>
</item>
<item>
	<title>LZX Industries: New York Video Synthesis Workshop &amp; Showcase</title>
	<guid permalink="False">http://www.lzxindustries.net/?p=959</guid>
	<link>http://www.lzxindustries.net/2011/11/new-york-video-synthesis-workshop-showcase/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.lzxindustries.net/wp-content/uploads/2011/11/DSC_0174_1MR_640.jpg&quot; rel=&quot;lightbox[959]&quot;&gt;&lt;img align=&quot;right&quot; src=&quot;http://www.lzxindustries.net/wp-content/uploads/2011/11/DSC_0174_1MR_640-150x150.jpg&quot; alt=&quot;&quot; title=&quot;Glasslands Gallery&quot; width=&quot;150&quot; height=&quot;150&quot; class=&quot;alignright size-thumbnail wp-image-963&quot; /&gt;&lt;/a&gt;LZX Industries will be in Brooklyn, New York this December to present a demonstration of the LZX Visionary modular video synthesizer.  Following the demonstration will be a discussion on video art history and techniques, as well as performances and screenings of works by video artists using the system such as Tommy DOG (The Brain People) and Johnny Woods.  Expect a casual atmosphere with plenty of time for open discussion and hands on exploration of the modular system &amp;#8212; as well as the opportunity to discuss more advanced techniques for those of you using the systems already.  Everyone is welcome! &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://glasslands.blogspot.com/&quot;&gt;Glasslands Gallery&lt;/a&gt;, 289 Kent Ave, Brooklyn NY 11211&lt;br /&gt;
December 18th, 1PM &amp;#8211; 6PM&lt;br /&gt;
$15 Admission&lt;/p&gt;</description>
	<pubDate>Mon, 28 Nov 2011 17:02:49 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Open 7400 Logic Competition prize pack winner</title>
	<guid>http://www.freetronics.com/blogs/news/4717242-open-7400-logic-competition-prize-pack-winner</guid>
	<link>http://www.freetronics.com/blogs/news/4717242-open-7400-logic-competition-prize-pack-winner</link>
	<description>&lt;p&gt;Freetronics founder Marc Alexander was one of the judges on the &lt;a href=&quot;http://dangerousprototypes.com/category/7400-contest/&quot;&gt;Open 7400 Logic Competition&lt;/a&gt; recently, and we also provided a prize pack to go out to one of the winners.&lt;/p&gt;
&lt;p&gt;The recipient of our prize pack was Luc Small, for his &quot;&lt;a href=&quot;http://lucsmall.com/2011/10/21/open-7400-logic-competition-entry-wheely-bin-night-reminder/&quot;&gt;(Wheely) Bin Night Reminder&lt;/a&gt;&quot; project. Nice one, Luc!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/bin-reminder_1_large.jpg?100671&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Luc &lt;a href=&quot;http://lucsmall.com/2011/11/28/open-7400-logic-competition-i-won-a-prize/&quot;&gt;blogged about his win&lt;/a&gt;, and we're very interested to see what things he comes up with using the EtherTen, LCD &amp;amp; Keypad Shield, and Terminal Shield he received in his prize pack.&lt;/p&gt;</description>
	<pubDate>Mon, 28 Nov 2011 03:22:05 +0000</pubDate>
</item>
<item>
	<title>Kristian Paul: GPS-SDR on the Milkymist (Update 2)</title>
	<guid permalink="False">http://kristianpaul.org/comoblog/GPS_SDR_on_the_Milkymist__Update_2_.html</guid>
	<link>http://kristianpaul.org/comoblog/GPS_SDR_on_the_Milkymist__Update_2_.html</link>
	<description>~/blog/Untitled.html



&lt;font&gt;
Has been a while since the last update in January, starting because for now &lt;br /&gt;
this implementation will no run in the nanonote :-) Not because it cant be do it, &lt;br /&gt;
just because i get more close to Milkymist platform so i feel more confident with it&lt;br /&gt;
(libre knowledge is my power) :-)&lt;br /&gt;
&lt;br /&gt;
After read/skim some books/links [1][2] about GNSS/GPS and check Namuru proyect (thanks to Fabrizio)&lt;br /&gt;
i decided to port this namuru core to milkymist soc [3], this in beta stage and the current&lt;br /&gt;
effort&amp;nbsp;&amp;nbsp;is around making and tunning the correlators to get a proper signal acquisition and tracking [4],&lt;br /&gt;
this is a software asisted task that will be acomplished by osgps, and thanks to Artyom from gnss-sdr [5] wich&lt;br /&gt;
ported this project to a simplified version [6], getting started will not be hard.&lt;br /&gt;
&lt;br /&gt;
Still more code in osgps that could be ported to get a fix, but for now having and stable method to get &lt;br /&gt;
navigation data from the GPS satellites is the priority.&lt;br /&gt;
&lt;br /&gt;
Thanks for reading !&lt;br /&gt;
And all qi-hardware/milkymist comunity for supporting me :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] &lt;a href=&quot;http://en.qi-hardware.com/wiki/GPS_Free_Stack/Books&quot;&gt;http://en.qi-hardware.com/wiki/GPS_Free_Stack/Books&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&quot;http://en.qi-hardware.com/wiki/GPS_Free_Stack/Web_Links&quot;&gt;http://en.qi-hardware.com/wiki/GPS_Free_Stack/Web_Links&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href=&quot;https://github.com/kristianpaul/milkymist/tree/gps-sdr-testing&quot;&gt;https://github.com/kristianpaul/milkymist/tree/gps-sdr-testing&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href=&quot;http://en.qi-hardware.com/wiki/GPS_Free_Stack/Notes_About_Namuru&quot;&gt;http://en.qi-hardware.com/wiki/GPS_Free_Stack/Notes_About_Namuru&lt;/a&gt;&lt;br /&gt;
[5] &lt;a href=&quot;http://gnss-sdr.ru&quot;&gt;http://gnss-sdr.ru&lt;/a&gt;&lt;br /&gt;
[6] &lt;a href=&quot;http://code.google.com/p/gnsssdr/source/browse/#svn/trunk/OSGPS_MOD&quot;&gt;http://code.google.com/p/gnsssdr/source/browse/#svn/trunk/OSGPS_MOD&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;</description>
	<pubDate>Sat, 26 Nov 2011 21:50:23 +0000</pubDate>
</item>
<item>
	<title>Village Telco: Guest Post: Adapting Mesh Potatoes for Emergency Work</title>
	<guid>http://villagetelco.org/?p=1180</guid>
	<link>http://villagetelco.org/2011/11/guest-post-adapting-mps-for-emergency-work/</link>
	<description>&lt;p&gt;&lt;em&gt;This is a guest post from Keith Williamson who has been exploring the potential of Mesh Potatoes in disaster relief scenarios.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/11/Wildernets-8.jpg&quot;&gt;&lt;img class=&quot;alignleft size-medium wp-image-1183&quot; title=&quot;Wildernets-8&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/11/Wildernets-8-225x300.jpg&quot; alt=&quot;&quot; width=&quot;225&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;My interest started with the use of amateur radio for emergency services and disaster relief where I saw the potential benefit of having portable Mesh Potato (MP) systems to augment emergency services team communications. The more I thought about it, it occurred to me that there are many other usage scenarios for such portable telephony networks. Some of those are amateur radio field-day operations, jeep jamborees, motorcycle touring groups&amp;#8230; essentially any large groups of people who temporarily camp out together in remote locations. This would also be of interest to what are called &amp;#8220;preppers&amp;#8221; here in the U.S..people who believe in being prepared for any sort of disaster (whether natural, economic, political, etc). With the advent of the SECN approach, it was apparent that any of the WiFi-enabled smartphones (which are becoming quite ubiquitous) could be quickly configured to be able to call into and take calls from such a network of MPs. The advantage of this approach is that such a network could be built with as little as a single portable MP. Without the inclusion of smartphones, netbooks, or WiFi SIP phones, the Mesh Potato isn&amp;#8217;t very useful unless everyone in a group has one.&lt;/p&gt;&lt;p&gt;In amateur radio, many of us put together &amp;#8220;go boxes&amp;#8221; which are composed of portable transceivers, battery power systems, portable quick-setup antennas, etc. So I started looking at how the MPs could be packaged as &amp;#8220;go boxes&amp;#8221; and how other people who have a smartphone but don&amp;#8217;t have such a &amp;#8220;go box&amp;#8221;, could participate in the network. The &amp;#8220;administrator&amp;#8221; for the MP (or network of MPs) could secure the network but provide the WiFi security credentials/passwords to any person with a smartphone, etc they deem as a valid member of the group. Such a usage scenario as described above yields useability requirements that have been somewhat implicit in my emails over the past weeks (months?). A core requirement is at least one MP with DHCP services for the non-MP devices. Generally, an Internet uplink won&amp;#8217;t be available but I&amp;#8217;d like to allow for a somewhat painless addtition of one (e.g satellite uplink provided by emergency services team). I&amp;#8217;ve tried cellular routers but in the US, at least, the cellular providers don&amp;#8217;t forward SIP requests (party poopers) so I really don&amp;#8217;t see many remote area opportunities for Internet access. That said, I don&amp;#8217;t see Internet connectivity as a core requirement anyway. The network&amp;#8217;s main function is to provide local telephony with a secondary, optional function of providing access to a portable information server (something else I&amp;#8217;m working on).&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/11/Wildernets-15.jpg&quot;&gt;&lt;img class=&quot;alignright size-thumbnail wp-image-1187&quot; title=&quot;Wildernets-15&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/11/Wildernets-15-150x150.jpg&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;For the &amp;#8220;go box&amp;#8221;, I&amp;#8217;ve built two prototypes of what I&amp;#8217;ll call the Mesh Potato &amp;#8220;take-out&amp;#8221; (not really). It&amp;#8217;s based on a waterproof Pelican 1200 case, includes a quick-release bracket to hold the MP, a rechargeable Li-Ion or Li-Poly battery, a telephone handset, and a junction box to tie everything together and provide an on/off switch and convenient access to the charging ports, telephone jack, and a USB convenience port for charging a smartphone. Between the first proto and second proto, I changed the battery from a Lenmar external laptop battery to a Tekkeon MP3450i instrument battery. I also made a bunch of changes to enhance manufacturability and lower component costs (with the exception of the battery). The third proto I&amp;#8217;m about to build (when I&amp;#8217;m not busy with my pesky day job) will incorporate a few more tweaks to manufacturability. The unit can be operated with the MP docked in it&amp;#8217;s bracket for short-range environment or unlatched and extended into a tree or antenna tower for longer range. The battery can be charged using a solar panel with as little as 10W (using a &amp;#8220;solar booster adaper&amp;#8221;) but really needs a 20 to 30W panel to be charged effectively and in a timely manner. It can also be charged from a car battery via alligator clips or cigarette lighter jack. It can also be charged from an a AC power brick connected to a generator. I need to do quite a bit of study on the solar charging aspects and also need to look into whether I need to incorporate a low-voltage cutoff to prevent over discharge of the battery.&lt;/p&gt;&lt;div id=&quot;attachment_1189&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;https://plus.google.com/117687413044750328952/posts&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-1189&quot; title=&quot;Keith is a Systems Engineer in California&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/11/uni-keith-150x150.jpg&quot; alt=&quot;&quot; width=&quot;105&quot; height=&quot;105&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Keith is a Systems Engineer in Arizona&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 24 Nov 2011 15:43:03 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Using Handbag with the USBDroid and Android</title>
	<guid>http://www.freetronics.com/blogs/news/4617352-using-handbag-with-the-usbdroid-and-android</guid>
	<link>http://www.freetronics.com/blogs/news/4617352-using-handbag-with-the-usbdroid-and-android</link>
	<description>&lt;p&gt;Simon Monk has posted a great little introductory guide to using our &lt;a href=&quot;http://www.freetronics.com/usbdroid&quot;&gt;USBDroid&lt;/a&gt; with Philip Lindsay's &quot;Handbag&quot; software development toolkit to create your own Android accessories with just a few lines of code. In this video he shows an interface running on an Android mobile phone communicating with a USBDroid to drive servos when buttons are pressed on the touchscreen:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Brilliant! Check out his guide here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://srmonk.blogspot.com/2011/11/handbag-android-and-arduino-without.html&quot;&gt;Handbag - Android and Arduino without the Java&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 18 Nov 2011 02:41:22 +0000</pubDate>
</item>
<item>
	<title>FreakLabs: chibiArduino v0.54 Release - Fixed Previous Broken Release</title>
	<guid>http://freaklabs.org/index.php/Blog/Chibi/chibiArduino-v0.54-Release-Fixed-Previous-Broken-Release.html</guid>
	<link>http://freaklabs.org/index.php/Blog/Chibi/chibiArduino-v0.54-Release-Fixed-Previous-Broken-Release.html</link>
	<description>I just released chibiArduino v0.54 which fixed the broken release known as v0.52. I had thought I tested v0.52 before releasing it into the wild, however an experimental configuration header file got into the release and was wreaking major havoc with the stack. I recommend anyone that downloaded v0.52 to not use it and switch over to v0.54 immediately. It is tested and working with Arduino v021 and v022 IDEs. If there are any questions, please feel free to email...</description>
	<pubDate>Wed, 16 Nov 2011 22:32:18 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Video Transmitter Experiments</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-1770615268135021922</guid>
	<link>http://videocircuits.blogspot.com/2011/11/video-transmitter-experiments.html</link>
	<description>So I found this old transistor set on the way home from a friends house a while ago and I had already got a few transmitters in my piles of junk, so I thought I would test them out and try some feedback. To my amazement the transmitter would invert the image on some settings. I also played around with my Audio to video circuit in to the transmitter at one point and made this &quot;cool&quot; montage poster &amp;nbsp;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-vnE4xDjKgCg/TsK2H3rj1UI/AAAAAAAAAWU/uBnScRFBBWo/s1600/videoprint.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;http://4.bp.blogspot.com/-vnE4xDjKgCg/TsK2H3rj1UI/AAAAAAAAAWU/uBnScRFBBWo/s640/videoprint.jpg&quot; width=&quot;452&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-vnE4xDjKgCg/TsK2H3rj1UI/AAAAAAAAAWU/uBnScRFBBWo/s1600/videoprint.jpg&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-1770615268135021922?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 15 Nov 2011 11:08:41 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: Johnny Woods and Dpony VHS Movie/Album</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-9027203612464644145</guid>
	<link>http://videocircuits.blogspot.com/2011/11/johnny-woods-and-dpony-vhs-moviealbum.html</link>
	<description>Dpony Movie is available on VHS tape in a limited edition of 100 copies.&lt;br /&gt;Orders are available now for the price of $19.99 (including shipping and handling, USA only)&lt;div&gt;&lt;a href=&quot;http://www.dponymovie.com/&quot;&gt;http://www.dponymovie.com/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-JxsMjZmtmio/TsIzsPSVuNI/AAAAAAAAAWM/Qi-pdZ6Eg7E/s1600/dponyBox.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;214&quot; src=&quot;http://1.bp.blogspot.com/-JxsMjZmtmio/TsIzsPSVuNI/AAAAAAAAAWM/Qi-pdZ6Eg7E/s320/dponyBox.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-9027203612464644145?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 15 Nov 2011 01:41:18 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Video Circuits: zenit</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-1212023136527879074</guid>
	<link>http://videocircuits.blogspot.com/2011/11/zenit.html</link>
	<description>Not a video synth related post however I helped out with some of the sound on this for my good friend Max. It's for an energy drink animation competition.&amp;nbsp;Him and Dave really knocked it out of the park on this one I am in awe !!!&amp;nbsp;also for those who are interested all of the sounds were generated with analogue synthesisers&amp;nbsp;they felt this went well with the visual style inspired by Russian matchbook Labels from &lt;a href=&quot;http://www.sci-fi-o-rama.com/2009/06/04/russian-matchbox-labels/&quot;&gt;this&lt;/a&gt; excellent post on&amp;nbsp;sci-fi-o-rama.&lt;br /&gt;&lt;br /&gt;also I find it quite amusing to appropriate soviet imagery for a very capitalistic reason but then I think back to animators of the soviet block subtly working in the stories they wanted to tell regardless of the state line and maybe this is the capitalist version ?&lt;br /&gt;&lt;br /&gt;http://www.slowgolde.com/&lt;br /&gt;http://www.maxtaylordesign.com/&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-1212023136527879074?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 14 Nov 2011 09:29:44 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Altus Metrum: bdale's rocket blog: RF Immunity</title>
	<guid permalink="False">http://www.altusmetrum.org/blog/bdale/RF_Immunity.html</guid>
	<link>http://www.gag.com/bdale/blog/posts/RF_Immunity.html</link>
	<description>&lt;p&gt;We've had sporadic &lt;a href=&quot;http://altusmetrum.org/&quot;&gt;Altus Metrum&lt;/a&gt; customer reports 
about RF susceptibility issues with their 
&lt;a href=&quot;http://altusmetrum.org/TeleMetrum/&quot;&gt;TeleMetrum&lt;/a&gt; installations.  In almost
every case, these problems have been completely resolved by either making
sure the system battery has sufficient charge before launch, or through the 
application of standard engineering techniques such as twisting wire pairs
to reduce differential coupling.  However, even when every technique we could
think of had been applied, once in a while someone still had issues.&lt;/p&gt;

&lt;p&gt;Around the time of LDRS this year, the incidence of such reports seemed to 
increase.  One customer, in particular, had an installation in which he 
virtually always saw continuous resets of the board once his 54mm airframe 
was put on a launch rail, and several customers reported seeing board resets 
during ejection charge firing.  &lt;a href=&quot;http://keithp.org&quot;&gt;Keith&lt;/a&gt; and I saw a board 
reset during main charge firing happen in person at 
&lt;a href=&quot;http://ncrocketry.org&quot;&gt;NCR&lt;/a&gt;'s Oktoberfest, and with a couple days available
to work together after that launch, we decided it was time to figure out 
what was really going on. &lt;/p&gt;

&lt;p&gt;Here's what we've learned.&lt;/p&gt;

&lt;p&gt;In bench testing, it quickly became clear that the problem was the 3.3
volt power supply rail getting pulled down far enough to reset the CPU.
This most frequently happened during ejection 
charge firing, when the input of the LDO regulator is pulled down by the 
near-short presented by the e-match when a pyro FET is turned on.  To keep 
the 3.3 volt rail voltage up during firing, we include a 100uF bulk capacitor
on the regulator's output.  In all of our prior bench testing, we never saw 
the 3.3 volt rail droop significantly.  Clearly something had changed... or 
maybe several things had changed?  &lt;/p&gt;

&lt;p&gt;The first thing I wondered about was whether the new Kalman filtering code,
which requires more compute cycles from the processor, might be consuming
enough more power to pull the rail down faster during charge firing.  After
poking around at it, though, we have no data to suggest the new code makes a 
measurable difference in power consumption.&lt;/p&gt;

&lt;p&gt;The next thing we pondered was that at least some of the e-matches we and 
others are using in the hobby now come from the fireworks industry, where it 
is apparently considered a feature for the match to retain continuity after 
firing.  This means the input of the LDO gets held down for longer than with
the e-matches we used to use and Quest Q2G2 igniters that open when fired.
But that still didn't make sense as the root cause, as we chose the FET 
firing time such that even with a dead short across the igniter terminals, 
the 3.3 volt rail wouldn't be pulled down far enough to cause trouble during 
firing.&lt;/p&gt;

&lt;p&gt;One of the big changes between v1.0 and v1.1 on TeleMetrum was that the newer
boards incorporate a better reset circuit.  This helps ensure the GPS chip 
always comes up running at power on, which was a problem at temperature 
extremes with older boards.  However, a side-effect of this change is that 
a v1.1 board will reset any time the 3.3 volt rail drops below 3.15 volts, 
whereas older boards didn't trip until a much lower voltage.  So the recent 
increase in reports might just be related to more v1.1 boards being placed 
in service?&lt;/p&gt;

&lt;p&gt;While experimenting on the bench, we observed that injecting RF energy into
the input of the LDO regulator had the effect of pulling down the output
voltage, presumably because the internal reference source accumulates charge
and is fooled into thinking the output is too high.  Since our designs all
have the power switch contacts ahead of the LDO, the wires going out to the
switch and back are effectively an antenna... as are, to a lesser extent,
the wires going to the e-matches.  There is some variability from part to 
part in just how badly the LDO reacts.  But by attaching a tuned length of
wire as an antenna to the LDO input and playing around, we were finally able 
to reproduce the problem reliably on a test board at my bench!&lt;/p&gt;

&lt;p&gt;On further analysis, we realized that the output of the USB battery charger 
chip and the input of the LDO both expect a 1uF bypass cap to ground.  At 
some point, those looked redundant and we eliminated one of the 
two.  Unfortunately, we weren't internalizing the fact that the switch leads 
were between the two caps, and the one we left was on the output of the charger 
and not at the input of the LDO.  Placing a suitable bypass cap right at the 
input of the LDO turns out to have a truly dramatic effect on RF immunity!&lt;/p&gt;

&lt;p&gt;Once we realized that RF getting into the LDO input was the problem, Keith
pointed out that we used to see &quot;noise&quot; in the accelerometer data on earlier 
boards that was caused by the 3.3 volt rail moving slightly during radio
transmit, which we fixed with a hardware change on v1.1.  We are now 
convinced that this was at least partly related to RF coupling to the LDO 
input, not just the change in power consumption on the LDO output.  We 
didn't realize what was going on in earlier testing because we often didn't 
have ematches wired up, so RF coupling was minimal.  But going back to 
flights logged with v1.0 boards that included deployment, and studying the 
magnitude of the &quot;steps&quot; in acceleration data observed when the transmitter 
was on, Keith was able to compute the amount the 3.3 volt rail must have 
sagged if the real acceleration wasn't changing... which in some cases was 
as much as 180mV!  We think this proves that RFI could cause the LDO to 
drop its output voltage below the reset controller set point on v1.1 boards.&lt;/p&gt;

&lt;p&gt;Based on these observations, I'm making two hardware changes for the next
version of TeleMetrum (version 1.2), and Keith is also making a software 
change.  We have tested all of these changes on real boards both on the 
bench and in test flights, and the net effect is a major improvement in 
the RF immunity of TeleMetrum.&lt;/p&gt;

&lt;p&gt;The first hardware change is moving to a slightly lower trip voltage on the 
reset controller.  Instead of 3.15, the new part trips at 3.00 volts nominal.
This gives us more &quot;headroom&quot; to tolerate 3.3 volt rail droop during charge 
firing, and will allow the board to operate longer on a given battery 
charge.  This change is not relevant for v1.0 and prior.&lt;/p&gt;

&lt;p&gt;The second hardware change is adding an appropriate bypass capacitor right
at the LDO input.  This requires a PCB update, but it's possible for me to 
update existing production boards by adding an 0402 cap right across the 
appropriate pins on the regulator chip.&lt;/p&gt;

&lt;p&gt;The software change prevents our altimeters from turning on the radio 
transmitter while an ejection charge is firing.  Since the RF transmitter 
draws substantial additional power, this should help keep the 3.3 volt rail 
from drooping.  This may not really matter, but it feels like the right 
thing to do.  This change will be part of our next stable firmware release.&lt;/p&gt;

&lt;p&gt;We think most TeleMetrum customers need not worry about these updates.  But 
if you have seen odd resets on the rail or during ejection charge firing in 
flight with a TeleMetrum v1.1, feel free to contact me about updating 
your existing board to include these improvements.&lt;/p&gt;</description>
	<pubDate>Mon, 14 Nov 2011 08:39:45 +0000</pubDate>
</item>
<item>
	<title>Tuxbrain: BCNDEVCON... Open Source, Al ataqueeeerrrrr !!!</title>
	<guid permalink="False">http://www.tuxbrain.com/205 at http://www.tuxbrain.com</guid>
	<link>http://www.tuxbrain.com/en/bcndevcon-open-source-al-ataqueeeerrrrr</link>
	<description>&lt;p&gt;
De manera excepcional y tirando por los suelos nuestra estrategia de &quot;No avisar de lo que vamos a hacer para parecer 'misteriooosos' y vender menos&quot; (que por lo visto no funciona ;) ) , aquí estamos para informaros que el próximo fin de semana tendrá lugar en Barcelona un nuevo evento para Developers, la &lt;a href=&quot;http://bcndevcon.org&quot; target=&quot;_blank&quot;&gt;BCNDEVCON&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
&lt;center&gt;&lt;img src=&quot;http://www.tuxbrain.com/img/bcndevcon/bcndevcon.jpg&quot; border=&quot;0&quot; /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tuxbrain.com/en/bcndevcon-open-source-al-ataqueeeerrrrr&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 13 Nov 2011 18:25:14 +0000</pubDate>
</item>
<item>
	<title>FreakLabs: 'Hacker' Group Safecast Crowdsources Radiation Data in Japan</title>
	<guid>http://freaklabs.org/index.php/Blog/News/-Hacker-Group-Safecast-Crowdsources-Radiation-Data-in-Japan.html</guid>
	<link>http://freaklabs.org/index.php/Blog/News/-Hacker-Group-Safecast-Crowdsources-Radiation-Data-in-Japan.html</link>
	<description>FreakLabs is a proud member of Safecast and Tokyo Hackerspace and is an ardent believer in open, transparent data via open source sensor networks...and the safecast devices are using the Freakduino. yay! :)     Link (http://www.pbs.org/newshour/rundown/2011/11/online-hacker-group-crowdsources-radiation-data-for-japanese-public.html)     Link (http://www.pbs.org/newshour/bb/science/july-dec11/japanradiation_11-10.html)</description>
	<pubDate>Thu, 10 Nov 2011 19:48:05 +0000</pubDate>
</item>
<item>
	<title>Video Circuits: Television Magazine April 1976</title>
	<guid>tag:blogger.com,1999:blog-7455749605141706062.post-1651138596888316141</guid>
	<link>http://videocircuits.blogspot.com/2011/11/television-magazine-april-1976.html</link>
	<description>&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-DT1899NRA_o/Trlnw7qrhXI/AAAAAAAAAWA/jChzwWOkyf8/s1600/Picture+67.png&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-DT1899NRA_o/Trlnw7qrhXI/AAAAAAAAAWA/jChzwWOkyf8/s1600/Picture+67.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-DT1899NRA_o/Trlnw7qrhXI/AAAAAAAAAWA/jChzwWOkyf8/s1600/Picture+67.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;from this &lt;a href=&quot;http://cgi.ebay.co.uk/ws/eBayISAPI.dll?ViewItem&amp;item=180747093565&amp;ssPageName=ADME:B:WNA:GB:1123#ht_788wt_993&quot;&gt;auction&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7455749605141706062-1651138596888316141?l=videocircuits.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 08 Nov 2011 09:34:12 +0000</pubDate>
	<author>noreply@blogger.com (Chris)</author>
</item>
<item>
	<title>Freetronics: The Project Showcase competition: tell us about your project to win a prize!</title>
	<guid>http://www.freetronics.com/blogs/news/4487282-the-project-showcase-competition-tell-us-about-your-project-to-win-a-prize</guid>
	<link>http://www.freetronics.com/blogs/news/4487282-the-project-showcase-competition-tell-us-about-your-project-to-win-a-prize</link>
	<description>The recently launched &lt;a href=&quot;http://forum.freetronics.com/&quot;&gt;Freetronics Forum&lt;/a&gt; has a category specifically to give people a chance to showcase their projects, either complete or in progress. Marc and I love seeing the things people build so we're partly doing this for selfish reasons: we ship a lot of devices out but don't often see the end result of the projects they go into, so this is a way for us to get a warm fuzzy feeling knowing they're being put to good use.
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;So for the month of November we're inviting anyone who has built an Arduino-based project to do a quick post in the Project Showcase section of the forum, and at the end of the month we'll pick one as the winner of a Freetronics Inventors Kit containing an Eleven, some Prototyping Shields, a Terminal Shield, an LCD &amp;amp; Keypad Shield, and a selection from our range of new add-on modules that are about to be released.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Judging will be by Marc and myself and is completely arbitrary - it doesn't need to be the most complex project, or the cleverest, or the most well presented. It'll just be the one that we like the best! So if you've built something you're proud of, don't be shy. Let us know about it.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;And no, we can't be bribed with beer. Neither of us like it that much. Chocolate, on the other hand...&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;So get to it!&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://forum.freetronics.com/viewforum.php?f=6&quot;&gt;Project Showcase&lt;/a&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 02 Nov 2011 23:44:24 +0000</pubDate>
</item>
<item>
	<title>Freetronics: The Freetronics forum goes live</title>
	<guid>http://www.freetronics.com/blogs/news/4478792-the-freetronics-forum-goes-live</guid>
	<link>http://www.freetronics.com/blogs/news/4478792-the-freetronics-forum-goes-live</link>
	<description>&lt;p&gt;Eagle-eyed readers may have noticed a new menu item appear near the top right of our site this morning when the Freetronics forum went live. Those with particularly sharp eyes may even notice that the first posts appeared in the forum yesterday - before we'd even linked to it! Last night while Marc and I were at the &lt;a href=&quot;http://www.hackmelbourne.org/&quot;&gt;Melbourne Hackerspace&lt;/a&gt; we gave a couple of people a sneak peek, and once word got out the forum came to life before our eyes.&lt;/p&gt;
&lt;p&gt;Our plan is for the forum to fulfill three main purposes.&lt;/p&gt;
&lt;p&gt;First, we want it to be a convenient place to get support for Freetronics devices, both from Freetronics and also from the many talented members of the Arduino / Open Hardware community. We often find that we answer the same questions over and over again via email - which of course we don't mind doing, but unfortunately it means the answers we give to one person don't benefit anyone else. Covering support questions in a more public way will help all our customers by providing ready-made answers right where Google can find them.&lt;/p&gt;
&lt;p&gt;Second, we hope that the forum is a place where Makers everywhere (but particularly Aussies and our cousins from over the Tasman Sea) can chat about whatever they happen to be working on. We've put in categories for 3D printing, random chit-chat, and a project showcase, but that's just to get the ball rolling. If there are other areas of interest that you think deserve their own dedicated category just let us know.&lt;/p&gt;
&lt;p&gt;Finally, it's an opportunity for us to get to know you, and vice versa. We've met so many cool people through the &lt;a href=&quot;http://www.hackmelbourne.org/&quot;&gt;Melbourne Hackerspace&lt;/a&gt; and events such as &lt;a href=&quot;http://www.linux.conf.au/&quot;&gt;linux.conf.au&lt;/a&gt; and &lt;a href=&quot;http://www.osdc.com.au/&quot;&gt;OSDC&lt;/a&gt;, and we love to hear about what people are working on. Freetronics isn't just a faceless company providing products for the market to consume: we're hackers / Makers ourselves, and we started doing this because it's what we love. Having an opportunity to meet people and be inspired by what their imaginations give birth to is what makes this all worthwhile.&lt;/p&gt;
&lt;p&gt;So, come along to the &lt;a href=&quot;http://forum.freetronics.com/&quot;&gt;Freetronics forum&lt;/a&gt; and say hi!&lt;/p&gt;</description>
	<pubDate>Wed, 02 Nov 2011 09:19:37 +0000</pubDate>
</item>
<item>
	<title>FreakLabs: Light Sequencing and Decoding DMX with an Arduino</title>
	<guid>http://freaklabs.org/index.php/Tutorials/Software/Light-Sequencing-and-Decoding-DMX-with-an-Arduino.html</guid>
	<link>http://freaklabs.org/index.php/Tutorials/Software/Light-Sequencing-and-Decoding-DMX-with-an-Arduino.html</link>
	<description>It's been a while since I posted anything and that deserves another post just to talk about everything that happened in the last 8 months since the March earthquake and tsunami here in Japan. I'm a little bit tired of heavy topics and serious projects so I thought I'd put together a little something that's kind of fun and also timely. Now that we're moving into the holiday season, we're about to start seeing the hard core Christmas people setting...</description>
	<pubDate>Mon, 31 Oct 2011 05:13:03 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Welcome to our new Californian reseller, EpicTinker</title>
	<guid>http://www.freetronics.com/blogs/news/4456122-welcome-to-our-new-californian-reseller-epictinker</guid>
	<link>http://www.freetronics.com/blogs/news/4456122-welcome-to-our-new-californian-reseller-epictinker</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.epictinker.com/&quot;&gt;&lt;img src=&quot;https://cdn.shopify.com/s/files/1/0045/8932/files/logo-epictinker_1.png?100579&quot; alt=&quot;EpicTinker&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;Last week another &lt;a href=&quot;http://www.freetronics.com/resellers&quot;&gt;reseller&lt;/a&gt; joined Freetronics, carrying local stock in California for the benefit of our US customers who need their fix of Arduino-compatible goodness without waiting for international shipping.&lt;/div&gt;
&lt;p&gt;I'm sure that being able to order in US$ is much easier for our American customers, too, so make sure you check out &lt;a href=&quot;http://www.epictinker.com/&quot;&gt;EpicTinker&lt;/a&gt;. They even offer live chat and a US-based customer service phone number.&lt;/p&gt;</description>
	<pubDate>Sun, 30 Oct 2011 22:04:32 +0000</pubDate>
</item>
<item>
	<title>Moxie Processor: Using the Altera USB-Blaster on Fedora</title>
	<guid permalink="False">http://moxielogic.org/blog/?p=568</guid>
	<link>http://moxielogic.org/blog/?p=568</link>
	<description>&lt;p&gt;Altera&amp;#8217;s Quartus tools include some special software to download bitstreams to their devices over USB (a DE-2 eval board, in my case).  They require some tricky work to set up properly on Fedora &amp;#8211; my dev host of choice.  But you&amp;#8217;re in luck!  I&amp;#8217;ve packaged up an RPM that takes care of this extra work for you.  It creates a udev rule to set up the USB-Blaster properly when you plug in your USB JTAG connection.  It also provides a service wrapper for Altera&amp;#8217;s jtagd daemon and moves some of Altera&amp;#8217;s data files around so things just work.  The sources are in &lt;a href=&quot;http://github.com/atgreen/moxiedev&quot; title=&quot;moxiedev&quot; target=&quot;_blank&quot;&gt;moxiedev&lt;/a&gt;, but I&amp;#8217;ve posted the binary and source RPMs here for convenience: &lt;a href=&quot;http://moxielogic.org/tools/&quot; title=&quot;tools directory&quot; target=&quot;_blank&quot;&gt;http://moxielogic.org/tools/&lt;/a&gt;.  Be sure to read the docs in &lt;code&gt;/usr/share/doc/moxie-quartus-altera-1&lt;/code&gt; once installed.  It assumes that you&amp;#8217;ve already installed Quartus II on your box (they don&amp;#8217;t package in RPM format, unfortunately).&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m told that the open source alternative &lt;a href=&quot;http://urjtag.org/&quot; title=&quot;urjtag&quot; target=&quot;_blank&quot;&gt;UrJTAG&lt;/a&gt; may work for this device as well, but I haven&amp;#8217;t had a chance to look into it.  Any experience worth sharing out there?&lt;/p&gt;</description>
	<pubDate>Fri, 28 Oct 2011 21:14:16 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Combining the LCD &amp; Keypad Shield and the USBDroid</title>
	<guid>http://www.freetronics.com/blogs/news/4382592-combining-the-lcd-keypad-shield-and-the-usbdroid</guid>
	<link>http://www.freetronics.com/blogs/news/4382592-combining-the-lcd-keypad-shield-and-the-usbdroid</link>
	<description>&lt;p&gt;There are only a finite number of I/O pins available on Arduino boards, and sometimes the pins used on a shield conflict with other shields or even the Arduino board itself. In the case of the USBDroid, digital pins D9 through D13 are used for the onboard USB-host functionality that allows it to operate as a peripheral for an Android device such as a tablet or phone. However, the LCD &amp;amp; Keypad Shield also wants to use D9 so if you plug them together you need to reassign one of the pins to avoid a conflict.&lt;/p&gt;
&lt;p&gt;It's really not hard once you know what needs to be done, and we've explained the options in a new tutorial:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid&quot;&gt;Combining the LCD &amp;amp; Keypad Shield and the USBDroid&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 21 Oct 2011 11:34:49 +0000</pubDate>
</item>
<item>
	<title>Freetronics: Bruce Perens to keynote LCA2012</title>
	<guid>http://www.freetronics.com/blogs/news/4370272-bruce-perens-to-keynote-lca2012</guid>
	<link>http://www.freetronics.com/blogs/news/4370272-bruce-perens-to-keynote-lca2012</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/bruce-perens_compact.jpg?100567&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;div&gt;Just announced this morning was the news that Bruce Perens, author of the &lt;a href=&quot;http://www.opensource.org/docs/osd&quot;&gt;Open Source Definition&lt;/a&gt;, will be a keynote speaker at &lt;a href=&quot;http://linux.conf.au&quot;&gt;linux.conf.au&lt;/a&gt; in January 2012. Bruce has been one of the driving forces behind the uptake of Open Source software in major corporations over the last decade, and his focus in this keynote will be Open Hardware!&lt;/div&gt;
&lt;p&gt;From the announcement on the LCA site:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&quot;Genetic engineering at home? Teaching science on a low budget? Fully open mobile and wireless devices? The design and manufacture of development tools? Is it possible?&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Yes.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Join open source luminary Bruce Perens as he explores the Second Revolution of Open Source - Open Hardware.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Open Hardware is a movement dedicated to creating physical objects under the same terms and principles as Open Source Software. That is, their design and manufacture yields freedoms such as the ability to run the hardware for any purpose, study it, change it and share it with others.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;LCA2012 will have a big Open Hardware focus, starting with the &lt;a href=&quot;http://www.linux.conf.au/schedule/43/view_talk?day=None&quot;&gt;Arduino Miniconf&lt;/a&gt; (organised by Andy Gelme and myself) on the very first day. There are also a number of Open Hardware talks in the main conference, and having Bruce deliver a keynote on the subject just goes to show that it's arrived in a big way. So if you can make it along to LCA, make sure you register soon to take advantage of the Early Bird discount:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.linux.conf.au/&quot;&gt;http://www.linux.conf.au/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Wed, 19 Oct 2011 23:48:00 +0000</pubDate>
</item>
<item>
	<title>Village Telco: Mesh Potatoes now FCC and CE Approved</title>
	<guid>http://villagetelco.org/?p=1141</guid>
	<link>http://villagetelco.org/2011/10/mesh-potatoes-now-fcc-and-ce-approved/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/10/compliance.jpg&quot;&gt;&lt;img class=&quot;alignright size-medium wp-image-1142&quot; title=&quot;compliance&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/10/compliance-300x214.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;214&quot; /&gt;&lt;/a&gt;The process of developing Village Telco and in particular the Mesh Potato has been a huge learning curve and indeed this is what makes it so worthwhile (dare I say fun) is the variety of skills and knowledge that one has to acquire to become a small scale manufacturer. However, the very nature of learning implies sometimes making mistakes and the occasionally painful experience of acquiring knowledge after you needed it as opposed to before.&lt;/p&gt;&lt;p&gt;One of the early mistakes we made with the Mesh Potato was not placing sufficient emphasis early on, on getting type approval for the Mesh Potato and indeed focusing on both European and U.S. type approval.  What is type approval you ask?  Type approval is the magic glue that makes unlicensed spectrum work.  Many people take the term unlicensed to mean unregulated but nothing could be further from the the truth.  Unlicensed spectrum succeeds because the devices that are permitted to use unlicensed spectrum are carefully regulated to ensure that they conform to strict standards in terms of power output and many other technical specifications that ensure that unlicensed devices &amp;#8220;play nicely&amp;#8221; with each other.&lt;/p&gt;&lt;p&gt;I am happy to say that this issued has finally been addressed in full and Mesh Potatoes now enjoy full compliance with both the standards of the Federal Communications Commission (FCC) of the United States and the European Union&amp;#8217;s &lt;a title=&quot;Wikipedia entry for CE Mark&quot; href=&quot;http://en.wikipedia.org/wiki/CE_mark&quot;&gt;CE standard&lt;/a&gt;.  These are the two most common international standards for compliance and should ensure that the Mesh Potato can conform to almost any regulatory regime.&lt;/p&gt;&lt;p&gt;If you would like to get copies of the certification in order to apply for local type approval in your country, please get in contact with us &lt;a title=&quot;Contact&quot; href=&quot;http://villagetelco.org/contact/&quot;&gt;via this website&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<pubDate>Tue, 18 Oct 2011 12:35:34 +0000</pubDate>
</item>
<item>
	<title>Freetronics: First look: EtherMega production samples</title>
	<guid>http://www.freetronics.com/blogs/news/4353002-first-look-ethermega-production-samples</guid>
	<link>http://www.freetronics.com/blogs/news/4353002-first-look-ethermega-production-samples</link>
	<description>&lt;p&gt;It's taken longer than we would have liked, but the &lt;a href=&quot;http://www.freetronics.com/ethermega&quot;&gt;EtherMega&lt;/a&gt; has finally made the leap from bits to atoms!&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://cdn.shopify.com/s/files/1/0045/8932/files/EtherMega-production-sample-800_large.jpg?100563&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;It's got &quot;the lot&quot;: everything we could cram into the most versatile board possible. It has the Mega 2560 microcontroller with lots of code space, ram and I/O; on board Ethernet; micro SD card slot; USB; and a switchmode power supply.&lt;br /&gt;
&lt;br /&gt;
Some things of note:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;PCB Colour&lt;/b&gt;. The picture above shows a design-validation sample so the PCB colours aren't correct: the production units will be in the usual Freetronics colours with yellow markings.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Power supply&lt;/b&gt;. The reason for the big delay in getting to this point has been swapping out the linear reg for a switchmode supply. You'd think it would be simple, but no, it turned out to have all sorts of side-effects! The supply we've used is rated up to 28V input, which means you can connect it to any handy power supply in the 7-28Vdc range and it'll just work without causing overheating problems. Current model boards with a linear regulator and an Ethernet shield run a tight-rope between getting enough power to run the Ethernet chip (which requires a good, solid 5V) and overheating the reg. Because I tend to mount Arduinos in odd places (inside walls, etc) it's important to me to have a board that runs cold, so I was determined to go with the switchmode supply even though it caused delays.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Power source selection&lt;/b&gt;. Near the upper left of the board you'll see a 3-way male header with a jumper fitted. That's to select the power source between USB and DC IN. Yes, we dropped the power auto-select for this one, in favour of a reliable high current power selection jumper. One of the big complications with the switchmode supply is that the chip can't handle a back-voltage being applied to its output, so with the traditional supply auto-switching circuit the chip gets fried the moment you plug in USB power. Oops. In the end a simple jumper was the most robust solution. We looked at switches to use instead, and found that tiny switches able to fit on the board just aren't rated to the 300mA+ that would be required. In fact most of the tiny surface-mount switches you see are only rated to about 200-300mA maximum! So, a jumper it is.&lt;br /&gt;
&lt;br /&gt;
Soooo close. The first batch of production units will begin any day now.&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Tue, 18 Oct 2011 11:15:33 +0000</pubDate>
</item>
<item>
	<title>Kristian Paul: First atempt to listen weather satellites</title>
	<guid permalink="False">http://kristianpaul.org/comoblog/First_atempt_to_listen_weather_satellites.html</guid>
	<link>http://kristianpaul.org/comoblog/First_atempt_to_listen_weather_satellites.html</link>
	<description>~/blog/log33.html



&lt;font&gt;
Today i tried to listen a NOAA-19 weather satellite, i got a few seconds for &lt;br /&gt;
what sounds like its telemetry [1].&lt;br /&gt;
&lt;br /&gt;
I used a uv-200 transceiver and a home made yagi-like antenna wich seems to work&lt;br /&gt;
if i inverted it (?) so, as no proper design was tought for it, i bet i &lt;br /&gt;
can be improved as soon i read more about this topic. &lt;br /&gt;
&lt;br /&gt;
&lt;a&gt;&lt;img src=&quot;http://kristianpaul.org/~paul/tmp/uv200atenna.jpg&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] &lt;a href=&quot;http://kristianpaul.org/~paul/tmp/noaa19.wav&quot;&gt;http://kristianpaul.org/~paul/tmp/noaa19.wav&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;</description>
	<pubDate>Mon, 17 Oct 2011 21:50:23 +0000</pubDate>
</item>
<item>
	<title>Freetronics: &quot;State of Electronics&quot; documentary preview</title>
	<guid>http://www.freetronics.com/blogs/news/4340632-state-of-electronics-documentary-preview</guid>
	<link>http://www.freetronics.com/blogs/news/4340632-state-of-electronics-documentary-preview</link>
	<description>&lt;p&gt;Director / cinematographer &lt;a href=&quot;http://www.karlvonmoller.com/&quot;&gt;Karl von Moller&lt;/a&gt; has been working on a little pet project for a while: a documentary on the evolution of the electronics industry in Australia. It's titled &quot;State of Electronics&quot;, and he's spent the last 12 months travelling around Australia interviewing some of the most influential people in the industry. A couple of weeks ago he mentioned that he now has 120 hours of footage! The big job now is trimming it down to just a couple of hours.&lt;/p&gt;
&lt;p&gt;To give a bit of insight into the project, Karl has released a sneak peek called &quot;Roll Call&quot;. It's not part of the actual doco, more of a &quot;behind the scenes&quot; extra feature to highlight some of the people interviewed so far. It has some amazing names on there, and I even managed to sneak in among all the big wigs: you'll see me briefly in the video below, although Karl decided to give me a promotion and call me the Freetronics CEO! Marc and I don't have titles yet.&lt;/p&gt;
&lt;p&gt;In my section of the video you'll see me working at my kitchen table assembling something under the microscope. I can't really tell from the video, but I think it was a ProtoShield or maybe an early-model 433MHz Receiver Shield. No, we don't assemble stuff by hand that way anymore, all our products are put together by high-speed pick-and-place machines, but we still do some prototyping and personal projects by hand. I assembled the first few hundred ProtoShields and Receiver Shields in that oven over the space of a couple of months, but now they come off the production line by the thousand within a matter of hours.&lt;/p&gt;
&lt;p&gt;So, to whet your appetite for the full doco:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://vimeo.com/21424290&quot;&gt;Roll Call - State of Electronics&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/karlvonmoller&quot;&gt;karl von moller&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Sun, 16 Oct 2011 10:37:41 +0000</pubDate>
</item>
<item>
	<title>Freetronics: &quot;State of Electronics&quot; documentary preview</title>
	<guid>http://www.freetronics.com/blogs/articles-4340632</guid>
	<link>http://www.freetronics.com/blogs/news/4340632-state-of-electronics-documentary-preview</link>
	<description>&lt;p&gt;Director / cinematographer &lt;a href=&quot;http://www.karlvonmoller.com/&quot;&gt;Karl von Moller&lt;/a&gt; has been working on a little pet project for a while: a documentary on the evolution of the electronics industry in Australia. It's titled &quot;State of Electronics&quot;, and he's spent the last 12 months travelling around Australia interviewing some of the most influential people in the industry. A couple of weeks ago he mentioned that he now has 120 hours of footage! The big job now is trimming it down to just a couple of hours.&lt;/p&gt;
&lt;p&gt;To give a bit of insight into the project, Karl has released a sneak peek called &quot;Roll Call&quot;. It's not part of the actual doco, more of a &quot;behind the scenes&quot; extra feature to highlight some of the people interviewed so far. It has some amazing names on there, and I even managed to sneak in among all the big wigs: you'll see me briefly in the video below, although Karl decided to give me a promotion and call me the Freetronics CEO! Marc and I don't have titles yet.&lt;/p&gt;
&lt;p&gt;In my section of the video you'll see me working at my kitchen table assembling something under the microscope. I can't really tell from the video, but I think it was a ProtoShield or maybe an early-model 433MHz Receiver Shield. No, we don't assemble stuff by hand that way anymore, all our products are put together by high-speed pick-and-place machines, but we still do some prototyping and personal projects by hand. I assembled the first few hundred ProtoShields and Receiver Shields in that oven over the space of a couple of months, but now they come off the production line by the thousand within a matter of hours.&lt;/p&gt;
&lt;p&gt;So, to whet your appetite for the full doco:&lt;/p&gt;
&lt;p&gt;
  
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://vimeo.com/21424290&quot;&gt;Roll Call - State of Electronics&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/karlvonmoller&quot;&gt;karl von moller&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Sun, 16 Oct 2011 10:37:41 +0000</pubDate>
</item>
<item>
	<title>Mirko Vogt, nanl.de: PostgreSQL – altering table name does not update references to its primary key and sequence automatically</title>
	<guid permalink="False">http://nanl.de/blog/?p=609</guid>
	<link>http://nanl.de/blog/2011/10/postgresql-altering-table-name-screws-up-references-to-its-primary-key-and-sequence/</link>
	<description>&lt;p&gt;During a setup of multiple PostgreSQL instances, replicating content via the replication framework &lt;a title=&quot;Slony-I&quot; href=&quot;http://slony.info/&quot; target=&quot;_blank&quot;&gt;Slony-I&lt;/a&gt;, I had to manually create the very same SQL schema to every Postgres node &amp;#8211; as Slony just replicates the payload data and not the actual SQL schemas.&lt;/p&gt;
&lt;p&gt;I was creating tables like this on every node:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;CREATE TABLE &lt;strong&gt;x&lt;/strong&gt; (&lt;br /&gt;
id             SERIAL PRIMARY KEY,&lt;br /&gt;
content   VARCHAR(255) DEFAULT NULL&lt;br /&gt;
);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;but decided after half of having those nodes I already configured to rename the table from &amp;#8216;&lt;strong&gt;x&lt;/strong&gt;&amp;#8216; to &amp;#8216;&lt;strong&gt;y&lt;/strong&gt;&amp;#8216; using the &amp;#8216;&lt;strong&gt;ALTER TABLE&lt;/strong&gt;&amp;#8216; command&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ALTER TABLE &lt;strong&gt;x&lt;/strong&gt; RENAME TO &lt;strong&gt;y&lt;/strong&gt;;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;and continued creating the schemas on the remaining nodes with the following command:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;CREATE TABLE &lt;strong&gt;y&lt;/strong&gt; (&lt;br /&gt;
id             SERIAL PRIMARY KEY,&lt;br /&gt;
content   VARCHAR(255) DEFAULT NULL&lt;br /&gt;
);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;After finally having provided the schema to all nodes I started the replication daemons and got thrown errors from half of the nodes that replication doesn&amp;#8217;t work properly since the schema doesn&amp;#8217;t match the one on the master replication server:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;CESTERROR  remoteWorkerThread_1: &amp;#8220;select &amp;#8220;_db&amp;#8221;.setAddTable_int(1, 3, &amp;#8216;&amp;#8221;public&amp;#8221;.&amp;#8221;y&amp;#8221;&amp;#8216;, &amp;#8216;x_pkey&amp;#8217;, &amp;#8216;Table public.y with primary key&amp;#8217;); &amp;#8221; PGRES_FATAL_ERROR ERROR:  Slony-I: setAddTable_int(): table &amp;#8220;public&amp;#8221;.&amp;#8221;y&amp;#8221; has no index x_pkey&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;All of the non-working nodes were those, I first created the table &lt;strong&gt;x&lt;/strong&gt; on and later renamed it&lt;strong&gt; &lt;/strong&gt;to &lt;strong&gt;y&lt;/strong&gt;, instead of just directly creating table &lt;strong&gt;y&lt;/strong&gt; like I did on the others.&lt;/p&gt;
&lt;p&gt;Looking at the global table definitions &amp;#8211; including the automatically co-created sequence &amp;#8211; you can see that the table did get renamed, but the sequence didn&amp;#8217;t:&lt;/p&gt;
&lt;p&gt;Table &lt;strong&gt;y&lt;/strong&gt; directly created:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;postgres=# \d&lt;br /&gt;
List of relations&lt;br /&gt;
Schema |      Name      |   Type   |  Owner&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8211;+&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-+&amp;#8212;&amp;#8212;&amp;#8212;-+&amp;#8212;&amp;#8212;&amp;#8212;-&lt;br /&gt;
public | &lt;strong&gt;y&lt;/strong&gt;              | table    | postgres&lt;br /&gt;
public | &lt;strong&gt;y_id_seq&lt;/strong&gt;       | sequence | postgres&lt;br /&gt;
(4 rows)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Table &lt;strong&gt;x&lt;/strong&gt; created and altered to be named &lt;strong&gt;y&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;postgres=# \d&lt;br /&gt;
List of relations&lt;br /&gt;
Schema |      Name      |   Type   |  Owner&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8211;+&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-+&amp;#8212;&amp;#8212;&amp;#8212;-+&amp;#8212;&amp;#8212;&amp;#8212;-&lt;br /&gt;
public | &lt;strong&gt;y&lt;/strong&gt;              | table    | postgres&lt;br /&gt;
public | &lt;strong&gt;x_id_seq&lt;/strong&gt;       | sequence | postgres&lt;br /&gt;
(4 rows)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;That &lt;em&gt;normally&lt;/em&gt; doesn&amp;#8217;t cause any trouble, since the reference of table &lt;strong&gt;y&lt;/strong&gt; (formerly &lt;strong&gt;x&lt;/strong&gt;) to the sequence &lt;strong&gt;x_id_seq&lt;/strong&gt; is still valid. However since replication requires the very exact same schema on every node this actually &lt;strong&gt;is&lt;/strong&gt; causing trouble. However that&amp;#8217;s not the error mentioned in the error message above, which is referring to the &lt;strong&gt;primary key&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Diff&amp;#8217;ing the actual schemas shows up more differences:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;                                  Table &amp;#8220;public.y&amp;#8221;&lt;br /&gt;
Column  |          Type          |                   Modifiers&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8212;+&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;+&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
- id      | integer                | not null default nextval(&amp;#8216;&lt;strong&gt;x_id_seq&lt;/strong&gt;&amp;#8216;::regclass)&lt;br /&gt;
+ id      | integer                | not null default nextval(&amp;#8216;&lt;strong&gt;y_id_seq&lt;/strong&gt;&amp;#8216;::regclass)&lt;br /&gt;
content | character varying(255) | default NULL::character varying&lt;br /&gt;
Indexes:&lt;br /&gt;
-    &amp;#8220;&lt;strong&gt;x_pkey&lt;/strong&gt;&amp;#8221; PRIMARY KEY, btree (id)&lt;br /&gt;
+    &amp;#8220;&lt;strong&gt;y_pkey&lt;/strong&gt;&amp;#8221; PRIMARY KEY, btree (id)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The reference to the sequence and and name of the reference to the value of the primary key were &lt;strong&gt;NOT&lt;/strong&gt; updated by altering the table name to match again. This separation of table-name and references might be a feature, however I find it hard to imagine a use-case where it makes sense using the sequence and/or primary key of another table. &lt;em&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I just got told that it indeed might make sense sharing one sequence among several tables&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Also sequence and primary key were created inside / co-created by the &amp;#8216;&lt;strong&gt;CREATE TABLE&lt;/strong&gt;&amp;#8216; statement, so at least I&amp;#8217;d find it more consistent if both would be &lt;strong&gt;always&lt;/strong&gt; reference by &lt;strong&gt;this&lt;/strong&gt; table, by means of the table they got originally created with.&lt;/p&gt;
&lt;p&gt;Looking for information, hints or documentation about this behaviour wasn&amp;#8217;t fruitful as well.&lt;/p&gt;
&lt;p&gt;So personally I&amp;#8217;d really like to really see those reference updated &amp;#8211; by changing the tables name - automatically.  I&amp;#8217;d like to see at least a &lt;strong&gt;NOTICE&lt;/strong&gt; that primary key and sequence are still haveing the name of / are referring to it&amp;#8217;s old values and need to be updated / re-created to match again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Conclusion:&lt;/em&gt; Make sure &amp;#8211; when altering table names in Postgres &amp;#8211; references to primary key and sequence are getting updated as well &amp;#8211; manually! Primary key and sequence are NOT tied together with the table they got created with!&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 13 Oct 2011 10:27:42 +0000</pubDate>
</item>
<item>
	<title>Moxie Processor: Fake RAM, load/store and push</title>
	<guid permalink="False">http://moxielogic.org/blog/?p=560</guid>
	<link>http://moxielogic.org/blog/?p=560</link>
	<description>&lt;p&gt;Progress report time&amp;#8230;.&lt;/p&gt;
&lt;p&gt;I need RAM in order to implement/test most instructions.  To that end, I&amp;#8217;ve implemented a fake data cache that is always accessed within a single cycle during the WRITE pipeline stage.  Eventually this will have to be replaced with a real data cache that reads/writes to real memory over the wishbone bus while the processor pipeline stalls.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;push&lt;/code&gt; instruction was easy enough to implement.  It&amp;#8217;s the first one that writes to both memory and a register (to update the stack pointer).  This meant reworking the interface between the EXECUTE and WRITE stages.  &lt;code&gt;Pop&lt;/code&gt; is a little more tricky because we need to update two registers: the stack pointer and the register we&amp;#8217;re loading memory into.  I&amp;#8217;m going to work this out tomorrow night, but I can see now how making it work in a single cycle will require a little more logic than splitting it up into two cycles.  It will be interesting to experiment with changes like that once everything is working.&lt;/p&gt;
&lt;p&gt;Also, I reorganized the HDL source to cleanly separate the moxie core from the muskoka SoC and related firmwares and cores.  As usual, everything is in &lt;a href=&quot;http://github.com/atgreen/moxiedev&quot; title=&quot;moxiedev&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Wed, 12 Oct 2011 03:00:59 +0000</pubDate>
</item>
<item>
	<title>GNSS-SDR: Source code for acquisition and tracking algorithms of GLONASS L3 signals</title>
	<guid>http://gnss-sdr.com/xml-rss2.php?itemid=48</guid>
	<link>http://gnss-sdr.com/xml-rss2.php?itemid=48</link>
	<description>Acquisition and tracking &lt;a href=&quot;http://code.google.com/p/gnsssdr/source/browse/#svn%2Ftrunk%2FGNSS_SOFTWARE_RECEIVERS%2FPOSTPROCESSING_SCILAB_RECEIVERS%2FGLONASS%2FL3&quot;&gt;source code&lt;/a&gt; is available for download now. It's a reworked version of GLONASS L1 software receiver for scilab.Details about new GLONASS L3 signals can be &lt;a href=&quot;http://www.gpsworld.com/gnss-system/glonass/innovation-glonass-11405?page_id=1&quot;&gt;found here&lt;/a&gt;. The main differences of the new signals are:&lt;br /&gt;
1) Ranging code - trancated Kasami sequence (in L1 and L2 bands - М-sequence);&lt;br /&gt;
2) Ranging code bit rate: 10.23 MHz (in L1 and L2 bands - 0,511 MHz);&lt;br /&gt;
3) Ranging coded is repeated every 1 ms as it was previously, but ranging code is additionaly modulated with 10-digits Hamming code (&quot;0000110101&quot;). Each digit of Hamming code lasts for 1 ms;&lt;br /&gt;
4) New signals are CDMA (in L1 and L2 bands FDMA is used);&lt;br /&gt;
5) Digital data is coded with convolutional coder;&lt;br /&gt;
6) Superframes, frames and strings length is changed.&lt;br /&gt;
&lt;br /&gt;
Acquisition and tracking algorithms are made for now. The next step is to make viterbi decoder.&lt;br /&gt;
&lt;br /&gt;
File with the new signal record from L3 band  &lt;a href=&quot;http://617h89.megadl.fr/en/&quot;&gt;can be downloaded&lt;/a&gt;.</description>
	<pubDate>Sun, 09 Oct 2011 18:05:50 +0000</pubDate>
</item>
<item>
	<title>Peter Zotov, whitequark: My first factory-made PCBs</title>
	<guid>http://whitequark.org/blog/2011/10/07/my-first-factory-made-pcbs</guid>
	<link>http://whitequark.org/blog/2011/10/07/my-first-factory-made-pcbs/</link>
	<description>&lt;p&gt;Today, my first batch of PCBs made on a real factory has arrived.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;&lt;img src=&quot;http://whitequark.org/images/tft-lvds/gerber.png&quot; alt=&quot;Gerber files&quot; /&gt;
&lt;a href=&quot;http://whitequark.org/images/tft-lvds/pcbs.jpeg&quot;&gt;&lt;img src=&quot;http://whitequark.org/images/tft-lvds/pcbs-small.jpeg&quot; alt=&quot;Real PCBs&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll describe the purpose, functionality and process of making the boards after components will arrive; that will probably happen in roughly two weeks.&lt;/p&gt;

&lt;p&gt;The sources are released under &lt;a href=&quot;http://sam.zoy.org/wtfpl/COPYING&quot;&gt;WTFPL&lt;/a&gt;: &lt;a href=&quot;http://whitequark.org/downloads/tft-lvds.tbz2&quot;&gt;tft-lvds.tbz2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Eagle &lt;a href=&quot;http://whitequark.org/downloads/lvds.lbr&quot;&gt;library&lt;/a&gt; for &lt;a href=&quot;http://whitequark.org/www.national.com/pf/DS/DS90C363.html&quot;&gt;National DS90C363 chip&lt;/a&gt; and
&lt;a href=&quot;http://www.hirose-connectors.com/connectors/H205SeriesGaiyou.aspx?c1=DF20&amp;c3=3&quot;&gt;Hirose DF20G-40DP connector&lt;/a&gt;
is released to the public domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;27 Jan 2012 update:&lt;/strong&gt; the boards have arrived and I&amp;#8217;ve assembled them, but they have some nasty crosstalk bugs and
are unfortunately unusable. &lt;strong&gt;DO NOT USE THIS DESIGN.&lt;/strong&gt; I&amp;#8217;ll try fixing them once I&amp;#8217;ll get access to a &gt;100MHz scope.&lt;/p&gt;

&lt;p&gt;The footprints in library are verified and correct, through.&lt;/p&gt;</description>
	<pubDate>Fri, 07 Oct 2011 17:31:00 +0000</pubDate>
</item>
<item>
	<title>Peter Zotov, whitequark: strace and V4L2</title>
	<guid>http://whitequark.org/blog/2011/10/05/strace-and-v4l2</guid>
	<link>http://whitequark.org/blog/2011/10/05/strace-and-v4l2/</link>
	<description>&lt;p&gt;Let&amp;#8217;s suppose you have a webcam which works with Skype, but does not with your
V4L2 code. You start Skype under &lt;code&gt;strace&lt;/code&gt;&amp;#8230; and suddenly discover that it does
not know any of the V4L2 ioctl&amp;#8217;s and shows them like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ioctl(117, VIDIOC_S_PARM or VIDIOC_S_PARM_OLD, 0xb1025024) = 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That&amp;#8217;s not very useful. If only you could get something like this&amp;#8230;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ioctl(117, VIDIOC_S_PARM or VIDIOC_S_PARM_OLD, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE, capability=V4L2_CAP_TIMEPERFRAME, capturemode=0, timeperframe={numerator=1, denominator=30}, extendedmode=0, readbuffers=0}) = 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Sure you can. Just grab &lt;a href=&quot;https://gist.github.com/1263207&quot;&gt;the patch&lt;/a&gt; against
strace 4.6 source, apply it, compile (don&amp;#8217;t forget &lt;code&gt;autoreconf -i&lt;/code&gt;) and rejoice.&lt;/p&gt;</description>
	<pubDate>Tue, 04 Oct 2011 23:50:00 +0000</pubDate>
</item>
<item>
	<title>Dan Reetz: DOES IT TURN PAGES?</title>
	<guid permalink="False">http://www.danreetz.com/blog/?p=780</guid>
	<link>http://www.danreetz.com/blog/2011/09/29/does-it-turn-pages/</link>
	<description>&lt;p&gt;One of the best things about &lt;a href=&quot;http://diybookscanner.org/&quot;&gt;my community&lt;/a&gt; is that it is just chock full of awesome people. &lt;/p&gt;
&lt;p&gt;One of the bad things about being the &amp;#8220;DIY BOOK SCANNER guy&amp;#8221; is that people always ask &amp;#8220;DOES IT TURN PAGES?&amp;#8221;. &lt;/p&gt;
&lt;p&gt;Well, my friends, it turns pages. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://diybookscanner.org/forum/viewtopic.php?f=1&amp;t=1180&quot;&gt;jck57/Monson&amp;#8217;s Servo Auto Scanner&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://diybookscanner.org/forum/viewtopic.php?f=1&amp;t=588&amp;p=7045&amp;hilit=slot#p8283&quot;&gt;DIY Page Turner from Berlin Hackerspace C-Base&lt;/a&gt;:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.diybookscanner.org/forum/viewtopic.php?f=1&amp;t=379&amp;start=30&quot;&gt;dtic was among the page-turning pioneers of our forum&lt;/a&gt;:&lt;br /&gt;
Revision 1:&lt;br /&gt;
&lt;br /&gt;
Revision 2:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;jck57/Monson is actually building &lt;a href=&quot;http://www.diybookscanner.org/forum/viewtopic.php?f=1&amp;t=940&quot;&gt;a full-auto scanner&lt;/a&gt;, check out his other impressive engineering:&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Thu, 29 Sep 2011 16:49:06 +0000</pubDate>
</item>
<item>
	<title>Altus Metrum: bdale's rocket blog: AltOS 1.0.2 Released</title>
	<guid permalink="False">http://www.altusmetrum.org/blog/bdale/AltOS_1__46__0__46__2_Released.html</guid>
	<link>http://www.gag.com/bdale/blog/posts/AltOS_1.0.2_Released.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://keithp.org&quot;&gt;Keith&lt;/a&gt; and I released version 1.0.2 of 
&lt;a href=&quot;http://altusmetrum.org/AltOS/&quot;&gt;AltOS&lt;/a&gt;, the open source firmware and
software system associated with our 
&lt;a href=&quot;http://altusmetrum.org/&quot;&gt;Altus Metrum&lt;/a&gt; hobby rocket avionics systems.&lt;/p&gt;

&lt;p&gt;This release includes a fix for the defect in version 1.0.1 that prevented 
rebooting an altimeter from idle to pad mode over the radio link.  This
affects both TeleMetrum and TeleMini boards, and re-flashing the altimeter 
firmware is required to pick up this fix. &lt;/p&gt;

&lt;p&gt;We also restored the pre-1.0 mode selection behavior for TeleMetrum at 
power on.  This is also an altimeter firmware change, but does not affect
TeleMini.&lt;/p&gt;</description>
	<pubDate>Thu, 29 Sep 2011 16:29:12 +0000</pubDate>
</item>
<item>
	<title>Qi Hardware: News Release: VJing Made So Simple Anyone Can Do It</title>
	<guid>http://en.qi-hardware.com/wiki/News#News_Release:_VJing_Made_So_Simple_Anyone_Can_Do_It</guid>
	<link>http://en.qi-hardware.com/wiki/News#News_Release:_VJing_Made_So_Simple_Anyone_Can_Do_It</link>
	<description>&lt;p&gt;&lt;i&gt;September 28, 2011 15:00 PM Central European Time&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;BERLIN, Germany&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;The Qi Hardware project is proud to announce the Milkymist One video synthesizer.
&lt;/p&gt;&lt;p&gt;A total power consumption of only 5 watts and latency of only 60 milliseconds are the highlights of the new high-performance video synthesizer. Without additional computer, Milkymist One takes line-in audio to create real-time music visualizations. Ideal for musicians and DJs, restaurant and bar owners, people organizing parties or interested in visual art. The included camera feeds live video into the synthesis.
&lt;/p&gt;&lt;p&gt;Milkymist One is the second product launched by Qi Hardware after the Ben NanoNote in March 2010. While the NanoNote was built around a MIPS-architecture SoC, Milkymist One takes copyleft freedoms one step further by being the first free computing architecture built around the GPL licensed 32-bit Milkymist SoC.
&lt;/p&gt;&lt;p&gt;Visual artists benefit by being able to program their patches, including connectivity and control of DMX lights, lasers and MIDI instruments, all directly and in real-time from the Milkymist One synthesizer. Network connectivity allows the inclusion of live Twitter feeds. Free software programmers benefit by having the first fully programmable graphics accelerator at their disposal, opening the world of reusable and portable Verilog to free software developers.
&lt;/p&gt;&lt;p&gt;Milkymist SoC is a new generation of collaboratively developed IC designs, founded in 2007 by Sebastien Bourdeauducq. It aims to be an ARM competitor with new sharism business model, allowing for greater development speed and better customization and optimization in embedded products.
&lt;/p&gt;&lt;p&gt;Milkymist One is available from Sharism Ltd. now, and sells for 499 USD plus shipping from Taipei. 
&lt;/p&gt;&lt;p&gt;[1] Milkymist One shop: &lt;a rel=&quot;nofollow&quot; class=&quot;external free&quot; href=&quot;https://sharism.cc/milkymist/&quot;&gt;https://sharism.cc/milkymist/&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;[2] Media Gallery: &lt;a rel=&quot;nofollow&quot; class=&quot;external free&quot; href=&quot;https://sharism.cc/media/&quot;&gt;https://sharism.cc/media/&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt; EDITORS PLEASE NOTE: To request more information or find out about obtaining Milkymist One for review, please contact info@sharism.cc
&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;--&lt;a href=&quot;http://en.qi-hardware.com/wiki/User:Qi_team&quot; title=&quot;User:Qi team&quot;&gt;Qi team&lt;/a&gt; 15:00, 28 September 2011 (CET)
&lt;/p&gt;</description>
	<pubDate>Wed, 28 Sep 2011 15:00:00 +0000</pubDate>
</item>
<item>
	<title>Crypto Stick: Introduction</title>
	<guid permalink="False">http://www.crypto-stick.com/30 at http://www.crypto-stick.com</guid>
	<link>http://www.crypto-stick.com/en/introduction</link>
	<description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;div class=&quot;content&quot;&gt;
&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;
&lt;div class=&quot;field-items&quot;&gt;
&lt;div class=&quot;field-item even&quot;&gt;
&lt;p&gt;The Crypto Stick is an USB key with integrated (proprietary) smart card to enable highly secure encryption of e-mails and data, for authentication in networks and for access control. Other than ordinary software solutions, the secret keys are always stored securely inside the Crypto Stick. Their extraction is impossible which makes the Crypto Stick immune to computer viruses and Trojan horses. The user-chosen PIN and the tamper-proof design protect in case of loss and theft. The hardware and software are both available as Open Source to allow verifying the security and integrating with own applications.&lt;/p&gt;
&lt;h2&gt;
					Use cases&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;
						E-mail encryption based on X.509/SMIME and OpenPGP (e.g. Outlook, Thunderbird, Evolution)&lt;/li&gt;
&lt;li&gt;
						Encryption of data stored on separate storage (e.g. TrueCrypt).&lt;/li&gt;
&lt;li&gt;
						User authentication on local computers (e.g. Windows, Linux).&lt;/li&gt;
&lt;li&gt;
						User authentication for network services (e.g. Firefox, OpenSSH, OpenVPN, IPSec, OpenID).&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
					Advantages to ordinary software solutions&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;
						Secret keys are always stored securely inside the Crypto Stick. Their extraction is impossible. All sensitive cryptographic operations are computed in the Crypto Stick.&lt;/li&gt;
&lt;li&gt;
						User-chosen PIN protects in case of loss and theft against brute force attacks.&lt;/li&gt;
&lt;li&gt;
						Immune to computer viruses, Trojan horses, phishing attacks and other malicious software.&lt;/li&gt;
&lt;li&gt;
						Tamper-proof design prevents sophisticated physical attacks with laboratory equipment.&lt;/li&gt;
&lt;li&gt;
						Secret keys are generated securely on the Crypto Stick to prevent their extraction by attackers.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
					Advantages to proprietary security devices&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;
						Secure implementation can be verified by client and independent third parties to ensure the absence of back doors and security flaws.&lt;/li&gt;
&lt;li&gt;
						Compatible to a large variety of software applications such as Outlook, GnuPG, Enigmail, Mozilla Thunderbird, OpenSSH for instance.&lt;/li&gt;
&lt;li&gt;
						Own custom applications can be integrated easily due to open interfaces and open drivers&lt;/li&gt;
&lt;li&gt;
						Lack of vendor lock-in increases security of investment&lt;/li&gt;
&lt;li&gt;
						Security does not depend on secrets stored centrally at the vendor&lt;/li&gt;
&lt;li&gt;
						Growing acceptance and user base supports continuously improvement and ensures high security due to peer reviews.&lt;/li&gt;
&lt;li&gt;
						Transparent and open development process as an open source project&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
					Further advantages&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;
						Windows, Linux, and MacOS X are supported.&lt;/li&gt;
&lt;li&gt;
						Additional administrator PIN enables hierarchical use cases.&lt;/li&gt;
&lt;li&gt;
						Three independent RSA keys, max. length 4096 bit each.&lt;/li&gt;
&lt;li&gt;
						Import of existing keys and backup of keys possible.&lt;/li&gt;
&lt;li&gt;
						High security due to embedded smart card which is based on Common Criteria 5-high certification.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;
					Many ordinary security and encryption devices were broken&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;
						In 2011 RSA Inc was hacked and secret information about RSA’s securID token was stolen which allows to crack them.&lt;/li&gt;
&lt;li&gt;
						In 2010 it was revealed that AES-256 encrypted and FIPS 140-2 Level 2 certified USB storage devices of the following vendors could be easily accessed by using a default password: Kingston, SanDisk, Verbatim, MXI, PICO&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Serious security flaws were also found in the following products:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
						Corsair's Padlock (2010)&lt;/li&gt;
&lt;li&gt;
						Raidon‘s Staray-S-Serie (2009)&lt;/li&gt;
&lt;li&gt;
						All USB storage devices from 9Pay, A-Data and Transcend which use fingerprint readers based on the USBest UT176 and UT169 from Afa Technology (2008)&lt;/li&gt;
&lt;li&gt;
						Excelstor’s GStor Plus (2005)&lt;/li&gt;
&lt;li&gt;
						Lexar JumpDrive (2004).&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.crypto-stick.com/sites/default/files/Crypto_Stick-executive_summary.pdf&quot;&gt;Download this text as PDF&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 13 Sep 2011 14:11:23 +0000</pubDate>
</item>
<item>
	<title>Peter Zotov, whitequark: Tweaking Linux TCP stack for lossy wireless networks</title>
	<guid>http://whitequark.org/blog/2011/09/12/tweaking-linux-tcp-stack-for-lossy-wireless-networks</guid>
	<link>http://whitequark.org/blog/2011/09/12/tweaking-linux-tcp-stack-for-lossy-wireless-networks/</link>
	<description>&lt;p&gt;Public wireless networks are often congested and located in a noisy RF environment. Standard TCP congestion control algorithms work inefficiently in these conditions, leading to frequent timeouts, large &lt;abbr title=&quot;Round Trip Time&quot;&gt;RTTs&lt;/abbr&gt; and poor overall performance. There are some tricks, however, which can be enabled to improve it a lot.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;First, there is one simple option which can be changed to get an impressive performance increase. It is the network interface &lt;em&gt;retry limit&lt;/em&gt;. By default, it is set to a relatively high value of 7:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;#&lt;/span&gt; iwconfig wlan0 | grep Retry
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;          Retry  long limit:7   RTS thr:off   Fragment thr:off&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Somehow, in a lossy environment this value results in a constantly overflowing packet queue, skyrocketing latency and, at some point, a disconnect. After setting it to 0 (&lt;code&gt;iwconfig wlan0 retry limit 0&lt;/code&gt;), packet queue will tend to overflow for a much lesser amount of time, and while latency will still probably be high and unstable, it will not grow infinitely anymore.&lt;/p&gt;

&lt;p&gt;Per my experience, this change has resulted in latency drop from 10-160s (yes, seconds) to 0-12s (3-5s average), which is indeed a lot, but is manageable.&lt;/p&gt;

&lt;p&gt;Linux TCP stack may be configured via &lt;code&gt;sysctl&lt;/code&gt; utility. The TCP options are listed in &lt;code&gt;man 7 tcp&lt;/code&gt;, and they are located in &lt;code&gt;net.ipv4&lt;/code&gt; namespace. (Well, technically there is one for IPv6, too, but I haven&amp;#8217;t seen a single IPv6-enabled public network, ever). So, the option &lt;code&gt;tcp_foo&lt;/code&gt; may be set to &lt;code&gt;1&lt;/code&gt; by invoking &lt;code&gt;sysctl net.ipv4.tcp_foo=1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Interestingly, changing the TCP congestion control algorithms did not yield any visible result. On the other hand, changing several other options did.&lt;/p&gt;

&lt;p&gt;There are three options worth mentioning. First two are related to &lt;a href=&quot;http://www.sarolahti.fi/pasi/papers/frto-ccr.pdf&quot;&gt;F-RTO&lt;/a&gt;, a recovery algorithm designed specially for wireless networks.&lt;/p&gt;

&lt;span&gt;Excerpt from `man 7 tcp&amp;#8217; &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;tcp_frto (integer; default: 0; since Linux 2.4.21/2.6)
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              Enable  F-RTO,  an enhanced recovery algorithm for TCP retrans‐
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              mission timeouts (RTOs).   It  is  particularly  beneficial  in
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              wireless  environments  where  packet  loss is typically due to
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              random radio interference rather than intermediate router  con‐
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              gestion.  See RFC 4138 for more details.
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              This file can have one of the following values:
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              0  Disabled.
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              1  The basic version F-RTO algorithm is enabled.
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              2  Enable  SACK-enhanced  F-RTO  if  flow uses SACK.  The basic
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 version can be used also when SACK is in use though in  that
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 case scenario(s) exists where F-RTO interacts badly with the
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 packet counting of the SACK-enabled TCP flow.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;tcp_frto&lt;/code&gt; option is set to 2 by default on Debian, which is the recommended setting, but changing it to 1 sometimes improves the performance.&lt;/p&gt;

&lt;span&gt;Excerpt from `man 7 tcp&amp;#8217; &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;tcp_frto_response (integer; default: 0; since Linux 2.6.22)
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              When  F-RTO  has detected that a TCP retransmission timeout was
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              spurious (i.e, the timeout would have been avoided had TCP  set
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              a  longer retransmission timeout), TCP has several options con‐
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              cerning what to do next.  Possible values are:
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              0  Rate halving based;  a  smooth  and  conservative  response,
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 results  in  halved  congestion window (cwnd) and slow-start
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 threshold (ssthresh) after one RTT.
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              1  Very conservative response;  not  recommended  because  even
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 though  being  valid,  it  interacts poorly with the rest of
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 Linux TCP; halves cwnd and ssthresh immediately.
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              2  Aggressive response; undoes congestion-control measures that
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 are now known to be unnecessary (ignoring the possibility of
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 a lost retransmission that would require TCP to be more cau‐
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 tious);  cwnd  and ssthresh are restored to the values prior
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 to timeout.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;This option is set to 0 by default, as the manpage suggests, but changing it to 2 makes retransmission delays much smaller.&lt;/p&gt;

&lt;span&gt;Excerpt from `man 7 tcp&amp;#8217; &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;tcp_low_latency (Boolean; default: disabled; since Linux 2.4.21/2.6)
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              If  enabled,  the  TCP  stack makes decisions that prefer lower
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              latency as opposed to higher throughput.   It  this  option  is
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              disabled,  then  higher throughput is preferred.  An example of
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              an application where this default should be changed would be  a
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              Beowulf compute cluster.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Again, this option is disabled by default, and it seems that after enabling it, TCP stack prefers to retransmit more often.&lt;/p&gt;

&lt;p&gt;You could make this settings to be applied on boot by adding them to &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;:&lt;/p&gt;

&lt;span&gt;/etc/sysctl.conf &lt;/span&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ini&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;c&quot;&gt;# TCP stack tweaking for lossy wireless networks&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;na&quot;&gt;net.ipv4.tcp_frto&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;na&quot;&gt;net.ipv4.tcp_frto_response&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;na&quot;&gt;net.ipv4.tcp_low_latency&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 12 Sep 2011 18:44:00 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Chip design, open source, and DIY: Part 3, batch fabrication of chips</title>
	<guid>tag:diydrones.com,2011-09-12:705844:BlogPost:635561</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:635561</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/wpqEjg6c0MyykzgBWGErZ9kmiJwH2tmZrg7JnnC8B*d5f9aXNyVDtYLf81r-1mcujqHlmRwTAFSIswMux0*YBw__/ReticleFigure.jpg&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/wpqEjg6c0MyykzgBWGErZ9kmiJwH2tmZrg7JnnC8B*d5f9aXNyVDtYLf81r-1mcujqHlmRwTAFSIswMux0*YBw__/ReticleFigure.jpg&quot; width=&quot;666&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the third part of a three-part posting on chip design and how to reconcile it with the open source and DIY movements. (Part 1 is &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/chip-design-open-source-and-diy-part-1-indie-chip-design&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt; and part 2 is &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/chip-design-open-source-and-diy-part-2-open-source-issues&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt;.) In this part I will discuss economics- How much does it actually cost to fabricate a chip? Can batching be used to make the cost accessible to a group of (hypothetical) casual chip designers?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Masks&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Once a chip design is “taped out”, the chip foundry who manufactures them first creates a set of masks- anywhere from around 15 to upwards depending on the design and the manufacturing process. These are for a photolithography process that is vaguely similar to those used in PCB manufacture, however for chips the masks are both more precise and more expensive.&lt;/p&gt;
&lt;p&gt;I won’t give exact costs or list specific foundries, but I’ve seen masks cost anywhere from under $10k to over $50k for a complete set. This is for a 0.5um or 0.6um process. Obviously the masks for the latest 32nm process would be much more.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Reticle&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Typically in chip design the foundry creates a set of masks for a “reticle”, a box-like region that gets replicated over and over across a whole wafer using a stepping process. A wafer itself is a disc of silicon less than a millimeter thick but generally tens of centimeters in diameter.&lt;/p&gt;
&lt;p&gt;The typical reticle size I use is about 21mm x 21mm. (The masks themselves are much larger than this but the image is optically reduced during the manufacturing process.) You can fill up that reticle pretty much any way you want- you can put in a single 21mm x 21mm chip. If your chip size is just 2mm x 2mm you can put in a 100 of these into the reticle, so every reticle gets you 100 chips. You could also put in 100 different designs. This is where batching would come in.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Batching&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There are companies that provide batching services. One of the oldest is the &lt;a href=&quot;http://www.mosis.com&quot; target=&quot;_blank&quot;&gt;MOSIS service&lt;/a&gt;, run by ISI of the University of Southern California. MOSIS was set up originally with DARPA and NSF grants as a way to bring chip design to universities, and give students the ability to design and fabricate a chip, either as a classroom exercise or for a research grant. MOSIS also offered their services to industry. To this day they still offer these services and actually serve as a “store front” for several major chip foundries (ON-Semiconductor, TSMC, IBM, and others) for customers who want to prototype chips without paying for a whole set of masks.&lt;/p&gt;
&lt;p&gt;The economics are essentially that everyone shares the cost of the tooling. Let’s say a mask set for a reticle has 10 different designs and cost $20k to make (a somewhat made up number)- that comes down to $2k per design- a much more reasonable number!&lt;/p&gt;
&lt;p&gt;There are other services similar to MOSIS, and there are also individual companies that offer “multi-project runs” specifically for smaller customers that want to batch-prototype chips. So the batching concept is clearly established. In fact, whenever I do a run of silicon at Centeye I also place multiple designs on one reticle to get the most for my money.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Hypothetical Cost Breakdown&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So let’s suppose a company wanted to get into the chip batching business. Let’s say the company decides to accept 2mm x 2mm size chips, and place 100 different designs onto a reticle. (The remaining 1mm slivers could be used for test circuits and quality control…) Looking at pure costs alone (e.g. neglecting stuff like “overhead”, “labor”, and “profit”), the numbers might look like this:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Mask set for a 21mm x 21mm reticle: $20,000&lt;/p&gt;
&lt;p&gt;6”/150mm diameter wafers, set of 10 (approx 30+ reticles per wafer): $10,000&lt;/p&gt;
&lt;p&gt;Dicing the wafer up into chips: $500 per wafer&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;First consider prototype quantities- I don’t know of any foundry that will make a single wafer- typically a set of wafers are manufactured in case one or a couple of them fail quality assurance inspections. For initial prototyping you would end up dicing just one wafer. Next comes packaging- most customers are not equipped to work with bare die, so they would probably want the chips in a DIP or similar package that they can then solder to a board or press into a breadboard- this would probably cost at most $20 per chip, at cost. Total cost per customer: ($20k + $10k + $500)/100 = $305 for about 30 chips, plus $20 per chip packaged.&lt;/p&gt;
&lt;p&gt;Next let’s consider a slightly higher quantity price break, by dicing up all 10 wafers. The total cost per customer rises to ($20k + $10k + 10 x $500) = $350 for about 300 chips, not including packaging.&lt;/p&gt;
&lt;p&gt;These numbers are encouraging. Of course, we have to assume 100 such customers can be found, and we have to consider the other costs to stay in business, but the above numbers should give you a starting point.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;So where does that put us?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Once we factor in the cost of doing business, we get upwards to a thousand dollars for a batch-run prototype chip. This is a stiff amount compared to a batch-fabbed PCB. But it is not impossible- This amount is easily within the budget of a Kickstarter project, and there are hobbyists that would be willing to spend this amount on a chip fab. Certainly small companies could spend this amount. Also note that due to the nature of the chip manufacturing process, there could be several hundred individual chips available for use (or sale) if the design works. (There are a number of caveats, of course, which I didn’t mention here, but can discuss below if there is interest.)&lt;/p&gt;
&lt;p&gt;I think one of the challenges, though, is overcoming the fear of spending money on a fabrication that doesn’t work. Getting back a PCB that doesn’t work is never fun; the stakes are higher for chips because of both the higher cost and the long lead times (generally six weeks or more). This is where the combination of good design tools and good design practices can help out- I think the “abstract layout” workaround mentioned in my last post, properly executed, could make “probability of success” sufficiently high for the DIY crowd.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
	<pubDate>Mon, 12 Sep 2011 14:17:18 +0000</pubDate>
</item>
<item>
	<title>Peter Zotov, whitequark: Treetop: typical errors</title>
	<guid>http://whitequark.org/blog/2011/09/08/treetop-typical-errors</guid>
	<link>http://whitequark.org/blog/2011/09/08/treetop-typical-errors/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://treetop.rubyforge.org/&quot;&gt;Treetop&lt;/a&gt; is a &lt;a href=&quot;http://en.wikipedia.org/wiki/Parser_expression_grammar&quot;&gt;&lt;abbr title=&quot;Parsing expression grammar&quot;&gt;PEG&lt;/abbr&gt;&lt;/a&gt; parser generator for Ruby which is very flexible and allows to create &lt;abbr title=&quot;Domain Specific Language&quot;&gt;DSL&lt;/abbr&gt;&amp;#8217;s in minutes, but it may be hard to understand for a newcomer.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Examples in this article were checked on Treetop v1.4.10.&lt;/p&gt;

&lt;h2&gt;Grammar tricks&lt;/h2&gt;

&lt;p&gt;First of all, parser expression grammars are always greedy. This is probably the most frustrating and unintuitive aspect of PEG&amp;#8217;s. Consider this grammar:&lt;/p&gt;

&lt;span&gt;Incorrect grammar &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;grammar Example1
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  rule string
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    '&quot;' .* '&quot;'
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;string&lt;/code&gt; rule is expected to parse double-quoted strings; it is woefully incorrect, through. The &lt;code&gt;.*&lt;/code&gt; predicate will match &lt;em&gt;any&lt;/em&gt; character, including a double quote, and the parser will never reach the end of the rule.&lt;/p&gt;

&lt;p&gt;To fix the error, we can exclude the quote from the possible characters (replacing &lt;code&gt;.*&lt;/code&gt; with something like &lt;code&gt;[^&quot;]*&lt;/code&gt;), but a cleaner and more flexible approach exists. We can instruct the parser to fetch one more token from the input stream and verify that it does not end the string; this is called &lt;em&gt;negative lookahead&lt;/em&gt;. Here is the fixed rule:&lt;/p&gt;

&lt;span&gt;Working grammar &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;grammar Example2
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  rule string
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    '&quot;' ( !'&quot;' . )* '&quot;'
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;To allow representing double quotes inside our strings, escape characters are required. It may seem obvious to add a second choice to the list of characters like this:&lt;/p&gt;

&lt;span&gt;Never matches &quot; &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;grammar Example3
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  rule string
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    '&quot;' ( !'&quot;' . / '\&quot;' )* '&quot;'
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;This is incorrect as well. &lt;code&gt;.&lt;/code&gt;, being greedy (as any other PEG predicate is), will consume the backslash, and the second choice will never be taken. In order to work as expected, variants must be ordered from the narrowest to broadest one. Compare with the fixed code:&lt;/p&gt;

&lt;span&gt;Knows what &quot;a&amp;#92;&quot;b&quot; is &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;grammar Example4
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  rule string
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    '&quot;' ( '\&quot;' \ !'&quot;' . )* '&quot;'
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Note that the negative lookahead predicate has changed its position: it belongs to the broadest &lt;code&gt;.&lt;/code&gt; predicate.&lt;/p&gt;

&lt;h2&gt;AST quirks&lt;/h2&gt;

&lt;p&gt;Sometimes Treetop embeds some AST nodes into another nodes when you do not expect this. For example, let&amp;#8217;s look at this excerpt from one of my grammars:&lt;/p&gt;

&lt;div&gt;
&lt;pre&gt;&lt;code&gt;grammar SimpleExpression
  rule expression
    ( string / number ) {
      def to_code
        elements.first.to_code
      end
    }
  end

  rule string
    '&amp;quot;' ( !'&amp;quot;' . / '\&amp;quot;' )* '&amp;quot;' {
      def to_code; text_value; end
    }
  end

  rule number
    [0-9]+ {
      def to_code; text_value.to_i; end
    }
  end
end&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;




&lt;div&gt;
&lt;pre&gt;&lt;code&gt;require 'treetop'

Treetop.load 'ast_quirks.treetop'

parser = SimpleExpressionParser.new
ast = parser.parse %q{42}
p ast.to_code&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;expression&lt;/code&gt; rule may look a bit strange as-is, but it is actually just the last part of more complex code generation rule which included unary and binary operators, and a dozen of simple types in one list at end. If executed, &lt;code&gt;ast_quirks.rb&lt;/code&gt; will display a thrown exception: &lt;code&gt;(eval):10:in 'to_code': undefined method 'to_code'&lt;/code&gt;. But the method is indeed defined!&lt;/p&gt;

&lt;p&gt;Somehow Treetop embeds the &lt;code&gt;string&lt;/code&gt; or &lt;code&gt;number&lt;/code&gt; subtrees into the &lt;code&gt;expression&lt;/code&gt; tree, losing the attached methods in process. To alter this behavior, a &lt;code&gt;1..1&lt;/code&gt; repeat specifier may be attached: it does not change the meaning of the rule, but prevents AST squashing.&lt;/p&gt;

&lt;div&gt;
&lt;pre&gt;&lt;code&gt;grammar SimpleExpression
  rule expression
    ( string / number ) 1..1 {
      def to_code
        elements.first.to_code
      end
    }
  end

  rule string
    '&amp;quot;' ( !'&amp;quot;' . / '\&amp;quot;' )* '&amp;quot;' {
      def to_code; text_value; end
    }
  end

  rule number
    [0-9]+ {
      def to_code; text_value.to_i; end
    }
  end
end&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;h2&gt;Useful snippets&lt;/h2&gt;

&lt;h3&gt;Fancy error reporting&lt;/h3&gt;

&lt;p&gt;This function will show the location of an error in &lt;a href=&quot;http://clang.llvm.org/&quot;&gt;Clang&lt;/a&gt; or Java style.&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;respond_to?&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:read&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ExampleParser&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;n&quot;&gt;ast&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ast&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;ast&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;do_something_useful&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;failure_reason&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/^(Expected .+) after/m&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'$NEWLINE'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lines&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;to_a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;failure_line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'~'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;failure_column&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;^&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;




&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt; ruby test.rb
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;Expected one of &amp;gt;=, &amp;lt;=, &amp;lt;, &amp;gt;, ==, !=, *, /, +, -, $NEWLINE, ; at line 2, column 14 (byte 35):&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;  scope @type, = &amp;quot;nothing&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;~~~~~~~~~~~~~^&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;String unescaping&lt;/h3&gt;

&lt;p&gt;This is a modification of string parsing rule described above which adds support for arbitrary escaped characters.&lt;/p&gt;

&lt;span&gt;escaped_string&amp;#46;treetop &lt;/span&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;grammar EscapedString
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  rule string
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    '&quot;' letters:( !'&quot;' string_letter )* '&quot;' {
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      def fetch
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        letters.elements.map { |el| el.elements.last.fetch }.join
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    }
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  rule string_letter
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    '\\' char:[&quot;ntH] {
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      def fetch
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        case char.text_value
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;          when '&quot;'; '&quot;'
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;          when 'n'; &quot;\n&quot;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;          when 't'; 9.chr
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;          when 'H'; &quot;hello world&quot;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    }
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    /
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    . {
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      def fetch
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        text_value
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;      end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    }
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;




&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt; irb
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;ruby-1.9.2-p290 :001 &amp;gt; require 'treetop'&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt; =&amp;gt; true&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;ruby-1.9.2-p290 :002 &amp;gt; Treetop.load 'escaped_string.treetop'&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt; =&amp;gt; EscapedStringParser&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;ruby-1.9.2-p290 :003 &amp;gt; puts EscapedStringParser.new.parse(%q{&amp;quot;see:\t\t\H&amp;quot;}).fetch&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;see:     hello world&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt; =&amp;gt; nil&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;Matching whitespace&lt;/h3&gt;

&lt;p&gt;Here are four whitespace helpers: &lt;code&gt;s&lt;/code&gt; in the name means &amp;#8220;space&amp;#8221;, &lt;code&gt;n&lt;/code&gt; means newline, and capitalization means that the capitalized part is required (contrary to being optional).&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;rule sn
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  sN?
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;rule sN
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  ( ( S &quot;\n&quot; / s comment_to_eol / s &quot;\n&quot; ) s comment_to_eol? )+
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;rule s
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  S?
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;rule S
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  [ \t]+
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;rule comment_to_eol
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  '#' (!&quot;\n&quot; .)* &quot;\n&quot;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 07 Sep 2011 20:41:00 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Chip design, open source, and DIY: Part 2, open source issues</title>
	<guid>tag:diydrones.com,2011-09-07:705844:BlogPost:625240</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:625240</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/Mqp9VR2*FEbDwBSLddyQh-dlmzpYU75iQw50duCYcgIJeLQDNCl0gcdwblfthVWSsqHetokpVPvedYkLaPFf6EHPP2Osi-cO/AbstractChipLayoutConcept.jpg&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/Mqp9VR2*FEbDwBSLddyQh-dlmzpYU75iQw50duCYcgIJeLQDNCl0gcdwblfthVWSsqHetokpVPvedYkLaPFf6EHPP2Osi-cO/AbstractChipLayoutConcept.jpg&quot; width=&quot;526&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Above: Concept for an &quot;abstract layout&quot; workflow that could reconcile open source circuit designs with &quot;closed&quot; process design rules and libraries. First the designer would generate an abstract layout by instancing cells for various components. The above example shows a 2-input AND gate, with one input pulled to ground with a 10k resistor, and a tri-state buffer as an output. The designer would instance these cells, and then route connections between them. The designer would also place cells corresponding to &quot;pads&quot; at the periphery of the chip. The designer would not need to know the exact layout of the cell interiors- this may be kept &quot;closed&quot; even while the abstract layer itself is &quot;open&quot;. This abstract layout may then be converted to a full detailed layout that may be used by a foundry to fabricate the chip.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class=&quot;font-size-4&quot;&gt;Introduction&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is the second part of a three-part blog posting on chip design and how to reconcile it with the open source and DIY movements. &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/chip-design-open-source-and-diy-part-1-indie-chip-design&quot; target=&quot;_self&quot;&gt;Previously in Part 1&lt;/a&gt;, I gave a top level summary of “indie chip design” as I experience it. In this part I will discuss the real issues I would face if trying to “open” up a chip design. There are three areas to consider: the CAD design tools themselves, the design rules for a particular chip fab process, and design libraries.&lt;/p&gt;
&lt;p&gt;First a few definitions: The term “foundry” refers to a company that performs the actual chip fabrication. The term “process” refers to a particular fabrication line of a foundry. A foundry may have several processes including ones optimized for digital circuity and others designed for analog. Typically a foundry will have several grades of processes, with more expensive ones having more capabilities or a smaller feature size. The term “design tools” refers to the CAD tools that one may use to design a chip (analogous to Eagle for PCBs). The term “design rules” refers to specifications such as minimum width, spacing, and other requirements for the different layers.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Chip Design Tools: Open source versions do exist!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;First I present some good news- Open source chip design tools do exist. One of the most prominent versions is &lt;a href=&quot;http://en.wikipedia.org/wiki/Magic_%28software%29&quot; target=&quot;_blank&quot;&gt;Magic&lt;/a&gt;, which was created in the mid 1980’s and has gone through multiple revisions as late as 2008. I personally used versions 6.4 and 6.5 for all of Centeye’s chip designs from 2001 through 2004, including designs with up to 400,000 transistors. Magic is somewhat derided by many chip designers because it automates the generation of some layers and restricts you to purely Manhattan geometries e.g. no diagonal features. However in practice these restrictions affect only a minority of overall chip designs and do not cost much in terms of layout space. Magic has a real-time design rule verifier- you will know pretty much right away if your layout has violated a design rule. I found this useful when first learning chip design. Magic is also able to create &lt;a href=&quot;http://en.wikipedia.org/wiki/Caltech_Intermediate_Form&quot; target=&quot;_blank&quot;&gt;CIF&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/GDSII&quot; target=&quot;_blank&quot;&gt;GDSII&lt;/a&gt; files, the chip design equivalent of Gerbers used for PCBs.&lt;/p&gt;
&lt;p&gt;Magic was originally designed to run on Unix and Linux operating systems, but it has more recently been ported to Windows (using Cygwin) and is maintained &lt;a href=&quot;http://opencircuitdesign.com/magic/&quot; target=&quot;_blank&quot;&gt;here at Open Circuit Design&lt;/a&gt;. Unfortunately it appears that recent development efforts have slowed, so I am not sure if Magic is as actively used as in the past.&lt;/p&gt;
&lt;p&gt;Other open source layout tools exist as well, for example &lt;a href=&quot;http://en.wikipedia.org/wiki/Electric_%28software%29&quot; target=&quot;_blank&quot;&gt;Electric&lt;/a&gt;. There is also a free, but not open source, tool called &lt;a href=&quot;http://lasihomesite.com/&quot; target=&quot;_blank&quot;&gt;Lasi&lt;/a&gt; (pronounced “lazy”).&lt;/p&gt;
&lt;p&gt;For circuit verification there are also free circuit simulators, most notably the venerable &lt;a href=&quot;http://en.wikipedia.org/wiki/SPICE&quot; target=&quot;_blank&quot;&gt;SPICE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Commercial chip design tools exist as well (if you have the money...)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There are a number of commercial design tools available as well. I now use &lt;a href=&quot;http://www.tannereda.com/&quot; target=&quot;_blank&quot;&gt;Tanner Tools&lt;/a&gt;, while others (with more resources) may use Cadence or Synopsys. The cost of Tanner Tools is within reach for a small company (on the order of the price of a new car- depreciation is my friend!) but is out of reach for most hobbyists. The other latter tools can cost, as far as I know, a upwards to a million dollars per seat, but allow wide-scale cooperation between large teams of designers.&lt;/p&gt;
&lt;p&gt;As for why I switched from Magic to Tanner- Around 2005 we were migrating to a new foundry and process and were anticipating designing more complicated chips, so I felt the need for something “professional”. Tanner Tools has worked very well for us. However- and this would be a good story for another post- we succumbed to “complexity creep”, thus producing complicated (and headache inducing) designs, but later reversed course, so that now are designs are more minimalist again. I could go back to Magic, however since I now have the Tanner and have built up my own libraries within it, it is easier stay with Tanner. There are also other issues, which will be discussed next.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;The bad news: Design rules, setup files, and design kits are generally not open.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As I see it, the biggest issue preventing bringing open source to the chip design rule is not the design tools themselves, but the design &lt;em&gt;rules&lt;/em&gt;! The design rules on a PCB are relatively easy to set up and for programs like Eagle are freely available. They are also easy to understand. For chips, however, the design rules are generally treated as proprietary by the foundry. This is because the design rules contain information that describes the capabilities of a process, and the foundries don’t want that information freely disclosed without restrictions. Yes- I had to sign NDAs to get the design rules for all of the processes we use now! Similarly, the “setup files” that design tools use to configure a design program for designing chips for a particular process are also generally treated as proprietary by the company that sells the tools.&lt;/p&gt;
&lt;p&gt;The same applies to the “design kits” themselves- these are basically library files that contain cells for different subcircuits you may want to use in a chip design. This includes cells such as gates, flip flops, or basic analog components. This also includes essential cells such as the “pads” that allow a chip to be interfaced with the outside world.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And this, folks, is why we cannot open source our chip designs- I would be violating all the NDAs I had signed with these companies!&lt;/strong&gt; The most I could do (which I have already done in one case) is to release a schematic of the chip, in PDF form, that contains details on the circuits I had designed, and then “black boxes” for anything that came from a design kit.&lt;/p&gt;
&lt;p&gt;Overall the trend seems to be for new advances to be made in the “closed” world, with open design tools and design kits being increasingly obscure and obsolete.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Is there a workaround?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I can see two possible workarounds. One method is, in fact, a workaround that has been used in the past and (I believe) is still available to an extent. The other is one that comes to my mind. Both would require some level of cooperation from the chip foundry.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Workaround #1: Use simplified, genericized design rules&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;During 2000 through 2004 when I was using Magic, I also used the &lt;a href=&quot;http://www.mosis.com/&quot; target=&quot;_blank&quot;&gt;MOSIS service&lt;/a&gt; for chip fabrications. MOSIS is effectively a brokerage service that places different designs from different people onto the same wafer, thus allowing everyone to share the tooling costs. (I’ll talk more about that in Part 3 of these posts.) When using MOSIS, you had the option of using either the design rules from the foundry (requiring an NDA), or you could use more &lt;a href=&quot;http://www.mosis.com/Technical/Designrules/scmos/scmos-main.html&quot; target=&quot;_blank&quot;&gt;generic design rules&lt;/a&gt; that MOSIS set up and made freely available.&lt;/p&gt;
&lt;p&gt;The MOSIS rules had the advantage of being a bit more transparent and easy to understand. Also a design made for one process could be fabricated on any process that supports the same design rules. However they had several weaknesses- First, designs made using these rules are not a compact as they would be using the native foundry rules. In practice this penalty would be small, on the order of a few percent at most. Second, the MOSIS rules may not allow you to use all the features that a particular foundry or process supports. Third, the MOSIS rules are compatible with only a few processes- A look at the MOSIS website reveals that these rules are usable with two foundries. If you are willing to be constrained to just these two foundries (and both are good!), and if you don’t need some exotic unsupported feature, for most designs this approach will work.&lt;/p&gt;
&lt;p&gt;The same concept used to make these MOSIS design rules can be applied to other foundries. The only barrier is obtaining the cooperation of the foundry, who may not want details of their process revealed openly or simply may not want to spend resources supporting an additional set of design rules.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Workaround #2: Use an intermediate abstract layout&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The second workaround would be to set up an abstract design layer that is more detailed than “schematic” but less than that of “layout”. I envision something like what is depicted on the top of this post- A designer would create an abstract “layout” that instances cells such as gates, pads, or individual discrete components. Each of these cells would have a number of known “ports”, including power/ground lines, inputs, and outputs. For example an “AND2” gate may have two power ports (ground and power), two digital inputs, and one digital output, while a capacitor or resistor may have just two ports. Some cells, of course, would be the pads that allow the chip to be connected to the rest of the world.&lt;/p&gt;
&lt;p&gt;The designer would not need to know the specific layout of these cells or even their exact circuit diagram, but would need to know enough to use them in a design. The designer would instead have several page (or more) datasheet describing everything needed to use that cell. For example, it might be known that the AND2 gate requires 5ns to settle and can source up to 10uA of current, or that a specific capacitor cell holds 1pF but has 0.1pF of parasitic capacitance at one node. The designer could then create an abstract layout by dropping these cells at various locations on the chip, much like a PCB designer places “parts” on a circuit board layout. The designer could then draw the wires to connect the components together. Such a design tool could have autorouting features. The design tool would then perform basic design rule checks.&lt;/p&gt;
&lt;p&gt;Once the design is complete, this abstract level design file would be exported and sent to either the foundry or a “middle man”. The foundry or middle man would then be responsible for generating the final layout files from the abstract layout. Finally, the foundry could fabricate the chip.&lt;/p&gt;
&lt;p&gt;The disadvantage of this approach is that the design is still only “partially open”. However at least the abstract layout could be made “open” and freely shared or released with appropriate open source licenses as desired.&lt;/p&gt;
&lt;p&gt;There would be another benefit to this approach- The workflow would be more similar to that of making a PCB, in both the steps taken and the complexity. This approach would make chip design more accessible to a “casual” chip designer.&lt;/p&gt;
&lt;p&gt;In my next post, I will discuss economic issues associated with chip fabrication.&lt;/p&gt;</description>
	<pubDate>Wed, 07 Sep 2011 20:00:00 +0000</pubDate>
</item>
<item>
	<title>Peter Zotov, whitequark: Fixing ACPI on Samsung N250</title>
	<guid>http://whitequark.org/blog/2011/09/04/fixing-acpi-on-samsung-n250</guid>
	<link>http://whitequark.org/blog/2011/09/04/fixing-acpi-on-samsung-n250/</link>
	<description>&lt;p&gt;In this article I&amp;#8217;d like to describe some of the typical BIOS design flaws of a modern netbook, and methods which can be used to locate, dissect and heal the bugs.&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;First of all, &lt;a href=&quot;http://en.wikipedia.org/wiki/ACPI&quot;&gt;ACPI&lt;/a&gt; is a generic management interface which controls a lot of hardware functions on modern computers ranging from power and battery control to detecting external displays.
It consists of a several configuration &lt;em&gt;tables&lt;/em&gt;, one of which contains code for a virtual machine to be executed by an operating system kernel. The latter was added to make the system as flexible as possible.&lt;/p&gt;

&lt;p&gt;Theoretically, this system should have been made hardware-specific chipset drivers unneccessary. It is quite potent (not to say overblown) and is definitely able to accomplish the task; Macs are a good example, as they use ACPI extensively and correctly.&lt;/p&gt;

&lt;p&gt;In reality, however, PC-based hardware vendors would supply buggy and incomplete ACPI tables for their systems, and vendor lock-in appears not as the least reason to me. Therefore, such systems require numerous nontrivial workarounds, often flawed and undocumented. I&amp;#8217;ve attempted to fix the ACPI itself for a particular computer instead.&lt;/p&gt;

&lt;p&gt;The system I have is a Samsung N250+ netbook. It has quite good hardware (except for battery-hungry and quirky Broadcom WLAN card which I have replaced with a better one by Atheros), but the ROM BIOS quality is really poor. At the moment of release there even was no way of enabling the wireless card on a Linux system; its state could be changed via CMOS Setup, through. Now there is a kernel driver, but it uses a fundamentally flawed approach, too (and it has some &lt;a href=&quot;http://comments.gmane.org/gmane.linux.drivers.platform.x86.devel/2403&quot;&gt;usability problems&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;Examining the current state&lt;/h2&gt;

&lt;p&gt;Support for features of the laptop which ACPI has lacked was initially provided by an &lt;a href=&quot;http://code.google.com/p/easy-slow-down-manager/&quot;&gt;easy slow down manager&lt;/a&gt; kernel module, which was eventually merged to the kernel under the name &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=blob;f=drivers/platform/x86/samsung-laptop.c;h=d347116d150e38146eedf6e817e51afc84898169;hb=HEAD&quot;&gt;samsung-laptop.c&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As can be seen on &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=blob;f=drivers/platform/x86/samsung-laptop.c;h=d347116d150e38146eedf6e817e51afc84898169;hb=HEAD#l725&quot;&gt;line 725 of the source&lt;/a&gt;, this driver uses SMI calls (via an interface called SABI) to set the backlight level, change performance mode (this actually changes just the fan speed) and control the wireless card power. An &lt;abbr title=&quot;System Management Interface&quot;&gt;SMI&lt;/abbr&gt; call is a command which leads CPU into so-called System Management Mode: a special processor and chipset feature which is equally similar to a hypervisor and a rootkit.&lt;/p&gt;

&lt;p&gt;BIOS can set up the chipset to intercept certain operations (like accessing memory or I/O ports) and launch SMM, which cannot be detected nor interrupted by OS. It then may execute arbitrary code: for example, SMM is used to trick old OSes (think of DOS) to believe that a USB mouse is actually a PS/2 one without any changes to the OS itself. Moreover, a memory area which belongs to SMM under no circumstances can be accessed by the OS, making it impossible to study its behavior directly.&lt;/p&gt;

&lt;p&gt;Hopefully, in this case SMI calls probably just change a byte or two, and it may be possible to determine their locations without examining SMM code itself.&lt;/p&gt;

&lt;p&gt;Next, let&amp;#8217;s take a look at the ACPI tables. There are plenty of them, but we need one called &lt;em&gt;&lt;abbr title=&quot;Differentiated System Description Table&quot;&gt;DSDT&lt;/abbr&gt;&lt;/em&gt;&lt;/p&gt;—the biggest and most important one which contains handlers for a huge number of possible hardware events.

&lt;p&gt;To dump the tables and rework the code two utilites are required: &lt;code&gt;acpidump&lt;/code&gt; and &lt;code&gt;iasl&lt;/code&gt;. On a Debian-based system they can be found in packages with same names.&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt; sudo acpidump -o dsdt.aml -b
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt; iasl -d dsdt.aml &lt;span class=&quot;c&quot;&gt;# generates dsdt.dsl&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;To ease the demonstration, I&amp;#8217;ve uploaded the table on &lt;a href=&quot;http://github.com/whitequark/n250-dsdt&quot;&gt;github&lt;/a&gt;; initial state can be checked out &lt;a href=&quot;https://github.com/whitequark/n250-dsdt/commit/35fca49c1b5ae8b85603aeaedec9ed30c604ba79/&quot;&gt;here&lt;/a&gt;. As you can see, the table is quite big at more than 5000 lines; tables more than 25000 lines long are not uncommon.&lt;/p&gt;

&lt;p&gt;At an attempt to compile the table back to bytecode (try &lt;code&gt;make&lt;/code&gt;) without any changes, the compiler will spit out a few warnings and errors. They are quite trivial to fix just by looking at error messages and &lt;a href=&quot;http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf&quot;&gt;ACPI specification&lt;/a&gt;; this &lt;a href=&quot;http://forums.gentoo.org/viewtopic.php?t=122145&quot;&gt;Gentoo forum thread&lt;/a&gt; has some pointers as well. Note that while the manual is &lt;em&gt;7 years&lt;/em&gt; older than my notebook, the latter has roughly same quirks as described (and fixes do work, too). Fixed version can be found &lt;a href=&quot;https://github.com/whitequark/n250-dsdt/commit/513e61875a3b2cb2ade0911d24fe72cbb85e275a&quot;&gt;at this commit&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Repairing backlight&lt;/h2&gt;

&lt;p&gt;My netbook has LED backlight, which means that its brightness could be controlled simply by keeping it on for a known part of time, e.g. to dim it by 30% one could keep it on just for 70% of time. To make the flickering invisible, this switching (called &lt;a href=&quot;http://en.wikipedia.org/wiki/Pulse-width_modulation&quot;&gt;PWM&lt;/a&gt;) is done on a frequency far above the sensitivity level of a human eye—200 kHz is good enough.&lt;/p&gt;

&lt;p&gt;In this case, PWM &lt;em&gt;duty cycle&lt;/em&gt; is probably controlled by an integrated graphics controller. We can see it on a PCI bus:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt; lspci
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;00:00.0 Host bridge: Intel Corporation N10 Family DMI Bridge&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;00:02.1 Display controller: Intel Corporation N10 Family Integrated Graphics Controller&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;&amp;lt;...&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;The numbers &lt;code&gt;00:02.0&lt;/code&gt; are an address of the device on the bus. With this address, we can inspect and modify the properties of the device, as Linux provides numerous &lt;a href=&quot;http://en.wikipedia.org/wiki/Sysfs&quot;&gt;sysfs&lt;/a&gt; hooks for that purpose. One of them is an ability to read and write &lt;a href=&quot;http://en.wikipedia.org/wiki/PCI_configuration_space&quot;&gt;PCI configuration space&lt;/a&gt;: a memory block of 256 bytes used to configure a PCI device. First 64 of them have predefined meaning; other ones can be freely used by device vendor.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s check what changes in the device configuration when we alter backlight level with an SMM-based driver (note that it would be perfectly possible with a closed-source driver or even on Windows: all you need is a tool to scrap the configuration space):&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;#&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;7 &amp;gt;/sys/class/backlight/samsung/brightness
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;#&lt;/span&gt; hexdump -C /sys/bus/pci/devices/0000&lt;span class=&quot;se&quot;&gt;\:&lt;/span&gt;00&lt;span class=&quot;se&quot;&gt;\:&lt;/span&gt;02.0/config &amp;gt;config-1
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;#&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;5 &amp;gt;/sys/class/backlight/samsung/brightness
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;#&lt;/span&gt; hexdump -C /sys/bus/pci/devices/0000&lt;span class=&quot;se&quot;&gt;\:&lt;/span&gt;00&lt;span class=&quot;se&quot;&gt;\:&lt;/span&gt;02.0/config &amp;gt;config-2
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gp&quot;&gt;#&lt;/span&gt; diff -u config-1 config-2
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;--- config-1 2011-09-05 01:06:13.326930250 +0400&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;+++ config-2 2011-09-05 01:06:21.503828025 +0400&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;@@ -13,5 +13,5 @@&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;000000c0  00 00 00 00 01 00 00 00  00 00 00 00 a7 00 00 00  |................|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt; 000000d0  01 00 22 00 00 00 00 00  00 00 00 00 00 00 00 00  |..&amp;quot;.............|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt; 000000e0  00 00 00 00 00 00 00 00  00 80 00 00 00 00 00 00  |................|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;-000000f0  79 00 00 00 ff 00 00 00  ad 0f 00 00 7c 0e 5c 7f  |y...........|.\.|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt;+000000f0  79 00 00 00 73 00 00 00  ad 0f 00 00 7c 0e 5c 7f  |y...s.......|.\.|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;go&quot;&gt; 00000100&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;So, the byte at index &lt;code&gt;0xf4&lt;/code&gt; controls the brightness level. This can be verified by running &lt;code&gt;sudo setpci -s 00:02.0 f4.b=80&lt;/code&gt; (replacing the &lt;code&gt;80&lt;/code&gt; with a brightness value).&lt;/p&gt;

&lt;p&gt;Now, let&amp;#8217;s set up DSDT code to update this value (and possibly determine the cause for it to not work in first place).&lt;/p&gt;

&lt;p&gt;According to &lt;a href=&quot;http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf&quot;&gt;ACPI specification&lt;/a&gt; (section B.6.2, page 704), a compliant graphic adapter description should implement methods &lt;code&gt;_BCL&lt;/code&gt;, &lt;code&gt;_BCM&lt;/code&gt; and &lt;code&gt;_BQC&lt;/code&gt;. Our DSDT has these methods defined at &lt;a href=&quot;https://github.com/whitequark/n250-dsdt/blob/513e61875a3b2cb2ade0911d24fe72cbb85e275a/dsdt.dsl#L1767&quot;&gt;line 1767&lt;/a&gt;. Here is the annotated source code:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;29&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;31&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;33&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;34&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;35&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;36&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;37&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;38&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;39&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;41&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;42&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;43&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;44&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;45&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;46&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;47&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;48&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;49&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;51&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;52&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;53&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;54&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;55&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;56&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;57&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;58&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;59&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;61&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;62&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;63&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;64&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;c&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;/*  = Query List of Brightness Control Levels Supported =&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * Returns an array (Package in ACPI terms) which contains&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * supported and preferred backlight levels.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_BCL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotSerialized&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/* Flip a bit in GVNS system memory region (line 132).&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;       I don't know what it does. */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Or&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;VDRV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;VDRV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Package&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mh&quot;&gt;0x08&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* Preferred level for AC power */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x05&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* Preferred level for battery power */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x0F&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* A list of valid brightness levels */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x18&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* 24 */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x1E&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* 30 */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x2D&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* 45 */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x3C&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* 60 */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x50&lt;/span&gt;  &lt;span class=&quot;cm&quot;&gt;/* 80 */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;/*  = Set the Brightness Level =&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * Receives the target brightness in Arg0.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * OS guarantees that it will be included in list&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * returned by _BCL method.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_BCM&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotSerialized&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/* Divide Arg0 by 10. Remainder goes to Local0, result&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * is placed in Local1. */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Divide&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Arg0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x0A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Local0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Local1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/* Predicate names are beginned with L (from &amp;quot;Logic&amp;quot;) in&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * ACPI. Here, LEqual(Local0, 0x00) may be written as&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * (Local0 == 0x00) in C.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     *&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * As you can see, for half of valid brightness levels this&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * will silently do nothing.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LEqual&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Local0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x00&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;cm&quot;&gt;/* Pass the target level to BRTW function (line 5324).&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;         * It does not work. */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;BRTW&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Arg0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;/*  = Brightness Query Current level =&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * Return current level. The value should be contained in&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; * list returned by _BCL method.&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_BQC&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotSerialized&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/* See above. */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Divide&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BRTL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x0A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Local0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Local1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;If&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LEqual&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Local0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x00&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;cm&quot;&gt;/* Return BRTL value, which should have been updated&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;         * by BRTW function (at line 5341). */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;n&quot;&gt;Return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BRTL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;To make this work via PCI configuration space writing, a new field first should be defined in an ACPI structure describing that space. The adapter has an address of &lt;code&gt;00:02.0&lt;/code&gt;; this corresponds to a value of &lt;code&gt;0x00020000&lt;/code&gt; ACPI can understand as an address of a PCI device (section 6.1.1 on page 200). A device with such an address is defined at &lt;a href=&quot;https://github.com/whitequark/n250-dsdt/blob/513e61875a3b2cb2ade0911d24fe72cbb85e275a/dsdt.dsl#L1325&quot;&gt;line 1325&lt;/a&gt;; the PCI configuration space description follows.&lt;/p&gt;

&lt;p&gt;As was said, first 64 (&lt;code&gt;0x40&lt;/code&gt;) bytes in this space are reserved for internal purposes. Because of that, ACPI does not even include them to the region: it is defined as &lt;code&gt;OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)&lt;/code&gt;, where third argument means a count of bytes skipped from the beginning. Our brightness byte with a whole-space address of &lt;code&gt;0xf4&lt;/code&gt; is located at position &lt;code&gt;0xb4&lt;/code&gt; in this region.&lt;/p&gt;

&lt;p&gt;Below that, field definitions are located. The whole &lt;code&gt;Field&lt;/code&gt; construct represents a stream of bit fields (the field length is defined in bits, not bytes), where one can be placed after another, or at a particular &lt;code&gt;Offset&lt;/code&gt; (contrary to fields, offsets are given in bytes). Let&amp;#8217;s call our brightness level field &lt;code&gt;BLVL&lt;/code&gt; and incorporate it to the structure:&lt;/p&gt;

 &lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;diff&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gu&quot;&gt;@@ -1347,7 +1347,8 @@ Device (IGD0)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                             Offset (0xB0),
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                             Offset (0xB1),
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                     CDVL,   5,
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gd&quot;&gt;-                            Offset (0xB2),&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gi&quot;&gt;+                            Offset (0xB4),&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;gi&quot;&gt;+                    BLVL,   8,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                             Offset (0xBC),
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                     ASLS,   32
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                 }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;As ACPI has hierarchical naming system, our field is now globally accessible as &lt;code&gt;\_SB.PCI0.IGD0.BLVL&lt;/code&gt; (the name is defined by the nesting of &lt;code&gt;Device&lt;/code&gt; and &lt;code&gt;Scope&lt;/code&gt; clauses). We can now rewrite three backlight control methods to access &lt;code&gt;BLVL&lt;/code&gt; field directly:&lt;/p&gt;

&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;c&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_BCL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotSerialized&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/* It's a good idea to keep things you don't know&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * what they do. */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Or&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;VDRV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;VDRV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;cm&quot;&gt;/* Levels at PCI control point range from&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cm&quot;&gt;     * 0x00 to 0xff. Let there be 16 points. */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Package&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mh&quot;&gt;0x12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0xEE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* proposed on AC adapter on */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x22&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;cm&quot;&gt;/* proposed on AC adapter off */&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x22&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x33&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x44&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x55&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x66&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0x77&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x88&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0x99&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0xAA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0xBB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0xCC&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0xDD&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;mh&quot;&gt;0xEE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mh&quot;&gt;0xFF&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_BCM&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotSerialized&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Store&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Arg0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_SB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PCI0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IGD0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BLVL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_BQC&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NotSerialized&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;n&quot;&gt;Return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_SB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PCI0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IGD0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BLVL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;p&gt;Updated DSDT can be found in the &lt;a href=&quot;https://github.com/whitequark/n250-dsdt/commit/5263e541ffc223325136a78e49008cc7c988a3b8#diff-0&quot;&gt;repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While testing the changes, I&amp;#8217;ve encountered a need for debugging the code. This can be done with a &lt;code&gt;Store (something, Debug)&lt;/code&gt; command. Don&amp;#8217;t forget to enable ACPI debug output by adding &lt;code&gt;acpi.debug_level=0x1f&lt;/code&gt; parameter to kernel command line.&lt;/p&gt;

&lt;p&gt;The changed and compiled (&lt;code&gt;iasl -tc dsdt.dsl&lt;/code&gt;) DSDT should now replace vendor-provided one. To achieve the goal, we could reflash the BIOS—but it is not even known where DSDT is located in it. So, a simpler approach can be used: Linux can be instructed to ignore the DSDT found in system RAM and load a provided one instead. To do that, you should place compiled file &lt;code&gt;dsdt.hex&lt;/code&gt; (verify that it contains a C array definition; the &lt;code&gt;-tc&lt;/code&gt; option instructs &lt;code&gt;iasl&lt;/code&gt; to emit one) in &lt;code&gt;include/&lt;/code&gt; directory of Linux source tree and set option &lt;code&gt;CONFIG_ACPI_CUSTOM_DSDT_FILE&lt;/code&gt; to &lt;code&gt;dsdt.hex&lt;/code&gt;. (To be able to access the latter, you should turn off &lt;code&gt;CONFIG_STANDALONE&lt;/code&gt;; it is named “Select only drivers that do not need compile-time external firmware” and located in “Generic driver options”.)&lt;/p&gt;

&lt;p&gt;Compile the modified kernel and reboot. Voilá: ACPI driver can now set backlight level. (Try &lt;code&gt;echo 7 &amp;gt;/sys/class/backlight/acpi_video0/brightness&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;Other features&lt;/h2&gt;

&lt;p&gt;To locate other fields in the PCI configuration space which might be changed by SMM-based driver, I wrote a &lt;a href=&quot;https://gist.github.com/1193679&quot;&gt;simple script&lt;/a&gt;. Note that some devices, namely PCI-Express bridges and network adapters, have a lot of spurious changes which happen in background on their own.&lt;/p&gt;

&lt;p&gt;Sadly, not the fan speed nor wireless rfkill switch state were not linked to any changes within the configuration space. I guess that they may be done through &lt;a href=&quot;http://www.coreboot.org/Embedded_controller&quot;&gt;Embedded Controller&lt;/a&gt; and via &lt;a href=&quot;http://en.wikipedia.org/wiki/SMBus&quot;&gt;SMBus&lt;/a&gt; interface, which means that no permanent changes are accumulated in the system RAM itself, and all of the processing is buried deep inside the SMM BIOS.&lt;/p&gt;

&lt;p&gt;Moreover, even if I could find the rfkill interface, there is no standard way to describe it in ACPI. On laptops where it actually is exported via ACPI, there is a platform-specific driver handling that (contrary to the backlight, which can be controlled in a generic way).&lt;/p&gt;</description>
	<pubDate>Sun, 04 Sep 2011 03:42:00 +0000</pubDate>
</item>
<item>
	<title>GNU Radio Blog: Howto receive and decode NOAA APT images with the Funcube Dongle and Gqrx</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/451-howto-receive-and-decode-noaa-apt-images-with-the-funcube-dongle-and-gqrx</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/451-howto-receive-and-decode-noaa-apt-images-with-the-funcube-dongle-and-gqrx</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6100859826/&quot; title=&quot;NOAA-18 APT reception by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6086/6100859826_4d2a8ca3cd_t.jpg&quot; border=&quot;0&quot; alt=&quot;NOAA-18 APT reception&quot; width=&quot;100&quot; height=&quot;56&quot; /&gt;&lt;/a&gt;One of the great advantages of software defined radio receivers is that tuning receiver settings is a matter of adjusting software parameters. Gqrx is no different here and has optimal settings built in for weather satellite reception. This tutorial describes how to receive automatic picture transmissions (APT) from NOAA weather satellites using &lt;a href=&quot;http://www.oz9aec.net/index.php/gnu-radio/gqrx-sdr&quot;&gt;Gqrx SDR&lt;/a&gt;, record them to a WAV file, and finally decode the images using the free and open source Atpdec decoder. If you follow this guide you can end up with very nice results such as the one shown at the end.&lt;/p&gt;

&lt;p&gt;I have used the Funcube Dongle with an Arrow antenna for this example but any receiver hardware supported by Gqrx can be used, provided that it can receive the required bandwidth, which is around 40 kHz.&lt;/p&gt;
&lt;h2&gt;Step 1: Reception and recording&lt;/h2&gt;
&lt;p&gt;NOAA APT transmissions are analog transmissions. The data coming from the imaging sensors is used to amplitude modulate a 2.4 kHz sub-carrier, which is then used to FM modulate the VHF carrier at 137.x MHz. The FM deviation is 17 kHz and using the &lt;a href=&quot;http://en.wikipedia.org/wiki/Carson_bandwidth_rule&quot;&gt;Carson bandwidth rule&lt;/a&gt; we get a channel bandwidth of&lt;/p&gt;
&lt;p&gt;BW = 2 × (17 + 2.4) kHz = 38.8 kHz&lt;/p&gt;
&lt;p&gt;Hence the requirement for 40 kHz bandwidth. In fact, a few kHz more will not hurt but allow to track the signal during the whole pass without any active Doppler tuning.&lt;/p&gt;
&lt;p&gt;The Funcube Dongle uses 96 ksps sample rate and has an effective bandwidth of 80 kHz. Thus there is just about enough bandwidth to have the APT signal on one side and avoid interference from the DC spike, which can not be completely eliminated at these frequencies.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6100859826/&quot; title=&quot;NOAA-18 APT reception by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6086/6100859826_4d2a8ca3cd_z.jpg&quot; border=&quot;0&quot; alt=&quot;NOAA-18 APT reception&quot; width=&quot;640&quot; height=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Start by tuning the FCD PLL to 23 kHz above or below the satellite frequency. For example, NOAA-18 transmits on 137.9125 MHz and I tuned the FCD to 137.935 MHz. Then tune the channel filter so that the RX frequency will correspond to the satellite frequency (see the Gqrx screenshot above).&lt;/p&gt;
&lt;p&gt;In the demodulator options select FM with 17k deviation and disable de-emphasis by setting the filter time constant tau to 0.&lt;/p&gt;
&lt;p&gt;When the satellite comes in range, start the audio recorder by pressing the red dot in the Audio settings. Note that the red dot in the toolbar is the I/Q data recorder – we don't need that here.&lt;/p&gt;
&lt;p&gt;






&lt;/p&gt;
&lt;p&gt;Watch video on &lt;a href=&quot;http://www.youtube.com/watch?v=QBlCXcRwMaU&quot;&gt;YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you can see I have very good signal above; about 20 dB C/N when the satellite is close to the horizon and almost 40 dB C/N at the time of closest approach. The recording was made in a relatively quiet area and I had LNA gain reduced to 10 dB.&lt;/p&gt;
&lt;p&gt;Don't forget to stop the audio recorder when the pass finishes, otherwise the WAV file will have corrupt header.&lt;/p&gt;
&lt;p&gt;Note that Doppler tuning is not necessary as long as the channel filter is wide enough. This is an advantage (maybe the only advantage?) of FM modulation: The Doppler shift will be seen as a moving DC offset in the audio but the audio amplitude, which is the important parameter for APT, will not be influenced. This assumes that the audio level is sufficiently below the maximum level, otherwise a DC shift will saturate and clip the samples. You may have to experiment with the settings before you find the optimal volume; however, the -15 dB audio gain I am using will probably also work for you.&lt;/p&gt;
&lt;h2&gt;Step 2: Convert the recorded audio&lt;/h2&gt;
&lt;p&gt;Gqrx records audio WAV files at 48 kHz. We need to convert it to 11.025 kHz WAV. If you have a favorite conversion program just do it your way. I often import the WAV file into &lt;a href=&quot;http://audacity.sourceforge.net/&quot;&gt;Audacity&lt;/a&gt; where I can also cut any noise from the beginning and the end. In audacity you need to use Track → Resample, then also change the project rate from 48 to 11.025 kHz (maybe it is sufficient to change the project rate?). When finished export the audio to a new WAV file.&lt;/p&gt;
&lt;p&gt;In case you end up with a corrupt WAV file (gqrx is in testing phase ;-) you can still use &lt;a href=&quot;http://www.videolan.org/vlc/&quot;&gt;VLC&lt;/a&gt; or &lt;a href=&quot;http://sox.sourceforge.net/&quot;&gt;Sox&lt;/a&gt; to resample it.&lt;/p&gt;
&lt;h2&gt;Step 3: Decode image from audio recording&lt;/h2&gt;
&lt;p&gt;Now that we have an 11.025 kHz WAV file we can use &lt;a href=&quot;http://atpdec.sourceforge.net/&quot;&gt;Atpdec&lt;/a&gt; to decode the APT image from it. The latest stable version is &lt;a href=&quot;http://sourceforge.net/projects/atpdec/files/atpdec%20sources/&quot;&gt;1.7&lt;/a&gt; from 2005, but it appears to be sufficient and is easy to build compared to the &lt;a href=&quot;http://sourceforge.net/scm/?type=cvs&amp;group_id=92007&quot;&gt;latest code in the CVS repository&lt;/a&gt;. If you read the README file you'll see that it requires libsndfile and libpng to compile. All of these are pretty standard and available for all Linux. Remember that we need the -dev or -devel packages when compiling against libraries, i.e. libsndfile-dev or libsndfile-devel.&lt;/p&gt;
&lt;p&gt;The README file also contains necessary information about the usage of atpdec. I have used&lt;/p&gt;
&lt;pre&gt;  atpdec -s 18 -i ab recording.wav&lt;/pre&gt;
&lt;p&gt;but you can of course use whatever you wish. Note that NOAA-19 is not included in Atpdec version 1.7, for that you will need the latest version from CVS. At the time of writing, the code in CVS does not compile for me.&lt;/p&gt;
&lt;h2&gt;Step 4: Enjoy and experiment&lt;/h2&gt;
&lt;p&gt;Below you can see an image I received from NOAA-18 on August 28, 2011. As mentioned above, I used the Funcube Dongle and a simple Arrow antenna.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/csete/6100331029/&quot; title=&quot;NOAA-18 APT image received with Gqrx and Funcube Dongle by csete, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6201/6100331029_c0ec7e1cbe_z.jpg&quot; border=&quot;0&quot; alt=&quot;NOAA-18 APT image received with Gqrx and Funcube Dongle&quot; width=&quot;518&quot; height=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you have mastered basic reception, you should start experimenting with the receiver settings. I would also be interested to see scripts / hacks that perform automatic recording and decoding. I guess that will be easier once I implement the scheduler in gqrx.&lt;/p&gt;
&lt;p&gt;In any case, I hope you'll have fun with this area of space communications!&lt;/p&gt;</description>
	<pubDate>Wed, 31 Aug 2011 19:17:25 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Chip design, open source, and DIY: Part 1, Indie chip design</title>
	<guid>tag:diydrones.com,2011-08-24:705844:BlogPost:592410</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:592410</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/K3m*zkW3BC3YcZSgymyMEyvvzP45hEJgmKj6662OrBG-JI4QWPIYI5ArXPUiJumv0GeUKwOVmDSkoKiVpeuva3L8lBNHUBYV/header.jpg&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/K3m*zkW3BC3YcZSgymyMEyvvzP45hEJgmKj6662OrBG-JI4QWPIYI5ArXPUiJumv0GeUKwOVmDSkoKiVpeuva3L8lBNHUBYV/header.jpg?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;em&gt;Above: Simple circuit using a transistor (an N-channel MOSFET), a resistor, and a capacitor. Left shows the schematic, right shows the layout.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Following discussions from a &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/new-image-sensor-chips-for-robotics-and-embedded-vision&quot; target=&quot;_blank&quot;&gt;previous post here&lt;/a&gt;, I’m writing a three-part blog post on chip design, as I experience it professionally, and how I see it relating to both the open source community and the DIY crowd. This first post will discuss the chip design process itself. I am going to focus on what could be called “indie chip design” as it may be executed by a small company or even a single person. Obviously I can’t explain how to design the next hot microcontroller in a single blog post, but you should get a flavor for how this process is similar to and different from, say, designing a printed circuit board (PCB).&lt;/p&gt;
&lt;p&gt;First a little background- I work in a small company Centeye that makes image sensor chips for various embedded vision and robotic applications. These designs incorporate both digital and analog circuitry, including pixel circuits, on the same chip. Due to our size (and budget!) we favor a minimalist approach to these image sensors. The chips themselves typically have anywhere from a thousand to at most several million transistors and are simple enough in architecture that one person (e.g. me) can handle the whole design. Our chips are three to six orders of magnitude simpler (by transistor count) than a contemporary processor or GPU chip, which currently contain up to several billion transistors.&lt;/p&gt;
&lt;p&gt;The “complexity” of any design is an important consideration. Consider how much the complexity of a PCB can vary. At one end you have a 10-plus layer state-of-the-art computer motherboard. At the other end you can have a single layer PCB that uses a basic Atmel and a few discrete parts to blink an LED. Both of these are “circuit boards”, but one can be designed by a single person in a fraction of an hour while the other requires specialized (e.g. expensive) software and a team of engineers putting in person-years of effort. The design methodologies are certainly different for each board- You can take a cowboy approach and “wing it” when designing the blinking LED board. But the computer motherboard requires careful and rigorous preliminary research, planning, and coordination between the designers. Now I don’t want to imply that I design chips with a cowboy approach (well not usually) but the simplicity of our designs allows for different methodologies than what are needed for, say, designing a new GPU.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;The PCB design process&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As a starting point, that more people here would be familiar with, let’s first consider the PCB design process that one might follow if using a set of tools like Eagle. You might follow these steps:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Specification&lt;/span&gt;: Decide what you want to make. Decide some basic components to include (e.g. what processor to use or other desired components). Decide the interface, for example how you power and “talk to” the board if there is an I/O aspect.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Sketching and Research&lt;/span&gt;: Sketch out different sections of the board schematic (on paper or with Eagle), read datasheets, and determine what exact components you need. (For example- what voltage regulators do you need, what caps / resistors do those regulators need, and so on.)&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Schematic Entry&lt;/span&gt;: Enter the schematic diagram.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Board Layout&lt;/span&gt;: Place components in desired locations, and then route, route, route to make all the desired electrical connections between them.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Verification&lt;/span&gt;: Run design rule checks. You need to verify, for example, that routed wires are thick enough, that unconnected wires are not too close together, and that no routing is too close to the board's edge or to holes. Run electrical rule checks to make sure that you didn’t accidentally connect two nodes that should be separate.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Fabricate&lt;/span&gt;: Generate the Gerbers and get the board made.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Populate&lt;/span&gt;: Solder components to the board. When done, power it up and test it.&lt;/p&gt;
&lt;p&gt;Depending on the board, you may do some of the above steps in parallel and/or repeat earlier steps if you find some problem with the design, for example if the components don’t fit in a desired space.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Chip layout vs. PCB layout&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The most fundamental way that chip design is different from PCB design is in the purpose of the layout. For PCBs, the &quot;layers&quot; of the layout define the electrical connections between the different components that will be soldered to the board. Some layers define etched copper patterns to form &quot;wires&quot;, while other layers define “vias” for electrical contact between layers.&lt;/p&gt;
&lt;p&gt;For an example of chip layout, look at the photo on the top of this post for details. On a chip layout, some layers are similarly used to form such electrical connections. Generally these are the “metal” layers with a low resistance, and are often made on the actual chip with aluminum or copper. This appears as &quot;blue&quot; in the above layout. There are also “via” and “contact” layers defining similar connections between layers, visible above as black squares.&lt;/p&gt;
&lt;p&gt;However there are other layers that are used to actually form devices when geometric objects are drawn according to well-defined rules. When designing a chip, you not only draw the wiring between transistors, capacitors, and resistors, but you also draw those transistors, capacitors, and resistors themselves.&lt;/p&gt;
&lt;p&gt;For example, there is one red layer called “polysilicon” which is a conductor but generally has a higher resistance. If you draw a long, thin wire of polysilicon, you get a resistor. (A long thin wire of metal also gives you a resistor but of much less resistance.) To form a capacitor, you can draw two plates of polysilicon on top of each other, with one plate located on “polysilicon 1” (light red) which is deeper in the chip and the other plate located higher up on “polysilicon 2 (dark red)”. They will be separated by a thin insulator, so that the two plates and insulator form a capacitor. A transistor (such as a MOSFET) can be formed by crossing a polysilicon wire over a box of “active” layer (green). I won’t describe all the possibilities- that could fill a textbooks- but hopefully you get the basic idea.&lt;/p&gt;
&lt;p&gt;In other words, the fundamental difference is that on a PCB, the geometric figures you draw define the electrical connections between components, while on a chip, the geometric figures also create the components themselves.&lt;/p&gt;
&lt;p&gt;As you can imagine, the “design rule checks” for chips are much more complicated. Fortunately all that is now automated.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Cells&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A chip design generally uses a hierarchical structure based on what we call “cells”. A basic cell may be an OR gate, a single capacitor, or a single pixel circuit. Then we can create higher level cells by “instancing” and connecting together existing lower level cells, and optionally adding new layout. For example, a pixel cell may contain a couple transistors and a photodiode, and routing for power line and output. Then a pixel array cell can be constructed from a large 2D array of individual pixel cells. Similarly a flip flop cell can be constructed from a few gates, and a register cell can be constructed from an array of flip flop cells. The “top level cell” would be the whole chip.&lt;/p&gt;
&lt;p&gt;This hierarchical structure is analogous to the hierarchical structure of a computer program. You have variables and individual instructions at the bottom level, then lower level functions that use these variables and instructions, higher level functions that call these lower level functions, and finally the “main” function at the top.&lt;/p&gt;
&lt;p&gt;In a chip design, the cell structure is present in both the schematic level and the layout. Consider a pixel cell: In the schematic entry software I use, elementary cells like “capacitor”, “resistor”, and “N-type transistor” are already defined. The pictures below show examples. To make a pixel cell I would instance the appropriate components (generally some transistors and a photodiode), draw wires to connect them, and create a “symbol” that represents the pixel cell. Then I would create an associated layout for the cell. This would be a drawing of the different layers (metal, polysilicon, active layer, etc.) that together create the electronic circuitry depicted in the schematic.&lt;/p&gt;
&lt;p&gt;Once I have created a cell, I would next “verify” it. This includes running design rule checks such as making sure wires are thick enough and that unconnected wires are not too close (sound familiar?). This also includes other more esoteric design rule checks such as making sure the different layers are properly drawn to form devices like transistors and capacitors. I also run a “layout vs schematic” test to make sure that both the schematic and layout versions of the cell show the same circuit. If needed, I may also perform a circuit simulation (using SPICE) to verify that the circuit should function as I intend. In the SPICE simulation I would present different inputs to the circuit and verify that the simulated output is as expected. For example for a NOT gate I would apply a digital 0 and then 1 and verify that the output was the opposite. I would also verify that the threshold voltage (the crossover from 0 to 1) is appropriate.&lt;/p&gt;
&lt;p&gt;Once a cell has been completed, I can then construct and verify higher level cells in the same manner. For example I could create a pixel array by instancing individual pixel cells. I would verify the pixel array cell and move on to the next cells until the chip is finished.&lt;/p&gt;
&lt;p&gt;One nice thing about the cell architecture is that once a cell is made, you can reuse it in other chip designs, either verbatim or with some changes. This is much like how you can re-use existing source code to write a new program. Also it is possible to acquire libraries of cells for many common circuits- I never design my own flip flop cells- I used existing flip flop cells that either the CAD tool company or the chip foundry has provided- I not only save time but have the peace of mind of using a cell that I know works.&lt;/p&gt;
&lt;p&gt;This ability to reuse cell designs is crucial for reducing design time. My record for designing a chip, start to finish, is three hours sitting in a Dupont Circle coffee house in DC back in 2001. All of the cells were reused, with one or two modified, except for the top level cell which was constructed from scratch. (Yes, that chip did work!)&lt;/p&gt;
&lt;p&gt;The three pictures below show sample layout and schematic of pixel cells.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/0GOmWuBQuoJPxbKT1xtpP4VoB-5oAjH1JqIS1aTkzTHcpLLKf6yRDBPTxHxox8Ox-z3QivJxhkisD-Ij7TBep9u9gCUtxYNS/pixel_layout.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/0GOmWuBQuoJPxbKT1xtpP4VoB-5oAjH1JqIS1aTkzTHcpLLKf6yRDBPTxHxox8Ox-z3QivJxhkisD-Ij7TBep9u9gCUtxYNS/pixel_layout.jpg&quot; width=&quot;733&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/fA3-mmKOBHaVDTPBNJlOsr1yAOYL3N3vNuGTvFI7e*o*iHePyS-UtsqKpWn2PxnRpt8VbEzI7jXGQ4L10Muz0x5oEgMHLfyl/pixel_schem.jpg&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Above: Layout of a single pixel cell. &quot;blue&quot; is the lowest metal layer e.g. metal1, &quot;grey&quot; is the second metal layer e.g. metal2, tan is the third metal layer e.g. metal3. White squares are &quot;vias&quot; between metal layers. The big area with right-hand cross hatches is the &quot;N&quot; side of the photodiode. The &quot;P&quot; side is the chip substrate itself.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/fA3-mmKOBHaVDTPBNJlOsr1yAOYL3N3vNuGTvFI7e*o*iHePyS-UtsqKpWn2PxnRpt8VbEzI7jXGQ4L10Muz0x5oEgMHLfyl/pixel_schem.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/fA3-mmKOBHaVDTPBNJlOsr1yAOYL3N3vNuGTvFI7e*o*iHePyS-UtsqKpWn2PxnRpt8VbEzI7jXGQ4L10Muz0x5oEgMHLfyl/pixel_schem.jpg&quot; width=&quot;401&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Above: Schematic diagram of a single pixel circuit. Node &quot;rowsel&quot; is used to select a row of pixels. Node &quot;out&quot; is the column output. Nodes &quot;prsupply&quot; and &quot;swvdd&quot; are effectively power supplies for the pixel.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/zEhvAB*XMUUD-D8P854eP7XClra1nkBijOLplaKDX9tgybOQWZullkvPgyjY5ilDXIkQDnSsgF1NGibvPK9i47ryl-LOUUU2/pixel16x16_layout.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/zEhvAB*XMUUD-D8P854eP7XClra1nkBijOLplaKDX9tgybOQWZullkvPgyjY5ilDXIkQDnSsgF1NGibvPK9i47ryl-LOUUU2/pixel16x16_layout.jpg?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Above: 16x16 array of single pixel circuits used to form a 16x16 focal plane array section.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class=&quot;font-size-4&quot;&gt;The Indie chip design process:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now I can summarize the process I use to design a new image sensor chip:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Specification&lt;/span&gt;: Typically I would hand draw a few critical items in my notebook. This may be the schematic diagram for individual pixel circuits or related subcircuits. This would also include a specification of the interface, such as how I want the digital signals provided to the chip to control the chip, and the nature of the output (analog, digital, etc.)&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Sketching and Research&lt;/span&gt;: Next I would sketch out a cell hierarchy for the chip, including initial hand-drawn schematic sketches for the most critical cells and how they interact. I would also look through existing designs and libraries for cells that I can reuse and/or modify.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Design the chip, cell by cell&lt;/span&gt;: Next I would go through the process of designing the cells that will make up the chip design. I would start out with the basic cells, construct both layout and corresponding schematic and symbols, and do any verification. Generally I would both create and verify a given cell before moving up the hierarchy.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Redesign&lt;/span&gt;: Sometimes it just happens that through the process of designing it you realize that something may not work or fit. In this case you just have to go back and change some aspect of the design.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Padframe&lt;/span&gt;: The padframe is a cell that contains all the “pads” which are the electrical contacts between the chip and the outside world.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Top level cell&lt;/span&gt;: I would then assemble and verify the top level cell of the chip.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Tape-out and Fab&lt;/span&gt;: The term “tape-out” is the chip design equivalent to making Gerber files for a PCB. I think this is an archaic term that comes from a time when the layout files were literally written to magnetic tape that was then mailed out to the fab company. Nowadays of course you just create the layout file and email it in.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Dicing and Packaging&lt;/span&gt;: The chips come back in wafers (see &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/new-image-sensor-chips-for-robotics-and-embedded-vision&quot; target=&quot;_self&quot;&gt;this previous post&lt;/a&gt;). We send them out to a company to dice them e.g. cut them up into individual dies. Packaging refers to the process of connecting the individual dies to some sort of package that allows you to solder them to a board. You can’t solder directly to the chip (the pads are between 60 and 100 microns wide!) so typically one uses a wire bonding machine to connect the chip to a package with 1-mil thick gold wire. We own a wire bonding machine so we just wire bond the chips directly to a test PC board, in a &lt;a href=&quot;http://embeddedeye.com/profiles/blogs/125mg-tinytam-sensor-part-2&quot; target=&quot;_self&quot;&gt;process described here&lt;/a&gt;. Once this is done we can then test the chip to verify it works.&lt;/p&gt;
&lt;p&gt;Cost? For a single chip design I’ve spent anywhere from $980 to $58k to get multiple (between 4 and 40) copies of a single chip design made. For wafers I’ve spent anywhere from about $18k to just under $100k to get multiple wafers containing multiple chip designs made, generally yielding four to eight thousand chips. (Note that for a fine-scale digital process used to make current GPUs or CPUs, you can probably spend millions.) As you make more the price drops further. The economies of scale are drastic. I will comment on that in another post.&lt;/p&gt;
&lt;p&gt;Time? You can get PCBs made the same day if you really need it. For chips I wait anywhere from 6 weeks to 4 months. Yes, the long wait can make one nervous…&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;font-size-4&quot;&gt;&lt;strong&gt;Simplicity and avoiding feature creep&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A final thought on the chip design process as I experience it- Simplicity rules! The final part of verifying a chip design is stressful since you really can’t fully verify the chip design, including how the individual cells interact, until you actually fabricate the chip. (Actually for digital circuits the behavior is generally predictable if you use the right practices, but analog circuits are more complicated.) The best I can do until then is to rely on circuit simulations of a limited set of scenarios, along with double, triple, and quadruple checking, and hope that the resulting design works.&lt;/p&gt;
&lt;p&gt;So as a result of this, I’ve found that the best habit to have is to be very choosy about what features to include and keep all aspects of the chip (interface, layout, topology, etc.) as simple as possible. The simpler the chip, the easier the layout and the verification, and the less opportunity you have to screw things up! The 80/20 principle is key here- Only include what is necessary. This can be a challenge because we engineers are notorious for saying “hey we can add this feature, and while we’re at it add that one and this other one too”.&lt;/p&gt;
&lt;p&gt;In my next post, I'll discuss issues the real issues I face when trying to &quot;open&quot; up chip designs, and how these may be addressed.&lt;/p&gt;</description>
	<pubDate>Thu, 25 Aug 2011 00:39:39 +0000</pubDate>
</item>
<item>
	<title>Zedstar: The Clashing Rocks</title>
	<guid>http://zedstar.org/blog/?p=232</guid>
	<link>http://zedstar.org/blog/2011/08/19/the-clashing-rocks/</link>
	<description>&lt;p&gt;This project is about using embedded Linux devices to detect, record and react to seismic events. The idea is to use accelerometers to detect shaking and then communicate this event to all other devices connected to the same broadcast group. We are developing the technology using &lt;a title=&quot;OpenWrt&quot; href=&quot;https://openwrt.org/&quot;&gt;OpenWrt&lt;/a&gt; which allows us to use a range of hardware including routers and pocket computing devices. We really like the idea of exploring emerging low-powered, low-bandwidth mesh networks in developing countries. In this &lt;a title=&quot;Video&quot; href=&quot;http://www.vimeo.com/27924004&quot;&gt;video&lt;/a&gt; you can see some early work using a network of &lt;a title=&quot;Ben NanoNote&quot; href=&quot;http://en.qi-hardware.com/wiki/Ben_NanoNote&quot;&gt;Ben NanoNote&lt;/a&gt; computers fitted with &lt;a title=&quot;WPAN&quot; href=&quot;http://en.qi-hardware.com/wiki/Ben_WPAN&quot;&gt;WPAN&lt;/a&gt; hardware. Three devices are connected to a &lt;a title=&quot;Spread&quot; href=&quot;http://spread.org&quot;&gt;Spread&lt;/a&gt; daemon running on a co-ordinating device. Because our current hardware lacks accelerometers we run a program on one device to send fake accelerometer data onto the network. Each device should then pick up this data across our wireless network. We are currently able to get some basic support for IP networking using a &lt;a title=&quot;dirtpan&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/ben-wpan/source/tree/master/tools/dirtpan&quot;&gt;hack&lt;/a&gt; by Werner Almesberger who also developed the WPAN hardware.  In the &lt;a title=&quot;Video&quot; href=&quot;http://www.vimeo.com/27924004&quot;&gt;video&lt;/a&gt; you can see the devices display a bar graph indicating it received data. Only one bar is registered as only one device is transmitting. This bar graph could act as a finger print for deciding the scale of seismic activity in a larger network. We intend to add some more intelligence to this part by building a some kind of knowledge system. Currently the project is at a very early stage with some basic infrastructure developed in C. The aim is to extend this infrastructure by embedding &lt;a title=&quot;GNU Guile&quot; href=&quot;http://www.gnu.org/s/guile/&quot;&gt;GNU Guile&lt;/a&gt;. This will allow us to dynamically control how we communicate, store and process the structured data shared amongst devices. Part of this system will involve trying to minimise the quantity of structured data exchanged on the network by serialising to bit-level using &lt;a title=&quot;Packedobjects&quot; href=&quot;http://zedstar.org/packedobjects/&quot;&gt;Packedobjects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Further details of the project can be found at &lt;a title=&quot;TCR&quot; href=&quot;http://theclashingrocks.org&quot;&gt;The Clashing Rocks wiki.&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 19 Aug 2011 23:22:38 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: New Image Sensor Chips for Robotics and Embedded Vision</title>
	<guid>tag:diydrones.com,2011-08-10:705844:BlogPost:552375</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:552375</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/OQS0rJUkCW4T0xzOsNz*7QYHLmoV-Z-Otwk4Ct63tYOU-tE7OZXOJKs-onS9TOS7kUTlFug8X-t4GWfMxJDCbP*0TQKhDpvm/IMG00333201108021359.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/OQS0rJUkCW4T0xzOsNz*7QYHLmoV-Z-Otwk4Ct63tYOU-tE7OZXOJKs-onS9TOS7kUTlFug8X-t4GWfMxJDCbP*0TQKhDpvm/IMG00333201108021359.jpg?width=640&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/ZqYVBu2Br2i0xqJJOQAi7UVFHugtVDcWBA*e5yKHnykCIXxkNyNcvXipi7EXeW5tu9lV6fAakz-sZitqV7hqVf85vmleX5pq/IMG00365201108021410.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/ZqYVBu2Br2i0xqJJOQAi7UVFHugtVDcWBA*e5yKHnykCIXxkNyNcvXipi7EXeW5tu9lV6fAakz-sZitqV7hqVf85vmleX5pq/IMG00365201108021410.jpg?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;I just got back some new silicon! These are the latest image sensor chips I designed specifically for robotics and embedded vision applications. The pictures above show a full wafer followed by a close-up of the wafer from an angle. There are four chips in each reticle- if you look closely you can see them packed into a rectangle (about 8.8mm by 7.0mm). Shortly after that picture was taken, we had the wafer diced up into individual chips and started playing with them!&lt;/p&gt;
&lt;p&gt;One of the chips is named “Stonyman” and is a 112 x 112 image sensor with logarithmic-response pixels and in-pixel binning. You can short together MxN blocks (M and N independently selected from 1, 2, 4, or 8) of pixels to implement bigger pixels and quickly read out the image at a lower resolution if desired. The interface is extremely simple- there are five digital lines that you pulse in the proper sequence to configure and operate the chip, and a single analog output holding the pixel value. With two power lines (GND and VDD) only eight connections are necessary to use this chip.&lt;/p&gt;
&lt;p&gt;Another chip is named “Hawksbill” and is a 136 x 136 image sensor, also with logarithmic response pixels (but no binning) and the same interface as Stonyman. What is different about Hawksbill is that the pixels are arranged in a hexagonal format, rather than a square format like Stonyman and 99% of other image sensors out there. Hexagonal sampling is not conventional, but it is actually mathematically superior to square sampling, and with recent advances in signal processing one can perform many image processing operations more efficiently in a hexagonal array than a square one.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/1sJhi5SSZ5Et39lNI*yRNuQo3OjSiKsqmEQV5HK5ZyckM*LKhI-dscGJIVxmMVhr9hQGyWliwJx7vhEV27EIhRC66dMEIzK0/hexarray.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/1sJhi5SSZ5Et39lNI*yRNuQo3OjSiKsqmEQV5HK5ZyckM*LKhI-dscGJIVxmMVhr9hQGyWliwJx7vhEV27EIhRC66dMEIzK0/hexarray.jpg?width=428&quot; width=&quot;428&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/UvkW0aALlK3iwcRSajriHQzxztErO77oWTcl*9j7lIRjEf43e5lZUq-knRx3JSPUtxwxlZ4WYVMVoyCaQ1mXPHKn23zjEqPv/Stonyman_Rox1_rs.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/UvkW0aALlK3iwcRSajriHQzxztErO77oWTcl*9j7lIRjEf43e5lZUq-knRx3JSPUtxwxlZ4WYVMVoyCaQ1mXPHKn23zjEqPv/Stonyman_Rox1_rs.jpg?width=346&quot; width=&quot;346&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Above: 8x8 hex pixel layout from CAD tools, Stonyman chip wire bonded to test board- pardon the dust!)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We plan to release the chips in the near future, with a datasheet, sample Arduino script, and (yes!) a schematic diagram of the chip innards. (If anyone *really* wants one now, I can make an arrangement…)&lt;/p&gt;
&lt;p&gt;We are also working on a new generation ArduEye sensor shield with these chips. The shield will be matched to an Arduino Mini for small size, and use a 120MIPS ARM for intermediary processing. The design will be “open”, of course. (Note- anyone who purchased an original ArduEye will get a credit towards the purchase of the new version when it comes out.)&lt;/p&gt;
&lt;p&gt;(The thrill of getting new chips back is much like that for circuit boards. You designed it, so in theory you know how it works. But you are never 100% sure and there is no datasheet for you to consult other than your own notes or CAD drawings. You are always slightly afraid of getting a puff of smoke when you first power it. No smoke… the circuit breaker didn’t trigger… so all is good. Then you probe it, verify that different portions work as expected, tweak various settings, and finally get it working. The experience is just like that for a PCB except the stakes are higher.)&lt;/p&gt;</description>
	<pubDate>Wed, 10 Aug 2011 01:56:37 +0000</pubDate>
</item>
<item>
	<title>Qi Hardware: Copyleft Hardware News 2011-08-08</title>
	<guid>http://en.qi-hardware.com/wiki/News#Copyleft_Hardware_News_2011-08-08</guid>
	<link>http://en.qi-hardware.com/wiki/News#Copyleft_Hardware_News_2011-08-08</link>
	<description>&lt;div class=&quot;LanguageLinks&quot;&gt;
&lt;table width=&quot;100%&quot;&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;img alt=&quot;Languages&quot; src=&quot;http://en.qi-hardware.com/w/images/5/59/Geographylogo.png&quot; width=&quot;25&quot; height=&quot;25&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/Qi-Hardware:Language_policy&quot; title=&quot;Qi-Hardware:Language policy&quot;&gt;Language:&lt;/a&gt;&lt;/b&gt; &lt;/td&gt;&lt;td&gt;
&lt;p&gt;&lt;b&gt;&lt;strong class=&quot;selflink&quot;&gt;English&lt;/strong&gt;&lt;/b&gt;
&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=News/zh_tw&amp;action=edit&amp;redlink=1&quot; class=&quot;new&quot; title=&quot;News/zh tw (page does not exist)&quot;&gt;‪中文(台灣)‬&lt;/a&gt; 
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p align=&quot;right&quot;&gt;Qi News&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/feed/rss20.xml&quot;&gt;RSS&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://twitter.com/#!/qihardware&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;
&lt;center&gt;
&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:ME_382_LockedUpTechnology2.gif&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;ME 382 LockedUpTechnology2.gif&quot; src=&quot;http://en.qi-hardware.com/w/images/1/10/ME_382_LockedUpTechnology2.gif&quot; width=&quot;639&quot; height=&quot;199&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;Copying is an act of love. Please copy &amp;amp; share.&lt;/i&gt;&lt;br /&gt;
&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.mimiandeunice.com&quot;&gt;Mimi and Eunice&lt;/a&gt; by Nina Paley
&lt;/p&gt;
&lt;/center&gt;
&lt;h2&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Buy&quot;&gt;Buy&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Join the new era of computing, slow fidelity on the freedom channel, and buy the world's best copyleft hardware
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table class=&quot;wikitable&quot; width=&quot;700px&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Product
&lt;/th&gt;
&lt;th&gt;Starting At
&lt;/th&gt;
&lt;th&gt;Shipping
&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ben NanoNote
&lt;/td&gt;
&lt;td&gt;99 USD/EUR
&lt;/td&gt;
&lt;td&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://www.tuxbrain.net/shop/index.php?cPath=28&quot;&gt;Tuxbrain for Europe&lt;/a&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://sharism.cc/shop/product_info.php?products_id=1&quot;&gt;Sharism for US/Japan/others&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;atben-atusb Combo
&lt;/td&gt;
&lt;td&gt;59 EUR
&lt;/td&gt;
&lt;td&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://www.tuxbrain.net/shop/index.php?cPath=347&quot;&gt;Tuxbrain&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elphel 353
&lt;/td&gt;
&lt;td&gt;880 USD
&lt;/td&gt;
&lt;td&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www3.elphel.com/price_list&quot;&gt;Elphel&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elphel Eyesis
&lt;/td&gt;
&lt;td&gt;24,000 USD
&lt;/td&gt;
&lt;td&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www3.elphel.com/eyesis&quot;&gt;Elphel&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;h2&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Projects&quot;&gt;Projects&lt;/span&gt;&lt;/h2&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Homebrew_CMOS_and_MEMS_foundry&quot;&gt;Homebrew CMOS and MEMS foundry&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; Andrew Zonenberg sighted &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Nyan_cat&quot;&gt;The Nyan Cat&lt;/a&gt; on silicon!&lt;br /&gt;This Nyanotechnology comes as part of Andrew's &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://code.google.com/p/homecmos/&quot;&gt;homebrew MEMS&lt;/a&gt; project by lithographic projection, the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/homecmos-logs/homecmos_2011-08-07.log.html#t03:41&quot;&gt;world's smallest nyan cat&lt;/a&gt;. His next goal is a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Comb_drive&quot;&gt;comb drive&lt;/a&gt;. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://code.google.com/p/homecmos/source/browse/trunk/lithography-tests/labnotes/azonenberg_labnotes.txt&quot;&gt;Lab Notes&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://colossus.cs.rpi.edu/~azonenberg/images/homecmos/&quot;&gt;Pictures&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Cat_100x.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/7/7c/Cat_100x.jpg/300px-Cat_100x.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Cat_100x.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The Nyan Cat head at 100x zoom. The entire cat is around 600 microns long and 360 microns high.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Cat_400x.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/f3/Cat_400x.jpg/300px-Cat_400x.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Cat_400x.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The Nyan Cat head at 400x zoom. Pixels are 20 microns square.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Cat_gds_imported_in_toped.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/7/75/Cat_gds_imported_in_toped.png/300px-Cat_gds_imported_in_toped.png&quot; width=&quot;300&quot; height=&quot;208&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Cat_gds_imported_in_toped.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The Nyan Cat in the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.toped.org.uk/&quot;&gt;Toped&lt;/a&gt; IC layout editor.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Milkymist&quot;&gt;Milkymist&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; Xiangfu Liu made recordings of four Milkymist One patches.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_1&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Philpraxis-Eight_bit_starfield.fnp.ogv&quot; class=&quot;image&quot; title=&quot;Philpraxis-Eight bit starfield.fnp.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/6/61/Philpraxis-Eight_bit_starfield.fnp.ogv/seek%3D9-Philpraxis-Eight_bit_starfield.fnp.ogv.jpg&quot; width=&quot;400&quot; height=&quot;320&quot; alt=&quot;Philpraxis-Eight bit starfield.fnp.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Philpraxis-Eight_bit_starfield.fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Starfield&lt;br /&gt;&amp;#91;57 s, 6.5 MB, &lt;a href=&quot;http://en.qi-hardware.com/w/images/6/61/Philpraxis-Eight_bit_starfield.fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Philpraxis-Eight bit starfield.fnp.ogv&quot;&gt;download&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_2&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Illusion_%26_Che_-_The_Piper.fnp.ogv&quot; class=&quot;image&quot; title=&quot;Illusion &amp; Che - The Piper.fnp.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/8/8b/Illusion_%26_Che_-_The_Piper.fnp.ogv/seek%3D9-Illusion_%26_Che_-_The_Piper.fnp.ogv.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; alt=&quot;Illusion &amp; Che - The Piper.fnp.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Illusion_%26_Che_-_The_Piper.fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The Piper&lt;br /&gt;&amp;#91;1:10 min, 12.42 MB, &lt;a href=&quot;http://en.qi-hardware.com/w/images/8/8b/Illusion_%26_Che_-_The_Piper.fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Illusion &amp; Che - The Piper.fnp.ogv&quot;&gt;download&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_3&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Telek_-_Slow_Shift_Matrix_(bb4.5).fnp.ogv&quot; class=&quot;image&quot; title=&quot;Telek - Slow Shift Matrix (bb4.5).fnp.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/2/2d/Telek_-_Slow_Shift_Matrix_%28bb4.5%29.fnp.ogv/seek%3D9-Telek_-_Slow_Shift_Matrix_%28bb4.5%29.fnp.ogv.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; alt=&quot;Telek - Slow Shift Matrix (bb4.5).fnp.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Telek_-_Slow_Shift_Matrix_(bb4.5).fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Slow Shift Matrix&lt;br /&gt;&amp;#91;1:8 min, 15.28 MB, &lt;a href=&quot;http://en.qi-hardware.com/w/images/2/2d/Telek_-_Slow_Shift_Matrix_%28bb4.5%29.fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Telek - Slow Shift Matrix (bb4.5).fnp.ogv&quot;&gt;download&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_4&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Unchained_-_A_Matter_Of_Taste_(Remix).fnp.ogv&quot; class=&quot;image&quot; title=&quot;Unchained - A Matter Of Taste (Remix).fnp.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/6/6d/Unchained_-_A_Matter_Of_Taste_%28Remix%29.fnp.ogv/seek%3D9-Unchained_-_A_Matter_Of_Taste_%28Remix%29.fnp.ogv.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; alt=&quot;Unchained - A Matter Of Taste (Remix).fnp.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Unchained_-_A_Matter_Of_Taste_(Remix).fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;A Matter of Taste&lt;br /&gt;&amp;#91;1:10 min, 22.53 MB, &lt;a href=&quot;http://en.qi-hardware.com/w/images/6/6d/Unchained_-_A_Matter_Of_Taste_%28Remix%29.fnp.ogv&quot; class=&quot;internal&quot; title=&quot;Unchained - A Matter Of Taste (Remix).fnp.ogv&quot;&gt;download&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Lars-Peter Clausen and Michael Walle improved Linux 3.0 on Milkymist One. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;https://github.com/milkymist/linux-milkymist/commits/master&quot;&gt;[1]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Lars-Peter Clausen ported an OpenWrt userland to Milkymist One, with static linking and uClibc. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;https://github.com/milkymist/openwrt-milkymist/commits/master&quot;&gt;[2]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Xiangfu Liu setup daily builds of OpenWrt for Milkymist One. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://fidelio.qi-hardware.com/~xiangfu/compile-log/&quot;&gt;[3]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Lattice Semiconductor released version 3.8 of the Mico32 core, which among small fixes comes with a major cleanup of the licensing header at the top of every source file.&lt;br /&gt;Earlier licensing headers were hard to understand and got some people to doubt the openess of the core. The new headers make the Mico32 core indisputably open source and GPL compatible. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.latticesemi.com/dynamic/index.cfm?fuseaction=view_documents&amp;document_type=65&amp;sloc=01-01-08-11-48&amp;source=sidebar&quot;&gt;Lattice Download&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-July/001717.html&quot;&gt;Comparison of old and new licensing header&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Christopher Adams designed a new Milkymist logo and selected the free &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.theleagueofmoveabletype.com/fonts/12-orbitron&quot;&gt;Orbitron font&lt;/a&gt; for logo and branding.&lt;br /&gt;roh from &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://raumfahrtagentur.org/&quot;&gt;Raumfahrtagentur&lt;/a&gt; engraved a mirror version of the new logo on the inside of the top acrylic for the upcoming RC3 run.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/7/77/Milkymist-logo-concept.svg/450px-Milkymist-logo-concept.svg.png&quot; width=&quot;450&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Milkymist-logo-concept.svg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/images/7/77/Milkymist-logo-concept.svg&quot; class=&quot;internal&quot; title=&quot;Milkymist-logo-concept.svg&quot;&gt;svg&lt;/a&gt; &lt;a href=&quot;http://en.qi-hardware.com/w/images/4/49/Milkymist-logo-concept.pdf&quot; class=&quot;internal&quot; title=&quot;Milkymist-logo-concept.pdf&quot;&gt;pdf&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Milkymist_engraved_logo_shot.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/d/d3/Milkymist_engraved_logo_shot.jpg/300px-Milkymist_engraved_logo_shot.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Milkymist_engraved_logo_shot.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Milkymist One logo on acrylic.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Yi Zhang finished the Milkymist One box design and sent it off to the box makers.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:M1_box_artwork_04.pdf&amp;page=1&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/7/7b/M1_box_artwork_04.pdf/page1-600px-M1_box_artwork_04.pdf.jpg&quot; width=&quot;600&quot; height=&quot;453&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_box_artwork_04.pdf&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;PDF file sent to the printshop, prepared from a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Scribus&quot;&gt;Scribus&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://github.com/milkymist/extras-m1/tree/master/cad&quot;&gt;original&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_rc3_box1.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/c/cc/M1_rc3_box1.jpg/400px-M1_rc3_box1.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_rc3_box1.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Printed and die-cut box.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Adam Wang continued with Milkymist One RC3 production testing.&lt;br /&gt;All &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://github.com/milkymist/autotest-m1&quot;&gt;production testing software&lt;/a&gt; is free software, results are &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/wiki/Milkymist_One_run_3_schedule#Test_Results&quot;&gt;tracked online&lt;/a&gt;.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Rc3_test_example.JPG&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/2f/Rc3_test_example.JPG/400px-Rc3_test_example.JPG&quot; width=&quot;400&quot; height=&quot;300&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Rc3_test_example.JPG&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Thirteen wires in and out of Milkymist One during production testing.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Wolfson Microelectronics' WM9707 audio codec helped reduce audio noise on the Milkymist One RC3 video synthesizer by 90%, from about 500 mV to about 50 mV.&lt;br /&gt;Earlier runs used a National Semiconductor LM4550B codec. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://en.qi-hardware.com/wiki/Milkymist_One_run_3_schedule#Audio_Noise&quot;&gt;[4]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Cristian Paul ported the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.dynamics.co.nz/gpsreceiver&quot;&gt;Namuru GPS correlator&lt;/a&gt; to the Milkymist SoC (thanks to Fabrizio Tapper and Peter Mumford for their support).&lt;br /&gt;This core will allow speedup of the correlation process for getting a fix and tracking GPS satellites. Work continues on the OpenSourceGPS receiver which will provide the high level software interface to process the navigation data tracked by Namuru. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://github.com/kristianpaul/milkymist/tree/gps-sdr-testing/cores/namuru&quot;&gt;Namuru port to Milkymist&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.gmat.unsw.edu.au/namuru/documents/Namuru_GPS_datasheet.pdf&quot;&gt;Namuru datasheet&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://sourceforge.net/projects/osgps/&quot;&gt;OpenSourceGPS code repository&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://home.earthlink.net/~cwkelley/&quot;&gt;OpenSourceGPS documentation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; David Kühling helped port the SoftGNSS matlab code to GNU Octave.&lt;br /&gt;This will allow offline analysis of raw data for a variety of GPS front-ends. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://github.com/kristianpaul/SoftGNSS&quot;&gt;SoftGNSS repo&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Jon Phillips gave a talk about Milkymist One at FISL 12 in Porto Alegre, Brazil (&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=News&amp;action=feed&amp;feed=atom#Jon.27s_slide_deck_on_Milkymist_One&quot;&gt;slides of talk below&lt;/a&gt;). &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://en.wikipedia.org/wiki/FISL&quot;&gt;[5]&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://softwarelivre.org/fisl12&quot;&gt;[6]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_5&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Fisl12_rejon_milkymist_20110702.ogv&quot; class=&quot;image&quot; title=&quot;Fisl12 rejon milkymist 20110702.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/a/a2/Fisl12_rejon_milkymist_20110702.ogv/seek%3D33-Fisl12_rejon_milkymist_20110702.ogv.jpg&quot; width=&quot;400&quot; height=&quot;331&quot; alt=&quot;Fisl12 rejon milkymist 20110702.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Fisl12_rejon_milkymist_20110702.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Jon Phillips at FISL 12 (July 2, 2011, Porto Alegre, Brazil).&lt;br /&gt;&amp;#91;46:17 min, 78 MB, &lt;a href=&quot;http://en.qi-hardware.com/w/images/a/a2/Fisl12_rejon_milkymist_20110702.ogv&quot; class=&quot;internal&quot; title=&quot;Fisl12 rejon milkymist 20110702.ogv&quot;&gt;download&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;atben.2Fatusb&quot;&gt;atben/atusb&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; Werner finished designing the ben-wpan boards, a set of IEEE 802.15.4 wireless dongles. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/ben-wpan/&quot;&gt;[7]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Ben-wpan-range.pdf&amp;page=1&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/20/Ben-wpan-range.pdf/page1-500px-Ben-wpan-range.pdf.jpg&quot; width=&quot;500&quot; height=&quot;164&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben-wpan-range.pdf&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Range of ben-wpan boards measured at Werner's apartment in Buenos Aires (dimensions in cm).&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Werner wrote documentation and tools for the production and testing process of ben-wpan 802.15.4 boards.&lt;br /&gt;A total of five pages, overview page and four detail pages. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/008076.html&quot;&gt;Announcement&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://downloads.qi-hardware.com/people/werner/wpan/prod/index.html&quot;&gt;Overview&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_wpan_production_flowchart.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/e/ec/Ben_wpan_production_flowchart.png/500px-Ben_wpan_production_flowchart.png&quot; width=&quot;500&quot; height=&quot;332&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_wpan_production_flowchart.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Production and testing process flowchart.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Atusb-programming.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Atusb-programming.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/ff/Atusb-programming.jpg/300px-Atusb-programming.jpg&quot; width=&quot;300&quot; height=&quot;124&quot; /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Tuxbrain &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/wiki/Ben_WPAN#Production_Notes&quot;&gt;produced&lt;/a&gt; 135 atben and 117 atusb boards and &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-June/008200.html&quot;&gt;started selling&lt;/a&gt; on June 13.&lt;br /&gt;One month later, David &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-July/008435.html&quot;&gt;reported sales&lt;/a&gt; of 44 atben and 42 atusb boards.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Atben_atusb_prod_grinding_01.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/3/30/Atben_atusb_prod_grinding_01.jpg/250px-Atben_atusb_prod_grinding_01.jpg&quot; width=&quot;250&quot; height=&quot;208&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Atben_atusb_prod_grinding_01.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;David depanelizing PCBs&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:P6150703.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/a/a6/P6150703.jpg/250px-P6150703.jpg&quot; width=&quot;250&quot; height=&quot;188&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:P6150703.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;atben&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:P6180742.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/d/d7/P6180742.jpg/250px-P6180742.jpg&quot; width=&quot;250&quot; height=&quot;188&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:P6180742.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;atusb&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Copyleft_Hardware_Explained&quot;&gt;Copyleft Hardware Explained&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; Werner Almesberger published a two part comparison of Free scripted CAD tools - &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/wernermisc/source/tree/master/cad/test1/README&quot;&gt;Part 1&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/wernermisc/source/tree/master/cad/test2/README&quot;&gt;Part2&lt;/a&gt;.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_cadmium.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/3/3b/Free_cad_comparison_cadmium.png/200px-Free_cad_comparison_cadmium.png&quot; width=&quot;200&quot; height=&quot;135&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_cadmium.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://jayesh3.github.com/cadmium/&quot;&gt;Cadmium&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_cgal.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/7/79/Free_cad_comparison_cgal.png/200px-Free_cad_comparison_cgal.png&quot; width=&quot;200&quot; height=&quot;186&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_cgal.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.cgal.org/&quot;&gt;CGAL&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_csg.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/d/de/Free_cad_comparison_csg.png/200px-Free_cad_comparison_csg.png&quot; width=&quot;200&quot; height=&quot;186&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_csg.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.opencsg.org/&quot;&gt;OpenCSG&lt;/a&gt;, showing artefacts&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_scad.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/6/69/Free_cad_comparison_scad.png/200px-Free_cad_comparison_scad.png&quot; width=&quot;200&quot; height=&quot;139&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_scad.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_scad-inside.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/a/a4/Free_cad_comparison_scad-inside.png/200px-Free_cad_comparison_scad-inside.png&quot; width=&quot;200&quot; height=&quot;99&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_scad-inside.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;OpenSCAD, modeling artefact (internal structure)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_scad-reversed.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/d/df/Free_cad_comparison_scad-reversed.png/200px-Free_cad_comparison_scad-reversed.png&quot; width=&quot;200&quot; height=&quot;167&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Free_cad_comparison_scad-reversed.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;OpenSCAD, modeling artefact (reversed face)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; The names of component packages are often confusing and vary among manufacturers. This is Werner's first step (for small logic gates) towards a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-July/008483.html&quot;&gt;packageology&lt;/a&gt;.
&lt;/li&gt;&lt;li&gt; Some data sheets don't contain all the information necessary to make Copyleft Hardware. Here is Werner's &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-July/008487.html&quot;&gt;anatomy of a datasheet&lt;/a&gt;.
&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;NanoNote&quot;&gt;NanoNote&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; Jadon Dutra made two nice Ben NanoNote tutorial videos. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-June/008312.html&quot;&gt;[8]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_6&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Jadon_NanoNote_Hello_world_tutorial_scaledown.ogv&quot; class=&quot;image&quot; title=&quot;Jadon NanoNote Hello world tutorial scaledown.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/e/e7/Jadon_NanoNote_Hello_world_tutorial_scaledown.ogv/seek%3D9-Jadon_NanoNote_Hello_world_tutorial_scaledown.ogv.jpg&quot; width=&quot;400&quot; height=&quot;225&quot; alt=&quot;Jadon NanoNote Hello world tutorial scaledown.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Jadon_NanoNote_Hello_world_tutorial_scaledown.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Tutorial: Hello World program on Ben NanoNote.&lt;br /&gt;&amp;#91;5:43 min, download &lt;a href=&quot;http://en.qi-hardware.com/w/images/e/e7/Jadon_NanoNote_Hello_world_tutorial_scaledown.ogv&quot; class=&quot;internal&quot; title=&quot;Jadon NanoNote Hello world tutorial scaledown.ogv&quot;&gt;11 MB&lt;/a&gt;/&lt;a href=&quot;http://en.qi-hardware.com/w/images/0/05/Jadon_NanoNote_Hello_world_tutorial.ogv&quot; class=&quot;internal&quot; title=&quot;Jadon NanoNote Hello world tutorial.ogv&quot;&gt;52 MB&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_7&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Jadon_NanoNote_USB_booting_scaledown.ogv&quot; class=&quot;image&quot; title=&quot;Jadon NanoNote USB booting scaledown.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/0/01/Jadon_NanoNote_USB_booting_scaledown.ogv/seek%3D34-Jadon_NanoNote_USB_booting_scaledown.ogv.jpg&quot; width=&quot;400&quot; height=&quot;225&quot; alt=&quot;Jadon NanoNote USB booting scaledown.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Jadon_NanoNote_USB_booting_scaledown.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Tutorial: How to boot Ben NanoNote into USB mode.&lt;br /&gt;&amp;#91;2:23 min, download &lt;a href=&quot;http://en.qi-hardware.com/w/images/0/01/Jadon_NanoNote_USB_booting_scaledown.ogv&quot; class=&quot;internal&quot; title=&quot;Jadon NanoNote USB booting scaledown.ogv&quot;&gt;5 MB&lt;/a&gt;/&lt;a href=&quot;http://en.qi-hardware.com/w/images/8/87/Jadon_NanoNote_USB_booting.ogv&quot; class=&quot;internal&quot; title=&quot;Jadon NanoNote USB booting.ogv&quot;&gt;38 MB&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Werner published a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/wernermisc/source/tree/master/tp/MAP&quot;&gt;test point map&lt;/a&gt; for the Ben NanoNote. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-June/008140.html&quot;&gt;[9]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Bnn_tp-map-ba.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/4/4e/Bnn_tp-map-ba.png/500px-Bnn_tp-map-ba.png&quot; width=&quot;500&quot; height=&quot;362&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Bnn_tp-map-ba.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ben NanoNote test point map, SoC mappings &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/wernermisc/source/tree/master/tp/MAP&quot;&gt;here&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; sujan and zedstar took some NanoNotes on a trip to Nepal. We don't really know what happened, but got this nice picture back...
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Sujan_zedstar_nepal.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/e/e7/Sujan_zedstar_nepal.jpg/300px-Sujan_zedstar_nepal.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Sujan_zedstar_nepal.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ben NanoNote in Nepal&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;OpenLase&quot;&gt;OpenLase&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; David from Tuxbrain &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-July/008466.html&quot;&gt;found out&lt;/a&gt; about OpenLase, an open laser projector started by Hector Martin &quot;marcan&quot;.&lt;br /&gt;We are learning about &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Laser&quot;&gt;lasers&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Galvanometer&quot;&gt;galvanometers&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Dichroism&quot;&gt;dichroic mirrors&lt;/a&gt; and more now and are evaluating how to make good copyleft hardware out of this one day. Thanks David for bringing this up! &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://marcansoft.com/blog/2010/11/openlase-open-realtime-laser-graphics/&quot;&gt;OpenLase blog&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://git.marcansoft.com/?p=openlase.git;a=summary&quot;&gt;OpenLase sources&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_8&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Openlase.ogv&quot; class=&quot;image&quot; title=&quot;Openlase.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/2/25/Openlase.ogv/seek%3D49-Openlase.ogv.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; alt=&quot;Openlase.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Openlase.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;OpenLase laser projector.&lt;br /&gt;&amp;#91;2:17 min, 20 MB, &lt;a href=&quot;http://en.qi-hardware.com/w/images/2/25/Openlase.ogv&quot; class=&quot;internal&quot; title=&quot;Openlase.ogv&quot;&gt;download&lt;/a&gt;&amp;#93;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Openlase_overall.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/3/35/Openlase_overall.jpg/300px-Openlase_overall.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Openlase_overall.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;OpenLase prototype used in making the video.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Openlase_galvos.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/b/bc/Openlase_galvos.jpg/300px-Openlase_galvos.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Openlase_galvos.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Detail of galvo (&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Galvanometer&quot;&gt;Galvanometer&lt;/a&gt;).&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;h2&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Presentations.2C_Slides.2C_Brochures&quot;&gt;Presentations, Slides, Brochures&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Jon,Werner and Sebastien talked about our projects, here's an opportunity to catch up and browse through slide decks, presentations, and a brochure.
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Jon.27s_slide_deck_on_Milkymist_One&quot;&gt;Jon's slide deck on Milkymist One&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;(&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-July/008469.html&quot;&gt;announcement&lt;/a&gt;, &lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Fisl12_rejon_milkymist_20110702.ogv&quot; title=&quot;File:Fisl12 rejon milkymist 20110702.ogv&quot;&gt;video&lt;/a&gt;)
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Qi-hardware-milkymist-converted.svg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Qi-hardware-milkymist-converted.svg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/27/Qi-hardware-milkymist-converted.svg/1100px-Qi-hardware-milkymist-converted.svg.png&quot; width=&quot;1100&quot; height=&quot;764&quot; /&gt;&lt;/a&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Jon.27s_slide_deck_on_Copyleft_Hardware&quot;&gt;Jon's slide deck on Copyleft Hardware&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;(&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-July/008469.html&quot;&gt;announcement&lt;/a&gt;)
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Qi-hardware-basics-outlines.svg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Qi-hardware-basics-outlines.svg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/e/ed/Qi-hardware-basics-outlines.svg/1200px-Qi-hardware-basics-outlines.svg.png&quot; width=&quot;1200&quot; height=&quot;784&quot; /&gt;&lt;/a&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Werner.27s_talk_at_FISL_12_in_Porto_Alegre_about_Copyleft_Hardware&quot;&gt;Werner's talk at FISL 12 in Porto Alegre about Copyleft Hardware&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;(source &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://softwarelivre.org/fisl12&quot;&gt;FISL 12&lt;/a&gt; in Porto Alegre, Brazil)
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=1&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page1-350px-Fisl12.pdf.jpg&quot; width=&quot;350&quot; height=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=2&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page2-350px-Fisl12.pdf.jpg&quot; width=&quot;350&quot; height=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=3&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page3-350px-Fisl12.pdf.jpg&quot; width=&quot;350&quot; height=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=4&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page4-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=5&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page5-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=6&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page6-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=7&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page7-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=8&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page8-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=9&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page9-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=10&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page10-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=11&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page11-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=12&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page12-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=13&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page13-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=14&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page14-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=15&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page15-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=16&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page16-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=17&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page17-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=18&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page18-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=19&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page19-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=20&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page20-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=21&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page21-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=22&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page22-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=23&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page23-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Fisl12.pdf&amp;page=24&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Fisl12.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/8/86/Fisl12.pdf/page24-300px-Fisl12.pdf.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Sebastien.27s_talk_at_THSF_2011_in_Toulouse_about_Milkymist_One&quot;&gt;Sebastien's talk at THSF 2011 in Toulouse about Milkymist One&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;(source &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://thsf.tetalab.org/Conf28th/MilkyMist&quot;&gt;THSF 2011&lt;/a&gt; Toulouse Hacker Space Factory, May 28, 2011)
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=1&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page1-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=2&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page2-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=3&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page3-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=4&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page4-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=5&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page5-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=6&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page6-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=7&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page7-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=8&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page8-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=9&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page9-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=10&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page10-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=11&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page11-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=12&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page12-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=13&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page13-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=14&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page14-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=15&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page15-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=16&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page16-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=17&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page17-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=18&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page18-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=19&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page19-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=20&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page20-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=21&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page21-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=22&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page22-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=23&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page23-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=24&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page24-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=25&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page25-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=26&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page26-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=27&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page27-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=28&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page28-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=29&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page29-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=30&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page30-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=31&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page31-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=32&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page32-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=33&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page33-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=34&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page34-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=35&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page35-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:Mm_thsf.pdf&amp;page=36&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm thsf.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/Mm_thsf.pdf/page36-400px-Mm_thsf.pdf.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;h3&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Sebastien.27s_Milkymist_One_brochure&quot;&gt;Sebastien's Milkymist One brochure&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;(source &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;https://github.com/milkymist/extras-m1/tree/master/leaflets/brochure&quot;&gt;[10]&lt;/a&gt;)
&lt;/p&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:M1_brochure_v2_100dpi.pdf&amp;page=1&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 brochure v2 100dpi.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/9/99/M1_brochure_v2_100dpi.pdf/page1-500px-M1_brochure_v2_100dpi.pdf.jpg&quot; width=&quot;500&quot; height=&quot;707&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:M1_brochure_v2_100dpi.pdf&amp;page=4&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 brochure v2 100dpi.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/9/99/M1_brochure_v2_100dpi.pdf/page4-500px-M1_brochure_v2_100dpi.pdf.jpg&quot; width=&quot;500&quot; height=&quot;707&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:M1_brochure_v2_100dpi.pdf&amp;page=2&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 brochure v2 100dpi.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/9/99/M1_brochure_v2_100dpi.pdf/page2-500px-M1_brochure_v2_100dpi.pdf.jpg&quot; width=&quot;500&quot; height=&quot;707&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/w/index.php?title=File:M1_brochure_v2_100dpi.pdf&amp;page=3&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 brochure v2 100dpi.pdf&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/9/99/M1_brochure_v2_100dpi.pdf/page3-500px-M1_brochure_v2_100dpi.pdf.jpg&quot; width=&quot;500&quot; height=&quot;707&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;A happy continued summer everyone (winter for Werner). Cheers.
&lt;/p&gt;&lt;p&gt;--&lt;a href=&quot;http://en.qi-hardware.com/wiki/User:Qi_team&quot; title=&quot;User:Qi team&quot;&gt;Qi team&lt;/a&gt; 08:00, 8 August 2011 (CET)
&lt;/p&gt;</description>
	<pubDate>Mon, 08 Aug 2011 08:00:00 +0000</pubDate>
</item>
<item>
	<title>GNU Radio Blog: Gqrx on Mac OS X (almost)</title>
	<guid permalink="False">http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/449-gqrx-on-mac-os-x-almost</guid>
	<link>http://www.oz9aec.net/index.php/gnu-radio/gnu-radio-blog/449-gqrx-on-mac-os-x-almost</link>
	<description>&lt;p&gt;Few weeks ago, or maybe a month or two – I don't remember, I spent an afternoon trying to build gnuradio-core and gr-audio on Mac OS X without using any macports. It was a casual an undocumented attempt that resulted in a compilation failure. I wasn't surprised because I made several mistakes along the way, so I just left it an moved on.&lt;/p&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;p&gt;Now with the &lt;a href=&quot;http://www.oz9aec.net/index.php/gnu-radio/gqrx-sdr&quot;&gt;alpha release of gqrx&lt;/a&gt; it was time to make another attempt, and this time I tried to do it right I have also &lt;a href=&quot;http://wiki.oz9aec.net/index.php/Building_GNU_Radio_on_Mac_OS_X&quot; title=&quot;Building GNU Radio on Mac OS X&quot;&gt;documented the whole process&lt;/a&gt;. It took me few hours to get through the whole process of compiling the dependencies then GNU Radio, but to my great surprise I actually ended up with a working GNU Radio installation!&lt;/p&gt;
&lt;p&gt;I even managed to build and run gqrx as you can see on &lt;a href=&quot;http://twitpic.com/5z0f2b&quot; title=&quot;Gqrx running on Mac OS X&quot;&gt;this twitpic&lt;/a&gt;. Since that tweet I even found out that I can simply use the descriptive names as device names, i.e. &quot;FUNcube Dongle V1.0&quot; for the Funcube Dongle. Unfortunately, the OS X audio source seems to have issues with sample rates above 44.1 kHz which makes the gqrx/fcd combination useless for now. The issue is known and has actually been known since 2009.&lt;/p&gt;
&lt;p&gt;I hope somebody will be able to fix it because I really don't know anything about OS X audio programming and looking at the source code for the OS X audio source doesn't make me want to learn it either.&lt;/p&gt;</description>
	<pubDate>Tue, 02 Aug 2011 21:35:44 +0000</pubDate>
	<author>oz9aec@gmail.com (Alexandru Csete)</author>
</item>
<item>
	<title>Chitlesh Goorah: Swiss wine tasting</title>
	<guid>http://chitlesh.wordpress.com/?p=1179</guid>
	<link>http://chitlesh.wordpress.com/2011/07/06/swiss-wine-tasting/</link>
	<description>&lt;p&gt;&lt;img class=&quot;size-full wp-image-1193&quot; title=&quot;IMG_1591&quot; src=&quot;http://chitlesh.files.wordpress.com/2011/07/img_1591.jpg?w=406&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Got the opportunity to taste the following Swiss wines :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aigle, Vieux coucou, Grand Cru, 2010&lt;/li&gt;
&lt;li&gt;Aigle, Peau Rouge, Grand Cru, 2010&lt;/li&gt;
&lt;li&gt;Aigle, Gamaret, Evionnaz,2010&lt;/li&gt;
&lt;li&gt;Aigle, Pinor noir de Chamoson, 2008&lt;/li&gt;
&lt;li&gt;Yvorne, Le Florin, sélection Terravin&lt;/li&gt;
&lt;li&gt;Chablais, Malvoisie&lt;/li&gt;
&lt;li&gt;Chablais, Oeil-de-Perdrix&lt;/li&gt;
&lt;li&gt;Ollon, Pinot Noir&lt;/li&gt;
&lt;li&gt;Ollon, Rosé de Pinot Noir&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1179/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1179/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1179&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 10 Jul 2011 19:06:30 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: the missing -ldl</title>
	<guid>http://chitlesh.wordpress.com/?p=1186</guid>
	<link>http://chitlesh.wordpress.com/2011/07/03/the-missing-ldl/</link>
	<description>&lt;p&gt;&lt;pre class=&quot;brush: plain;&quot;&gt;
export CFLAGS=&amp;quot;%{optflags} -ldl -lpthread&amp;quot;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;to fix&lt;/p&gt;
&lt;p&gt;&lt;pre class=&quot;brush: plain;&quot;&gt;
/usr/bin/ld: dynload.o: undefined reference to symbol  'dlsym@@GLIBC_2.2.5'
/usr/bin/ld: note: 'dlsym@@GLIBC_2.2.5' is defined in DSO
/lib64/libdl.so.2 so try adding it to the linker command line
/lib64/libdl.so.2: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
&lt;/pre&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1186/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1186/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1186&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 03 Jul 2011 13:09:40 +0000</pubDate>
</item>
<item>
	<title>FreakLabs: Bob's Energy Vulture</title>
	<guid>http://freaklabs.org/index.php/Blog/Misc/Bob-s-Energy-Vulture.html</guid>
	<link>http://freaklabs.org/index.php/Blog/Misc/Bob-s-Energy-Vulture.html</link>
	<description>I recently got a very nice surprise in the mail.  @wa7iut, aka Bob, from Ambient Sensors (http://www.ambientsensors.com/)  sent me one of his latest breakout boards. I've been itching to try out the LTC3108 for a while because it can boost input voltages as low as 20 mV up to a very usable 3.3V. People have been sticking probes into plants to power their sensor nodes using these chips.  Bob is well known in the open hardware scene...</description>
	<pubDate>Fri, 01 Jul 2011 18:16:16 +0000</pubDate>
</item>
<item>
	<title>Chitlesh Goorah: Restoring Electronics-menu in Gnome3</title>
	<guid>http://chitlesh.wordpress.com/?p=1170</guid>
	<link>http://chitlesh.wordpress.com/2011/06/19/restoring-electronics-menu-in-gnome3/</link>
	<description>&lt;p&gt;With Gnome 3 shipped with Fedora 15, the menu &amp;#8220;electronics&amp;#8221; is no longer available on Fedora 15&amp;#8242;s gnome-menu.&lt;/p&gt;
&lt;p&gt;It was rather annoying for me, as this custom &amp;#8220;Electronics&amp;#8221; menu remained the first thing that non-linux users would look at if they want to embrace Free(Fedora) Electronic Lab.&lt;/p&gt;
&lt;p&gt;Finally, I found how to fix it. It seems that the directory /etc/xdg/menus/application-merged became /etc/xdg/menus/application-gnome-merged.&lt;/p&gt;
&lt;p&gt;&lt;pre class=&quot;brush: plain;&quot;&gt;
$ mkdir  /etc/xdg/menus/applications-gnome-merged
$ ln -s /etc/xdg/menus/applications-merged/electronics.menu /etc/xdg/menus/applications-gnome-merged/electronics.menu
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The &amp;#8220;electronics-menu&amp;#8221; package will soon be updated to reflect this fix on Fedora 15.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/chitlesh.wordpress.com/1170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/chitlesh.wordpress.com/1170/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=chitlesh.wordpress.com&amp;blog=8235459&amp;post=1170&amp;subd=chitlesh&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 19 Jun 2011 11:01:54 +0000</pubDate>
</item>
<item>
	<title>Dan Strother: Complete &quot;Cones&quot; disparity map generated by dlsc_stereobm reference algorithm</title>
	<guid permalink="False">http://danstrother.com/?p=698</guid>
	<link>http://danstrother.com/2011/06/10/fpga-stereo-vision-core-released/</link>
	<description>The first version of my open-source OpenCV-compatible FPGA Stereo Correspondence Core is now available! (have a look at my previous FPGA Stereo Vision Project post for some more context) It&amp;#8217;s written purely in synthesizable Verilog, and uses device-agnostic inference for &amp;#8230; &lt;a href=&quot;http://danstrother.com/2011/06/10/fpga-stereo-vision-core-released/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=danstrother.com&amp;blog=7403453&amp;post=698&amp;subd=danstrother&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 11 Jun 2011 06:26:29 +0000</pubDate>
</item>
<item>
	<title>Capn's Tech: Playpause 3: Assembly and programming</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-7052522188933115622</guid>
	<link>http://capnstech.blogspot.com/2011/06/playpause-3-assembly-and-programming.html</link>
	<description>So far in this series we have discussed the Playpause concept and design, and how to make PCBs, using Playpause as an example.  Now I want to show how to assemble a Playpause, and how to load the software using a bed-of-nails jig.&lt;br /&gt;&lt;br /&gt;Surface mount technology is within reach of everyone.  There's no special technology being used here.  The iron is a normal 25W soldering iron, it's just normal electronics solder, and the soldering in the photos is being done by my 11-yo son, who has barely soldered before.  Thanks Tim!&lt;br /&gt;&lt;br /&gt;The first thing to start with is the ATtiny85 microcontroller.  When I was a lad, we were told to add the semiconductors to our project last, because of the danger of damage from static.  The reason I'm putting the microcontroller on first is because we need to program the chip, and the other components can interfere with programming.&lt;br /&gt;&lt;br /&gt;Here's a pic of the chip perched on the board.  I've lined up the pins with the PCB pads.  Since we will first solder just one pad, it's not critical that all pads are lined up, just the corner pad that gets soldered first:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-NPz6P1skx-0/Te8wg3_W_CI/AAAAAAAAACI/6y68QOoxhDc/s1600/IMG_6287r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615760601697942562&quot; src=&quot;http://3.bp.blogspot.com/-NPz6P1skx-0/Te8wg3_W_CI/AAAAAAAAACI/6y68QOoxhDc/s400/IMG_6287r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Chip perched on board&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Unless the chip is held in position, it is likely to be moved out of place when touched by the soldering iron.  A totally excellent way of holding the chip in place during soldering is to use one tine of a small gardening fork, as described by &lt;a href=&quot;http://jon.oxer.com.au/blog/id/349&quot;&gt;Jonathan Oxer&lt;/a&gt;: &lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-N1k6OM8C8cs/Te8whMyqdQI/AAAAAAAAACQ/wPkrIs_FRcM/s1600/IMG_6288r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615760607281837314&quot; src=&quot;http://4.bp.blogspot.com/-N1k6OM8C8cs/Te8whMyqdQI/AAAAAAAAACQ/wPkrIs_FRcM/s400/IMG_6288r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Pressure applied with mini garden fork&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Next up, soldering the first pin:&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-qPI31Vj243M/Te8wheyFgiI/AAAAAAAAACY/mr7CMA5GKL0/s1600/IMG_6290r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615760612111254050&quot; src=&quot;http://4.bp.blogspot.com/-qPI31Vj243M/Te8wheyFgiI/AAAAAAAAACY/mr7CMA5GKL0/s400/IMG_6290r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Soldering the first pin&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The aim is for the soldering iron to touch both the pad and the pin, so both get heated, for about a second.  Then lightly feed a little solder onto the joint (not onto the iron) until the solder flows between the pad and pin.  Then remove the iron, and allow the molten solder to solidfy.  Make sure the joint is not moved until the solder is set.  Surface mount components are very small, and don't take well to being heated for long periods, so try to minimise the amount of time they are in contact with the iron.&lt;br /&gt;After the first pin is soldered, you can gently rotate the chip to get all the pins aligned.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-GWL6_PGrS8w/Te8whfuFeeI/AAAAAAAAACg/3HgWf8nc8Hk/s1600/IMG_6291r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615760612362910178&quot; src=&quot;http://4.bp.blogspot.com/-GWL6_PGrS8w/Te8whfuFeeI/AAAAAAAAACg/3HgWf8nc8Hk/s400/IMG_6291r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;One pin soldered, the chip can be aligned&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;After the pins are aligned, the rest of the pins can be soldered:&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/--OyfO5NcNb4/Te8whkF7cSI/AAAAAAAAACo/fmX7V-LT_Nc/s1600/IMG_6293r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615760613536657698&quot; src=&quot;http://3.bp.blogspot.com/--OyfO5NcNb4/Te8whkF7cSI/AAAAAAAAACo/fmX7V-LT_Nc/s400/IMG_6293r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Soldering the rest of the pins&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Don't worry if you bridge pins with too much solder.  In fact, one good way of soldering fine pitch chips is to deliberately use too much solder, then remove the excess with desoldering braid:&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-qvrKbVgXzDs/Te8xUu0v02I/AAAAAAAAACw/LavA-y1FB3A/s1600/IMG_6295r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615761492590711650&quot; src=&quot;http://3.bp.blogspot.com/-qvrKbVgXzDs/Te8xUu0v02I/AAAAAAAAACw/LavA-y1FB3A/s400/IMG_6295r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Fixing solder bridges with soldering braid&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now that the microcontroller is soldered on, we can program in the firmware.  I am using Tom Long's fantastic &lt;a href=&quot;http://tom-itx.dyndns.org:81/%7Ewebpage/boards/USBTiny_Mkii/USBTiny_Mkii_index.php&quot;&gt;USBTiny mkII&lt;/a&gt; programmer.  Also in this picture is a SparkFun &lt;a href=&quot;http://www.sparkfun.com/products/9147&quot;&gt;AVRStick&lt;/a&gt;, which was my original inspiration for both the USB Doodad and Playpause projects.  Thanks SparkFun for the AVRStick, and thanks Objective Development for &lt;a href=&quot;http://www.obdev.at/products/vusb&quot;&gt;V-USB&lt;/a&gt;!&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-cydo_wIwuvU/Te8xVXtFXKI/AAAAAAAAADI/PfBU1DcwRmM/s1600/SNC10181r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615761503564422306&quot; src=&quot;http://4.bp.blogspot.com/-cydo_wIwuvU/Te8xVXtFXKI/AAAAAAAAADI/PfBU1DcwRmM/s400/SNC10181r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;AVRStick and programmer&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;To program the Playpause, I'm using a “bed-of-nails” made of “pogo pins” to connect the 6 wires of the ISP header to the micro.  You can find out more about pogo pins and making bed-of-nails jigs at this &lt;a href=&quot;http://www.sparkfun.com/tutorials/138&quot;&gt;SparkFun tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To line up the pins with the pads on the circuit board, I made a sleeve out of three pieces of cardboard, glued together as a sandwich.  Holes drilled in the top piece of cardboard line up with the pads on the PCB.  I slide the PCB into the sleeve, then using one hand, I can hold the bed of nails and the sleeve together.  With the other hand, I can press Enter on my computer to run  the command to copy the firmware to the micro, and set the right fuses (for example, the fuse which turns on the clock PLL that I mentioned &lt;a href=&quot;http://capnstech.blogspot.com/2011/05/usb-doodad-7-playpause-and-bed-of-nails.html&quot;&gt;earlier&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-wEdJwqPuzBg/Te8xWGmk_2I/AAAAAAAAADQ/OPfD0rv2RW0/s1600/SNC10187r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615761516153601890&quot; src=&quot;http://2.bp.blogspot.com/-wEdJwqPuzBg/Te8xWGmk_2I/AAAAAAAAADQ/OPfD0rv2RW0/s400/SNC10187r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Playpause with bed of nails.&amp;nbsp; The PCB in this pic doesn't have a chip, but of course for programming it would need to have one.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;Programming:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;tt&gt;&lt;br /&gt;FIXME&lt;/tt&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;The PCB traces at one end of the board are just the right shape to work as a USB connector.  But the copper isn't very thin, and if used often, the other part of the connector (the part in your PC) will wear away the copper.  To avoid this, you can tin the USB tracks with solder:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-9LCQ7KVx2H0/Te8xUwj-E3I/AAAAAAAAAC4/j9rgYdqn6t0/s1600/IMG_6296r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615761493057213298&quot; src=&quot;http://3.bp.blogspot.com/-9LCQ7KVx2H0/Te8xUwj-E3I/AAAAAAAAAC4/j9rgYdqn6t0/s400/IMG_6296r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Tinning USB connector traces&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;After the controller is programmed, and the USB traces are tinned, we can add the other components as per this chart:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-t7bBhe8jiZY/Te97Rd3VNHI/AAAAAAAAAWY/EeE-mz7_qBs/s1600/placement.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;127&quot; src=&quot;http://4.bp.blogspot.com/-t7bBhe8jiZY/Te97Rd3VNHI/AAAAAAAAAWY/EeE-mz7_qBs/s400/placement.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can use the gardening fork on all the components except for the diodes, if the diodes are cylindrical.  For the diodes, you can ask a friend to hold the diode in position with a small screwdriver.&lt;br /&gt;&lt;br /&gt;And now a small admission: When I was copying and pasting the layout to make ten boards, I accidentally deleted a track.  That track was omitted on all ten boards I made.  So here a small wire is being soldered on to act as the missing track.  All the other components have already been soldered.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-XrTpUcdRwuQ/Te8xVEMqh5I/AAAAAAAAADA/ABUQNCVm5E0/s1600/IMG_6300r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;209&quot; id=&quot;BLOGGER_PHOTO_ID_5615761498328172434&quot; src=&quot;http://4.bp.blogspot.com/-XrTpUcdRwuQ/Te8xVEMqh5I/AAAAAAAAADA/ABUQNCVm5E0/s640/IMG_6300r.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;All passives soldered, doing the switch (extra wire)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;When I was developing Playpause, I made a few mistakes in the firmware, which meant I needed to correct and update the firmware.  But because I'd already loaded all the components onto the PCB, I couldn't put the PCB back into the programming sleeve.  So as an alternative, I direct-wired a 6-pin ISP header to the PCB.&lt;br /&gt;&lt;br /&gt;Note that having additional components can interfere with the programmer, but in this case, it seems to work:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-F1J19E26Fp0/Te8xl3jdpbI/AAAAAAAAADY/DLjr6z-eaeU/s1600/SNC10184r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615761786991912370&quot; src=&quot;http://2.bp.blogspot.com/-F1J19E26Fp0/Te8xl3jdpbI/AAAAAAAAADY/DLjr6z-eaeU/s400/SNC10184r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Playpause hot-wired to programmer&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I made ten of these Playpause boards and took five of them to a friend's place for a craft-and-chat day.  Most of the soldering on these boards was done by people who had never done any kind of soldering before, thus proving that surface mount soldering doesn't require any particular skill or dexterity, but just some instruction and guidance.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-es_JRicIPAo/Te8xmPYdw-I/AAAAAAAAADg/7D1S5p9xWt0/s1600/SNC10185r.JPG&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5615761793388233698&quot; src=&quot;http://3.bp.blogspot.com/-es_JRicIPAo/Te8xmPYdw-I/AAAAAAAAADg/7D1S5p9xWt0/s400/SNC10185r.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Five completed playpauses&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So, I now have a Playpause to use at work when I'm listening to music, and I can now apply my knowledge of making PCBs and doing bed-of-nails programming to the USB Doodad.  Maybe you can too. If you have any questions, or want help making a Playpause or PCBs, ask me.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-7052522188933115622?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Jun 2011 12:16:06 +0000</pubDate>
	<author>noreply@blogger.com (Mitch Davis)</author>
</item>
<item>
	<title>Capn's Tech: Playpause 1: Design</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-3127914972560903699</guid>
	<link>http://capnstech.blogspot.com/2011/05/usb-doodad-7-playpause-and-bed-of-nails.html</link>
	<description>Ever needed to quickly pause the music or movie that's playing on your computer?  Maybe someone is calling you, or you're trying to listen to something else.  Hunting around for the pause button with a mouse takes several seconds.  What if you could instantly pause with a single button press?&lt;br /&gt;When a &lt;a href=&quot;https://sites.google.com/a/afork.com/usbdoodad/&quot;&gt;USB Doodad&lt;/a&gt; gets shipped to someone, it will have a presoldered AVR chip.  Somehow I need to get the bootloader into the AVR chip without soldering anything else to the board.  The natural way of doing this is via a bed of nails, as I mentioned in &lt;a href=&quot;http://capnstech.blogspot.com/2010/11/usb-doodad-4-blinkenleds.html&quot;&gt;Doodad 4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have been messing around with bed-of-nails recently, via a little subproject I've been working on called &quot;Playpause&quot;:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-d_IuyIx4uZc/Te1ahREd2pI/AAAAAAAAAWA/ov6iMWn2e68/s1600/playpause-brd.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;http://3.bp.blogspot.com/-d_IuyIx4uZc/Te1ahREd2pI/AAAAAAAAAWA/ov6iMWn2e68/s320/playpause-brd.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;On top is the Playpause board.&lt;br /&gt;Below is the board for doing bed-of-nails testing.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;While the USB Doodad is designed to be a general purpose reprogrammable device, Playpause just does one job: It is a tiny USB device which pretends to be a HID keyboard.  But unlike most keyboards, playpause only knows how to send one keycode: The play/pause keycode you'll get from pressing the play/pause button on a multimedia keyboard.  Thus with one of these plugged in, you can play and pause your music or movie player without having to get busy with the mouse.  &amp;nbsp;It's small, inexpensive, and easy to build.&lt;br /&gt;&lt;br /&gt;(You can find the source code and the KiCad design files &lt;a href=&quot;https://github.com/CapnKernel/playpause&quot;&gt;here&lt;/a&gt;.&amp;nbsp; TODO: I'm currently working out how to do git submodules so I can  park  the V-USB code inside playpause, because that's how V-USB likes to  be  used).&lt;br /&gt;&lt;br /&gt;Because it sends a standard USB HID Keyboard keycode, PlayPause will work with any operating system, and doesn't need to have drivers installed.  (Although at present it doesn't work with the Mac.  I wish I knew why).&lt;br /&gt;&lt;br /&gt;Playpause uses the &lt;a href=&quot;http://www.obdev.at/products/vusb/&quot;&gt;V-USB&lt;/a&gt; software USB stack.  This is a good choice for AVR projects that you want to be USB-capable, even if the AVR micro you're using doesn't have support for USB in hardware.  But there's a catch: V-USB implements USB by using software, which means that when processing USB traffic, the micro can't do anything else.&amp;nbsp;  In practice, this is fine if the task you want your micro to do isn't timing or latency critical, and for this V-USB works very nicely.&lt;br /&gt;&lt;br /&gt;Playpause uses surface mount soldering, and the micro I'm using is the 8-pin &lt;a href=&quot;http://www.atmel.com/dyn/products/product_card.asp?part_id=3612&quot;&gt;ATtiny85&lt;/a&gt; in a&lt;a href=&quot;http://www.atmel.com/dyn/products/packagecard.asp?category_id=163&amp;family_id=607&amp;subfamily_id=791&amp;part_id=3612&amp;package_id=462&amp;green=1&quot;&gt; SOIC-8 package&lt;/a&gt; .  The pitch on these pins is less than half of an ATtiny85 in PDIP format, which is why Playpause can be made so conveniently small.&lt;br /&gt;&lt;br /&gt;While the USB port provides 5V for your device to run on, the USB signalling is done at 3.3V.&amp;nbsp;  This means that every USB project needs to handle this difference somehow.&amp;nbsp;  There are two basic ways of doing this.&amp;nbsp;  The first is to regulate the 5V down to 3.3V, then feed your micro on 3.3V.&amp;nbsp;  This can be done with a linear regulator, or by using the voltage drop across two ordinary diodes.&amp;nbsp;  The second is to run your micro at 5V, but clamp the USB signals to 3.3V.&amp;nbsp;  This can be done with two 3.6V zener diodes, or I've seen some designs (for example the SparkFun &lt;a href=&quot;http://www.sparkfun.com/products/9147&quot;&gt;AVRStick&lt;/a&gt;) that use the forward voltage drop of blue LEDs.&amp;nbsp;  The reason why 3.6V zener diodes are used instead of 3.3V, is that at the frequencies USB runs at, and given the capacitance of a zener diode, the 3.6V zener effectively clamps at 3.3V.&amp;nbsp;  For Playpause, I'm taking the second approach, as shown in “solution B” on the V-USB &lt;a href=&quot;http://vusb.wikidot.com/hardware#toc3&quot;&gt;hardware design page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Playpause has no external crystal or resonator.&amp;nbsp;  Instead, the clock for the AVR chip is generated onboard using the ATtiny85's RC oscillator.&amp;nbsp;  This presents two problems.&amp;nbsp;  The first is that the RC oscillator is uncalibrated, and may not produce the accurate or stable frequency needed to bit-bang USB packets.&amp;nbsp;  The second problem is that the minimum frequency at which the controller can run V-USB is 12MHz, which is above the nominal 8MHz of the RC oscillator.&amp;nbsp;  How is this situation resolved?&lt;br /&gt;&lt;br /&gt;The first problem can be solved by noting that certain parts of the USB protocol take a precise amount of time.&amp;nbsp;  The V-USB software in Playpause can count how many CPU cycles this known time period takes, then from this calculate a calibration value for the RC oscillator.  That calibration value then makes sure the RC oscillator produces an exact frequency.&lt;br /&gt;&lt;br /&gt;The solution to the second problem lies in the ATtiny85's built-in &lt;a href=&quot;http://en.wikipedia.org/wiki/Phase-locked_loop&quot;&gt;digital PLL&lt;/a&gt;.  This circuit has a multiply-by-8 function, so that an input of 8.25MHz from the RC oscillator (8MHz but tweaked up a bit via calibration) gets boosted by the PLL to 66MHz.  This frequency is then fed through the clock prescaler, which divides it by 4, to give 16.5MHz, which a frequency &lt;a href=&quot;http://vusb.wikidot.com/hardware#toc4&quot;&gt;supported by V-USB&lt;/a&gt;.  Curiously, only certain Atmel chips have a PLL, including the ATtiny&lt;i&gt;x&lt;/i&gt;5, but excluding the ATmega&lt;i&gt;x&lt;/i&gt;8 range.  Very useful indeed!&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Things to do&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;Macs&lt;/h3&gt;&lt;br /&gt;For some reason, Playpause currently doesn't work with Mac computers.  My Mac-using friends tell me that the Playpause is able to identify itself correctly, but for some reason MacOS doesn't believe it has a driver to handle the multimedia keypresses Playpause is sending.  To try to solve this problem, my plan is to plug in a commercial multimedia keyboard, and sniff the codes it sends when the pause button is sent.  That's what I originally did when developing the software, but perhaps there's something I missed, particularly in how multimedia keyboards identify themselves.  Either way, it seems that only a software change would be needed to fix the problem.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Suspend&lt;/h3&gt;&lt;br /&gt;The USB standard says that when the computer suspends, USB devices should put themselves into a low power mode.  I'm not currently doing that, so my board is using more power than is strictly necessary.  To fix this, I'd set up the processor to sleep until a USB interrupt is received, and if it's not the wakeup condition, go back to sleep.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Code cleanup&lt;/h3&gt;&lt;br /&gt;The code that's in Git is a direct offshoot of my work on the USB Doodad.  As such, it's cluttered with a bunch of things which are not relevant to Playpause.  Some janitorial work here would be good.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Coming next: &lt;i&gt;Making PCBs at home&lt;/i&gt;&lt;/b&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-3127914972560903699?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Jun 2011 00:43:58 +0000</pubDate>
	<author>noreply@blogger.com (Mitch Davis)</author>
</item>
<item>
	<title>Qi Hardware: Copyleft Hardware News 2011-06-01</title>
	<guid>http://en.qi-hardware.com/wiki/News#Copyleft_Hardware_News_2011-06-01</guid>
	<link>http://en.qi-hardware.com/wiki/News#Copyleft_Hardware_News_2011-06-01</link>
	<description>&lt;center&gt;
&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:ME_367_CopingStrategies.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;ME 367 CopingStrategies.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/c/ca/ME_367_CopingStrategies.png/800px-ME_367_CopingStrategies.png&quot; width=&quot;800&quot; height=&quot;249&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;Copying is an act of love. Please copy &amp;amp; share.&lt;/i&gt;&lt;br /&gt;
&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.mimiandeunice.com&quot;&gt;Mimi and Eunice&lt;/a&gt; by Nina Paley
&lt;/p&gt;
&lt;/center&gt;
&lt;h2&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;Milkymist_2&quot;&gt;Milkymist&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt; We decided to market Milkymist One as a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Video_synthesizer&quot;&gt;video synthesizer&lt;/a&gt;, not interactive VJ station as planned before. Almost everybody on the project felt that video synthesizer would get more people to understand quicker what the product does, and lead them in the right direction with their second question, whereas interactive VJ station would send them in all sorts of different directions.
&lt;/li&gt;&lt;li&gt; Yi Zhang took a series of &lt;a href=&quot;http://en.qi-hardware.com/wiki/Milkymist_One_pictures&quot; title=&quot;Milkymist One pictures&quot;&gt;Milkymist One product shots&lt;/a&gt; at the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.mayray.net/2011/index.html&quot;&gt;Mayray photo studio&lt;/a&gt; in Shanghai.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td width=&quot;320&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_studio_shot.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 studio shot.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/e/e3/M1_studio_shot.jpg/300px-M1_studio_shot.jpg&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td width=&quot;320&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_in_hand.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 in hand.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/b/b8/M1_in_hand.jpg/300px-M1_in_hand.jpg&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td width=&quot;260&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_vga.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 vga.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/d/d4/M1_vga.jpg/250px-M1_vga.jpg&quot; width=&quot;250&quot; height=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td width=&quot;260&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_video_in.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 video in.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/0/05/M1_video_in.jpg/250px-M1_video_in.jpg&quot; width=&quot;250&quot; height=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td width=&quot;260&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_buttons.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 buttons.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/f3/M1_buttons.jpg/250px-M1_buttons.jpg&quot; width=&quot;250&quot; height=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td width=&quot;260&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_dmx.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 dmx.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/2b/M1_dmx.jpg/250px-M1_dmx.jpg&quot; width=&quot;250&quot; height=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Sebastien and Xiangfu released several Milkymist One software updates. (&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-April/001387.html&quot;&gt;Sebastien April 6 - v0.3&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.milkymist.org/snapshots/2011-05-09/ChangeLog&quot;&gt;Xiangfu May 9 - snapshot&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-May/001530.html&quot;&gt;Sebastien May 23 - v0.4&lt;/a&gt;)
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Screenshot-01.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/0/09/Screenshot-01.png/500px-Screenshot-01.png&quot; width=&quot;500&quot; height=&quot;375&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Screenshot-01.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;One of many new features and improvements in Milkymist One.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Milkymist One was demoed and used in many places around the world, by Kristian Paul at &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.labsurlab.co/&quot;&gt;labSurlab in Medellín/Colombia&lt;/a&gt;, Jon Phillips at the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/wiki/Press_Release:_Milkymist_One_video_synthesizer_shown_at_6th_Libre_Graphics_Meeting_in_Montreal&quot;&gt;6th Libre Graphics Meeting in Montreal/Canada&lt;/a&gt;, guyzmo at a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://fabelier.org/lua-programming-language-by-julien-danjou/&quot;&gt;Lua workshop in Paris&lt;/a&gt;, Sebastien at &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://pixxxel.net/milkymist-open-hardware-vj-station&quot;&gt;PiXXXeL in Amsterdam&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.vision-r.org&quot;&gt;Vision-R festival in Paris&lt;/a&gt; and the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://thsf.tetalab.org/WS29th/Milkymist&quot;&gt;Toulouse Hacker Space Factory&lt;/a&gt;.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:IMG_3638.JPG&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5c/IMG_3638.JPG/500px-IMG_3638.JPG&quot; width=&quot;500&quot; height=&quot;375&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:IMG_3638.JPG&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Milkymist One at labSurlab in Medellín, Colombia, April 7, 2011&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Xiangfu Liu added a screenshot feature to Milkymist One, here's a collection of screenshots.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Pshroomery.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Pshroomery.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/4/4c/Pshroomery.png/250px-Pshroomery.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:8bitstarfield.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;8bitstarfield.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/23/8bitstarfield.png/250px-8bitstarfield.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Pyramids.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Pyramids.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/0/0d/Pyramids.png/250px-Pyramids.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Drunkenboat.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Drunkenboat.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/9/9b/Drunkenboat.png/250px-Drunkenboat.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_screenshot_cam3.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 screenshot cam3.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/11/M1_screenshot_cam3.png/250px-M1_screenshot_cam3.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Madness2.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Madness2.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/0/02/Madness2.png/250px-Madness2.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Burningdisc2.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Burningdisc2.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/b/b9/Burningdisc2.png/250px-Burningdisc2.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Balkacid.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Balkacid.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/0/0c/Balkacid.png/250px-Balkacid.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Kalei.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Kalei.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/f3/Kalei.png/250px-Kalei.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Interwoven.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Interwoven.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/12/Interwoven.png/250px-Interwoven.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:M1_screenshot_cam1.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;M1 screenshot cam1.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/b/b9/M1_screenshot_cam1.png/250px-M1_screenshot_cam1.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ssmatrix.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Ssmatrix.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/c/cf/Ssmatrix.png/250px-Ssmatrix.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Aqualung.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Aqualung.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5a/Aqualung.png/250px-Aqualung.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Burningdisc.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Burningdisc.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/c/c3/Burningdisc.png/250px-Burningdisc.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Mm1.3.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Mm1.3.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/3/3b/Mm1.3.png/250px-Mm1.3.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Torridtales3.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Torridtales3.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/28/Torridtales3.png/250px-Torridtales3.png&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Real-time video synthesis is an exciting feature of Milkymist One. There are still few recordings of performances, because nobody has a VGA grabber, and real-time encoding and streaming into formats such as Ogg Theora or WebM is possible but will require substantial work. Kristian Paul has recorded a small segment with a second video camera... (&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.vimeo.com/22966103&quot;&gt;another one from Sebastien&lt;/a&gt;)
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_9&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Kpaul_m1_video-in_sample.ogv&quot; class=&quot;image&quot; title=&quot;Kpaul m1 video-in sample.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/a/ae/Kpaul_m1_video-in_sample.ogv/seek%3D13-Kpaul_m1_video-in_sample.ogv.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Kpaul m1 video-in sample.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Kpaul_m1_video-in_sample.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Video-in with Milkymist One. [0:27 min, 19.6 MB]&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; 
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Xiangfu Liu demonstrated &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Open_Sound_Control&quot;&gt;Open Sound Control&lt;/a&gt; (&quot;OSC&quot;) with his Milkymist One. OSC is another promising way to control Milkymist One, with nice clients on popular smartphones and tablets.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_10&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:TouchOSC-control-m1-performence.ogv&quot; class=&quot;image&quot; title=&quot;TouchOSC-control-m1-performence.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/6/68/TouchOSC-control-m1-performence.ogv/seek%3D33-TouchOSC-control-m1-performence.ogv.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;TouchOSC-control-m1-performence.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:TouchOSC-control-m1-performence.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Controlling Milkymist One from an Android phone over OSC (Note: video without sound). [0:57 min, 6.5 MB]&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Andrew Zonenberg, a PhD student from &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Rensselaer_Polytechnic_Institute&quot;&gt;Rensselaer Polytechnic Institute&lt;/a&gt; in New York is embarking on a series of semiconductor DIY experiments and projects. If you are interested in following his work, start with the 5-page long &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://colossus.cs.rpi.edu/~azonenberg/papers/litho1.pdf&quot;&gt;DIY fabrication of microstructures by projection photolitography&lt;/a&gt;. Andrew reports about progress in #milkymist on Freenode (&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://webchat.freenode.net/?randomnick=1&amp;channels=milkymist&quot;&gt;webchat&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/mmlogs/search?q=azonenberg&quot;&gt;backlog&lt;/a&gt;).&lt;br /&gt;Next up on his agenda is the manufacture of a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Ring_oscillator&quot;&gt;ring oscillator&lt;/a&gt; (pictured below) onto a 35 USD 4' ' wafer. If things go well after that maybe a replica of Intel's venerable &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/4004&quot;&gt;4004 CPU&lt;/a&gt;.&lt;br /&gt;Andrew will document his entire process publicly, and release all tools under free licenses.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Azonenberg_ring_oscillator.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/f1/Azonenberg_ring_oscillator.png/500px-Azonenberg_ring_oscillator.png&quot; width=&quot;500&quot; height=&quot;271&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Azonenberg_ring_oscillator.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Ring_oscillator&quot;&gt;Ring Oscillator&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Slashdot carried a post about our soon-to-be launched open CPU - Milkymist. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://hardware.slashdot.org/story/11/05/10/232229/Consumer-Device-With-Open-CPU-Out-of-Beta-Soon&quot;&gt;[11]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Sebastien started writing a nice Wikipedia article about the Milkymist project. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://en.wikipedia.org/wiki/Milkymist&quot;&gt;[12]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Sebastien managed to get a clarification from Google that they are not planning to release open and free sources for their WebM hardware codec. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-May/001516.html&quot;&gt;[13]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Two threads on the mailing list discussed plans about adding a MMU to the Milkymist SoC. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-April/001418.html&quot;&gt;[14]&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-April/001472.html&quot;&gt;[15]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Hong Kong based Sharism Ltd, manufacturer of the Milkymist One, sold out its batch of Milkymist One RC2 units. A big THANKS! to all supportive buyers who believed in this product at such an early stage. RC3 will be available soon...
&lt;/li&gt;&lt;li&gt; Adam Wang reported on the latest Milkymist One RC3 production status. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.milkymist.org/pipermail/devel-milkymist.org/2011-May/001528.html&quot;&gt;[16]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt; &lt;span class=&quot;mw-headline&quot; id=&quot;NanoNote_2&quot;&gt;NanoNote&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt; Werner Almesberger implemented an external VGA display using the 8:10 memory card slot of his Ben NanoNote. Ben + &lt;a href=&quot;http://en.qi-hardware.com/wiki/UBB&quot; title=&quot;UBB&quot;&gt;UBB&lt;/a&gt; + a few components = VGA. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://downloads.qi-hardware.com/people/werner/ubb/vga/web/&quot;&gt;homepage&lt;/a&gt;, mailing list posts: &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-April/007808.html&quot;&gt;[17]&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-April/007872.html&quot;&gt;[18]&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-April/007891.html&quot;&gt;going high-res&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/007903.html&quot;&gt;DMA and 1024x768&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/007907.html&quot;&gt;dual-screen&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/007928.html&quot;&gt;640x480 without FIFO jitter&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/007937.html&quot;&gt;productization&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/007972.html&quot;&gt;dithering&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_11&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_UBB_VGA.ogv&quot; class=&quot;image&quot; title=&quot;Ben UBB VGA.ogv&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/7/76/Ben_UBB_VGA.ogv/seek%3D15-Ben_UBB_VGA.ogv.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Ben UBB VGA.ogv&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_UBB_VGA.ogv&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ben NanoNote and external VGA display. [0:27 min, 4.8 MB]&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td colspan=&quot;4&quot; align=&quot;center&quot;&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ubb-vga-schem.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Ubb-vga-schem.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/fb/Ubb-vga-schem.png/800px-Ubb-vga-schem.png&quot; width=&quot;800&quot; height=&quot;358&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ubb-vga-pub-plugged-medium.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Ubb-vga-pub-plugged-medium.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/18/Ubb-vga-pub-plugged-medium.jpg/250px-Ubb-vga-pub-plugged-medium.jpg&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ubb-vga-pub-v2-medium.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Ubb-vga-pub-v2-medium.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/6/68/Ubb-vga-pub-v2-medium.jpg/250px-Ubb-vga-pub-v2-medium.jpg&quot; width=&quot;250&quot; height=&quot;254&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga01-ubb-vga-screenshot.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga01-ubb-vga-screenshot.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/f3/Vga01-ubb-vga-screenshot.jpg/250px-Vga01-ubb-vga-screenshot.jpg&quot; width=&quot;250&quot; height=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga05-ubb-vga2-tstimg.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga05-ubb-vga2-tstimg.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/5d/Vga05-ubb-vga2-tstimg.jpg/250px-Vga05-ubb-vga2-tstimg.jpg&quot; width=&quot;250&quot; height=&quot;189&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga06-ubb-ccube-jlime.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga06-ubb-ccube-jlime.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/56/Vga06-ubb-ccube-jlime.jpg/250px-Vga06-ubb-ccube-jlime.jpg&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga07-ubb-vga2-ppm.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga07-ubb-vga2-ppm.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/50/Vga07-ubb-vga2-ppm.jpg/250px-Vga07-ubb-vga2-ppm.jpg&quot; width=&quot;250&quot; height=&quot;173&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga16-ubb-vga-hsync-noisy.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga16-ubb-vga-hsync-noisy.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/55/Vga16-ubb-vga-hsync-noisy.jpg/250px-Vga16-ubb-vga-hsync-noisy.jpg&quot; width=&quot;250&quot; height=&quot;159&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga18-hsync-noisy.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga18-hsync-noisy.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/a/a0/Vga18-hsync-noisy.png/250px-Vga18-hsync-noisy.png&quot; width=&quot;250&quot; height=&quot;64&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga17-ubb-vga-hsync-clean.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga17-ubb-vga-hsync-clean.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/16/Vga17-ubb-vga-hsync-clean.jpg/250px-Vga17-ubb-vga-hsync-clean.jpg&quot; width=&quot;250&quot; height=&quot;157&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga19-hsync-clean.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga19-hsync-clean.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/24/Vga19-hsync-clean.png/250px-Vga19-hsync-clean.png&quot; width=&quot;250&quot; height=&quot;64&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga08-ubb-vga-800x600.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga08-ubb-vga-800x600.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/b/bb/Vga08-ubb-vga-800x600.jpg/250px-Vga08-ubb-vga-800x600.jpg&quot; width=&quot;250&quot; height=&quot;186&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga09-ubb-vga-1024x768-33Hz.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga09-ubb-vga-1024x768-33Hz.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/6/6b/Vga09-ubb-vga-1024x768-33Hz.jpg/250px-Vga09-ubb-vga-1024x768-33Hz.jpg&quot; width=&quot;250&quot; height=&quot;187&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga10-ubb-vga-1024x768-36Hz.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga10-ubb-vga-1024x768-36Hz.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/e/ea/Vga10-ubb-vga-1024x768-36Hz.jpg/250px-Vga10-ubb-vga-1024x768-36Hz.jpg&quot; width=&quot;250&quot; height=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga11-ubb-dma-tstimg.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga11-ubb-dma-tstimg.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/1b/Vga11-ubb-dma-tstimg.jpg/250px-Vga11-ubb-dma-tstimg.jpg&quot; width=&quot;250&quot; height=&quot;184&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga20-vga-ben-front.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga20-vga-ben-front.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/1a/Vga20-vga-ben-front.png/250px-Vga20-vga-ben-front.png&quot; width=&quot;250&quot; height=&quot;93&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga21-vga-ben-back.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga21-vga-ben-back.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/4/44/Vga21-vga-ben-back.png/250px-Vga21-vga-ben-back.png&quot; width=&quot;250&quot; height=&quot;93&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga22-prod-assembly-draft.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga22-prod-assembly-draft.png&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/52/Vga22-prod-assembly-draft.png/250px-Vga22-prod-assembly-draft.png&quot; width=&quot;250&quot; height=&quot;85&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga23-800px-Flower_bouquet20091225.JPG&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga23-800px-Flower bouquet20091225.JPG&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/59/Vga23-800px-Flower_bouquet20091225.JPG/250px-Vga23-800px-Flower_bouquet20091225.JPG&quot; width=&quot;250&quot; height=&quot;168&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga24-ubb-vga-bouquet-dither222.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga24-ubb-vga-bouquet-dither222.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/f/f5/Vga24-ubb-vga-bouquet-dither222.jpg/250px-Vga24-ubb-vga-bouquet-dither222.jpg&quot; width=&quot;250&quot; height=&quot;185&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga14-ubb-vga-dual-screen.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga14-ubb-vga-dual-screen.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/2/26/Vga14-ubb-vga-dual-screen.jpg/250px-Vga14-ubb-vga-dual-screen.jpg&quot; width=&quot;250&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;floatnone&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Vga13-ubb-dma-web.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;Vga13-ubb-dma-web.jpg&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/a/a4/Vga13-ubb-dma-web.jpg/250px-Vga13-ubb-dma-web.jpg&quot; width=&quot;250&quot; height=&quot;176&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Slashdot &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://hardware.slashdot.org/story/11/05/07/1215246/Micro-SD-Card-Slot-Abused-As-VGA-Port&quot;&gt;covered&lt;/a&gt; Werner's VGA hardware hack (and &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://hackaday.com/2011/05/10/bit-banging-vga-from-an-sd-card-slot/&quot;&gt;hackaday&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://dangerousprototypes.com/2011/05/09/bitbang-vga-from-an-sd-card-slot/&quot;&gt;Dangerous Prototypes&lt;/a&gt;).
&lt;/li&gt;&lt;li&gt; Werner Almesberger wrote &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/ben-wpan/source/tree/master/tools/dirtpan&quot;&gt;dirtpan&lt;/a&gt;, a quick and dirty tool to demonstrate IPv4 over 802.15.4 ben-wpan boards. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/008016.html&quot;&gt;details&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;div id=&quot;ogg_player_12&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Wpan-ipv4.ogg&quot; class=&quot;image&quot; title=&quot;Wpan-ipv4.ogg&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/images/thumb/1/17/Wpan-ipv4.ogg/seek%3D105-Wpan-ipv4.ogg.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Wpan-ipv4.ogg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;button id=&quot;id&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/extensions/OggHandler/play.png&quot; width=&quot;22&quot; height=&quot;22&quot; alt=&quot;Play video&quot; /&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Wpan-ipv4.ogg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ben and Ben talking. [3:30 min, 14.9 MB]&lt;br /&gt;(background info: the video was cut using the command-line &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.mltframework.org/twiki/bin/view/MLT/MltMelt&quot;&gt;melt&lt;/a&gt; utility from the &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://www.mltframework.org/&quot;&gt;MTL framework&lt;/a&gt;, sound track P97 made with &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Korg_Kaossilator&quot;&gt;Korg Kaossilator&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://projects.qi-hardware.com/index.php/p/wernermisc/source/tree/master/mlt/wpan-ipv4&quot;&gt;scripts&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Tuxbrain continued with ben-wpan production, PCBs have been made (see picture), component mounting date (SMT) is scheduled for next week.
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Production_PCB_atben06.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/e/ea/Production_PCB_atben06.jpg/500px-Production_PCB_atben06.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Production_PCB_atben06.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Tuxbrain's ben-wpan PCBs.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; kyak proposed a Russian keyboard layout for the NanoNote, Jane took it one step further and hacked her keyboard into a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Colemak#Colemak&quot;&gt;Colemak layout&lt;/a&gt;! &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/008056.html&quot;&gt;[19]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Keyboard-rus.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/1/11/Keyboard-rus.png/300px-Keyboard-rus.png&quot; width=&quot;300&quot; height=&quot;158&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Keyboard-rus.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Russian keyboard layout proposed by kyak.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Colemak_kbd_adhesive.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/5/54/Colemak_kbd_adhesive.jpg/300px-Colemak_kbd_adhesive.jpg&quot; width=&quot;300&quot; height=&quot;175&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Colemak_kbd_adhesive.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Fabric paint as adhesive.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Colemak_kbd_top.jpg&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/thumb/7/71/Colemak_kbd_top.jpg/300px-Colemak_kbd_top.jpg&quot; width=&quot;300&quot; height=&quot;215&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Colemak_kbd_top.jpg&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Jane's finished Colemak keyboard layout.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; viric has been (for a while already) maintaining &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://vicerveza.homeunix.net/~viric/cgi-bin/nanonixos/&quot;&gt;nanonixos&lt;/a&gt;, a &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Nix_package_manager&quot;&gt;Nix package manager&lt;/a&gt; based distribution for the Ben NanoNote. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://vicerveza.homeunix.net/~viric/cgi-bin/nanonixos/&quot;&gt;[20]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; Mark Tuson reported running Debian Wheezy on his NanoNote. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/008018.html&quot;&gt;[21]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; David Kuehling added hardware acceleration to the MPlayer video player, which can now play most files in Ogg Theora and WebM formats up to 320x240 and 30fps, and most audio except for surround-sound. Smaller video files are automatically played back full-screen by using the CPU's hardware-scaler. &lt;a rel=&quot;nofollow&quot; class=&quot;external autonumber&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/007926.html&quot;&gt;[22]&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_2011-05-28_mplayer.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/9/98/Ben_2011-05-28_mplayer.png&quot; width=&quot;320&quot; height=&quot;240&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_2011-05-28_mplayer.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Big_Buck_Bunny&quot;&gt;Big Buck Bunny&lt;/a&gt; from the Blender Foundation running on Ben NanoNote.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Hans Bezemer released &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.wikipedia.org/wiki/Forth_%28programming_language%29&quot;&gt;4tH&lt;/a&gt; v3.61.1 for the Ben Nanonote. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-April/007695.html&quot;&gt;Changelog&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_2011-05-28_4th.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/c/cb/Ben_2011-05-28_4th.png&quot; width=&quot;320&quot; height=&quot;240&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_2011-05-28_4th.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;4tH on Ben, thanks to Hans Bezemer&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt; Xiangfu Liu released a new OpenWrt 2011-05-28 image for Ben NanoNote. &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://lists.en.qi-hardware.com/pipermail/discussion/2011-May/008071.html&quot;&gt;Announcement&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;http://en.qi-hardware.com/wiki/OpenWrt_Software_Image#Image_2011-05-28&quot;&gt;Changelog&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;div class=&quot;thumb tnone&quot;&gt;&lt;div class=&quot;thumbinner&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_2011-05-28_bootup.png&quot; class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://en.qi-hardware.com/w/images/0/06/Ben_2011-05-28_bootup.png&quot; width=&quot;320&quot; height=&quot;240&quot; class=&quot;thumbimage&quot; /&gt;&lt;/a&gt;  &lt;div class=&quot;thumbcaption&quot;&gt;&lt;div class=&quot;magnify&quot;&gt;&lt;a href=&quot;http://en.qi-hardware.com/wiki/File:Ben_2011-05-28_bootup.png&quot; class=&quot;internal&quot; title=&quot;Enlarge&quot;&gt;&lt;img src=&quot;http://en.qi-hardware.com/w/skins/common/images/magnify-clip.png&quot; width=&quot;15&quot; height=&quot;11&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ben NanoNote OpenWrt 2011-05-28 image after bootup.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;&lt;br /&gt;
--&lt;a href=&quot;http://en.qi-hardware.com/wiki/User:Qi_team&quot; title=&quot;User:Qi team&quot;&gt;Qi team&lt;/a&gt; 03:00, 1 June 2011 (CET)&lt;/p&gt;</description>
	<pubDate>Wed, 01 Jun 2011 03:00:00 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: New Gemei X760+</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-5373089337570450091</guid>
	<link>http://www.dingux.com/2011/05/new-gemei-x760.html</link>
	<description>In the comments of the previous post Neno provided the following link:&lt;br /&gt;&lt;br /&gt;http://www.it.com.cn/audio/mp4/news/2010/03/10/09/757299_1.html&lt;br /&gt;&lt;br /&gt;So I asked ChinaChip. That is the upcoming Gemei X760+ (yes, same name than the old x760+, fun!), and the specs in the linked page are wrong. It's due out by the end of May according to ChinaChip.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-57Cfwh20v6w/Tdz-OwRW5HI/AAAAAAAAAEI/ibP_fiZ1c34/s1600/X760%252B%25E6%2597%25B6%25E5%25B0%259A%25E7%2589%2588%25E6%2593%258D%25E4%25BD%259C%25E6%258C%2587%25E5%258D%2597.jpg&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-57Cfwh20v6w/Tdz-OwRW5HI/AAAAAAAAAEI/ibP_fiZ1c34/s400/X760%252B%25E6%2597%25B6%25E5%25B0%259A%25E7%2589%2588%25E6%2593%258D%25E4%25BD%259C%25E6%258C%2587%25E5%258D%2597.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5610638765226124402&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;It's CC1800 based, same SoC than in the Gemei A330. LCD is 4.3&quot; 480x272. I like the wealth of controls in the lower side.&lt;br /&gt;&lt;br /&gt;Unfortunately work on the CC1800 has been slow. It's no fun to write code based on other code with no comments and no programmer's manual, plus I recently got sponsoring for porting dingux to a JZ4755 based device (can't say much about that at the moment), which will be eating up absolutely all of my spare time for the next couple of months. As I already said, I'm not happy being the bottleneck here, so I asked ChinaChip to let me disclose the information they provided on the CC1800 but got no reply, so for now I must honor my promise of keeping the information closed.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-5373089337570450091?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 25 May 2011 16:15:20 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Capn's Tech: Rumours of this blog's death are premature</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-906962863854324273</guid>
	<link>http://capnstech.blogspot.com/2011/05/rumours-of-this-blogs-death-are.html</link>
	<description>Wow, has it really been three months since I last blogged?  Hard to believe.  I have been so busy hacking on cool stuff.  Previously my blog posts have been to demonstrate something, which is all well and good when one has something to demonstrate.  I think I might do more blog posts which are stream-of-consciousness.&lt;br /&gt;&lt;br /&gt;In particular, the USB Doodad project is not dead.  I have been working on it constantly, just not writing about it.&lt;br /&gt;&lt;br /&gt;Anyway, expect to see a rash of new articles soon.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-906962863854324273?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 19 May 2011 10:08:58 +0000</pubDate>
	<author>noreply@blogger.com (Mitch Davis)</author>
</item>
<item>
	<title>Village Telco: AfrikaBurns Again for a Village Telco</title>
	<guid>http://villagetelco.org/?p=977</guid>
	<link>http://villagetelco.org/2011/05/afrikaburns-again-for-a-village-telco/</link>
	<description>&lt;address&gt;The following is a guest post from &lt;a title=&quot;Scarborough Mesh&quot; href=&quot;http://swug.za.net/wiki/FAQ&quot;&gt;Scarborough Mesh&lt;/a&gt; pioneer David Carman who set up a Mesh Potato telephone network for the second year at &lt;a title=&quot;AfrikaBurn Home Page&quot; href=&quot;http://www.afrikaburn.com/&quot;&gt;AfrikaBurn&lt;/a&gt;.&lt;/address&gt;&lt;hr /&gt;&lt;p&gt;&lt;a class=&quot;tt-flickr tt-flickr-Small&quot; title=&quot;David Carman installing Mesh Potato phone booth&quot; href=&quot;http://www.flickr.com/photos/ssong/5669502074/&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://farm6.static.flickr.com/5061/5669502074_f0652bd461_m.jpg&quot; alt=&quot;David Carman installing Mesh Potato phone booth&quot; width=&quot;240&quot; height=&quot;172&quot; /&gt;&lt;/a&gt; We headed for Tankwa Town with a full load and empty wallet and flashed &amp;amp; configured the Mesh Potatoes (MPs) in the desert using the good ol&amp;#8217; 192.168 range. The booths were different to last year: they had production MPs, new sleeves and no lighting. I set each node with a different Virtual Access Point (VAP) SSID based on the phone number because I found that using an identical VAP SSID caused SSH to die. This will be ideal in the future, when each MP owner has a WPA key on their router and both cabled and VAP connections are linked to the same account. So any device that wants to roam must either switch between VAPs or run batman itself.&lt;/p&gt;&lt;p&gt;Steve came up for 2 days to help set up and bring some much-needed supplies. I discovered that an Olmeca tequila bottle is not as sturdy as it looks. It broke in the trailer and softened up the Tetrapak milk until most of the cartons ruptured too. So a Nano, a few phones and other gear were swamped. Thanks for the rescue, Steve.&lt;/p&gt;&lt;p&gt;We set up the booths easily this year &amp;#8211; far less wiring and better ground pegs. We put phones in the organiser&amp;#8217;s caravan, medics and the gate, with a Nano to cover the 5km distance to the gate. However this year they had moved the gate to the end of the airstrip, so it was only 1km away.&lt;/p&gt;&lt;p&gt;I had brought a netbook with broken screen to act as gateway, redirecting all port 80 traffic to a phpbb3 bulletin board with the appropriate DirtyBoard2.0 skin &amp;#8211; see &lt;a title=&quot;SWUG&quot; href=&quot;http://swug.za.net/phpbb/&quot; target=&quot;_blank&quot;&gt;http://swug.za.net/phpbb/&lt;/a&gt;. I also redirected port 53 to &lt;a title=&quot;Wikipedia entry for dnsmasq&quot; href=&quot;http://en.wikipedia.org/wiki/Dnsmasq&quot; target=&quot;_blank&quot;&gt;dnsmasq&lt;/a&gt; that spoofed the DNS of  Top Level Domains (TLDs) to the gateway IP too. These are the kinds of things that naughty people do, but I think it works well for our application. I set each router&amp;#8217;s dns as 8.8.8.8 and SIP registration to villagetelco.org. When a mesh is connected to the Internet, DNS &amp;amp; SIP will work fine (once VT has a SIP server). If there is no Internet access, DNS/SIP/HTTP can be fielded by an offline gateway server. It does look a bit odd, but it works.&lt;/p&gt;&lt;p&gt;The spoof gateway was running fine for devices connected to the LAN but was not accessible from the WAN. In fact, no other device connected to a different MP could be seen except for the MP&amp;#8217;s LAN address itself. This suggested that there was an issue with the dummy gateway setting on the LAN, required to allow Asterisk to run as per &lt;a href=&quot;http://groups.google.com/group/village-telco-dev/browse_thread/thread/668b2373c94334d5?fwc=1&amp;pli=1&quot;&gt;David &amp;amp; Elektra&amp;#8217;s discussion&lt;/a&gt; &lt;/p&gt;&lt;p&gt;I was 4 days into the trip by then and it was time to party, so I left the gateway for another day &amp;#8211; and Internet access. It was most helpful though in checking the booths. Instead of plugging in a netbook, one could just pick a nearby cosy camp, settle down and connect wirelessly. DHCP, LAN bridging, batman routing, Asterisk were all working fine.&lt;/p&gt;&lt;h3&gt;Solar operation&lt;/h3&gt;&lt;p&gt;This year I invested in a 90W monocrystalline solar panel and regulator for the camp &amp;#8211; 90 watts when the sun is shining for the next 25-50 years. It will be part of my home solar office in a few weeks. I had 4 105AH tractor batteries from last year and connected the gateway netbook and the fixed one (20-40W each), plus about 20W of lighting and didn&amp;#8217;t have a power problem for the whole week.&lt;/p&gt;&lt;p&gt;We used the 10W flexible solar panels and 12AH batteries on the booths as with last year, but this time there was no lighting in the booths. 10W kept the booth MPs up throughout the week, but the batteries drained progressively. I put this down to the number of phone calls being made &amp;#8211; nearly all the time, day &amp;amp; night. One booth&amp;#8217;s phone was left off-hook providing dialtone for a few hours. I disconnected it for a charge back at camp and it was sorted. Perhaps a dialtone hangup can be written into Asterisk for such events on battery-powered phones.&lt;/p&gt;&lt;p&gt;I also installed a phone in a friend&amp;#8217;s art car, connected to the cigarette lighter adapter. It was great to be able to phone the art car from anywhere and ask for a pick-up. However next year, I&amp;#8217;ll bring along some battery clips so that the phone stays on when the car is off &amp;#8211; see whether the MP can &amp;#8220;survive the crank&amp;#8221;.&lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;&lt;a class=&quot;tt-flickr tt-flickr-Small&quot; title=&quot;Mesh Potato Phone Booth at Afrikaburn&quot; href=&quot;http://www.flickr.com/photos/ssong/5668930977/&quot;&gt;&lt;img class=&quot;alignleft&quot; src=&quot;http://farm6.static.flickr.com/5265/5668930977_b11e96bc93_m.jpg&quot; alt=&quot;Mesh Potato Phone Booth at Afrikaburn&quot; width=&quot;240&quot; height=&quot;172&quot; /&gt;&lt;/a&gt; This year was tougher with just Steve and I setting up, but easier because of the work we could build on from last year. The most promising result from this year were that the phones worked and worked hard. It gave me some time to work towards the 4093-node, no-NAT VAP firmware I long for. Although the VAP was not feeding into the gateway, every person with a wifi-enabled laptop or phone saw hotspots &amp;#8211; so hopefully they&amp;#8217;ll be better prepared next time too. Comments from participants were different this year too. Last year the phones were a novelty; this year people were more interested in and supportive of the technology behind the phones.&lt;/p&gt;&lt;p&gt;This year I met some important people for next year. Adriaan Wessels is the technical chap on the organising committee. For next year, we&amp;#8217;ll be able to plan carefully regarding gate link and possibly organiser car links. Organiser confidence in the network will mean that they will be able to pre-announce a &amp;#8220;Tankwanet&amp;#8221; and its services so that participants can be better prepared to take advantage. There are a lot of IT geeks at Afrikaburn. Perhaps some of them could be persuaded to offer services on the network.&lt;/p&gt;&lt;p&gt;Rod Bracher runs the Tankwa Town post office, Burning Mail. They have some old rotary-dialling phones that they connect with carrier but without dialling. I tried to coordinate with him to hook his phones up to the network, but ran out of time. We had a chat about doing so at this burn, so pulse-dialling is definitely on for next year.&lt;/p&gt;&lt;p&gt;The streaming services company antfarm.co.za were at AfrikaBurn this year. I couldn&amp;#8217;t spot their VSAT dish, but made brief contact. They were streaming the burns live, which led me to figure a rule at AfrikaBurn: the isolation is an important part of the event, but the isolation need only exist one way &amp;#8211; incoming. So theoretically, participants should be able to send SMSs, update their twitter accounts and post on a forum on the Internet &amp;#8211; as long as they don&amp;#8217;t see any response from outside the burn. Antfarm&amp;#8217;s ISP only allows Internet connection on port 80, so a little port jiggling and a helpful Internet server should squeeze whatever we need through, except for multiport SIP.&lt;/p&gt;&lt;p&gt;Lastly and simply, Isigidimi was at AB2011. The continuity will help us attract more participants next year, and perhaps more of the VT-dev community. You can set up an Asterisk service, website, jabberd, tinker with pulse-dialling, or just sip on the Kool Aid and be inspired ;^)&lt;/p&gt;&lt;p&gt;Here are some&lt;a title=&quot;More images from Afrikaburn 2011 on Flickr&quot; href=&quot;http://www.flickr.com/search/?q=afrikaburn+2011&amp;z=e&amp;m=tags&quot;&gt; more images from Afrikaburn 2011&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 17 May 2011 16:15:12 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: A320 back to production</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-4145559418648384015</guid>
	<link>http://www.dingux.com/2011/04/a320-back-to-production.html</link>
	<description>It could be infered from the fact that support for a new LCD type was implemented, but I just got confirmation from ChinaChip.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-4145559418648384015?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 27 Apr 2011 12:32:58 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Village Telco: Small Enterprise  Campus Network (SECN)</title>
	<guid>http://villagetelco.org/?p=955</guid>
	<link>http://villagetelco.org/2011/04/small-enterprise-campus-network-secn/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/04/terry_gillett2-e1308239888579.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-965 alignright&quot; title=&quot;Terry Gillett&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/04/terry_gillett2-150x150.jpg&quot; alt=&quot;Terry Gillett&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Meet Terry Gillett.  Terry joined the &lt;a title=&quot;Village Telco google group&quot; href=&quot;http://groups.google.com/group/village-telco-dev/&quot; target=&quot;_blank&quot;&gt;Village Telco community&lt;/a&gt; early this year and purchased a couple of Mesh Potatoes.  He immediately saw the opportunity that Mesh Potatoes might have for smaller networks such as a campus or small firm.  However, the existing firmware for Mesh Potato was very focused on voice communication in a structured Village Telco environment.  Of course it is possible to configure Mesh Potatoes in a 100 different ways but those alternative configurations can be somewhat arcane and a real barrier to alternative uses of the Mesh Potato.&lt;/p&gt;&lt;p&gt;Setting &amp;#8220;smart defaults&amp;#8221; is a key to masking complexity and lowering the barrier to uptake.  Think of Google&amp;#8217;s search minimalism after Altavista et al or Apple&amp;#8217;s simplification of so many applications that were filled with twiddly knobs, checkboxes, and radio buttons in other operating systems that shall remain nameless.    Wordpress is another great example of an application that is capable of impressive sophistication for &amp;#8220;blogging software&amp;#8221; yet pretty much &amp;#8220;just works&amp;#8221; after completely a bare minimum of setup information. Terry has taken us one giant step closer towards WordPress-like usability with his Small Enterprise &amp;#8211; Campus Network (SECN) setup for Mesh Potatoes.&lt;/p&gt;&lt;p&gt;His goal to be able to serve a local network of modest size offering seamless voice and data.  He wanted any Mesh Potato to pick up Internet connectivity via the ethernet port, if it could find it, and for each Mesh Potato to offer a local WiFi access point.  After experimenting a little bit, he chose to install the &lt;a title=&quot;BATMAN-ADV explained&quot; href=&quot;http://www.open-mesh.org/wiki/batman-adv/Wiki&quot; target=&quot;_blank&quot;&gt;BATMAN-ADV&lt;/a&gt; mesh protocol instead of BATMAN protocol we currently use.  The big difference between the two protocols is that BATMAN-ADV runs at Layer 2 and BATMAN at Layer 3 of the &lt;a title=&quot;Wikipedia entry for OSI Model&quot; href=&quot;http://en.wikipedia.org/wiki/OSI_model&quot; target=&quot;_blank&quot;&gt;OSI layer model&lt;/a&gt;.  What does that mean?  Well the simplest explanation is that BATMAN-ADV makes Mesh Potatoes behave as if they were all part of one big &lt;a title=&quot;Wikipedia entry for Network Switch&quot; href=&quot;http://en.wikipedia.org/wiki/Network_switch&quot; target=&quot;_blank&quot;&gt;network switch&lt;/a&gt; which means that IP addressing and routing for the network is dramatically simplified as each Mesh Potato is effectively transparent to the IP network.  This effectively removes the hassle of figuring out network addressing and Network Address Translation for Mesh Potatoes.  Everything is just one flat network which means that devices can easily communicate with each other on the network.  The flip side of this is that you have to be careful about what you put on the network because a poorly configured or worse infected computer can generate a lot of local network traffic.  This is something we&amp;#8217;re exploring but for a small network, BATMAN-ADV seems to work exceedingly well.&lt;/p&gt;&lt;p&gt;With Terry&amp;#8217;s modifications, an SECN configured Mesh Potato network will now:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;offer an encrypted, WPA-enabled, wireless access point as well as a peer-to-peer wireless connection on each mesh Potato.  This is done by creating a Virtual Access Point (VAP) on the same radio interface as the mesh.  Initially we chose not to enable this by default on the core Mesh Potato distribution because we were concerned about network data load have an impact on voice quality but Terry&amp;#8217;s work makes me think that this was a mistake.  Much better to encourage use and solve the problem of over-use rather than ensure a functional but underused network;&lt;/li&gt;&lt;li&gt;pick up a network connection from any DHCP-enabled Internet-connected device it is connected to the ethernet port on the Mesh Potato;&lt;/li&gt;&lt;li&gt;transparently carry DHCP requests over the network to devices connected to Mesh Potatoes whether by ethernet or WiFi; and,&lt;/li&gt;&lt;li&gt;offer simple on-network and also VoIP service provider configurable phone calling.  Local phones can be dialed simply by entering the last 3 digits of the IP address of the Mesh Potato you want to call or the Mesh Potatoes can be registered with any VoIP service provider.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The long and short of this is that if you plug in a bunch of SECN-configured Mesh Potatoes and make sure at least one is connected to something simple like a DHCP-enabled ADSL router, then you have a transparent, highly-adaptable technology for creating a robust local telephone and data network with no wires.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/04/secn.png&quot;&gt;&lt;img class=&quot;alignleft size-medium wp-image-962&quot; title=&quot;Small Enterprise - Campus Network (SECN) diagram&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/04/secn-300x214.png&quot; alt=&quot;example diagram of an SECN network setup&quot; width=&quot;300&quot; height=&quot;214&quot; /&gt;&lt;/a&gt;So, did Terry do this all by himself?  Without Terry&amp;#8217;s interest and hard work at testing, reconfiguring, debugging the SECN version might never have happened but one of the great things about Open Source is that one is rarely starting from scratch.  He was able to build on the configuration that Elektra built for the Mesh Potato which in turn built on great Open Source initiatives like OpenWRT, Asterisk, and others.  And at least a dozen people in the Village Telco community were there to help him solve problems and answer questions.  Better still his work inspired others to try out new configurations with the Mesh Potato and Elektra was inspired to take the &lt;a title=&quot;Village Telco Wiki - Small Enterprise - Campus Network instructions&quot; href=&quot;http://wiki.villagetelco.org/index.php?title=How_To_Set_up_Small_Campus_/_Small_Enterprise_Network&quot; target=&quot;_blank&quot;&gt;set of instructions&lt;/a&gt; that he had developed and embed them in a &lt;a title=&quot;Mesh Potato SECN firmware&quot; href=&quot;http://elektrad.info/download/MESH-POTATO/VT-FIRMWARE-TESTING/Small_Enterprise_Campus_Network/&quot; target=&quot;_blank&quot;&gt;new Mesh Potato firmware distribution&lt;/a&gt; that people can use to set up smaller Village Telco networks to serve both voice and data.&lt;/p&gt;&lt;p&gt;If you&amp;#8217;re interested in trying this out yourself, you&amp;#8217;ll need a few &lt;a title=&quot;Village Telco store&quot; href=&quot;http://store.villagetelco.org&quot;&gt;Mesh Potatoes&lt;/a&gt; to start and then you&amp;#8217;ll want to download the &lt;a title=&quot;SECN firmware repository&quot; href=&quot;http://elektrad.info/download/MESH-POTATO/VT-FIRMWARE-TESTING/Small_Enterprise_Campus_Network/&quot;&gt;latest SECN firmware&lt;/a&gt; and flash the Mesh Potatoes with this new firmware.  Terry has been developing the documentation for the SECN, the latest version of which is &lt;a title=&quot;SECN User Guide Version 1d4&quot; href=&quot;http://wiki.villagetelco.org/images/0/07/SECN_UserGuideV1d4_compressed.pdf&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.  Because this is still at an early stage, that URL may change.  Best to check in with the &lt;a title=&quot;Village Telco community - google group - please join us!&quot; href=&quot;http://groups.google.com/group/village-telco-dev/&quot;&gt;Village Telco google group&lt;/a&gt; to find the latest version.&lt;/p&gt;</description>
	<pubDate>Mon, 25 Apr 2011 11:10:01 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Simple Bugzilla client</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-8773193162317801249</guid>
	<link>http://blog.gbraad.nl/2011/04/simple-bugzilla-client.html</link>
	<description>At the moment I work as an IT Consultant on a QA-related project in Beijing at an outsourced partner. As you might know, the Internet connectivity in China is not optimal and this caused some issues on our end. Since we have to do a lot of cross-checking, we needed a way to keep track of remotely reported bugs and store these in a local instance of a previously in-house developed cross-check tracker. I started to develop a simple client to pull information from the remote Bugzilla instance which is then stored locally. This solved most of the issues we encountered with the latency and improved the productivity of our team.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XML-RPC client&lt;/b&gt;&lt;br /&gt;The local tracker is built in PHP, so at first a small prototype was built to see if it was possible to call &lt;a href=&quot;http://www.bugzilla.org/docs/3.6/en/html/api/Bugzilla/WebService/Server/XMLRPC.html&quot;&gt;Bugzilla's XML-RPC interface&lt;/a&gt;. To ease the development I chose to use the standard ZendFramework library and the XML-RPC client they offer, &lt;a href=&quot;http://framework.zend.com/manual/en/zend.xmlrpc.client.html&quot;&gt;Zend_XmlRpc_Client&lt;/a&gt;. The biggest issue I encountered was the way authentication was implemented on the remote side, but the actual client was simple and very easy to implement. The prototype was first done in a very sequential way... and eventually after a little bit of refactoring this is what remained:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;// Add the AutoLoader&lt;br /&gt;require_once('Zend/Loader/Autoloader.php');&lt;br /&gt;Zend_Loader_Autoloader::getInstance();&lt;br /&gt;&lt;br /&gt;class BugzillaClient&lt;br /&gt;{&lt;br /&gt;  // Initialize the client&lt;br /&gt;  protected $rpcClient = null;&lt;br /&gt;  protected $basUrl = null;&lt;br /&gt;&lt;br /&gt;  public function __construct($baseUrl, $username, $password)&lt;br /&gt;  {&lt;br /&gt;       $this-&amp;gt;baseUrl = $baseUrl;    // Store internal for later use&lt;br /&gt;       $this-&amp;gt;rpcClient = new Zend_XmlRpc_Client($baseUrl . &quot;/xmlrpc.cgi&quot;);&lt;br /&gt;&lt;br /&gt;       $httpClient = $this-&amp;gt;rpcClient-&amp;gt;getHttpClient();&lt;br /&gt;       $httpClient-&amp;gt;setCookieJar();  // Needed to retain user cookie&lt;br /&gt;       $httpClient-&amp;gt;setAuth($username, $password, Zend_Http_Client::AUTH_BASIC);&lt;br /&gt;&lt;br /&gt;       // Login request (XMLRPC)&lt;br /&gt;       $response = $this-&amp;gt;rpcClient-&amp;gt;call('User.login', array(array(&lt;br /&gt;           'login'    =&amp;gt; $username,&lt;br /&gt;           'password' =&amp;gt; $password,&lt;br /&gt;           'remember' =&amp;gt; 1&lt;br /&gt;       )));&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public function __destruct()&lt;br /&gt;  {&lt;br /&gt;       // Logout request (XMLRPC)&lt;br /&gt;       $response = $this-&amp;gt;rpcClient-&amp;gt;call('User.logout', array());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public function Get($id)&lt;br /&gt;  {&lt;br /&gt;       $returnValue = array();&lt;br /&gt;&lt;br /&gt;       // Get request (XMLRPC)&lt;br /&gt;       $response = $this-&amp;gt;rpcClient-&amp;gt;call('Bug.get', array(array('ids' =&amp;gt; $id)));&lt;br /&gt;       $index = 0; // Only retrieving one bug, so don't bother with index now&lt;br /&gt;&lt;br /&gt;       $returnValue['id'] = $id;&lt;br /&gt;       // Construct a remote URL&lt;br /&gt;       $returnValue['url'] = $this-&amp;gt;baseUrl . &quot;/show_bug.cgi?id=&quot; . $id;&lt;br /&gt;       // Collect some basic information about the bug&lt;br /&gt;       $returnValue['summary'] = $response['bugs'][$index]['summary'];&lt;br /&gt;       $returnValue['status'] = $response['bugs'][$index]['status'];&lt;br /&gt;       $returnValue['resolution'] = $response['bugs'][$index]['resolution'];&lt;br /&gt;&lt;br /&gt;       // Comments request (XMLRPC)&lt;br /&gt;       $response = $this-&amp;gt;rpcClient-&amp;gt;call('Bug.comments', array(array('ids' =&amp;gt; $id)));&lt;br /&gt;       // Extract the first comment from the bug and store as description&lt;br /&gt;       $returnValue['description'] = $response['bugs'][$id]['comments'][0]['text'];&lt;br /&gt;&lt;br /&gt;       return $returnValue;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This &lt;a href=&quot;https://github.com/gbraad/bugzilla-client/blob/master/PHP/BugzillaClient.php&quot;&gt;code&lt;/a&gt; provides a constructor which does the login and a 'Get' function to query the remote instance.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example&lt;/b&gt;&lt;br /&gt;To use this client you just need to include this module and create a new BugzillaClient instance.&lt;br /&gt;&lt;div&gt;&lt;pre&gt;require_once('config.php');          // Contains the baseUrl and credentials&lt;br /&gt;require_once('BugzillaClient.php');  // This is the client code&lt;br /&gt;&lt;br /&gt;$bzClient = new BugzillaClient($bzBaseUrl, $bzUsername, $bzPassword);&lt;br /&gt;$bug = $bzClient-&amp;gt;Get($id);&lt;br /&gt;&lt;br /&gt;echo $bug['summary']);&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;After this the summary will be printed.&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Future work&lt;/span&gt;&lt;br /&gt;The last time I did some actual development with PHP was during PHP 3  and the move to PHP 4. At that moment I was not so happy with the Object  Orientation model that the language offered. Luckily this improved a lot and hope this code testifies of that... as I have seen some horrific spaghetti code during these several days.&lt;br /&gt;&lt;br /&gt;Using this solution does not provide a complete up-to-date picture of the bug, but this is not a problem to us. Besides, triggering a script which iterates over all local bugs and queries the remote state solved this issue. Some more features will be implemented, like searching for bugs and pushing comments back. This basic implementation code has been posted to public git repositories, so fork it and start pushing your improvements.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Repositories&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/gbraad/bugzilla-client/&quot;&gt;github&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gitorious.org/bugzilla-client/bugzilla-client/&quot;&gt;gitorious&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-8773193162317801249?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 23 Apr 2011 14:12:47 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Support added for new LCD type (ILI9338)</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-3996498651418478600</guid>
	<link>http://www.dingux.com/2011/04/support-added-for-new-lcd-type-ili9338.html</link>
	<description>A couple of maintenance releases, which basically boild down to the addition of support for a new LCD type, ILI9338. The support was implemented and tested by ChinaChip, I just prepared the dual boot installer and added the new zImage to the old system package.&lt;br /&gt;&lt;br /&gt;Check out the google code downloads page &lt;a href=&quot;http://code.google.com/p/dingoo-linux/downloads/list&quot;&gt;here&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-3996498651418478600?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 21 Apr 2011 20:38:21 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Capn's Tech: USB Doodad 6: Bootloader</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-4631095860363372058</guid>
	<link>http://capnstech.blogspot.com/2011/02/usb-doodad-6-bootloader.html</link>
	<description>Now that we know USB is working, it's time to get the bootloader working.&amp;nbsp; The bootloader is called &quot;bootloadHID&quot;, and can be found here:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.obdev.at/products/vusb/bootloadhid.html&quot;&gt;http://www.obdev.at/products/vusb/bootloadhid.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I downloaded bootloadHID and extracted it:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza src]$&amp;nbsp;wget -q http://www.obdev.at/downloads/vusb/bootloadHID.2010-07-29.tar.gz&lt;br /&gt;[mjd@onza src]$ &lt;b&gt;tar -xzf bootloadHID.2010-07-29.tar.gz&lt;/b&gt;&lt;br /&gt;[mjd@onza src]$ &lt;/div&gt;&lt;br /&gt;I have made some changes to the bootloader source and config:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We're using different pins for the USB.&lt;/li&gt;&lt;li&gt;I want the LEDs to blink to show something's happening.&amp;nbsp; The blinking is different depending on whether the bootloader is in program mode, or has handed control to the application.&lt;/li&gt;&lt;li&gt;Our bootloader program mode switch is connected to an analog input rather than a digital input.&amp;nbsp; Therefore I had to add code to read an analog value.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Once the bootloader is in program mode, I want it to stay in program mode after the button is released.&amp;nbsp; (In the stock code, you have to hold down the button constantly in order to program the MCU). &lt;/li&gt;&lt;li&gt;&amp;nbsp;I've changed the MCU type, the fuses, the execution start address and the right command to run avrdude for my USB programmer:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;--- bootloadHID.2010-07-29.orig/firmware/bootloaderconfig.h&lt;br /&gt;+++ bootloadHID.2010-07-29/firmware/bootloaderconfig.h&lt;br /&gt;@@ -43,7 +43,7 @@&lt;br /&gt;&amp;nbsp;/* This is the port where the USB bus is connected. When you configure it to&lt;br /&gt;&amp;nbsp; * &quot;B&quot;, the registers PORTB, PINB and DDRB will be used.&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;-#define USB_CFG_DMINUS_BIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;+#define USB_CFG_DMINUS_BIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;&amp;nbsp;/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.&lt;br /&gt;&amp;nbsp; * This may be any bit in the port.&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;@@ -106,6 +106,7 @@&lt;br /&gt;&amp;nbsp;#ifndef __ASSEMBLER__&amp;nbsp;&amp;nbsp; /* assembler cannot parse function definitions */&lt;br /&gt;&amp;nbsp;#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;&lt;br /&gt;+#if 0&lt;br /&gt;&amp;nbsp;static inline void&amp;nbsp; bootLoaderInit(void)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD = 1 &amp;lt;&amp;lt; 3; /* activate pull-up for key */&lt;br /&gt;@@ -113,6 +114,7 @@&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;#define bootLoaderCondition()&amp;nbsp;&amp;nbsp; ((PIND &amp;amp; (1 &amp;lt;&amp;lt; 3)) == 0)&amp;nbsp;&amp;nbsp; /* True if jumper is set */&lt;br /&gt;+#endif&lt;br /&gt;&lt;br /&gt;&amp;nbsp;#endif&lt;br /&gt;&lt;br /&gt;--- bootloadHID.2010-07-29.orig/firmware/main.c&lt;br /&gt;+++ bootloadHID.2010-07-29/firmware/main.c&lt;br /&gt;@@ -81,8 +81,15 @@&lt;br /&gt;&lt;br /&gt;&amp;nbsp;static void (*nullVector)(void) __attribute__((__noreturn__));&lt;br /&gt;&lt;br /&gt;+static inline void setLed(const int i)&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~(_BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3));&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= i &amp;amp; (_BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3));&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;&amp;nbsp;static void leaveBootloader()&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; setLed(15);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBG1(0x01, 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cli();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_rww_enable();&lt;br /&gt;@@ -215,9 +222,68 @@&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sei();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;+#define ADC_CHANNEL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;br /&gt;+#define ADC_ENABLED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; ADEN)&lt;br /&gt;+#define ADC_SINGLE_CONVERSION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0 &amp;lt;&amp;lt; ADATE)&lt;br /&gt;+#define ADC_CONV_COMPLETE_INTR_OFF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0 &amp;lt;&amp;lt; ADIE)&lt;br /&gt;+#define ADC_PRESCALE_128&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((1 &amp;lt;&amp;lt; ADPS2) | (1 &amp;lt;&amp;lt; ADPS1) | (1 &amp;lt;&amp;lt; ADPS0))&lt;br /&gt;+#define ADC_REFERENCE_AVCC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0 &amp;lt;&amp;lt; REFS1 | 1 &amp;lt;&amp;lt; REFS0)&lt;br /&gt;+#define ADC_RIGHT_ADJUSTED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0 &amp;lt;&amp;lt; ADLAR)&lt;br /&gt;+#define ADC_START_CONV&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; ADSC)&lt;br /&gt;+#define ADC_CONV_IN_PROGRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; ADSC)&lt;br /&gt;+#define ADC_CONV_INTFLAG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; ADIF)&lt;br /&gt;+&lt;br /&gt;+static inline void ADC_Init()&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write 0 to power up ADC, 1 to power down&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PRR &amp;amp;= ~PRADC;&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCSRA = ADC_ENABLED | ADC_SINGLE_CONVERSION | ADC_CONV_COMPLETE_INTR_OFF | ADC_PRESCALE_128;&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADMUX = ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_CHANNEL;&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; _delay_us(10);&amp;nbsp; /* wait for levels to stabilize */&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;+static inline uint16_t ADC_Read()&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: Start conversion with ADSC=1&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCSRA |= ADC_START_CONV;&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for the conversion to complete&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; while (ADCSRA &amp;amp; ADC_CONV_IN_PROGRESS)&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCSRA |= ADC_CONV_INTFLAG;&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; return ADC;&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;+static inline void ADC_StopReading()&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; // ADEN in ADSRA enables ADC&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCSRA &amp;amp;= ~ADEN;&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;+static inline void&amp;nbsp; bootLoaderInit(void)&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC_Init();&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;+static inline char bootLoaderCondition()&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16_t v = ADC_Read();&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC_StopReading();&lt;br /&gt;+&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; return v &amp;lt; 512;&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;&amp;nbsp;int __attribute__((noreturn)) main(void)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initialize hardware */&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; DDRC |= _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3) | _BV(PC4) | _BV(PC5);&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC = _BV(5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bootLoaderInit();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; odDebugInit();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBG1(0x00, 0, 0);&lt;br /&gt;@@ -229,7 +295,14 @@&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GICR = (1 &amp;lt;&amp;lt; IVSEL); /* move interrupts to boot flash section */&lt;br /&gt;&amp;nbsp;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initForUsbConnectivity();&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int a = 0;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int b = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do{ /* main event loop */&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (++a == 32)&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = 0;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setLed(++b &amp;gt;&amp;gt; 11);&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wdt_reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usbPoll();&lt;br /&gt;&amp;nbsp;#if BOOTLOADER_CAN_EXIT&lt;br /&gt;@@ -243,7 +316,7 @@&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;#endif&lt;br /&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }while(bootLoaderCondition());&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; leaveBootloader();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;--- bootloadHID.2010-07-29.orig/firmware/Makefile&lt;br /&gt;+++ bootloadHID.2010-07-29/firmware/Makefile&lt;br /&gt;@@ -14,11 +14,11 @@&lt;br /&gt;&amp;nbsp;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; make flash&amp;nbsp;&amp;nbsp; # to load the boot loader into flash&lt;br /&gt;&amp;nbsp;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; make lock&amp;nbsp;&amp;nbsp;&amp;nbsp; # to protect the boot loader from overwriting&lt;br /&gt;&lt;br /&gt;-DEVICE = atmega8&lt;br /&gt;-BOOTLOADER_ADDRESS = 1800&lt;br /&gt;-F_CPU = 12000000&lt;br /&gt;-FUSEH = 0xc0&lt;br /&gt;-FUSEL = 0x9f&lt;br /&gt;+DEVICE = atmega328p&lt;br /&gt;+BOOTLOADER_ADDRESS = 7800&lt;br /&gt;+F_CPU = 16000000&lt;br /&gt;+FUSEH = 0xda&lt;br /&gt;+FUSEL = 0xff&lt;br /&gt;&amp;nbsp;# Fuse high byte:&lt;br /&gt;&amp;nbsp;# 0xc0 = 1 1 0 0&amp;nbsp;&amp;nbsp; 0 0 0 0 &amp;lt;-- BOOTRST (boot reset vector at 0x1800)&lt;br /&gt;&amp;nbsp;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^ ^ ^ ^&amp;nbsp;&amp;nbsp; ^ ^ ^------ BOOTSZ0&lt;br /&gt;@@ -38,7 +38,7 @@&lt;br /&gt;&lt;br /&gt;&amp;nbsp;###############################################################################&lt;br /&gt;&lt;br /&gt;-AVRDUDE = avrdude -c stk500v2 -P avrdoper -p $(DEVICE)&lt;br /&gt;+AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;LDFLAGS += -Wl,--relax,--gc-sections -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;A note about the changes to the Makefile:&lt;br /&gt;&lt;br /&gt;&quot;&lt;span&gt;BOOTLOADER_ADDRESS = 7800&lt;/span&gt;&quot;: This is the start address of the bootloader.&amp;nbsp; There's 2k (0x800) bytes of program space allocated for the bootloader and the '328 has 32k (0x8000) bytes of program flash.&amp;nbsp; So the start of the bootloader is at 0x8000 - 0x800 = 0x7800.&lt;br /&gt;&lt;br /&gt;&quot;&lt;span&gt;FUSEH = 0xda&lt;/span&gt;&quot;: For the blinkenled and the mouse demo, the high fuse was set to the '328's default of 0xd9.&amp;nbsp; With this fuse setting, execution will start at address 0.&amp;nbsp; In order to jump to the bootloader, we want to enable (=0) the BOOTRST fuse, and set the size of the bootloader to be 2048 bytes = 1024 words, and the start address to be 0x3C00 words = 0x7800 bytes.&amp;nbsp; (This use of words and bytes is quite confusing.&amp;nbsp; In the AVR and gcc world, some values are given in bytes and some are given in words.&amp;nbsp; I've had several puzzling moments getting all this straightened out...)&lt;br /&gt;&lt;br /&gt;Once again I looked up the fuse calculator:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://frank.circleofcurrent.com/fusecalc/&quot;&gt;http://frank.circleofcurrent.com/fusecalc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Making these changes gives a high fuse value of 0xda.&lt;br /&gt;&lt;br /&gt;Ok, back to the patch: &lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza src]$ &lt;b&gt;cd bootloadHID.2010-07-29&lt;/b&gt;&lt;br /&gt;[mjd@onza bootloadHID.2010-07-29]$ &lt;b&gt;patch -p1 &amp;lt; ../bootloadHID.2010-07-29.diff &lt;/b&gt;&lt;br /&gt;patching file firmware/bootloaderconfig.h&lt;br /&gt;patching file firmware/main.c&lt;br /&gt;patching file firmware/Makefile&lt;br /&gt;[mjd@onza bootloadHID.2010-07-29]$ &lt;/div&gt;&lt;br /&gt;Then I compiled the software:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza bootloadHID.2010-07-29]$ &lt;b&gt;cd firmware&lt;/b&gt;&lt;br /&gt;[mjd@onza firmware]$ &lt;b&gt;make&lt;/b&gt;&lt;br /&gt;avr-gcc -Wall -Os -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -Iusbdrv -I. -mmcu=atmega328p -DF_CPU=16000000 -DDEBUG_LEVEL=0&amp;nbsp; -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o&lt;br /&gt;avr-gcc -Wall -Os -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -Iusbdrv -I. -mmcu=atmega328p -DF_CPU=16000000 -DDEBUG_LEVEL=0&amp;nbsp; -c usbdrv/oddebug.c -o usbdrv/oddebug.o&lt;br /&gt;avr-gcc -Wall -Os -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -Iusbdrv -I. -mmcu=atmega328p -DF_CPU=16000000 -DDEBUG_LEVEL=0&amp;nbsp; -c main.c -o main.o&lt;br /&gt;usbdrv/usbdrv.h:213: warning: 'usbFunctionDescriptor' used but never defined&lt;br /&gt;usbdrv/usbdrv.h:220: warning: 'usbSetInterrupt' declared 'static' but never defined&lt;br /&gt;avr-gcc -Wall -Os -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -Iusbdrv -I. -mmcu=atmega328p -DF_CPU=16000000 -DDEBUG_LEVEL=0&amp;nbsp; -o main.bin usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o -Wl,--relax,--gc-sections -Wl,--section-start=.text=7800&lt;br /&gt;rm -f main.hex main.eep.hex&lt;br /&gt;avr-objcopy -j .text -j .data -O ihex main.bin main.hex&lt;br /&gt;avr-size main.hex&lt;br /&gt;&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 1926&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 1926&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 786&amp;nbsp;&amp;nbsp;&amp;nbsp; main.hex&lt;br /&gt;[mjd@onza firmware]$ &lt;/div&gt;&lt;br /&gt;The warnings don't seem to matter, and I have ignored them.&lt;br /&gt;&lt;br /&gt;Now I can program the Doodad:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[mjd@onza firmware]$ &lt;b&gt;su&lt;/b&gt;&lt;br /&gt;Password: &lt;br /&gt;[root@onza firmware]# &lt;b&gt;make flash&lt;/b&gt;&lt;br /&gt;avrdude -c avrisp2 -P usb -p atmega328p -U flash:w:main.hex:i&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To disable this feature, specify the -D option.&lt;br /&gt;avrdude: erasing chip&lt;br /&gt;avrdude: reading input file &quot;main.hex&quot;&lt;br /&gt;avrdude: writing flash (32646 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.60s&lt;br /&gt;&lt;br /&gt;avrdude: 32646 bytes of flash written&lt;br /&gt;avrdude: verifying flash memory against main.hex:&lt;br /&gt;avrdude: load data flash data from input file main.hex:&lt;br /&gt;avrdude: input file main.hex contains 32646 bytes&lt;br /&gt;avrdude: reading on-chip flash data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 8.67s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 32646 bytes of flash verified&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza firmware]# &lt;b&gt;make fuse&lt;/b&gt;&lt;br /&gt;avrdude -c avrisp2 -P usb -p atmega328p -U hfuse:w:0xda:m -U lfuse:w:0xff:m&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude: reading input file &quot;0xda&quot;&lt;br /&gt;avrdude: writing hfuse (1 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: 1 bytes of hfuse written&lt;br /&gt;avrdude: verifying hfuse memory against 0xda:&lt;br /&gt;avrdude: load data hfuse data from input file 0xda:&lt;br /&gt;avrdude: input file 0xda contains 1 bytes&lt;br /&gt;avrdude: reading on-chip hfuse data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of hfuse verified&lt;br /&gt;avrdude: reading input file &quot;0xff&quot;&lt;br /&gt;avrdude: writing lfuse (1 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: 1 bytes of lfuse written&lt;br /&gt;avrdude: verifying lfuse memory against 0xff:&lt;br /&gt;avrdude: load data lfuse data from input file 0xff:&lt;br /&gt;avrdude: input file 0xff contains 1 bytes&lt;br /&gt;avrdude: reading on-chip lfuse data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of lfuse verified&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza firmware]#&lt;/div&gt;&lt;br /&gt;Let me explain my strategy regarding the LEDs.&amp;nbsp; My changes mean that the bootloader lights up the last LED, and the mouse demo lights up the second last LED.&amp;nbsp; Both programs also run a binary counter on the next four LEDs. &amp;nbsp; &lt;br /&gt;If the last LED is on, it means that the bootloader has run.&amp;nbsp; If the second last LED is on, it means the mouse demo has run.&amp;nbsp; After programming the Doodad as above, the bootloader LED is on, but the mouse demo LED isn't.&amp;nbsp; That makes sense because programming the bootloader erases all memory.&amp;nbsp; Note also the four LEDs before the mouse demo LED are all on.&amp;nbsp; That tells me the bootloader tried to jump to the mouse demo.&lt;br /&gt;&lt;br /&gt;Also, when I run the &lt;span&gt;lsusb&lt;/span&gt; command, I can't see any USB devices corresponding to the Doodad.&lt;br /&gt;&lt;br /&gt;Next, pull out the Doodad and insert it with the button held down.&amp;nbsp; The bootloader LED is on, the mouse demo LED is on, and the next four LEDs are running a binary counter.&amp;nbsp; That tells me the bootloader is in program mode.&amp;nbsp; lsusb also shows this:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;⋮&lt;br /&gt;Bus 003 Device 010: ID 16c0:05df VOTI &lt;br /&gt;⋮&lt;/div&gt;&lt;br /&gt;Later on I'll show how to program an application such as the mouse demo over USB, but for the moment I want to prove that I can load the mouse demo and the bootloader into memory at the same time, and that the bootloader will fall through to the mouse demo if the bootloader button isn't pressed when the Doodad first starts.&lt;br /&gt;&lt;br /&gt;So far, whenever avrdude has programmed the '328 program flash, that memory has first been erased.&amp;nbsp; The problem with this is that it erases any existing program.&lt;br /&gt;&lt;br /&gt;In order to get both the bootloader and the mouse demo in flash at the same time, we need to program the bootloader with a flash erase, then program the mouse demo without erasing the flash.&amp;nbsp; (Note, the only time you can load a program with the programmer without doing an erase is if you're loading into memory which has already been erased).&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Erase the flash&lt;/li&gt;&lt;/ul&gt;--- vusb-20100715-orig/examples/hid-mouse/firmware/Makefile&lt;br /&gt;+++ vusb-20100715/examples/hid-mouse/firmware/Makefile&lt;br /&gt;@@ -11,7 +11,7 @@&lt;br /&gt;&amp;nbsp;F_CPU&amp;nbsp;&amp;nbsp; = 16000000 # in Hz&lt;br /&gt;&amp;nbsp;FUSE_L&amp;nbsp; = 0xff# see below for fuse values for particular devices&lt;br /&gt;&amp;nbsp;FUSE_H&amp;nbsp; = 0xda&lt;br /&gt;-AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) # edit this line for your programmer&lt;br /&gt;+AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) -D # edit this line for your programmer&lt;br /&gt;&lt;br /&gt;&amp;nbsp;CFLAGS&amp;nbsp; = -Iusbdrv -I. -DDEBUG_LEVEL=0&lt;br /&gt;&amp;nbsp;OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; And if that wasn't impressive enough, After I plugged it into my computer's USB port, the mouse cursor started moving around in a large circle, and the LEDs are counting!&lt;br /&gt;Here's what lsusb shows:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza mjd]# &lt;b&gt;lsusb&lt;/b&gt;&lt;br /&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub &lt;br /&gt;Bus 001 Device 002: ID 1a40:0101 TERMINUS TECHNOLOGY INC. &lt;br /&gt;Bus 001 Device 003: ID 0951:1607 Kingston Technology Data Traveler 2.0&lt;br /&gt;Bus 001 Device 004: ID 0951:1607 Kingston Technology Data Traveler 2.0&lt;br /&gt;Bus 001 Device 005: ID 0951:1607 Kingston Technology Data Traveler 2.0&lt;br /&gt;Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;&lt;i&gt;Bus 003 Device 002: ID 16c0:03e8 VOTI free for internal lab use 1000&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;The mouse is the &quot;VOTI&quot; entry.  The USB vendor ID and product ID can be set in the software.&lt;br /&gt;&lt;br /&gt;Now to see the details:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza mjd]# &lt;i&gt;lsusb -v&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Bus 003 Device 002: ID 16c0:03e8 VOTI free for internal lab use 1000&lt;br /&gt;Device Descriptor:&lt;br /&gt;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&lt;br /&gt;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp; bcdUSB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.10&lt;br /&gt;&amp;nbsp; bDeviceClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 (Defined at Interface level)&lt;br /&gt;&amp;nbsp; bDeviceSubClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp; bDeviceProtocol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp; bMaxPacketSize0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;br /&gt;&amp;nbsp; idVendor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x16c0 VOTI&lt;br /&gt;&amp;nbsp; idProduct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x03e8 free for internal lab use 1000&lt;br /&gt;&amp;nbsp; bcdDevice&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.00&lt;br /&gt;&amp;nbsp; iManufacturer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 obdev.at&lt;br /&gt;&amp;nbsp; iProduct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Mouse&lt;br /&gt;&amp;nbsp; iSerial&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp; bNumConfigurations&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp; Configuration Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wTotalLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bNumInterfaces&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bConfigurationValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iConfiguration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmAttributes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Bus Powered)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MaxPower&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400mA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Interface Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceNumber&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bAlternateSetting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bNumEndpoints&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 Human Interface Device&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceSubClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 No Subclass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceProtocol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iInterface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HID Device Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 33&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcdHID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.01&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bCountryCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Not supported&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bNumDescriptors&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34 Report&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wDescriptorLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 52&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Descriptors: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ** UNAVAILABLE **&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Endpoint Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bEndpointAddress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81&amp;nbsp; EP 1 IN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmAttributes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transfer Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Interrupt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Synch Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wMaxPacketSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0008&amp;nbsp; 1x 8 bytes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;br /&gt;Device Status:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0000&lt;br /&gt;&amp;nbsp; (Bus Powered)&lt;br /&gt;⋮&lt;br /&gt;[root@onza mjd]# &lt;/div&gt;&lt;br /&gt;I'm not sure why it says the report descriptors are unavailable.&amp;nbsp; But at least it works.&lt;br /&gt;&lt;br /&gt;Now I'll start working on the bootloader. &amp;nbsp;If I can get the bootloader working, I can take the three pins we're currently using for ISP, and make them LED outputs.&lt;br /&gt;&lt;br /&gt;To be covered in the next article:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How to use the bootloader to program new apps to the Doodad without using an ISP.&lt;/li&gt;&lt;li&gt;How to use fuses to protect the bootloader.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-4631095860363372058?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 14 Apr 2011 16:22:56 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: USB Doodad 4: Blinkenleds</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-2183095940961466569</guid>
	<link>http://capnstech.blogspot.com/2010/11/usb-doodad-4-blinkenleds.html</link>
	<description>Progress on the USB Doodad has been going well with several successes.&lt;br /&gt;After soldering on the processor, I added the reset pullup resistor, and rigged up a 6-pin programming header on the end of the board.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://9032635923520773311-a-afork-com-s-sites.googlegroups.com/a/afork.com/usbdoodad/home/doodad-27-cutout-s.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; src=&quot;https://9032635923520773311-a-afork-com-s-sites.googlegroups.com/a/afork.com/usbdoodad/home/doodad-27-cutout-s.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;(Note this is a prototype at a later stage)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;There's no permanent position for a programming header on the board.&amp;nbsp; This is because once the board has a bootloader, loading software on the Doodad will be done over USB.&amp;nbsp; Our plan is to use &lt;a href=&quot;http://en.wikipedia.org/wiki/Pogo_pin&quot;&gt;pogo pins&lt;/a&gt; to make a &quot;bed of nails&quot; that we can temporarily sit the Doodad board on to get the bootloader into it.&lt;br /&gt;&lt;br /&gt;I plugged the Doodad into my &lt;a href=&quot;http://tom-itx.dyndns.org:81/%7Ewebpage/boards/USBTiny_Mkii/USBTiny_Mkii_index.php&quot;&gt;programmer&lt;/a&gt;, and plugged the programmer into my PC.&amp;nbsp; There was no smoke (!), and the &lt;a href=&quot;http://www.ladyada.net/learn/avr/avrdude.html&quot;&gt;avrdude&lt;/a&gt; program could recognise the '328!&amp;nbsp; That's always a good sign.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza mjd]# &lt;b&gt;/usr/bin/avrdude -c avrisp2 -P usb -p m328p -q&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza mjd]# &lt;/div&gt;&lt;br /&gt;I then soldered a LED and a dropper resistor onto the pin for bit 5 of port C, searched for a simple &quot;blinkenled&quot; program on the 'net, and compiled it for the '328:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza 328hello]$ &lt;b&gt;cat hello.c&lt;/b&gt;&lt;br /&gt;#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Set bit 5 of port C to be an output &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DDRC |= _BV(PC5);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Invert the value of pin 5 on port C&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTC ^= _BV(PC5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_delay_ms(500);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;[mjd@onza 328hello]$ &lt;b&gt;avr-gcc -Os -DF_CPU=8000000 -mmcu=atmega328p -o hello.o -c hello.c&lt;/b&gt;&lt;br /&gt;[mjd@onza 328hello]$ &lt;b&gt;avr-gcc -Os -DF_CPU=8000000 -mmcu=atmega328p -o hello.elf hello.o&lt;/b&gt;&lt;br /&gt;[mjd@onza 328hello]$ &lt;b&gt;avr-objcopy -O ihex hello.elf hello.hex&lt;/b&gt;&lt;br /&gt;[mjd@onza 328hello]$ &lt;b&gt;ls -l hello.hex&lt;/b&gt;&lt;br /&gt;-rw-rw-r--. 1 mjd mjd 582 2010-11-21 14:52 hello.hex&lt;br /&gt;[mjd@onza 328hello]$ &lt;/div&gt;&lt;br /&gt;I then programmed it into the '328:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza 328hello]# &lt;b&gt;/usr/bin/avrdude -c avrisp2 -P usb -p m328p -U flash:w:hello.hex &lt;/b&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.01s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To disable this feature, specify the -D option.&lt;br /&gt;avrdude: erasing chip&lt;br /&gt;avrdude: reading input file &quot;hello.hex&quot;&lt;br /&gt;avrdude: input file hello.hex auto detected as Intel Hex&lt;br /&gt;avrdude: writing flash (200 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.08s&lt;br /&gt;&lt;br /&gt;avrdude: 200 bytes of flash written&lt;br /&gt;avrdude: verifying flash memory against hello.hex:&lt;br /&gt;avrdude: load data flash data from input file hello.hex:&lt;br /&gt;avrdude: input file hello.hex auto detected as Intel Hex&lt;br /&gt;avrdude: input file hello.hex contains 200 bytes&lt;br /&gt;avrdude: reading on-chip flash data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.06s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 200 bytes of flash verified&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza 328hello]# &lt;/div&gt;&lt;br /&gt;Yay, the LED blinks!&amp;nbsp; But there's a slight problem: The LED should blink once a second, but I found it was actually blinking once every eight seconds.&amp;nbsp; This is because by default, there's a fuse in the '328 which divides the clock by 8.&lt;br /&gt;&lt;br /&gt;AVR chips have a few bytes of persistent memory called &quot;fuses&quot;.&amp;nbsp; The bits in these fuses control things such as what source the chip uses for clock, and what areas of memory are protected.&amp;nbsp; The name for the fuse that's dividing the clock by 8 is called CKDIV8.&lt;br /&gt;&lt;br /&gt;Here's how I retrieved the fuse values:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza 328hello]# &lt;b&gt;/usr/bin/avrdude -c avrisp2 -P usb -p m328p -t&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.01s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude&amp;gt; &lt;b&gt;dump lfuse&lt;/b&gt;&lt;br /&gt;0000&amp;nbsp; 62 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;&lt;br /&gt;avrdude&amp;gt; &lt;b&gt;dump hfuse&lt;/b&gt;&lt;br /&gt;0000&amp;nbsp; d9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;&lt;br /&gt;avrdude&amp;gt; &lt;b&gt;dump efuse&lt;/b&gt;&lt;br /&gt;0000&amp;nbsp; 07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;&lt;br /&gt;avrdude&amp;gt; &lt;b&gt;quit&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza 328hello]# &lt;/div&gt;&lt;br /&gt;I then looked up an AVR fuse calculator:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://frank.circleofcurrent.com/fusecalc/&quot;&gt;http://frank.circleofcurrent.com/fusecalc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Turning off the CKDIV8 fuse means the &quot;low fuse&quot; value changes from 0x62 to 0xE2.&amp;nbsp; The fuse calculator also helpfully shows the avrdude parameters to make this change:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza 328hello]# &lt;b&gt;/usr/bin/avrdude -c avrisp2 -P usb -p m328p -U lfuse:w:0xE2:m&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.01s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude: reading input file &quot;0xE2&quot;&lt;br /&gt;avrdude: writing lfuse (1 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.02s&lt;br /&gt;&lt;br /&gt;avrdude: 1 bytes of lfuse written&lt;br /&gt;avrdude: verifying lfuse memory against 0xE2:&lt;br /&gt;avrdude: load data lfuse data from input file 0xE2:&lt;br /&gt;avrdude: input file 0xE2 contains 1 bytes&lt;br /&gt;avrdude: reading on-chip lfuse data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of lfuse verified&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;/div&gt;&lt;br /&gt;I can then check that the fuse programming has worked:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza 328hello]# &lt;b&gt;/usr/bin/avrdude -c avrisp2 -P usb -p m328p -t&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.01s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude&amp;gt; &lt;b&gt;dump lfuse&lt;/b&gt;&lt;br /&gt;0000&amp;nbsp; e2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;&lt;br /&gt;avrdude&amp;gt; &lt;b&gt;quit&lt;/b&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza 328hello]# &lt;/div&gt;&lt;br /&gt;After doing this, the LED flashes once per second.&lt;br /&gt;&lt;br /&gt;At this point, the '328's clock is being provided from an internal oscillator.&amp;nbsp; The internals oscillator is convenient if you want to keep the number of parts on the board to a minimum, but the frequency can drift with temperature, so it's not a great choice for a USB device.&amp;nbsp; So my next step was to solder on a quartz crystal and the two associated capacitors.&lt;br /&gt;&lt;br /&gt;Back in the fuse calculator, I used the pull-down menu in the &quot;low fuse presets&quot; to choose &quot;Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11]&quot;.&amp;nbsp; That makes the low fuse value 0xFF.&amp;nbsp; So I programmed that in using avrdude as above:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;[root@onza 328hello]# &lt;b&gt;/usr/bin/avrdude -c avrisp2 -P usb -p m328p -U lfuse:w:0xff:m&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;⋮&lt;br /&gt;⋮&lt;br /&gt;⋮&lt;br /&gt;&lt;br /&gt;&lt;span&gt;avrdude done.&amp;nbsp; Thank you.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The LED is now flashing, but it's twice as fast as it should be.&amp;nbsp; This is because when I compiled the code, I said the clock frequency was 8MHz, to match the internal oscillator.&amp;nbsp; That's not going to work very well with a 16MHz external crystal.&amp;nbsp; So I recompiled the code:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza 328hello]$ &lt;b&gt;avr-gcc -Os -DF_CPU=16000000 -mmcu=atmega328p -o hello.o -c hello.c&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;I won't show the linking and .hex file creation steps as they're the same as above, but after reprogramming the '328, the LED now blinks at 1Hz.&lt;br /&gt;&lt;br /&gt;So, I have a board on which I can run software, and the means to program it.&amp;nbsp; Winnage!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-2183095940961466569?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 12 Apr 2011 21:31:03 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: Wet etching process</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-3237723248462932536</guid>
	<link>http://siliconexposed.blogspot.com/2011/03/wet-etching-process.html</link>
	<description>My preferred method for delayering chips is wet etching in dilute hydrofluoric acid (HF), commonly available in grocery stores as Whink brand rust remover:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-DwiaMapW_mg/TYD1asTY7cI/AAAAAAAAAB8/dctPHqTc1Io/s1600/S7300622.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://lh3.googleusercontent.com/-DwiaMapW_mg/TYD1asTY7cI/AAAAAAAAAB8/dctPHqTc1Io/s320/S7300622.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;~2% technical grade HF from Price Chopper&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;As the &lt;a href=&quot;http://www.whink.com/images/msds/Rust_Stain_Remover_10062008.pdf&quot;&gt;MSDS&lt;/a&gt; makes quite clear, this stuff is not something you want to splash on your hands (or skin in general). While it's extremely dilute compared to the 45% concentrated solution used in some laboratories, I've been through the HF safety talk at my school's cleanroom enough times that I'd rather not take chances.&lt;br /&gt;&lt;br /&gt;I have a pair of Norfoil (Silver Shield) gloves around that I use for this kind of work. They're rather stiff so a common practice to improve dexterity is to double-glove with an XL nitrile glove over the Norfoil. When combined with a lab coat, splash goggles, and a face shield there's little chance of anything getting through.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://lh4.googleusercontent.com/-iQHigFbmJOI/TYD2roTZdLI/AAAAAAAAACA/f6dXH-uRWCg/s320/S7300619.JPG&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Nitrile outer glove (blue) over Norfoil glove (silver), tucked into sleeve of Tyvek lab coat (white)&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-6DPEsm_hvqE/TYD52k5gMgI/AAAAAAAAACM/wfjvjWsoayI/s1600/S7300631.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://lh3.googleusercontent.com/-6DPEsm_hvqE/TYD52k5gMgI/AAAAAAAAACM/wfjvjWsoayI/s320/S7300631.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;My standard lab PPE&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Before getting dressed I placed a 10 ml beaker of distilled water on my hot plate and preheated it to a warm but not boiling temperature (exact temp isn't critical).&lt;br /&gt;&lt;br /&gt;The next step is to pour a bit under 1 ml of the HF solution into a plastic test tube. HF will eat glass so using glass labware with it isn't a good idea!&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh5.googleusercontent.com/-GzauR0vxz5k/TYD4TjveVeI/AAAAAAAAACE/xHokulnQcbQ/s1600/S7300625.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://lh5.googleusercontent.com/-GzauR0vxz5k/TYD4TjveVeI/AAAAAAAAACE/xHokulnQcbQ/s320/S7300625.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;HF solution in the test tube&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Drop the die into the tube, cap it, and place it in the water bath. Etch rate depends on temperature, strength of the acid (Whink's strength isn't precisely controlled and I often will re-use the acid several times) and a few other factors so it's difficult to accurately predict. I usually will etch for 30 seconds at a time on modern planarized processes and 60-90 seconds on a large non-planarized chip.&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh4.googleusercontent.com/-rukUkaGmG4o/TYD5hnFxD2I/AAAAAAAAACI/0H9qLeAjigY/s1600/S7300628.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://lh4.googleusercontent.com/-rukUkaGmG4o/TYD5hnFxD2I/AAAAAAAAACI/0H9qLeAjigY/s320/S7300628.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Sample etching in the water bath&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;When the time is up, remove the tube from the heat and suction the HF with a pipette. The acid can usually be re-used for many etches, though it does get weaker over time. Drop the die into a beaker of acetone to remove any acid residue.&lt;br /&gt;&lt;br /&gt;Remove the sample from the acetone using solvent-resistant plastic tweezers. (Many common plastics, such as polycarbonate, will dissolve into the acetone and contaminate your sample. Metal tweezers have a nasty habit of chipping edges of dies.)&lt;br /&gt;&lt;br /&gt;Rapidly blow-dry the sample, holding it down with tweezers so it doesn't go flying. I used a can of R-134 duster spray. (If you let the solvent evaporate slowly large crystals can form from dissolved materials.)&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-XQnYptyLtFU/TYD7E45bpgI/AAAAAAAAACQ/DAGT7dwOL8s/s1600/S7300633.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://lh3.googleusercontent.com/-XQnYptyLtFU/TYD7E45bpgI/AAAAAAAAACQ/DAGT7dwOL8s/s320/S7300633.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Drying the sample&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Image the die under a microscope to see if you've etched far enough. (The die I used in this demonstration was actually a bit over-etched as I paid more attention to camera angles than etch timing!)&lt;br /&gt;&lt;br /&gt;The other main delayering method I plan to explore is CMP with colloidal silica. At the moment MTI is sold out, but when a new shipment arrives expect a post on CMP!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;td class=&quot;tr-caption&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-3237723248462932536?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 18 Mar 2011 20:08:34 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Running code on the GA330</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-7251446125342896716</guid>
	<link>http://www.dingux.com/2011/03/running-code-on-ga330.html</link>
	<description>Check out usbtool here:&lt;br /&gt;&lt;br /&gt;http://github.com/iggarpe/cc1800&lt;br /&gt;&lt;br /&gt;The CC1800 has 16KB of SRAM located at 0x0010000, and also mapped at 0x00000000 if certain bit of a special register is set. At boot time this bit is clear and ROM is mapped at 0x00000000.&lt;br /&gt;&lt;br /&gt;The A330 can be made to boot from SD card by pressing DOWN during power up. In this mode the ROM code will load sectors 2-17 into SRAM at address 0x00100000 and execute. The code in rom.bin will then in turn execute the USB boot code, and from then on you can use the usbtool above to upload and execute your code through USB. Much more convenient that moving an SD card around.&lt;br /&gt;&lt;br /&gt;Note however that since the USB boot code is not executed from ROM but from SRAM, the same SRAM you will be uploading to (at least until the SDRAM controller has been initialized), some restrictions apply: the USB boot code code in rom.bin is loaded at 0x00100000, and first thing it seems to do is move itself to 0x00102000, that is, to the second half of the 16KB of available SRAM. This means you can use only the first 8KB for your code AND the stack.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-7251446125342896716?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 12 Mar 2011 23:07:08 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: GA330 unbricking tool</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-5492169979804668666</guid>
	<link>http://www.dingux.com/2011/03/ga330-unbricking-tool.html</link>
	<description>http://www.mediafire.com/?ed998x4zj86c1a2&lt;br /&gt;&lt;br /&gt;Mind you, I haven't been able to make it work. I managed to brick one of the two GA330 that ChinaChip kindly provided, but haven't been able to restore the firmware. Not that I care much anyway since I don't really need the native firmware running for porting the linux kernel.&lt;br /&gt;&lt;br /&gt;Note that the USB boot mode is not used in any of the CC1800 based machines that I know of, due to a ROM problem, so actually you will be using SD card boot to run a fixed USB boot code.&lt;br /&gt;&lt;br /&gt;To prepare the boot SD card in windows use the ChinaChipSDBurnTools.exe utility. First argument is the drive letter, second argument is rom.bin file. Example:&lt;br /&gt;&lt;br /&gt;ChinaChipSDBurnTools.exe I: rom.bin&lt;br /&gt;&lt;br /&gt;This will just write the rom.bin file to sectors 2-17 in the SD card, so it will probably destroy the contents of the card. From linux you can use the dd command. Assuming the SD card drive is /dev/sdi, then:&lt;br /&gt;&lt;br /&gt;dd if=rom.bin of=/dev/sdi bs=512 seek=2&lt;br /&gt;&lt;br /&gt;You can actually make a boot SD card which is also usable for storage: just make it so that the first (and possibly only) partition starts somewhere beyond sector 17. How to do that is beyond the scope of this post.&lt;br /&gt;&lt;br /&gt;Insert the card and plug the USB cable while you press DOWN. The GA330 should be now in USB boot mode.&lt;br /&gt;&lt;br /&gt;From there on you need to use the Burning_tool(CC1800 V1.14)_W35.exe tool. The first big button will install the USB driver (at least it will copy the files in C:\Windows\System32\ChinaChipUSB, you might need to point windows to that directory when new hardware is found). The second big button starts the burn process, which you can only do after selecting the IPL, DL and HXF firmware files.&lt;br /&gt;&lt;br /&gt;If you succeed unbricking your GA330 with this tool, please report in the comments.&lt;br /&gt;&lt;br /&gt;EDIT: if you happen do have your serial console connected, please log and send me the output during the unbricking (57600 8N1, the code in the SD card that implements the USB boot mode will output a few lines 115200 8N1, so you'll see some garbage).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-5492169979804668666?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 12 Mar 2011 20:35:04 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: Microchip PIC12F683 teardown</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-6289060355575095732</guid>
	<link>http://siliconexposed.blogspot.com/2011/03/microchip-pic12f683-teardown.html</link>
	<description>I'm going to kick off the meat of this blog with a teardown of a chip that has a special place in my memories - the first microcontroller I ever worked with, the &lt;a href=&quot;http://www.microchip.com/wwwproducts/devices.aspx?ddocname=en010115&quot;&gt;Microchip PIC12F683&lt;/a&gt;. It's an 8-bit RISC microcontroller made on what looks like a 350nm 3-metal process, with 14 bit wide instructions and a fairly nice set of peripherals:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2K words program Flash&lt;/li&gt;&lt;li&gt;128 bytes SRAM&lt;/li&gt;&lt;li&gt;256 bytes data EEPROM&lt;/li&gt;&lt;li&gt;Two 8-bit and one 16-bit timer&lt;/li&gt;&lt;li&gt;Four-channel multiplexed 10 bit A/D converter&lt;/li&gt;&lt;li&gt;Comparator&lt;/li&gt;&lt;/ul&gt;I decapped one of these a few months ago and imaged it at 400x magnification. Pin 1 is at the top left. (At the time I was still experimenting with panorama stitching techniques so there are a few alignment glitches.)&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh4.googleusercontent.com/-PK8f25zy_6w/TW9siFRsm_I/AAAAAAAAABk/70ziWwNEqIU/s1600/pic12f683-m3-400x-2k.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://lh4.googleusercontent.com/-PK8f25zy_6w/TW9siFRsm_I/AAAAAAAAABk/70ziWwNEqIU/s400/pic12f683-m3-400x-2k.jpg&quot; width=&quot;380&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;PIC12F683 metal 3 with passivation, magnified 400x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The glass layer (reddish) was quite annoying and made it hard to resolve traces so I decided to remove it using my standard wet-etch procedure (heating in 3% HF). I'll be writing about this process in more detail over the weekend.&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh6.googleusercontent.com/-I7nGuyx-mnM/TW9wjZl95xI/AAAAAAAAABo/q8U6iK_6UUI/s1600/pic12f683-m3d-400x-2k.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://lh6.googleusercontent.com/-I7nGuyx-mnM/TW9wjZl95xI/AAAAAAAAABo/q8U6iK_6UUI/s640/pic12f683-m3d-400x-2k.jpg&quot; width=&quot;595&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;PIC12F683 metal 3 after wet etching, magnified 400x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;We now have enough information to create a floor plan of the chip:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The large block at bottom center (surrounded by power rails with 14 white capacitors at the bottom) is the program flash. Each capacitor is part of a charge pump used to generate high voltage for erasing one bit of flash.&lt;/li&gt;&lt;li&gt;Immediately to the left is the RAM.&lt;/li&gt;&lt;li&gt;Above the RAM is the EEPROM. As with the flash, there is one capacitor per bit of memory for high voltage generation.&lt;/li&gt;&lt;li&gt;Above the flash, and slightly to the right, are the configuration fuses. Each of the small red plates is part of a single configuration bit.&lt;/li&gt;&lt;li&gt;Analog peripherals are in an L-shape along the top and right sides&lt;/li&gt;&lt;/ul&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh6.googleusercontent.com/-U5anpw8FKq4/TW9zjDiCz7I/AAAAAAAAABs/1xs_K8VieGg/s1600/pic12f683-m3d-400x-fuses-small-cropped.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://lh6.googleusercontent.com/-U5anpw8FKq4/TW9zjDiCz7I/AAAAAAAAABs/1xs_K8VieGg/s1600/pic12f683-m3d-400x-fuses-small-cropped.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Top portion of PIC12F683 configuration fuse array (metal 3 after etching off glass)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The configuration fuses are single cells of EEPROM-style memory storing data such as the clock oscillator source and code / data protection bits. As with most other PICs, when the protection bit is in the &quot;1&quot; state the chip operates as normal; in the &quot;0&quot; state attempts to read firmware or EEPROM respectively via ICSP return all zeros. Configuration fuses can always be read.&lt;br /&gt;&lt;br /&gt;EEPROM is typically susceptible to erasure (all bits set to 1) by strong UV light and the configuration fuses are no exception. If we can expose just the fuses (and not the flash or EEPROM, whose data we presumably want intact) to UV, the code protection can be removed and the firmware reverse-engineered using standard software RE tools. Note that PICs are thus a slightly easier target than Atmel chips. Atmel fuses in the &quot;1&quot; state indicates the chip is in the locked state (i.e. UV will set rather than clear the fuse).&lt;br /&gt;&lt;br /&gt;Enough talking, time to try pwning the chip! As of this writing my decapping lab is offline, but Brooke Hill from Jimnson Research was kind enough to decap a few samples I sent him.&lt;br /&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-yPVqJRAx6f8/TW9rtb0m12I/AAAAAAAAABg/myxcPH0hUv8/s1600/S7300556_cropped.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;285&quot; src=&quot;https://lh3.googleusercontent.com/-yPVqJRAx6f8/TW9rtb0m12I/AAAAAAAAABg/myxcPH0hUv8/s320/S7300556_cropped.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Decapped PIC12F683, magnified 10x. Rotated 90 degrees counterclockwise from other photos.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The first step was to plug the chip into a breadboard and verify it still worked. (Although decapping is normally a fairly low-risk procedure, bond wires do occasionally work loose during the rinse or cleaning steps.) The test firmware I used was a short piece of assembly that blinked an LED on GP2, and had the code-protection bit set.&lt;br /&gt;&lt;br /&gt;I then laid down a mask over the memory areas I wanted to protect. I used the old classic, black nail polish applied with a lint-free swab under a stereo microscope. The brand of polish I purchased turned out to be very thick and gooey; in the future I intend to thin it with acetone for a more even coating.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-oPqhdIrBqXk/TW92UwPwjaI/AAAAAAAAABw/FKGToe08J-w/s1600/S7300563_annotated.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://lh3.googleusercontent.com/-oPqhdIrBqXk/TW92UwPwjaI/AAAAAAAAABw/FKGToe08J-w/s400/S7300563_annotated.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Halfway through applying the mask&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;At this point the difficult work was over. I placed the chip inside my homemade UV erasure box, powered by two germicidal fluorescent bulbs.&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lh3.googleusercontent.com/-xc7IbJTTNYk/TW928qzlUAI/AAAAAAAAAB0/sz6X3vKB5go/s1600/S7300564.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://lh3.googleusercontent.com/-xc7IbJTTNYk/TW928qzlUAI/AAAAAAAAAB0/sz6X3vKB5go/s400/S7300564.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;UV exposure system&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Two hours later the PIC was removed from UV and put back in the breadboard. I attempted to verify memory integrity with my PICKit 2.&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;https://lh5.googleusercontent.com/-b-J9q_KIJto/TW93b_-yJdI/AAAAAAAAAB4/E8xgyU_dhpw/s1600/Screenshot-32.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://lh5.googleusercontent.com/-b-J9q_KIJto/TW93b_-yJdI/AAAAAAAAAB4/E8xgyU_dhpw/s1600/Screenshot-32.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Success! Program memory and EEPROM are undamaged (and unprotected) while configuration fuses read as all 1s.&lt;br /&gt;&lt;br /&gt;Although the code protection on the PIC12F683 is clearly broken I am not finished with it; as an educational subject has not outlived its usefulness. Stay tuned for a future post with gate- and transistor-level analysis of interesting areas!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-6289060355575095732?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 03 Mar 2011 10:46:14 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Andrew Zonenberg, Silicon Exposed: Welcome</title>
	<guid>tag:blogger.com,1999:blog-175004091875960054.post-6944925325519497936</guid>
	<link>http://siliconexposed.blogspot.com/2011/03/welcome.html</link>
	<description>Hello readers, and welcome to my virtual laboratory!&lt;br /&gt;&lt;br /&gt;I am an undergraduate computer science student at Rensselaer Polytechnic Institute (beginning my PhD this the fall) with a wide variety of technical interests. The focus of this blog is my research into integrated circuit reverse engineering.&lt;br /&gt;&lt;br /&gt;While many hardware reverse engineering blogs (such as that of Tarnovsky) are primarily focused with defeating configuration fuses and anti-tamper circuitry, I hope to cover a wide range of topics including these as well as general CMOS logic and sample preparation techniques.&lt;br /&gt;&lt;br /&gt;For the skeptics among you, the right to reverse engineer ICs is protected by United States copyright law (17 USC 906), which states that it is not an infringement of a mask right for &quot;a person to reproduce the mask work solely for the purpose of teaching,  analyzing, or evaluating the concepts or techniques embodied in the mask  work or the circuitry, logic flow, or organization of components used  in the mask work&quot;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/175004091875960054-6944925325519497936?l=siliconexposed.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 03 Mar 2011 05:06:42 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Zonenberg)</author>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: ArduEye: Brutally minimalist (but quite fast) vision sensor using an Arduino</title>
	<guid>tag:diydrones.com,2011-03-01:705844:BlogPost:296333</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:296333</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/M4mVV17jaueACT2qKcmUJDdaHzXGXbcyBj8XCMYRPhlEXExo*QQGGbNinJ4w6DmewEjQYEs6aAqd4OZanOZwCg__/Arduino_Rox1_Shield_TamLens.jpg&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/M4mVV17jaueACT2qKcmUJDdaHzXGXbcyBj8XCMYRPhlEXExo*QQGGbNinJ4w6DmewEjQYEs6aAqd4OZanOZwCg__/Arduino_Rox1_Shield_TamLens.jpg?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;We are finally having manufactured a &quot;shield&quot; board for the Arduino platform that interfaces a Centeye image sensor with an Arduino to form a true (if simple) &quot;smart sensor&quot;. This particular version is about a simple as you can make it:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Shield Board:&lt;/span&gt; The board itself is a simple 2-layer board, and can be connected to either a full-size Arduino board (we've so far tried the Duemilanove and the Pro), or a mini-sized version (we've tried Sparkfun's Pro Mini). You need a 5V board to power the image sensor.&lt;/p&gt;
&lt;p&gt;If one doesn't want to use the board with an Arduino, it is of course possible to just use it as a breakout board for the image sensor chip. The board design is open source.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Image Sensor:&lt;/span&gt; The shield board is compatible with any of Centeye's current image sensor chips, but for the above version we are using the Tam series- These are very simple image sensor chips requiring only five lines- Ground, Power, Clock, Reset, and AnalogOut. When you pulse Reset, a counter on the chip points to the first row, first column pixel, which is output as an analog value. Pulsing the Clock line advances the counter to the next pixel row-wise. That is it. The chips are available in two resolutions- Tam2 at 16x16 and Tam4 at 4x32, the latter with rectangular shaped pixels. I've also taken a leap of faith and decided to &lt;em&gt;publish the schematic of the chip&lt;/em&gt;! We've released the analog portion down to the transistor level, and the digital portion down to the gate level.&lt;/p&gt;
&lt;p&gt;Right now we have about 200-250 each of the Tam2 and Tam4 chips in stock, in bare die form.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Optics:&lt;/span&gt; The sensor will be shipped with a micro lens (about 1.6mm)- we can ship the board with the lens mounted or unmounted. In the latter case the Tam4 chip will be open and exposed, which is appropriate for people who want to use their own lens.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Sample code:&lt;/span&gt; I've also written a sample Arduino sketch that illustrates acquiring an image, obtaining a fixed pattern noise mask, and computing one dimensional optical flow from the 4x32 Tam4 chip. By cutting out the serial monitor and acquiring/computing optical flow on just one 32-element row, we obtained more than 200 frames per second- I think more is possible with further optimization. The source code is &quot;open&quot; and is intended to be a starting point for developing your own application.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Uses:&lt;/span&gt; I didn't design this board for any specific application, but it should be able to do some things of interest to robotics. I've come to appreciate that it can be difficult if not impossible to make a &quot;one size fits all&quot; sensor, even if supporting just one mode (like optical flow). This is because there are many parameters that must be adjusted for each application. Thus for this board we are taking a different approach- rather than try to hide the optical flow computation from the user, we want the user to be fully aware of what is going on. In order to really use this sensor, you'll have to do some hacking of the code to tailor it to your application. I'll be honest- this is not for those who are afraid to hack a bit.  But I think the Arduino environment makes it very easy to hack, play around, and try different things. I'd appreciate your feedback on this approach.&lt;/p&gt;
&lt;p&gt;As for what I think the board will ultimately support (with some hacking)- in the context of robotics and drones I think that things like wall following or basic terrain following should be doable (if on a forward moving platform). Several sensors should support some basic obstacle avoidance against large obstacles. Fulfilling the role of an downward optical flow sensor for a quad might be doable, but would require some careful optimization and algorithm tuning. I don't think impossible though- If the classic 1980's video game Defender could run, with rendering, on a 2MHz processor, then I would imagine adequate optical flow for a quad could be done with 16MHz. Please note though that I haven't tried any of these things yet with this board.&lt;/p&gt;
&lt;p&gt;Just so that you know megapixels aren't needed- here are a few facts to consider:&lt;/p&gt;
&lt;p&gt;1) Most flying insects have from several hundred to several thousand pixels. They have at most &quot;kilopixels&quot;! 2) We demonstrated altitude hold in 2001-2002 with 16 to 88 pixels, and obstacle avoidance in 2003 with 264 pixels total. 3) We also controlled the yaw angle of a helicopter with 8 (eight) pixels.&lt;/p&gt;
&lt;p&gt;For the released files (including the Tam chip schematic), please visit &lt;a href=&quot;http://embeddedeye.com/forum/topics/ardueye-for-tam-chips-using&quot; target=&quot;_blank&quot;&gt;this posting at Embedded Eye&lt;/a&gt;. For other details including purchasing, please visit &lt;a href=&quot;http://centeye.com/products/ardueye-shields-for-arduino/&quot; target=&quot;_blank&quot;&gt;this page at Centeye&lt;/a&gt;. Current asking price is $100 per board plus $9 shipping/handling for US customers. We hope we can lower this price in the future as we learn to automate working with bare die and the lenses in the current manner we use.&lt;/p&gt;
&lt;p&gt;Please feel free to ask questions.&lt;/p&gt;</description>
	<pubDate>Tue, 01 Mar 2011 05:13:12 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: GA330 native firmware SDK</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-6455849699077521156</guid>
	<link>http://www.dingux.com/2011/02/ga330-native-firmware-sdk.html</link>
	<description>This might very well be old news, but just in case.&lt;br /&gt;&lt;br /&gt;You can find the native firmware SDK for the A330 here:&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/mp4sdk/downloads/detail?name=A330-SDK-Setup-20101106.exe&amp;amp;can=2&amp;amp;q=&lt;br /&gt;&lt;br /&gt;It's an &quot;unofficial&quot; release.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-6455849699077521156?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 19 Feb 2011 02:10:36 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Village Telco: In a Village Telco Minute</title>
	<guid>http://villagetelco.org/?p=791</guid>
	<link>http://villagetelco.org/2011/02/in-a-village-telco-minute/</link>
	<description>&lt;p&gt;Over the last couple of years we have struggled to communicate the message of the Village Telco simply and succinctly.  Thanks to the creative folk at &lt;a href=&quot;http://www.blinktower.com&quot;&gt;BlinkTower&lt;/a&gt;, we think we&amp;#8217;ve finally succeeded.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Comments welcome.&lt;/p&gt;</description>
	<pubDate>Thu, 17 Feb 2011 11:12:08 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Booting the GA330</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-4514122645767146843</guid>
	<link>http://www.dingux.com/2011/02/booting-ga330.html</link>
	<description>Just a few tech comments I left out in the previous post due to lack of time... but after a quick clarification about ChinaChip:&lt;br /&gt;&lt;br /&gt;They have a lot of open fronts in a very competitive market and a limited set of resources, I assume that if the project has been put on hold is because they had no choice. Note however that they're still providing information and support, but with some limitations.&lt;br /&gt;&lt;br /&gt;As I said, I have schematics, docs (which suck but are just what they have) and BSP code. I'm now working on the tools to boot code on the GA330 through the USB port, and as soon as I get it working and a kernel booting with a serial console, I'll publish it all (but I still believe it will be of little use to other developers without the docs and BSP). I don't like to be the bottleneck, but that's how things are now.&lt;br /&gt;&lt;br /&gt;Now for the tech details:&lt;br /&gt;&lt;br /&gt;The CC1800, like the JZ4732 and other SoCs alike, has several boot modes implemented in the internal ROM. The code checks the state a of a few pins and then proceeds to boot from NAND, NOR, SD or USB. Actually, USB boot means the ROM code sets up the USB port in device mode and waits for instructions. You can get CPU info, upload code to SRAM, and execute it, that's pretty much all.&lt;br /&gt;&lt;br /&gt;Note that I wrote SRAM, not SDRAM. That's why you usually need a two stage process to boot code via USB: upload and execute a tiny piece of code to SRAM which configures and initializes the SDRAM controller (and some other peripherals) so that memory is accessible, and then upload and execute the large piece of code, the kernel, to SDRAM.&lt;br /&gt;&lt;br /&gt;Surprisingly, in the two CC1800 based machines I have, the GA330 and an HD8900, the bootsel[2] pin is tied to 3.3V. This means you can't enter USB boot mode. The bootsel[1] pin is connected to the down input of  the d-pad, which means that switching the GA330 on while keeping down pressed you enter SD boot mode. In this mode the CC1800 loads the content of sectors 2-17 (a total of 16 sectors, 8KB) from the SD card to SRAM and executes it.&lt;br /&gt;&lt;br /&gt;It turns out that due to some errors in the CC1800 design (not sure if it's the silicon or the ROM code) the USB0 port being used wasn't stable. Since the ROM code can't be changed, the hardware designers were forced to use some other alternate boot mode, and went with SD. Now, if you put in the SD a modified version of the USB boot code in ROM which uses USB1 instead of USB0, you're back on track and can complete the flash burn process through the USB1 port.&lt;br /&gt;&lt;br /&gt;(note that in SoC of this complexity it is very usual to have tens or even hundreds of errors which are generally described by the manufacturer together with workarounds in the corresponding errata sheets, see the LM3S9B96 from Texas Instruments for instance)&lt;br /&gt;&lt;br /&gt;Needing to have an SD card inserted to enter USB boot mode is a small inconvenience for the manufacturer, but can be a blessing for final users, because:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It makes a dual boot unnecessary. You will be able to boot dingux from the SD card without any modifications to the GA330.&lt;/li&gt;&lt;li&gt;Even if a dual boot is necessary, the install method would require only an SD card (no more USB driver madness).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;For us developers it's an insignificant inconvenience. We need USB boot because it makes compiling and testing code very easy, and we just happen to need an SD card inserted all the time. Note that the partition table in sector 0 of the SD card is not affected, so you can set the first partition to start anywhere beyond sector 17 and have an usable data partition while still keeping the boot code in sectors 2-17.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-4514122645767146843?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 15 Feb 2011 11:49:11 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Update on dingux for the GA330</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-161256731343797233</guid>
	<link>http://www.dingux.com/2011/02/update-on-dingux-for-a330.html</link>
	<description>It's been way too long since the last entry. First I delayed it a bit just to have something actually substantial to write, and then then stretched it a bit longer, and well, here we are.&lt;br /&gt;&lt;br /&gt;After coming back from China I had a list of tasks I had agreed with the ChinaChip management and engineers to get dingux up and running on the A330 in the near term. There was also the possibility of they sponsoring the development. To make a long story short, I was willing to anything between working on my spare time for free and being hired full time, and I was expecting something in between: I'm way too expensive for full time dedication (plus it's probably too soon for that) and while I'd be happy to work in my spare time, that would of course come with no commitment to any schedule or even to completion.&lt;br /&gt;&lt;br /&gt;Since then, there's been some kind of priority rearrangement in ChinaChip and the &quot;dingux on the A330&quot; project as been put on hold. That means that the engineers that would do their part (mostly adapting their firmware to allow comfortable dingux installation in the internal flash) aren't available at the moment to work on it. And delivery of the required information to get a kernel port to the CC1800 running has been... well... slow. I got the most important part a couple of weeks ago. And no sponsoring. So I'll do my best but again, don't hold your breath, since as of now my job and my family allow only for a very limited amount of spare time.&lt;br /&gt;&lt;br /&gt;The partial CC1800 programmer's manual I've got is 38 pages long. And consists of a couple of paragraphs describing each peripheral and tables of registers. Only the names of the registers and the bit fields. All in Chinese. The Texas Instruments OMAP3503 programmer's manual is +3000 pages. Go figure.&lt;br /&gt;&lt;br /&gt;Not that I'm really complaining, since I truly believe that's what they have from the people that actually designed the CC1800. The cheese is in the BSP, which is code, which means if something is not properly done or downright broken you can't fix it, since you don't have a reference programmer's manual.&lt;br /&gt;&lt;br /&gt;I wanted to end this post with some tech details about the A330 boot process and memory map, but I have to leave now, so it'll go in the next post.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-161256731343797233?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 12 Feb 2011 12:30:58 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Village Telco: Bo-kaap Village Telco  Part 1</title>
	<guid>http://villagetelco.org/?p=766</guid>
	<link>http://villagetelco.org/2011/02/bo-kaap-village-telco-part-1/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/02/afrimesh_again.jpg&quot;&gt;&lt;img class=&quot;alignright size-medium wp-image-773&quot; title=&quot;Afrimesh - Bo-kaap&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/02/afrimesh_again-182x300.jpg&quot; alt=&quot;&quot; width=&quot;182&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;While David Rowe and Lemi Soares have been busy building a &lt;a title=&quot;David Rowe's Series of blog posts on the Dili Village Telco&quot; href=&quot;http://www.rowetel.com/blog/?p=1447&quot; target=&quot;_blank&quot;&gt;Village Telco in Dili&lt;/a&gt;, the capitol of East Timor, we&amp;#8217;ve also been hard at work in Cape Town building a Village Telco within the Bo-kaap community.  The &lt;a title=&quot;Wikipedia entry for Bo-kaap&quot; href=&quot;http://en.wikipedia.org/wiki/Bo-Kaap&quot; target=&quot;_blank&quot;&gt;Bo-kaap&lt;/a&gt; is a largely muslim community in the heart of Cape Town.  Many of the residents go back several generations and have fascinating stories to tell.  It is a mix of wealthy and poor and also has a sprinkling of &amp;#8220;immigrants&amp;#8221; mostly white, artistic types (film-makers, photographers, architects) who have been attracted by the Bo-kaap&amp;#8217;s unique character.&lt;/p&gt;&lt;p&gt;In terms of a place to pilot a Village Telco, it sits above the demographic we intended the Village Telco for but it seemed a good choice for a number of reasons:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;There is a really strong community.  There are strong social bonds linking everyone in the Bo-kaap and strong social bonds means a strong desire to communicate locally.  This was the strongest motivator for choosing the Bo-kaap&lt;/li&gt;&lt;li&gt;We&amp;#8217;re still learning and don&amp;#8217;t want to create a dependency on something that is still evolving. The fact that Bo-kaap community is a little wealthier on average than our target community means that although they may value the Village Telco, they won&amp;#8217;t be completely stuffed up if something goes wrong as we perfect the network.&lt;/li&gt;&lt;li&gt;It&amp;#8217;s convenient.  Tempting as it is to set up a rural Village Telco right away, the Bo-kaap is not many minutes away for me so easy to get to and work on.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;At the right you can see a screenshot from the &lt;a title=&quot;Afrimesh - home page&quot; href=&quot;http://code.google.com/p/afrimesh/&quot; target=&quot;_blank&quot;&gt;Afrimesh&lt;/a&gt; software that we use to monitor the mesh.  Right now we&amp;#8217;re up to about 50 nodes in the mesh and the increasing density continues to make things easier and easier.  In the beginning we had to be very careful about long links and used some Ubiquity Nanostation IIs to make some of the long shots.  We also had to be very careful about getting the Mesh Potatoes into a strategic position to pick-up other Mesh Potatoes.  Now, once I get up on someone&amp;#8217;s roof, I can usually see a Mesh Potato in some direction so installation is as simple as finding something to attach the Mesh Potato to.  TV antenna&amp;#8217;s have proven to be very convenient in this regard.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2011/02/mp_tv_antenna.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-777&quot; title=&quot;Mesh Potato attached to a television antenna&quot; src=&quot;http://villagetelco.org/wp-content/uploads/2011/02/mp_tv_antenna-150x150.jpg&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; The installation process for the Bo-kaap has been slow, partly because it took a long time to get production Mesh Potatoes into our hand but also because the Bo-kaap is an old community and the houses in it have evolved more than they have been planned.  Each house is a little exercise in complexity in terms of getting to the roof, finding a cable path down from the roof, finding power near the desire location of the phone, etc.  I&amp;#8217;ve got it down to a routine now though.  Having the right tools like a long concrete drill bit for going through walls are simple things that make life a lot easier.&lt;/p&gt;&lt;p&gt;We&amp;#8217;re learning a lot as we install the Bo-kaap Village Telco.  We decided to offer 100 Mesh Potatoes to the community in exchange for user feedback on the Village Telco.  In order to build the most useful network possible, we built connections by following social ties, a bit like &lt;a title=&quot;Wikipedia entry for Snowball Sampling&quot; href=&quot;http://en.wikipedia.org/wiki/Snowball_sampling&quot; target=&quot;_blank&quot;&gt;snowball sampling&lt;/a&gt; in research.  We started with a family that ran a cafe and followed their social ties, brothers, sisters, friends, neighbours.  Each new person is at liberty to suggest others.  By following existing strong social ties, the Village Telco immediately begins to delivery high-value connections.  An older mother-in-law that wants to stay in touch with her family who are only a few doors away but it is hard for her to get around.  A mother who recently became a grandmother wants to stay in touch with her daughter.  In each of these cases, they could use a mobile phone to call but like the majority of people in South Africa they are conscious of what time spent on the phone costs them.  A local Village Telco call is free.&lt;/p&gt;&lt;p&gt;Mesh Potatoes can be gateway-ed to other telecom networks and can also offer Internet services but for the time being we are just offering local voice because the devices do that on their own at no additional cost.  Once the community is ready to take over the network themselves and manage external voice and Internet charges, we&amp;#8217;ll enable those other features.  Stand by for more from the Bo-kaap Village Telco.&lt;/p&gt;</description>
	<pubDate>Tue, 01 Feb 2011 19:59:16 +0000</pubDate>
</item>
<item>
	<title>Marcan's Abort, Retry, Hack?: OpenLase hardware and simulator</title>
	<guid permalink="False">http://marcansoft.com/blog/?p=324</guid>
	<link>http://marcansoft.com/blog/2011/01/openlase-hardware-and-simulator/</link>
	<description>&lt;p&gt;I apologize for taking this long to post this! I&amp;#8217;ve been busy non-stop since 27c3 and never got a chance to get around to it. Finally, though, here it is: the description of the &lt;a href=&quot;http://marcansoft.com/blog/openlase/hardware-mark-1/&quot;&gt;Mark 1 laser projector&lt;/a&gt; that I use with OpenLase.&lt;/p&gt;
&lt;p&gt;But wait, there&amp;#8217;s more! If you don&amp;#8217;t have the hardware and don&amp;#8217;t want to build it, or you want to try out OpenLase, or you want to be able to mess around with it on the go, you can now do that. There&amp;#8217;s a new OpenGL-based simulator in the OpenLase tree. It works off of the JACK data (so you still need JACK) and it tries to simulate the dynamics of my laser scanner, including brightness effects and some of the physical limitations of the galvos. Here&amp;#8217;s a comparison of the simulator vs. the real thing:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m aware that documentation on the software is still sorely lacking. Please bear with me while I get my act together and write that up &lt;img src=&quot;http://marcansoft.com/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>Mon, 31 Jan 2011 19:48:00 +0000</pubDate>
</item>
<item>
	<title>Hawkboard: Hawkboard Update</title>
	<guid permalink="False">http://www.hawkboard.org/?p=102</guid>
	<link>http://www.hawkboard.org/http:/www.hawkboard.org/%post%</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/89852/311357.aspx#311357&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://www.hawkboard.org/wp-content/uploads/2011/02/Hawkboard.jpg&quot; alt=&quot;Hawkboard&quot; title=&quot;Hawkboard&quot; width=&quot;412&quot; height=&quot;412&quot; class=&quot;size-full wp-image-103&quot; vspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 31 Jan 2011 18:30:57 +0000</pubDate>
</item>
<item>
	<title>Dieter Spaar: GPRS Air Interface</title>
	<guid>http://www.mirider.com/weblog/2011/01/30#20110130-gprs_air_interface</guid>
	<link>http://www.mirider.com/weblog/2011/01/30#20110130-gprs_air_interface</link>
	<description>&lt;p&gt;
To get a better understanding of how GPRS looks like at the air interface, I
implemented some first experimental code in Airprobe (this is not yet ready
to be released). The output of this code are the RLC/MAC blocks on the
downlink (no uplink yet). As far as I am aware, WireShark cannot decode RLC/MAC
yet.
&lt;/p&gt;
The GPRS air interface is not that different than &quot;standard&quot; GSM (signalling
or voice). The PDCH (Packet Data Channel) uses its own multiframe structure
with a length of 52 frames, the biggest difference are four coding schemes
(CS-1 to CS-4, CS-1 and CS-2 use
&lt;a href=&quot;http://en.wikipedia.org/wiki/Puncturing&quot; target=&quot;_blank&quot;&gt;
puncturing&lt;/a&gt;) which are chosen depending on 
the quality of the radio link. If the link quality is good, a coding scheme 
with less forward error correction and more information bits is used which 
results in a higher data rate. As a side note, you can test how good your 
receiver really is if CS-4 is used (very good radio link quality, no 
forward error correction at all), you should have nearly no bit errors 
in the decoded data (the phone also receives error free data, otherwise 
CS-4 would not be used).

&lt;p&gt;
I have not yet implemented decoding EDGE, besides other coding schemes EDGE
can also use a different modulation (8-PSK instead of GMSK).
&lt;/p&gt;
&lt;p&gt;
Please note that being able to decrypt the A5 encryption does not help with
GPRS, it does not use A5 encryption at all, it uses its own encryption algorithm
(GEA)  at a higher level. If you want to experiment with GPRS encryption, the 
easiest to start with is probably using a GPRS setup with OpenBSC plus the 
nanoBTS and  look at the traces to the SGSN with WireShark (you have to 
implement a GPRS encryption algorithm in osmo-SGSN first, the specification 
of GEA3 is publicly available).
&lt;/p&gt;</description>
	<pubDate>Sun, 30 Jan 2011 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Dan Strother: System modeling/verification diagram</title>
	<guid permalink="False">http://danstrother.com/?p=588</guid>
	<link>http://danstrother.com/2011/01/24/fpga-stereo-vision-project/</link>
	<description>As alluded to in a few of my other posts, I&amp;#8217;m working on developing an open-source FPGA-accelerated vision platform. This post is a detailed overview of the project&amp;#8217;s architecture and general development methodology. Future (and past) posts will elaborate on &amp;#8230; &lt;a href=&quot;http://danstrother.com/2011/01/24/fpga-stereo-vision-project/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=danstrother.com&amp;blog=7403453&amp;post=588&amp;subd=danstrother&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 25 Jan 2011 05:28:10 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Kicking off two open source optical flow / vision sensor projects (Finally!)</title>
	<guid>tag:diydrones.com,2011-01-20:705844:BlogPost:255561</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:255561</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/aNMNWh4ebQtQTueI-erF3yS8-stLONDVs3JbVvbuVUpZyez9knSdwpHspoZfgdOFFtqglWcgwQH5BZ4pxHOl7w__/CYE8_v3_draft.jpg&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/aNMNWh4ebQtQTueI-erF3yS8-stLONDVs3JbVvbuVUpZyez9knSdwpHspoZfgdOFFtqglWcgwQH5BZ4pxHOl7w__/CYE8_v3_draft.jpg?width=300&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I would like to &quot;formally&quot; announce two open source projects related to optical flow / programmable vision sensors. These are based on some of the optical flow techniques developed at Centeye, but in the spirit of &quot;open source&quot; are meant to be hacked/modified/copied any way a user deems fit. In both cases, the source code has been opened up under a modified FreeBSD license, while the board design has been released under a &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot; target=&quot;_blank&quot;&gt;Creative Commons Attribution-ShareAlike license&lt;/a&gt;, the same license that applies to the Arduino boards.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://embeddedeye.com/forum/topics/draft-cye8-version-3-sensor&quot; target=&quot;_self&quot;&gt;first project is the CYE8 sensor&lt;/a&gt;, an optical flow sensor based on an Atmel ATmega644 (possibly to be replaced by an ATmega1284) 8-bit processor, and using a Faraya64plus sensor head. (A &quot;sensor head&quot; is a vision chip wire bonded to a 9mm x 9mm PCB with a board to board connector on the other side.) We fabricated our first two iterations last year (&lt;a href=&quot;http://www.diydrones.com/profiles/blogs/user-programmable-subgram&quot; target=&quot;_blank&quot;&gt;the first one described here&lt;/a&gt;), and are now readying the third iteration this month.&lt;/p&gt;
&lt;p&gt;The hardware of the &lt;a href=&quot;http://embeddedeye.com/forum/topics/draft-arprmi-shield-for&quot; target=&quot;_self&quot;&gt;second project&lt;/a&gt; was introduced in a &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/arduino-pro-mini-optical-flow&quot; target=&quot;_blank&quot;&gt;recent blog post&lt;/a&gt; and is based on the &lt;a href=&quot;http://www.sparkfun.com/products/9218&quot; target=&quot;_blank&quot;&gt;Sparkfun Arduino Pro Mini&lt;/a&gt; platform (which uses a similar but smaller Atmel microcontroller) and comprises a simple shield board that interfaces the Arduino with a sensor head. Currently we have used only a FarayaSmall sensor head, but this board will support other chips as well.&lt;/p&gt;
&lt;p&gt;At the current time, these projects are hosted on another open Ning network &lt;a href=&quot;http://embeddedeye.com/&quot; target=&quot;_blank&quot;&gt;Embedded Eye&lt;/a&gt;, since we are trying to capture a broad set of applications beyond drones. If these projects take off, we can set up Huddle spaces accessible across both Ning networks, or move the project elsewhere. (I'll take suggestions- I'm still learning about how to do projects like this.) The CYE8 project is located &lt;a href=&quot;http://embeddedeye.com/forum/topics/draft-cye8-version-3-sensor&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; and the Arduino-based project is located &lt;a href=&quot;http://embeddedeye.com/forum/topics/draft-arprmi-shield-for&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. These forum pages include initial board designs and source codes.&lt;/p&gt;
&lt;p&gt;Based on interest, we will likely also launch projects built around an Atmel AVR32 processor (faster than the AVR8's) and/or an XMOS quad-core processor (if you have real need for speed).&lt;/p&gt;
&lt;p&gt;One common theme of these two projects (which has strengths and weaknesses) is that they utilize vision / image sensor chips designed by Centeye. (This is not a requirement of the license- it is just how they were designed.) The strengths are that since we designed the vision chips, we can probably reveal as many details of the inner workings of these chips as we want. We all have heard complaints of chip manufacturers being too vague about what is inside, so I hope that this is a welcome change. The weakness is that we basically have to burn new wafers every time we want more sensors, so they are not as available as, say, a part from Digikey.&lt;/p&gt;
&lt;p&gt;We are actually going to start a new run of silicon soon with the intent of increasing manufacturing quantity. It is tempting to use this as an opportunity to explore semi-open chips designs. I'd be happy to share a (virtual/real) beer with anyone interested in discussing (whether here, at EE, or directly) the various issues associated with the design and manufacture of chips of this type.&lt;/p&gt;
&lt;p&gt;I look forward to speaking with everyone soon!&lt;/p&gt;
&lt;p&gt;Geof&lt;/p&gt;</description>
	<pubDate>Thu, 20 Jan 2011 01:00:00 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Make your own plastic mini lens, part 2</title>
	<guid>tag:diydrones.com,2011-01-12:705844:BlogPost:250912</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:250912</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/vpaNmdcAzCj0LaEpbSOHh3qWPRsCAUqTUzZa2-kVPcJvzbWrub1AjAxG2TcZmP0ns1S1SVnUed6NZftep8feP9TQl-1jOmO8/returned_part.JPG&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/vpaNmdcAzCj0LaEpbSOHh3qWPRsCAUqTUzZa2-kVPcJvzbWrub1AjAxG2TcZmP0ns1S1SVnUed6NZftep8feP9TQl-1jOmO8/returned_part.JPG?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In a &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/make-your-own-plastic-mini&quot; target=&quot;_blank&quot;&gt;recent post&lt;/a&gt; I described some simple acrylic lenses I made using a simple press-molding technique. The methods were crude, but the results weren't too bad. Also, I had designed an assembly containing four minor variations of these lenses and submitted that for fabrication over the holidays. The injection molding step was a bit of an experiment- rather than using a full optic-grade firm, which would have cost us well into the five figures to try, we used U.S. based Protomold, who was able to create this mold in two weeks and make 100 assemblies (400 lenses) for a bit more than $2k. I again selected acrylic as the resin material for these lenses.&lt;/p&gt;
&lt;p&gt;The picture above shows the parts as they came back (top and bottom side). Below shows a close-up of two lenses cut out from the above assembly.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/vpaNmdcAzCjUSjmRP3B*qRysJDbStCtd2cF8*LwsHiE61Hn8xeFcj0wuDUc8EVv6NE10vuiMcEiEuII2QnQJ2xgCPF6Gy5-x/single_lenses.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/vpaNmdcAzCjUSjmRP3B*qRysJDbStCtd2cF8*LwsHiE61Hn8xeFcj0wuDUc8EVv6NE10vuiMcEiEuII2QnQJ2xgCPF6Gy5-x/single_lenses.jpg?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The real test, of course, is that image quality. I mounted these lenses onto some of our image sensor chips using the same methods as that discussed in the above-quoted recent post, painted on an iris, and sealed the chip up. Below is a picture of me waving at the camera in 32x32 resolution.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/taDZ5KJK**sC-bwBfPARstQxa7k1fYbSlRVXsVV1dgf4o8oKAsTNfs6sOjZvKUnqfppU1HyaUl*rkw5G5obrMoOHpi4CZXfg/sample_image.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/taDZ5KJK**sC-bwBfPARstQxa7k1fYbSlRVXsVV1dgf4o8oKAsTNfs6sOjZvKUnqfppU1HyaUl*rkw5G5obrMoOHpi4CZXfg/sample_image.jpg?width=200&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;I also took another picture of my backyard with a different chip and a different setup at 90x90 resolution. The field of view was roughly between 70 and 80 degrees, thus the pixel pitch was less than one degree. The image quality in this latter picture was not as good. Two factors probably contributed to this- First the finer pixel pitch could have exceeded the limits of the optics, second my method for removing fixed pattern noise was less accurate in this setup. Right now I do not know which of these two factors dominate.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/5NhhUP7GA*fFY4U0rcC0A-XQpuYrkmBK3yJ*IYFGfALPuZ9Gc8UyoC3BH8b5z9pU*abYsXrnvYg3z1VHOy-xwCBOaeoq3MFq/backyard1m.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/5NhhUP7GA*fFY4U0rcC0A-XQpuYrkmBK3yJ*IYFGfALPuZ9Gc8UyoC3BH8b5z9pU*abYsXrnvYg3z1VHOy-xwCBOaeoq3MFq/backyard1m.jpg?width=300&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One comment- There was in fact some shrinkage in the lens, on the flat bottom part that gets placed onto the chip. However this was small and easily filled in with the optical adhesive, which has almost the same index of refraction as acrylic.&lt;/p&gt;
&lt;p&gt;One lesson learned regarding the injection mold design: There are four slightly different lenses in the above assembly. The difference is in the total thickness, with sequential lenses different by 25 microns. (It turned out this difference was moot compared to the varying thickness due to the amount of adhesive used.) This was to allow me to experiment with variations to compensate factors such as shrinkage and enlarging of the mold through polishing. However I made the mold family perfectly symmetrical (other than the small variations in lens thickness)! When I got the parts back, it was hard to find out which lens was which! Fortunately I found the sprue (where the plastic charge gets injected into the mold) and with careful eyeballing under a microscope, identified the lenses. But the lesson learned is that I should have added a slight marking or asymmetry to help me identify right from left.&lt;/p&gt;
&lt;p&gt;Overall I am pleased with the results. For pixel pitches of about two degrees per pixel and up, this technique is adequate. Two degrees per pixel may not sound like much, but many flying insects have this type of resolution and do quite well. It may be that with the right iris and better fixed pattern noise cancellation, I could get the sharpness down to one degree or pixel, but this will have to wait.&lt;/p&gt;
&lt;p&gt;Here again is the link to a zip folder containing the Alibre files for the mold: &lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com/files/kb92agc6NPaVn4hHCUbGResm5LslDRe8dr4raAD0HCzPsZ3DJb62mF05Ik0KLwyt92tEXhEw8UVrdCDEBzBA7GrF4wa-tKsp/CYE_LensMold_Untested.zip&quot;&gt;CYE_LensMold_Untested.zip&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 12 Jan 2011 01:45:45 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Arduino Pro Mini optical flow sensor</title>
	<guid>tag:diydrones.com,2011-01-10:705844:BlogPost:249861</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:249861</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/HcZUn-GL6rYpzAJWHSWKbEF6aiACOp0u5JVn3M11Z*FhhRaMqUBEzZ3AM65cCT8rzjqo6o2roKYAmgiyzOFcaiu4UiznDT9p/ArPrMi_et_al.JPG&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/HcZUn-GL6rYpzAJWHSWKbEF6aiACOp0u5JVn3M11Z*FhhRaMqUBEzZ3AM65cCT8rzjqo6o2roKYAmgiyzOFcaiu4UiznDT9p/ArPrMi_et_al.JPG?width=750&quot; width=&quot;750&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a follow-on to an &lt;a href=&quot;http://www.diydrones.com/profiles/blogs/arduino-optical-flow-sensor&quot; target=&quot;_blank&quot;&gt;earlier post&lt;/a&gt; about an Arduino-based optical flow sensor prototype. Here I actually constructed a complete sensor that could actually be integrated into a robotic platform. To achieve a smaller size, I used an Arduino Pro Mini board from Sparkfun, and added a &quot;shield&quot; to interface that with a Centeye image sensor and optics. The breakout of parts is shown above- The complete sensor is shown next to a US Quarter. You can also see the individual blue Arduino board and the green &quot;shield&quot; board. On the right are individual &quot;sensor heads&quot; which are basically small PCBs holding the image sensor chip (here the &quot;FireflySmall&quot;), optional optics, and two capacitors. The sensor head plugs into the green shield board via a Hirose DF30 board to board connector. Three sensor heads are shown- on top is a sensor head with optics, in the middle the board-to-board connector side, and on the bottom the image sensor chip side.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I wrote a simple Arduino script to grab pixels from the vision chip (configuring it to grab rectangular pixels), compute 1D optical flow using a variation of Srinivasan's &quot;image interpolation algorithm&quot;, and dump a display of the optical flow to the serial monitor. (Some of you may know Professor Mandyam Srinivasan as the Australian biologist who has studied honey bee navigation, in particular how honey bees use optical flow to close control loops using simple but elegant heuristics.) A simple video of the sensor is shown below. I've also attached the Arduino script code, in case anyone is interested.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; 
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/6YDaBEcOSu7bFFU5*KxgqyCgvRryOdb1ZDzBtztfllrub0PlV4N6E5Im*24bz5nSdJsdg-5XBurMyMdyS0wMnbBeKpZMFpLN/PIO12Firefly_ProMini_LinearOF.pde&quot;&gt;PIO12Firefly_ProMini_LinearOF.pde&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 10 Jan 2011 14:32:17 +0000</pubDate>
</item>
<item>
	<title>Methril: Sumarizing 2010</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-2233479543064080695</guid>
	<link>http://openblog.methril.net/2011/01/sumarizing-2010.html</link>
	<description>After being so &quot;silent&quot; in my Open Source world, i need to sumarize the last year.&lt;br /&gt;&lt;br /&gt;It could look that i leave the FOSS world, but nothing further from the truth. I've been FOSS advocate at my actual company, improving our FOSS ecosystem. &lt;br /&gt;I had to fight in some fronts of the Computer Science that i never had contact with before:&lt;br /&gt; &lt;ul&gt;&lt;br /&gt;  &lt;li&gt;I had a combat with binutils/gcc/newlib for ColdFire v1 devices, and i win (we get a multi platform toolchain ready to work), both Windows and Linux builds are working fine.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt; I also deal with other compiler: SDCC. It was hard, but it's our official PIC compiler :D &lt;/li&gt;&lt;br /&gt;  &lt;li&gt; Configure and make an application with RTAI and comedi to measure quality and some important parameters of our physical final products (it was a working proof of concept, we need to improve it a little bit, but it's working). In the while i have to evaluate the use of Scicoslab, RTAI-Lab, Scicos-Hil, Scilab, Xenomai, RT-PREEMPT patch and robotics frameworks like Orocos.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt; I get hands dirty with LTSP, as sys-admin, and i configured some servers and services.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt; And some other propietary stuff or internal work.&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;Unfortunately, i didn't found time to work with Efika-MX, Ben-NanoNote and carry on hacking my Neo Freerunner (between all my hw toys), neither post some words about my advances. But, at the end of the day i did nice FOSS development, and i also touch the Linux kernel, in a personal way.&lt;br /&gt;So... 2010 was not a bad year :)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-2233479543064080695?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 09 Jan 2011 14:53:54 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Zedstar: Searchable USB flash drives</title>
	<guid>http://zedstar.org/blog/?p=224</guid>
	<link>http://zedstar.org/blog/2011/01/06/searchable-usb-flash-drives/</link>
	<description>&lt;p&gt;Recently I was &lt;a href=&quot;http://zedstar.org/blog/2008/06/25/iphone-local-search-video/&quot;&gt;revisiting&lt;/a&gt; a powerful open source search engine technology on a Ben NanoNote to see how well it performed. Bearing in mind the NanoNote is only equipped with 32MB of RAM and a 336MHz MIPS processor it performed admirably. As a proof of concept I took the PDF lecture slides from three MIT OpenCoureWare undergraduate modules and indexed them on the device. This part of the process is time consuming but only needs to take place once. As you can see from the following &lt;a href=&quot;http://zedstar.org/video/nanocourseware.ogv&quot;&gt;video&lt;/a&gt; (OGG format), searching the PDFs is rapid and there should be no problem scaling to thousands of documents.&lt;/p&gt;
&lt;p&gt;One nice feature of connecting the NanoNote to your PC is that you are able to access the search engine through your PC&amp;#8217;s web browser. This becomes close to something I have thought about for a while &amp;#8211; a copyleft designed USB flash drive with embedded web server and search engine. This would allow you to take your documents with you and view them using a familiar g**gle style search on any PC you get access to (in theory) without relying on the host OS to do the work.&lt;/p&gt;</description>
	<pubDate>Thu, 06 Jan 2011 21:35:45 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Make your own plastic mini lens</title>
	<guid>tag:diydrones.com,2010-12-22:705844:BlogPost:240888</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:240888</link>
	<description>&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/d8Toim8Y9xGcmRmzAsCPTYj7NVeiJouqA5BwDx1cTNYwSQpWYO1H7*7K-K5c*3j3aBzvEcHeR0HVbMbrVNClMR*be6PC22pz/top.JPG&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/d8Toim8Y9xGcmRmzAsCPTYj7NVeiJouqA5BwDx1cTNYwSQpWYO1H7*7K-K5c*3j3aBzvEcHeR0HVbMbrVNClMR*be6PC22pz/top.JPG?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of my side projects has been to develop an open-source visual motion / optical flow sensor that may be usable in all sorts of devices, whether robotic related or not. I've found though that one of the most difficult parts of developing tiny vision sensors is finding the right optics. Ideally we want something that is cheap, easy to mount, has a decent field of view, and yet creates a reasonable image. For higher resolution images (hundreds of pixels across or more) and image sensors four or more millimeters wide, there are many excellent lens assemblies available from companies like Sunex. (We've used and still use their products in higher resolution sensor designs, always with success.) However there is really nothing available for image sensors a millimeter wide. Printed pinholes do work, but don't let through as much light. This post highlights a little project to design a decent lens for the Faraya64 image sensor, whose focal plane measures about 1.1mm across.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The basic concept (shown below) is to make a simple &quot;plano convex&quot; lens, with the curved surface (e.g. &quot;bump&quot;) facing outward and the flat section resting on an image sensor. I decided on acrylic as an optical material, since it is light, easily formed, and for our purposes is as good as glass. An opaque &quot;stop&quot;, perhaps made of paint or a piece of black plastic, would fit over over the lens and allow light to reach the image sensor through only the center of the front bump.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/hmNtFto2Qgzr1tGs3C58K1sx*p4XA6-W2o0HZtiWlFl5K0uly1T6*mQRvAxGSODXZGqPym84mRpsKgyOLzhDT3fzCTcqoL5C/cross_section.jpg&quot;&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/Kaik600XXnvvOjaeIpyqeaCDKSHNrOb63Yh7DRsopcpW0UAjMfLbzyhZ5v9J9xB88EH1JRJEn0ejGG0Y4HTQM1rNPSI4QWRN/cross_section.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/Kaik600XXnvvOjaeIpyqeaCDKSHNrOb63Yh7DRsopcpW0UAjMfLbzyhZ5v9J9xB88EH1JRJEn0ejGG0Y4HTQM1rNPSI4QWRN/cross_section.jpg?width=600&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For the front surface I decided to use a spherical shape- this is a pretty traditional shape for 99% of all lenses out there. I used the ray tracing and optimizing capabilities of Zemax, a commercial optics design software package, to find an optimal shape. I found that to provide the 1.1mm image sensor chip with a 60 degree field of view, the dimensions shown above were optimal: The front bump would be a sphere with a radius of 0.61mm, while the total thickness would be 1.6mm. I also allowed the optimizer to try aspherical conic shapes (e.g. parabolas, hyberbolas, ellipses) but found that I did not gain much performance over that of a sphere and so decided to keep it simple.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The two figures below show two plots generated by Zemax. First is the lens layout, showing the 0, 10, 20, and 30 degree off-axis rays. Second is the spot diagram showing how the image would be blurred from ideal, for red, green, and blue rays! The pitch between pixels on the Faraya64 image sensor is about 17.1 microns, so the RMS blurring shown here was not quite optimal but was good enough for me to go on.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/xOJkuR9Pee1gbhhhYMbV9h1XxtYMtrAnuUElHOnmWgNicJFYlp7r95q8D7V-1JQl7AcuGMHJ0HeMouXkh1PDm7b6G6DBAve*/ray_trace.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/xOJkuR9Pee1gbhhhYMbV9h1XxtYMtrAnuUElHOnmWgNicJFYlp7r95q8D7V-1JQl7AcuGMHJ0HeMouXkh1PDm7b6G6DBAve*/ray_trace.jpg?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/Z4Nbs28Bgli5xTqVF1VNHjUfxhvFMfRgg-k5ykElOpZqqIMoTdDQL-SsCSEYRlRO6b-ob*5fr5D4yfscFNnCUbNuT*UF0GNp/spot.jpg&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/Z4Nbs28Bgli5xTqVF1VNHjUfxhvFMfRgg-k5ykElOpZqqIMoTdDQL-SsCSEYRlRO6b-ob*5fr5D4yfscFNnCUbNuT*UF0GNp/spot.jpg?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I decided next to first try forming a lens by hand by stamping it. This technique won't match the precision from the Zemax simualtion, but I thought it would be fun. Using Alibre, I designed a simple stamp that would produce a lens of the above shape. I had this stamp CNC machined from aluminum by the company FirstCut.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/Z4Nbs28BglgW0RdAL-fK1kx1X2uMd2zBMPvDkL0w729esUBASZ5Jq9subk8Ph8jGrDPJCiR24taIM9LItzobLa*TSidWr2Dn/stamp.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/Z4Nbs28BglgW0RdAL-fK1kx1X2uMd2zBMPvDkL0w729esUBASZ5Jq9subk8Ph8jGrDPJCiR24taIM9LItzobLa*TSidWr2Dn/stamp.jpg?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The stamp came back, but it needed more finishing. Basically the part of the mold that forms the spherical lens bump needed to be polished to &quot;optical quality&quot;. I didn't really know what I was doing, but I did manage to find a way to polish this area! I used a Dremel tool, a toothpick, and some polish (Simichrome Polish by Gesswein), put a dab of polish in the hold, and used the Dremel tool to spin the toothpick. After about 5-10 minutes of spinning and moving the toothpick around, I managed to get the spherical surface polished to a decent quality, as shown below. I also cut channels to let the plastic escape as the stamp was being pressed down. The result is shown below.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/LTkRdLCK9Q*lrhDOOcQoy3Gw4aedOtcawxwVJq8qoHNWImcUFErH73coX4bmp-wviup0NeiSmeS3vJ-5acp7KUCCjkZGPRJ3/finished_mold.JPG&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/LTkRdLCK9Q*lrhDOOcQoy3Gw4aedOtcawxwVJq8qoHNWImcUFErH73coX4bmp-wviup0NeiSmeS3vJ-5acp7KUCCjkZGPRJ3/finished_mold.JPG?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;Now comes the fun part- the pressing! I don't have any photos from this step, but I'll try to describe the technique that worked best. I placed a pyrex dish on a hot plate, and set the heat to low-medium. After a few minutes I then placed a piece of aluminum foil on the hot plate, and a tiny piece of acrylic onto the aluminum foil. A few minutes later the acrylic piece got soft, and I pressed down onto it with the stamp. I lifted the stamp out, and the pressed acrylic piece (and the aluminum foil) came up with it. The picture below shows the business end of the stamp, the pressed piece of acrylic, and a U.S. Quarter for size comparison. If you look carefully, you can see the spherical bump in the middle of the piece of acrylic. You can also see extra plastic around the outer side of the lens- I cut that away with a utility knife.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/hmNtFto2QgyI9*V2l9bwoP*8xahhdAQzHUBJh*3n*NiYmNUr-Rj92-TMxGnDgcCP5xVJCzH80aXwUjWTTfrGsBGhPLHjdeFb/pressed_piece.JPG&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/hmNtFto2QgyI9*V2l9bwoP*8xahhdAQzHUBJh*3n*NiYmNUr-Rj92-TMxGnDgcCP5xVJCzH80aXwUjWTTfrGsBGhPLHjdeFb/pressed_piece.JPG?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;I'd say that about 40% of the lenses I pressed turned out OK. Below and at the very top of this post are front and back pictures of some of the final lenses produced.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/xOJkuR9Pee2Agsa1rhp9riW25m5riihuUdYUtdSfR*GBT7Zz7d*1KGyHtNrUZQ*jKetQ9RfPeCjxxt0wK3MK5CyO7F2-Cchu/top.JPG&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/eZMuUPXdUQOB0pm6DmbSQ9uYLjpdFg3bNuQ8wQiZtlNU9gmYtPTbQFw3Ooy3PDa5nnomC3KZLGwQV1uIWCC0oZn5lhaDRHTn/bottom.JPG&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/eZMuUPXdUQOB0pm6DmbSQ9uYLjpdFg3bNuQ8wQiZtlNU9gmYtPTbQFw3Ooy3PDa5nnomC3KZLGwQV1uIWCC0oZn5lhaDRHTn/bottom.JPG?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;The next step is to mount the lens on a chip. Basically I used a UV curable optical adhesive (Norland 63) to glue the lens directly onto the chip. Then I used black modeling paint to form the &quot;opaque enclosure&quot;. Finally I added more optical adhesive to encapsulate everything (except for the lens bump). The result is shown below- you'll see the lens mounted onto a Firefly chip (similar to the Faraya) and that mounted on a small 9mm x 9mm PCB. If you look closely you can also see the wire bonds that connect the chip to the PCB.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/RHN9fCkLA-xgLaC6tIb*GDulVYgS-95lCANxfVTYLtRQu8DpbKaMmVCfsjUdLvzbMDuKizVuE0ZOUpUSNzkDjg__/finished_sensor_head.JPG&quot;&gt;&lt;img class=&quot;align-full&quot; src=&quot;http://api.ning.com:80/files/RHN9fCkLA-xgLaC6tIb*GDulVYgS-95lCANxfVTYLtRQu8DpbKaMmVCfsjUdLvzbMDuKizVuE0ZOUpUSNzkDjg__/finished_sensor_head.JPG?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;How was the image quality? Actually much better than I expected, especially since the flat side of the lens was not perfect. The optical adhesive's index of refraction is similar to that of acrylic, so I think together they helped smooth out some of the imperfections. Below is a screen shot- the quality is certainly good enough for 32x32 images, and I think with refining can be further improved.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/Z4Nbs28BgliY-EJXjKDDGnCMSgA5wx5LY7V3jJcoNW-504uM2obTgxr*O*KKOOX5AEelK0KfGezCxBcagwQmu2iamsxhktWs/image.JPG&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/Z4Nbs28BgliY-EJXjKDDGnCMSgA5wx5LY7V3jJcoNW-504uM2obTgxr*O*KKOOX5AEelK0KfGezCxBcagwQmu2iamsxhktWs/image.JPG?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;So now the final step is to automate this process. Rather than press molding by hand, injection molding is the way to go for quantity. Below is a family mold with four slightly different variations of the same lens. This is currently being fabricated by Protomold. I should get parts back in the second week of January. I'll report back on this in a few weeks!&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_self&quot; href=&quot;http://api.ning.com:80/files/Kaik600XXnuW*jVc3aQfKIj56LvHLCDUZSA2vpgKpCGT49v5yiS9f7Rgiuv9Elc4xN0Vh2lk-afUOR1Ndgpgvdah*njIy06D/top_polish.jpg&quot;&gt;&lt;img class=&quot;align-center&quot; src=&quot;http://api.ning.com:80/files/Kaik600XXnuW*jVc3aQfKIj56LvHLCDUZSA2vpgKpCGT49v5yiS9f7Rgiuv9Elc4xN0Vh2lk-afUOR1Ndgpgvdah*njIy06D/top_polish.jpg?width=700&quot; width=&quot;700&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
	<pubDate>Wed, 22 Dec 2010 12:09:07 +0000</pubDate>
</item>
<item>
	<title>Antitronics: I’ve published my remaining knitting machine files</title>
	<guid permalink="False">http://www.antitronics.com/?p=209</guid>
	<link>http://www.antitronics.com/?p=209</link>
	<description>&lt;p&gt;I had published my floppy drive emulator for the brother knitting machine, and some other information, using the wiki here at antitronics. This was sub-optimal from the beginning, and since Lady Ada published some of that in her git repo here: &lt;a href=&quot;https://github.com/adafruit/knitting_machine&quot;&gt;https://github.com/adafruit/knitting_machine&lt;/a&gt;, I&amp;#8217;ve been intending to get more of my files out there. Limor&amp;#8217;s repo seemed like the best place to put them, and she&amp;#8217;s graciously allowed me to add them. What documentation I&amp;#8217;ve created about the brother data format is in there, as well as all the hacked-up tools I used to help with the reverse engineering. There&amp;#8217;s nothing there for anyone wanting easily usable end-user applications, sorry about that.&lt;/p&gt;
&lt;p&gt;As usual, I&amp;#8217;d love to hear from anyone who finds these to be useful.&lt;/p&gt;
&lt;p&gt;Steve&lt;/p&gt;</description>
	<pubDate>Sat, 18 Dec 2010 19:57:24 +0000</pubDate>
</item>
<item>
	<title>Zedstar: A dynamic data encoder for embedded systems</title>
	<guid>http://zedstar.org/blog/?p=186</guid>
	<link>http://zedstar.org/blog/2010/04/03/a-dynamic-data-encoder-for-embedded-systems/</link>
	<description>&lt;p&gt;I personally view &lt;a href=&quot;http://en.wikipedia.org/wiki/Scheme_%28programming_language%29&quot;&gt;Scheme&lt;/a&gt; as a good extension language. Something that can be embedded into C code to ease the pain of doing everything in C. I am interested in exploiting this concept on embedded systems where there is a lot of fooling about to make a binary. I still intend to produce binaries and reuse the large amount of existing C code out there. However, I want to script the network communication and in particular the structure of the network packets. I have periodically been working on a tool that attempts to support this. This summer I intend to get rid of the old C code in this project and rewrite it entirely in Scheme apart from the low-level encoder/decoder which will remain in C. In this &lt;span&gt;&lt;a href=&quot;http://zedstar.org/papers/packedobjects-white-paper.pdf&quot;&gt;white paper&lt;/a&gt;&lt;/span&gt; I attempt to describe the work.&lt;/p&gt;
&lt;p&gt;**update**&lt;/p&gt;
&lt;p&gt;This white paper has now be superseded by the paper &amp;#8220;&lt;a href=&quot;http://zedstar.org/papers/everythingcounts.pdf&quot;&gt;Everything counts in small amounts&lt;/a&gt;&amp;#8220;.&lt;/p&gt;</description>
	<pubDate>Mon, 13 Dec 2010 18:58:28 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Clarifications on previous post</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-2592848472616113878</guid>
	<link>http://www.dingux.com/2010/12/clarifications-on-previous-post.html</link>
	<description>I'm not sure I've explained myself properly, since I totally agree with the comment posted by Xeatheran, but he failed to notice.&lt;br /&gt;&lt;br /&gt;Using his words, people buying the A320 and similar devices want an emulator priced around $100. Any feature that significantly increases the price would make it have to compete with the other more expensive linux based consoles (Wiz/Caanoo come to mind) or with the godzillas of the market (NDS, PSP).&lt;br /&gt;&lt;br /&gt;So, any wished feature must be such that doesn't increase the price significantly:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Better processor: by next year, the CC1800 will be obsolete and underpowered compared to other competitors in the PMP market. The CC2000 will be a bit more expensive, but here they have no choice but to move on or lag behind. Note that the CC2000 has a powerful GPU. More details upon the official anouncement.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;256MB: this was already planned before I suggested it. Note that the CC2000 processor uses DDR RAM, whose widespread usage makes it cheaper than the SDRAM used by the JZ4732 and CC1800. This means 256MB in the next generation consoles may probably cost the same or less than 64MB in the current generation consoles.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A 480x272 4.3&quot; LCD screen is not much more expensive than the A320 LCD, and it would make a big difference, at least for me. I find the A320 and GA330 screens too small. Problem here is that if you need a multiple of 320x240, you'd have to go for an 800x480 4.3&quot;, which I believe will be not just a little but much more expensive.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; It should be obvious: either powered host USB type A or SDIO. Not both. My choice here is host USB, because dongles are way cheaper and more accessible than SDIO cards. But they pointed out that it may be impossible to fit such a bulky connector in the design. Maybe the PCB cutout would solve this. Anyway, it would increase cost just a little bit (mostly due to the USB power DC-DC converter), but you are also saving by removing the 2.4GHz radio from the design, which also as I pointed out, may be a big advantage when (if) time comes to pass CE/UL certification.&lt;/li&gt;&lt;li&gt;Analog nubs: if they are aiming, besides emulation, to get software studios to develop games for this console, it is a must. A GPU capable of, for example, running FPS games, would make no sense without analog nubs.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The rest of features I mentioned are essentially free (except licensing Doom, Duke, etc).&lt;br /&gt;&lt;br /&gt;So: a CC2000 SoC (800MHz, GPU), 256MB DDR RAM, 4.3&quot; LCD, analog nubs and powered host USB type A port. This would make a killer emulation console and stay in the same price range where the A320/GA330 are.&lt;br /&gt;&lt;br /&gt;Camera, touchscreen, WiFi, etc, are nonsense. If you want too shoot crappy photos (most integrated cameras are crap) or browse the internet, use your phone or buy a tablet.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-2592848472616113878?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 04 Dec 2010 10:50:18 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Capn's Tech: USB Doodad 5: Working USB</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-4478639873082652847</guid>
	<link>http://capnstech.blogspot.com/2010/11/usb-doodad-5-working-usb.html</link>
	<description>Now that I know the processor on the Doodad is working, I want to try out USB.&amp;nbsp; As we'll be using a software USB library, it's important that we test this out as soon as possible, in case we need to make circuit changes, or it's unreliable, or it just doesn't work at all.&lt;br /&gt;&lt;br /&gt;The software USB stack we want to use is called V-USB:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.obdev.at/products/vusb&quot;&gt;http://www.obdev.at/products/vusb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I downloaded V-USB and extracted it:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza src]$ &lt;b&gt;wget http://www.obdev.at/downloads/vusb/vusb-20100715.tar.gz&lt;/b&gt;&lt;br /&gt;&amp;nbsp;--2010-11-23 18:17:39--&amp;nbsp; http://www.obdev.at/downloads/vusb/vusb-20100715.tar.gz&lt;br /&gt;Resolving www.obdev.at... 78.46.114.187&lt;br /&gt;Connecting to www.obdev.at|78.46.114.187|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 302 Found&lt;br /&gt;Location: http://www.obdev.at/ftp/pub/Products/vusb/vusb-20100715.tar.gz [following]&lt;br /&gt;--2010-11-23 18:17:40--&amp;nbsp; http://www.obdev.at/ftp/pub/Products/vusb/vusb-20100715.tar.gz&lt;br /&gt;Reusing existing connection to www.obdev.at:80.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 417848 (408K) [application/x-gzip]&lt;br /&gt;Saving to: “vusb-20100715.tar.gz”&lt;br /&gt;&lt;br /&gt;100%[======================================&amp;gt;] 417,848&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 94.8K/s&amp;nbsp;&amp;nbsp; in 4.3s&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;2010-11-23 18:17:45 (94.8 KB/s) - “vusb-20100715.tar.gz” saved [417848/417848]&lt;br /&gt;[mjd@onza src]$ &lt;b&gt;tar -xzf vusb-20100715.tar.gz&lt;/b&gt;&lt;br /&gt;[mjd@onza src]$ &lt;/div&gt;&lt;br /&gt;V-USB comes with several demos. &amp;nbsp;I chose the mouse demo because it doesn't require any extra hardware such as switches or chips.&lt;br /&gt;&lt;br /&gt;I have made some changes to the mouse demo source to reflect that we're using different pins for the USB, and also to make the LEDs blink.&amp;nbsp; I've also changed the MCU type, the fuses, and the right command to run avrdude for my USB programmer:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;--- vusb-20100715-orig/examples/hid-mouse/firmware/main.c&lt;br /&gt;+++ vusb-20100715/examples/hid-mouse/firmware/main.c&lt;br /&gt;@@ -124,9 +124,19 @@&lt;br /&gt;&lt;br /&gt;&amp;nbsp;/* ------------------------------------------------------------------------- */&lt;br /&gt;&lt;br /&gt;+static const unsigned char portCMask = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3);&lt;br /&gt;+&lt;br /&gt;+static void setLED(const unsigned char v)&lt;br /&gt;+{&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~portCMask;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= (v &amp;amp; portCMask);&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt;&amp;nbsp;int __attribute__((noreturn)) main(void)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;-uchar&amp;nbsp;&amp;nbsp; i;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; uchar&amp;nbsp;&amp;nbsp; i;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; DDRC |= _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3) | _BV(PC4) | _BV(PC5);&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= _BV(4);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wdt_enable(WDTO_1S);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Even if you don't use the watchdog, turn it off here. On newer devices,&lt;br /&gt;@@ -148,12 +158,16 @@&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usbDeviceConnect();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sei();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBG1(0x01, 0, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* debug output: main loop starts */&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char a = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* main event loop */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBG1(0x02, 0, 0);&amp;nbsp;&amp;nbsp; /* debug output: main loop iterates */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wdt_reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usbPoll();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(usbInterruptIsReady()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* called after every poll of the interrupt endpoint */&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ++a;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; a &amp;amp;= 0b111111;&lt;br /&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setLED(a &amp;gt;&amp;gt; 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; advanceCircleByFixedAngle();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBG1(0x03, 0, 0);&amp;nbsp;&amp;nbsp; /* debug output: interrupt report prepared */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usbSetInterrupt((void *)&amp;amp;reportBuffer, sizeof(reportBuffer));&lt;br /&gt;--- vusb-20100715-orig/examples/hid-mouse/firmware/Makefile+++ vusb-20100715/examples/hid-mouse/firmware/Makefile&lt;br /&gt;@@ -7,11 +7,11 @@&lt;br /&gt;&amp;nbsp;# License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)&lt;br /&gt;&amp;nbsp;# This Revision: $Id: Makefile 692 2008-11-07 15:07:40Z cs $&lt;br /&gt;&lt;br /&gt;-DEVICE&amp;nbsp; = atmega168&lt;br /&gt;-F_CPU&amp;nbsp;&amp;nbsp; = 16000000&amp;nbsp;&amp;nbsp;&amp;nbsp; # in Hz&lt;br /&gt;-FUSE_L&amp;nbsp; = # see below for fuse values for particular devices&lt;br /&gt;-FUSE_H&amp;nbsp; = &lt;br /&gt;-AVRDUDE = avrdude -c usbasp -p $(DEVICE) # edit this line for your programmer&lt;br /&gt;+DEVICE&amp;nbsp; = atmega328p&lt;br /&gt;+F_CPU&amp;nbsp;&amp;nbsp; = 16000000 # in Hz&lt;br /&gt;+FUSE_L&amp;nbsp; = 0xff# see below for fuse values for particular devices&lt;br /&gt;+FUSE_H&amp;nbsp; = 0xd9&lt;br /&gt;+AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) # edit this line for your programmer&lt;br /&gt;&lt;br /&gt;&amp;nbsp;CFLAGS&amp;nbsp; = -Iusbdrv -I. -DDEBUG_LEVEL=0&lt;br /&gt;&amp;nbsp;OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o&lt;br /&gt;@@ -125,6 +125,8 @@&lt;br /&gt;&amp;nbsp;clean:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s&lt;br /&gt;&lt;br /&gt;+main.o: main.c usbconfig.h&lt;br /&gt;+&lt;br /&gt;&amp;nbsp;# Generic rule for compiling C files:&lt;br /&gt;&amp;nbsp;.c.o:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(COMPILE) -c $&amp;lt; -o $@&lt;br /&gt;diff -x usbdrv -X lufa-dontdiff.txt -u -r vusb-20100715-orig/examples/hid-mouse/firmware/usbconfig.h vusb-20100715/examples/hid-mouse/firmware/usbconfig.h&lt;br /&gt;--- vusb-20100715-orig/examples/hid-mouse/firmware/usbconfig.h&amp;nbsp;&amp;nbsp;&amp;nbsp; 2010-07-16 02:43:47.000000000 +1000&lt;br /&gt;+++ vusb-20100715/examples/hid-mouse/firmware/usbconfig.h&amp;nbsp;&amp;nbsp;&amp;nbsp; 2010-11-22 09:07:33.000000000 +1100&lt;br /&gt;@@ -27,7 +27,7 @@&lt;br /&gt;&amp;nbsp;/* This is the port where the USB bus is connected. When you configure it to&lt;br /&gt;&amp;nbsp; * &quot;B&quot;, the registers PORTB, PINB and DDRB will be used.&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;-#define USB_CFG_DMINUS_BIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;+#define USB_CFG_DMINUS_BIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;&amp;nbsp;/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.&lt;br /&gt;&amp;nbsp; * This may be any bit in the port.&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;@@ -116,7 +116,7 @@&lt;br /&gt;&amp;nbsp;/* Define this to 1 if the device has its own power supply. Set it to 0 if the&lt;br /&gt;&amp;nbsp; * device is powered from the USB bus.&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;-#define USB_CFG_MAX_BUS_POWER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20&lt;br /&gt;+#define USB_CFG_MAX_BUS_POWER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400&lt;br /&gt;&amp;nbsp;/* Set this variable to the maximum USB bus power consumption of your device.&lt;br /&gt;&amp;nbsp; * The value is in milliamperes. [It will be divided by two since USB&lt;br /&gt;&amp;nbsp; * communicates power requirements in units of 2 mA.]&lt;/div&gt;&lt;br /&gt;I applied this patch:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza src]$ &lt;b&gt;cd vusb-20100715&lt;/b&gt;&lt;br /&gt;[mjd@onza vusb-20100715]$ &lt;b&gt;patch -p1 &amp;lt; ../vusb-20100715-mjd-1.diff&lt;/b&gt;&lt;br /&gt;patching file examples/hid-mouse/firmware/main.c&lt;br /&gt;patching file examples/hid-mouse/firmware/Makefile&lt;br /&gt;patching file examples/hid-mouse/firmware/usbconfig.h&lt;br /&gt;[mjd@onza vusb-20100715]$ &lt;/div&gt;&lt;br /&gt;Then compiled the software:&lt;br /&gt;&lt;div&gt;[mjd@onza vusb-20100715]$ &lt;b&gt;cd examples/hid-mouse/firmware&lt;/b&gt;&lt;br /&gt;[mjd@onza firmware]$ &lt;b&gt;make hex&lt;/b&gt;&lt;br /&gt;cp -r ../../../usbdrv .&lt;br /&gt;avr-gcc -Wall -Os -DF_CPU=16000000&amp;nbsp; -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atmega328p -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o&lt;br /&gt;avr-gcc -Wall -Os -DF_CPU=16000000&amp;nbsp; -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atmega328p -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o&lt;br /&gt;avr-gcc -Wall -Os -DF_CPU=16000000&amp;nbsp; -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atmega328p -c usbdrv/oddebug.c -o usbdrv/oddebug.o&lt;br /&gt;avr-gcc -Wall -Os -DF_CPU=16000000&amp;nbsp; -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atmega328p -c main.c -o main.o&lt;br /&gt;avr-gcc -Wall -Os -DF_CPU=16000000&amp;nbsp; -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atmega328p -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o&lt;br /&gt;rm -f main.hex main.eep.hex&lt;br /&gt;avr-objcopy -j .text -j .data -O ihex main.elf main.hex&lt;br /&gt;avr-size main.hex&lt;br /&gt;&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bss&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hex&amp;nbsp;&amp;nbsp;&amp;nbsp; filename&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 1872&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 1872&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 750&amp;nbsp;&amp;nbsp;&amp;nbsp; main.hex&lt;/div&gt;&lt;br /&gt;And now I can program the Doodad:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[mjd@onza firmware]$ &lt;b&gt;su&lt;/b&gt;&lt;br /&gt;Password: &lt;br /&gt;[root@onza firmware]# &lt;b&gt;make flash&lt;/b&gt;&lt;br /&gt;avrdude -c avrisp2 -P usb -p atmega328p&amp;nbsp; -U flash:w:main.hex:i&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.01s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To disable this feature, specify the -D option.&lt;br /&gt;avrdude: erasing chip&lt;br /&gt;avrdude: reading input file &quot;main.hex&quot;&lt;br /&gt;avrdude: writing flash (1872 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.65s&lt;br /&gt;&lt;br /&gt;avrdude: 1872 bytes of flash written&lt;br /&gt;avrdude: verifying flash memory against main.hex:&lt;br /&gt;avrdude: load data flash data from input file main.hex:&lt;br /&gt;avrdude: input file main.hex contains 1872 bytes&lt;br /&gt;avrdude: reading on-chip flash data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.52s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1872 bytes of flash verified&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza firmware]# &lt;b&gt;make fuse&lt;/b&gt;&lt;br /&gt;avrdude -c avrisp2 -P usb -p atmega328p&amp;nbsp; -U hfuse:w:0xd9:m -U lfuse:w:0xff:m&lt;br /&gt;&lt;br /&gt;avrdude: AVR device initialized and ready to accept instructions&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.01s&lt;br /&gt;&lt;br /&gt;avrdude: Device signature = 0x1e950f&lt;br /&gt;avrdude: reading input file &quot;0xd9&quot;&lt;br /&gt;avrdude: writing hfuse (1 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: 1 bytes of hfuse written&lt;br /&gt;avrdude: verifying hfuse memory against 0xd9:&lt;br /&gt;avrdude: load data hfuse data from input file 0xd9:&lt;br /&gt;avrdude: input file 0xd9 contains 1 bytes&lt;br /&gt;avrdude: reading on-chip hfuse data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of hfuse verified&lt;br /&gt;avrdude: reading input file &quot;0xff&quot;&lt;br /&gt;avrdude: writing lfuse (1 bytes):&lt;br /&gt;&lt;br /&gt;Writing | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: 1 bytes of lfuse written&lt;br /&gt;avrdude: verifying lfuse memory against 0xff:&lt;br /&gt;avrdude: load data lfuse data from input file 0xff:&lt;br /&gt;avrdude: input file 0xff contains 1 bytes&lt;br /&gt;avrdude: reading on-chip lfuse data:&lt;br /&gt;&lt;br /&gt;Reading | ################################################## | 100% 0.00s&lt;br /&gt;&lt;br /&gt;avrdude: verifying ...&lt;br /&gt;avrdude: 1 bytes of lfuse verified&lt;br /&gt;&lt;br /&gt;avrdude: safemode: Fuses OK&lt;br /&gt;&lt;br /&gt;avrdude done.&amp;nbsp; Thank you.&lt;br /&gt;&lt;br /&gt;[root@onza firmware]#&lt;/div&gt;&lt;br /&gt;As a prelude to trying it&amp;nbsp;I also filed away the end of the board so it can fit into a USB port.&lt;br /&gt;&lt;br /&gt;Well after that, I power cycled the Doodad, and the second last LED is lit.&amp;nbsp; And if that wasn't impressive enough, After I plugged it into my computer's USB port, the mouse cursor started moving around in a large circle, and the LEDs are counting!&lt;br /&gt;&lt;br /&gt;Here's what lsusb shows:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza mjd]# &lt;b&gt;lsusb&lt;/b&gt;&lt;br /&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub &lt;br /&gt;Bus 001 Device 002: ID 1a40:0101 TERMINUS TECHNOLOGY INC. &lt;br /&gt;Bus 001 Device 003: ID 0951:1607 Kingston Technology Data Traveler 2.0&lt;br /&gt;Bus 001 Device 004: ID 0951:1607 Kingston Technology Data Traveler 2.0&lt;br /&gt;Bus 001 Device 005: ID 0951:1607 Kingston Technology Data Traveler 2.0&lt;br /&gt;Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;&lt;i&gt;Bus 003 Device 002: ID 16c0:03e8 VOTI free for internal lab use 1000&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;The mouse is the &quot;VOTI&quot; entry.  The USB vendor ID and product ID can be set in the software.&lt;br /&gt;&lt;br /&gt;Now to see the details:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[root@onza mjd]# &lt;i&gt;lsusb -v&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Bus 003 Device 002: ID 16c0:03e8 VOTI free for internal lab use 1000&lt;br /&gt;Device Descriptor:&lt;br /&gt;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18&lt;br /&gt;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp; bcdUSB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.10&lt;br /&gt;&amp;nbsp; bDeviceClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 (Defined at Interface level)&lt;br /&gt;&amp;nbsp; bDeviceSubClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp; bDeviceProtocol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp; bMaxPacketSize0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;br /&gt;&amp;nbsp; idVendor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x16c0 VOTI&lt;br /&gt;&amp;nbsp; idProduct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x03e8 free for internal lab use 1000&lt;br /&gt;&amp;nbsp; bcdDevice&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.00&lt;br /&gt;&amp;nbsp; iManufacturer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 obdev.at&lt;br /&gt;&amp;nbsp; iProduct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Mouse&lt;br /&gt;&amp;nbsp; iSerial&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp; bNumConfigurations&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp; Configuration Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wTotalLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bNumInterfaces&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bConfigurationValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iConfiguration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmAttributes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Bus Powered)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MaxPower&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400mA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Interface Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceNumber&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bAlternateSetting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bNumEndpoints&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 Human Interface Device&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceSubClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 No Subclass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterfaceProtocol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iInterface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HID Device Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 33&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcdHID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.01&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bCountryCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Not supported&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bNumDescriptors&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34 Report&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wDescriptorLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 52&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Descriptors: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ** UNAVAILABLE **&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Endpoint Descriptor:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDescriptorType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bEndpointAddress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81&amp;nbsp; EP 1 IN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmAttributes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transfer Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Interrupt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Synch Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wMaxPacketSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0008&amp;nbsp; 1x 8 bytes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bInterval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;br /&gt;Device Status:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0000&lt;br /&gt;&amp;nbsp; (Bus Powered)&lt;br /&gt;⋮&lt;br /&gt;[root@onza mjd]# &lt;/div&gt;&lt;br /&gt;I'm not sure why it says the report descriptors are unavailable.&amp;nbsp; But at least it works.&lt;br /&gt;&lt;br /&gt;Now I'll start working on the bootloader. &amp;nbsp;If I can get the bootloader working, I can take the three pins we're currently using for ISP, and make them LED outputs.&lt;br /&gt;&lt;br /&gt;The success continues!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-4478639873082652847?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 04 Dec 2010 10:43:47 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Suggestions for the next generation consoles</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-4382420314307462149</guid>
	<link>http://www.dingux.com/2010/12/suggestions-for-next-generation.html</link>
	<description>While I was with the CC folks I discussed with them a few suggestions I had for what I though would be the killer console, just in case some could be implemented in their next generation. They're eager to listen to users. That's invaluable IMHO.&lt;br /&gt;&lt;br /&gt;Mind you, these are my own suggestions and that means some of them may be pointless since as you may already know I'm not a gamer. So, I'll really appreciate all kinds of comments.&lt;br /&gt;&lt;br /&gt;I also collected suggestions from the people at #dingoonity IRC channel during one of the sleepless nights.&lt;br /&gt;&lt;br /&gt;These are my suggestions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;At least 256MB RAM (this is already confirmed).&lt;/li&gt;&lt;li&gt;4.3&quot; or larger LCD (larger would probably hinder portability).&lt;/li&gt;&lt;li&gt;Powered USB OTG port (GA330 is OTG but not powered).&lt;/li&gt;&lt;li&gt;Host USB type A connector on the top side. Would allow easy use of WiFi or bluetooth dongles to add wireless capabilitites (internet, multiplayer, etc). Proably the only way to place such a connector without making the console too think would be to use a PCB cutout, such that the connector, instead of being on the PCB, is &quot;into&quot; the PCB (i.e. center of connector aligned with PCB).&lt;/li&gt;&lt;li&gt;One microSD slow and one SD/MMC slot with SDIO capability, which would allow use of wireless SDIO cards. Note that the host USB type A connector mentioned above would probably be a much better solution, since there are many more USB dongles to choose from and they're much cheaper than SDIO cards (you can buy a tiny bluetooth dongle for less than $6 shipped).&lt;/li&gt;&lt;li&gt;Allowing external wireless through either host USB type A or SDIO has some nice advantages over the internal 2.4GHz module currently used in the GA330:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;You can connect to another GA330, your mobile phone, home network, and whatnot. With the internal 2.4GHz module you can only connect to another GA330.&lt;/li&gt;&lt;li&gt;Brings down the price of the console for users that don't need wireless anyway. For those that want it, it's dead easy to add it (mostly in the case of the hust USB type A connector). They could even sell a &quot;wireless edition&quot; pack including the dongle.&lt;/li&gt;&lt;li&gt;Lack of wireless in the base console eases CE/UL certification (in case they ever want to comply).&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Hardware color space conversion and scaling (already in the CC1800 VPU, and of course in the CC2000 which has a GPU).&lt;/li&gt;&lt;li&gt;Good subtitle support. Their high end PMP HD8900 already does support subtitles, buy they lack the black outline which is fundamental to ensure readability independent of image, and fails miserably (and silently) to load some subtitle files (I was able to solve this by rewriting then in strict UTF8 encoding, but this should not be necessary).&lt;/li&gt;&lt;/ul&gt;These are from #dingoonity:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Include Dingux plus a bundle of GPL games in each A320/GA330, and advertise it on the box as a selling point. Community will be happly to prepare such a bundle. In order to comply with the GPL the source code could be supplied in a separate subdirectory with a README stating that it can be safely deleted to reclaim some disk space.&lt;/li&gt;&lt;li&gt;License the full version of some famous OSS games like Doom, Duke Nukem 3D, etc, and include them in the bundle above.&lt;/li&gt;&lt;li&gt;Use the third connection of the headphone jack as a mic or line input, as it's used in many handsfree headphone kits. Usage of such a feature would be certainly minoritary, but it's essentially free (they're already using a three pin headphone jack in the A320 and I bet the codec they use in the GA330 already has MIC bias and MIC input pins).&lt;/li&gt;&lt;li&gt;Analog joypad. This would be great for games, but notice that this would provide the necessary pointing device for a web browser, for example.&lt;/li&gt;&lt;li&gt;Route all the unused GPIO pins to test pads on one clear area of the most accessible side of the PCB (both in the A320 and GA330 this would be the opposite side to where the LCD is connected, that is, the side you can access right after opening the case). Would be great if among those pins there was a I2C or SPI bus. This would be great for diehard hardware hackers, and is essentially free since doesn't increase manufacturing costs.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-4382420314307462149?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 02 Dec 2010 14:36:10 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: GA330 serial console</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-8844087506234842244</guid>
	<link>http://www.dingux.com/2010/11/ga330-serial-console.html</link>
	<description>I just added a serial console port to one of my GA330. The pictures below detail the TX and RX pins location and the final result.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TPVRLZqjJoI/AAAAAAAAADo/wNTGYkBHIuY/s1600/1.JPG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TPVRLZqjJoI/AAAAAAAAADo/wNTGYkBHIuY/s400/1.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5545427772486395522&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Green wire is TX, orange is RX, white is GND (you can probably connect to GND more easily anywhere on the other side of the PCB).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TPVRh5jSbaI/AAAAAAAAADw/_Nkgx89K-Hk/s1600/2.JPG&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TPVRh5jSbaI/AAAAAAAAADw/_Nkgx89K-Hk/s400/2.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5545428159002996130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TPVR6bYfmzI/AAAAAAAAAD4/GVSHiMy-tVU/s1600/3.JPG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TPVR6bYfmzI/AAAAAAAAAD4/GVSHiMy-tVU/s400/3.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5545428580401388338&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;For the curious, here's the boot output (57600 8N1):&lt;br /&gt;&lt;br /&gt;&lt;span&gt;ChinaChip IPL V1.04&lt;br /&gt;Data : Jun 08 2010    Time : 17:31:33&lt;br /&gt;&lt;br /&gt;SDRAM CAPACITY IS: 04000000&lt;br /&gt;89D7943E&lt;br /&gt;000084FF&lt;br /&gt;Total Size = 0x00047D60&lt;br /&gt;&lt;br /&gt;!!! Ecc Correct Error !!!&lt;br /&gt;!!! Ecc Correct Error !!!&lt;br /&gt;.!!! Ecc Correct Error !!!&lt;br /&gt;.Loader Size = 0x00037D60&lt;br /&gt;&lt;br /&gt;ChinaChip SPL V1.14&lt;br /&gt;Data : Aug 06 2010    Time : 16:02:01&lt;br /&gt;&lt;br /&gt;loader is normal mode...&lt;br /&gt;loader_burning = 0&lt;br /&gt;Battery Voltage = 3746.&lt;br /&gt;g_poweron_vol = 3550&lt;br /&gt;ccpmp_config Ver : 1.08 !!!&lt;br /&gt;LCD Set Init !!!!&lt;br /&gt;LCD Set Init Over !!!!&lt;br /&gt;ccpmp_config.firmware_name = A330.HXF ...&lt;br /&gt;ccpmp_config.update_key = 0x81 ...&lt;br /&gt;ccpmp_config.lcm_name = LCM_TB_TD030WHEA1_320_240 ...&lt;br /&gt;LCD Init Begin.&lt;br /&gt;&lt;br /&gt;CN2009P_CFG.DL    Data : Aug 25 2010    Time : 17:38:37&lt;br /&gt;&lt;br /&gt;****** Enter LCD Init ******&lt;br /&gt;wHCLKDIV = 1, wLCLKDIV = 0&lt;br /&gt;num = 0, flag = 0&lt;br /&gt;num = 1, flag = 0&lt;br /&gt;num = 2, flag = 0&lt;br /&gt;num = 3, flag = 0&lt;br /&gt;wHCLKDIV = 1, wLCLKDIV = 0&lt;br /&gt;num = 1, flag = 1&lt;br /&gt;update key bDevMode = 0&lt;br /&gt;ccpmp_config.load_mode = 0&lt;br /&gt;ret = 0x00102878&lt;br /&gt;usb_mode = 1&lt;br /&gt;NAND ID:&lt;br /&gt;89D7943E&lt;br /&gt;00008400&lt;br /&gt;A0FFFFFF&lt;br /&gt;0000FFFF&lt;br /&gt;A0FFFFFF&lt;br /&gt;0000FFFF&lt;br /&gt;80FFFFFF&lt;br /&gt;0000FFFF&lt;br /&gt;A0FFFFFF&lt;br /&gt;0000FFFF&lt;br /&gt;Nand manufacturer 0: inter&lt;br /&gt;Nand type 0: 4GB &lt;br /&gt;Nand manufacturer 1: Unknown&lt;br /&gt;Nand type 1: Unknown&lt;br /&gt;Nand manufacturer 2: Unknown&lt;br /&gt;Nand type 2: Unknown&lt;br /&gt;Nand manufacturer 3: Unknown&lt;br /&gt;Nand type 3: Unknown&lt;br /&gt;Nand manufacturer 4: Unknown&lt;br /&gt;Nand type 4: Unknown&lt;br /&gt;Nand manufacturer 5: Unknown&lt;br /&gt;Nand type 5: Unknown&lt;br /&gt;Nand manufacturer 6: Unknown&lt;br /&gt;Nand type 6: Unknown&lt;br /&gt;Nand manufacturer 7: Unknown&lt;br /&gt;Nand type 7: Unknown&lt;br /&gt;(dev 0)offset = 8192.&lt;br /&gt;(dev 0)size = 131072.&lt;br /&gt;(dev 0)nb_block = 256.&lt;br /&gt;xxx -- nf_bi[0] 8192.&lt;br /&gt;000 -- sta_block = 16, sta_chip = 0, end_chip = 8192.&lt;br /&gt;xxx -- aaa.&lt;br /&gt;001 -- end_block = 272, sta_chip = 0, end_chip = 8192.&lt;br /&gt;xxx -- bbb.&lt;br /&gt;xxx -- 002.&lt;br /&gt;(dev 0)start chip = 0.&lt;br /&gt;(dev 0)start block = 16.&lt;br /&gt;(dev 0)end chip = 0.&lt;br /&gt;(dev 0)end block = 271.&lt;br /&gt;_this-&gt;start_chip = 0, _this-&gt;end_chip = 0.&lt;br /&gt;nand_scan_blocks -- 000.&lt;br /&gt;nand_scan_blocks -- 001.&lt;br /&gt;block range of partition 16 ~ 272 on chip 0.&lt;br /&gt;Found bbt at block 16, ver:0x0001.&lt;br /&gt;bklight level: 00000004&lt;br /&gt;bk value = 98&lt;br /&gt;update_succ = 0&lt;br /&gt;ccpmp_config.load_mode = 0&lt;br /&gt;hxf_exist = 0&lt;br /&gt;Play Logo on Music !!!&lt;br /&gt;animation total frame = 15.&lt;br /&gt;CC1800 Run OS ....&lt;br /&gt;nandc0 - chip0, ID: 89 d7 94 3e 84 0&lt;br /&gt;nandc1 - chip0, ID: 80 fe ff ff ff ff&lt;br /&gt;nandc1 - chip1, ID: 80 ff ff ff ff ff&lt;br /&gt;nandc1 - chip2, ID: 80 fe ff ff ff ff&lt;br /&gt;nandc1 - chip3, ID: a0 ff ff ff ff ff&lt;br /&gt;gDiskCapacity = 7941120&lt;br /&gt;begin fs_init...&lt;br /&gt;begin cc_ntfs_init ...&lt;br /&gt;cc_ntfs_init ok ...&lt;br /&gt;fs init OK.&lt;br /&gt;s_wLongPressGOHOME  -1 &lt;br /&gt;SWITCHOFF KEY register  -1&lt;br /&gt;RMT  17 )&lt;br /&gt;LCD Set Init !!!!&lt;br /&gt;LCD Set Init Over !!!!&lt;br /&gt;Init UDC&lt;br /&gt;in otg  init 3-14&lt;br /&gt;out otg init&lt;br /&gt;OS Heap Information:&lt;br /&gt;Total Size: 0x00e00000&lt;br /&gt;Used Size: 0x00245e24&lt;br /&gt;Free Size: 0x00bba1dc&lt;br /&gt;AP Heap Information:&lt;br /&gt;Total Size: 0x02000000&lt;br /&gt;Used Size: 0x0018ec8c&lt;br /&gt;Free Size: 0x01e71374&lt;br /&gt;OS Heap Information:&lt;br /&gt;Total Size: 0x00e00000&lt;br /&gt;Used Size: 0x00245e90&lt;br /&gt;Free Size: 0x00bba170&lt;br /&gt;AP Heap Information:&lt;br /&gt;Total Size: 0x02000000&lt;br /&gt;Used Size: 0x0018ec8c&lt;br /&gt;Free Size: 0x01e71374&lt;br /&gt;OS Heap Information:&lt;br /&gt;Total Size: 0x00e00000&lt;br /&gt;Used Size: 0x00245e90&lt;br /&gt;Free Size: 0x00bba170&lt;br /&gt;AP Heap Information:&lt;br /&gt;Total Size: 0x02000000&lt;br /&gt;Used Size: 0x001ff61c&lt;br /&gt;Free Size: 0x01e009e4&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-8844087506234842244?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 30 Nov 2010 20:38:40 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Back from China</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-1459547825269893590</guid>
	<link>http://www.dingux.com/2010/11/back-from-china.html</link>
	<description>I'm back in one piece. It's been an exhausting trip and an amazing experience. I'm still in conversations with ChinaChip and will be writing some more updates in the following days. Meanwhile, a quick trip log:&lt;br /&gt;&lt;br /&gt;20/11 Sat - Flight from Valencia to Paris, where I have a 6h transfer.&lt;br /&gt;&lt;br /&gt;21/11 Sun - Flight from Paris to Hong Kong. The 12h trip is not as bad as expected because I score nothing short of 9h sleeping. They pick me up at the airport and take me to Shenzhen, have dinner, and then go to Dongguan straight to the hotel. I realize I'm gonna have a very hard time getting used to the chinese pronunciation of english.&lt;br /&gt;&lt;br /&gt;22/11 Mon - Pick up at the hotel, not too early because I'm seriously jetlagged and wasn't able to sleep much. We go to the ChinaChip main headquarters and factory where I'm introduced to all the department heads and a few engineers. I visit all the facilities including the factory, and later have a meeting to outline the matters we should discuss in the following days. Excellent dinner with ChinaChip's president.&lt;br /&gt;&lt;br /&gt;23/11 Tue - I've been able to sleep just a couple of hours from 10:00 to 12:00, and it's now 7:00 and I'm broken. Had arranged pick up at 9:00 but must delay it a few hours in order to try to catch some sleep. End up having lunch before going to ChinaChip's headquarters, where I spend most of the rest of the days in meetings.&lt;br /&gt;&lt;br /&gt;24/11 Wed - Was able to sleep a bit more, so we can go early to the headquarters. More meetings in the morning, and then a walk around Dongguan downtown main square, which is amazingly huge. Late in the evening we travel to Shenzhen where we pay a quick visit to the marketing an sales offices and then go to the hotel to leave the baggage. Nice seafood dinner by the hotel and out to a club for a few beers and some fun.&lt;br /&gt;&lt;br /&gt;25/11 Thu - Visit to the China Folk Culture Village park in Shenzhen, where you can see scaled down reproductions of the most important chinese landmarks, together with some other cultural information on the many ethnic groups. The park is huge and we spend the whole morning there. Then lunch and visit to Shenzhen's shanzhai market, which is shocking and will require a whole post. I could have very well spent several days in the market, but had to travel to Hong Kong, where we arrive by 21:00 after a tedious trip and several customs inspections. There's not much day left, so I just have a short walk on the Kwoloon shore to admire the island's view.&lt;br /&gt;&lt;br /&gt;26/11 Fri - Full day on my own in Hong Kong. So much to see, so many people everywere. This also requires a whole post.&lt;br /&gt;&lt;br /&gt;27/11 Sat - Plane takes off at 10:45, 13h flight (I score only 7h sleep in this one), 2.5h transfer in Paris, 1.5h flight and back in Valencia.&lt;br /&gt;&lt;br /&gt;I'll also try to quickly summarize, for now, the content of the meetings with the ChinaChip folks:&lt;br /&gt;&lt;br /&gt;- They will make changes to their bootloader and internal flash layout so that the dingux kernel and rootfs is installed in the internal flash. Both for the A320 and GA330 consoles. You'll have access to the internal flash from dingux (but the NTFL won't be released). The installation of dingux will be streamlined in the same way native firmware updates are, so no need to fiddle with usb tools any more.&lt;br /&gt;&lt;br /&gt;- There will be dingux for the GA330, with full hardware support, and full open source. There's no problem with knockoffs here because it is based in their propietary CC1800 chip not available to third parties (as opposed to the JZ4732 in the A320).&lt;br /&gt;&lt;br /&gt;- There is no schedule for the above as of now, since they're yet to decide if and how they'll sponsor it. In other words, one extreme is I work on it on a hobby basis as I've been so far and at zero cost, and the other extreme is they hire me full time. Anything in between is possible.&lt;br /&gt;&lt;br /&gt;- The next generation of consoles will be based on the CC2000 and expected to roll out by Q2 next year. The CC2000 will be announced in a month or so, and I've been kindly asked not to reveal the details, but as you can imagine, it's beast compared to the JZ4732 and CC1800.&lt;br /&gt;&lt;br /&gt;I'm sure I'm leaving something out, but I'll continue posting as things come up while I review my notes and prepare the reports of the meetings I'll be sending to ChinaChip. I'll also review the huge lot of pictures I took and post some.&lt;br /&gt;&lt;br /&gt;Someone at #dingoonity said he needed a replacement speaker for his A320. Got it, but don't remember who he was. Email me, please.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-1459547825269893590?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 30 Nov 2010 14:29:54 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Marcan's Abort, Retry, Hack?: OpenLase: open realtime laser graphics</title>
	<guid permalink="False">http://marcansoft.com/blog/?p=241</guid>
	<link>http://marcansoft.com/blog/2010/11/openlase-open-realtime-laser-graphics/</link>
	<description>&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: see &lt;a href=&quot;http://marcansoft.com/blog/2011/01/openlase-hardware-and-simulator/&quot;&gt;this post&lt;/a&gt; for hardware info and also a new GL laser simulator for those without hardware.&lt;/p&gt;
&lt;p&gt;First of all, as I&amp;#8217;m sure everyone knows by now, I&amp;#8217;ve been working on hacking the Kinect and writing open drivers for it. There&amp;#8217;s a &lt;a href=&quot;http://openkinect.org&quot;&gt;website&lt;/a&gt; for the community and a &lt;a href=&quot;https://github.com/OpenKinect/libfreenect&quot;&gt;Git repo&lt;/a&gt; with the code, and it&amp;#8217;s working fairly nicely by now.&lt;/p&gt;
&lt;p&gt;With that out of the way, here&amp;#8217;s a project that I&amp;#8217;ve been working on on-and-off for the past year or so. I&amp;#8217;ve been interested in laser scanning and DIY laser projectors, but I couldn&amp;#8217;t find any good open source software to drive them. Specifically, I was interested in the realtime aspect: rendering and showing dynamically generated images and responding to events, not just making and preprocessing laser shows. So I set out to write my own set of software to do real-time rendering. This was the result:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;more-241&quot;&gt;&lt;/span&gt;&lt;br /&gt;
DIY laser projectors commonly use sound cards as DACs. This shifts most of the processing over to the PC, but also lets us get very fine control over the realtime aspects of projection, which is what I want. Thus, my laser projector is based on a bog-standard USB soundcard, modified to pass DC. I&amp;#8217;ll probably write a detailed article on the hardware later, but suffice it to say that it&amp;#8217;s a galvo kit, a hacked chinese laser pointer, my own laser driver and monitoring circuitry, and some other minor parts. Total cost is about €200, if you play your cards right.&lt;/p&gt;
&lt;p&gt;Since we&amp;#8217;re converting laser images to audio data, why not just treat the laser data as audio in the first place? After all, laser samples are audio-rate data, and 16-bit multichannel 48kHz fits the requirements for laser projection very well. So that is what I did. OpenLase isn&amp;#8217;t really a monolithic framework. Instead, it&amp;#8217;s a series of stand-alone applications and chunks built on the excellent &lt;a href=&quot;http://jackaudio.org/&quot;&gt;JACK audio connection kit&lt;/a&gt;, which serves to pipe realtime laser data around the different bits.&lt;/p&gt;
&lt;p&gt;On a typical setup, you&amp;#8217;d have two processes running on top of JACK. On one hand, there&amp;#8217;s the output processor, which is responsible for formatting the idealized laser data to suit the peculiarities of the hardware. This includes things like brightness scaling, the obvious X/Y inversion settings, the final output perspective transform (to fit the screen), and minor filters to try to compensate for hardware imperfections. It also generates a 1kHz square wave on one channel &amp;#8211; this is a peculiar safety feature of my laser hardware. I have a microcontroller monitoring this signal, such that if the software hangs or crashes for some reason, the laser shuts down immediately (to avoid having a static dot which would be a serious eye hazard). The OpenLase output processor has a simple &lt;a href=&quot;http://marcansoft.com/transf/laser_output.png&quot;&gt;Qt GUI&lt;/a&gt; that lets you tweak these settings on the fly.&lt;/p&gt;
&lt;p&gt;On the other hand, you have whatever picture source you want to use. You can have bare JACK applications, such as two examples: &amp;#8216;&lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=examples/circlescope.c;hb=master&quot;&gt;circlescope&lt;/a&gt;&amp;#8216;, a circular oscilloscope that takes realtime audio data from a media player, and &amp;#8216;&lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=tools/playilda.c;hb=master&quot;&gt;playilda&lt;/a&gt;&amp;#8216;, a bare-bones ILDA file player (ILDA / .ild is the standard file format for laser graphics). The circlescope is particularly good for showing off the real-time aspect (note that the input can come from the laser DAC&amp;#8217;s line-in with only the small JACK buffering delay):&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;However, the other big part of OpenLase is &lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=include/libol.h;hb=master&quot;&gt;libol&lt;/a&gt;, a realtime rendering library loosely modeled on OpenGL which lets you produce 2D and 3D graphics on the fly. This is what I used for the LASE demo above. The demo itself isn&amp;#8217;t currently open source (and the code is utterly horrid &amp;#8211; I wrote half of it at Euskal Encounter and finished it mere minutes before the deadline), but if there&amp;#8217;s demand I might open source it too, just please don&amp;#8217;t expect pretty code! However, keep in mind that most features used by the demo (text rendering, 3D, &amp;#8220;shaders&amp;#8221;, ILDA file loading, etc.) were implemented as part of libol, so you aren&amp;#8217;t missing out on much. There are two libol-based examples: &lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=examples/simple.c;hb=master&quot;&gt;some rotating cubes&lt;/a&gt;, and &lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=examples/pong.c;hb=master&quot;&gt;Pong&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s one part of the demo made it into the OpenLase distribution as a separate example: &lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=tools/trace.c;hb=master&quot;&gt;tools/trace.c&lt;/a&gt;. This used to be some tracing code that I used for the metaballs and fire effects (I kind of cheated there, as those are rendered as bitmaps and then traced in realtime into laser vectors). It&amp;#8217;s a terribly naive algorithm (check the source out for details), but it worked surprisingly well for certain kinds of video, so I hacked it and tacked on more heuristics in order to attempt to make it work better. It now lives next to &lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git;a=blob;f=tools/playvid.c;hb=master&quot;&gt;tools/playvid.c&lt;/a&gt;, which is a simple video player using libavcodec. &lt;a href=&quot;http://www.youtube.com/watch?v=uJaAYD0YT44&quot;&gt;Here&amp;#8217;s&lt;/a&gt; what it looks like (&lt;a href=&quot;http://marcansoft.com/transf/badapple4.mkv&quot;&gt;improved version (mkv)&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=G3C-VevI36s&quot;&gt;original YouTube video&lt;/a&gt;). More complex videos are hit and miss, but some things turn out &lt;a href=&quot;http://marcansoft.com/transf/laser_minami_kiss.mkv&quot;&gt;surprisingly well&lt;/a&gt; for such a silly algorithm.&lt;/p&gt;
&lt;p&gt;You can also add filters between the output and the image generator. This is what I did for my &lt;a href=&quot;http://www.youtube.com/watch?v=Q1heqFVrQGU&quot;&gt;Kinect + OpenCV + OpenLase&lt;/a&gt; demo, which projects anything projectable by OpenLase onto a moving screen, with a dynamic perspective transform (in this case the perspective transform happens in the filter, not in the output processor). That code currently doesn&amp;#8217;t even build with current libfreenect, but again, if someone is interested, drop me a line and I&amp;#8217;ll make it work again and publish it.&lt;/p&gt;
&lt;p&gt;OpenLase doesn&amp;#8217;t have any facilities to patch together these JACK apps. Instead, you should just use existing JACK tools, such as QJackCtl, to connect all the input and output ports together. QJackCtl has a patchbay feature that automagically connects the ports when applications start up, so it&amp;#8217;s quite seamless.&lt;/p&gt;
&lt;p&gt;Right now there is pretty much no documentation, but I&amp;#8217;d like to know if people are interested. If you have (or want to build) this kind of DIY hardware, you run Linux or some other UNIX that can run JACK, and you&amp;#8217;re interested in hacking on the code or using it for something, please let me know! &lt;a href=&quot;http://git.marcansoft.com/?p=openlase.git&quot;&gt;Here&amp;#8217;s&lt;/a&gt; the git repo.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: Three more videos, musically themed. A laser visualization of MIDI data (MIDI to laser):&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;And the other way around, a laser harp (laser to MIDI):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Wed, 24 Nov 2010 02:25:52 +0000</pubDate>
</item>
<item>
	<title>Zedstar: A minimal OpenWrt image for the Openmoko Freerunner containing GNU Guile</title>
	<guid>http://zedstar.org/blog/?p=189</guid>
	<link>http://zedstar.org/blog/2010/05/02/a-minimal-openwrt-image-for-the-openmoko-freerunner-containing-gnu-guile/</link>
	<description>&lt;p&gt;To experiment some more with OpenWrt I dusted out a Freerunner and built a minimal image containing GNU Guile. The image is built with glibc and an IP 192.168.254.101 to match my Nanonote settings.&lt;/p&gt;
&lt;p&gt;** UPDATE: GNU Guile now has readline support and root image now contains GLib **&lt;/p&gt;
&lt;p&gt;Flash the following:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://zedstar.org/freerunner/openwrt-s3c24xx-2.6-uImage&quot;&gt;http://zedstar.org/freerunner/openwrt-s3c24xx-2.6-uImage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://zedstar.org/freerunner/openwrt-s3c24xx-root.jffs2-128k&quot;&gt;http://zedstar.org/freerunner/openwrt-s3c24xx-root.jffs2-128k&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Boot the device then:&lt;br /&gt;
john@thinkpad:~$ telnet 192.168.254.101&lt;br /&gt;
Trying 192.168.254.101&amp;#8230;&lt;br /&gt;
Connected to 192.168.254.101.&lt;br /&gt;
Escape character is &amp;#8216;^]&amp;#8217;.&lt;/p&gt;
&lt;p&gt;=== IMPORTANT ============================&lt;br /&gt;
Use &amp;#8216;passwd&amp;#8217; to set your login password&lt;br /&gt;
this will disable telnet and enable SSH&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;/p&gt;
&lt;p&gt;BusyBox v1.16.1 (2010-05-02 14:45:14 BST) built-in shell (ash)&lt;br /&gt;
Enter &amp;#8216;help&amp;#8217; for a list of built-in commands.&lt;/p&gt;
&lt;p&gt;_______                     ________        __&lt;br /&gt;
|       |.&amp;#8212;&amp;#8211;.&amp;#8212;&amp;#8211;.&amp;#8212;&amp;#8211;.|  |  |  |.&amp;#8212;-.|  |_&lt;br /&gt;
|   &amp;#8211;   ||  _  |  -__|     ||  |  |  ||   _||   _|&lt;br /&gt;
|_______||   __|_____|__|__||________||__|  |____|&lt;br /&gt;
|__| W I R E L E S S   F R E E D O M&lt;br /&gt;
KAMIKAZE (bleeding edge, r21293) &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
* 10 oz Vodka       Shake well with ice and strain&lt;br /&gt;
* 10 oz Triple sec  mixture into 10 shot glasses.&lt;br /&gt;
* 10 oz lime juice  Salute!&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
root@OpenWrt:/# uname -a&lt;br /&gt;
Linux OpenWrt 2.6.30.10 #1 PREEMPT Sun May 2 14:59:31 BST 2010 armv4tl GNU/Linux&lt;br /&gt;
root@OpenWrt:/# guile&lt;br /&gt;
guile&amp;gt; (string-tokenize &amp;#8220;hello world&amp;#8221;)&lt;br /&gt;
(&amp;#8220;hello&amp;#8221; &amp;#8220;world&amp;#8221;)&lt;br /&gt;
guile&amp;gt;&lt;/p&gt;</description>
	<pubDate>Tue, 23 Nov 2010 20:24:59 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Traveling to China</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-8047292386757400200</guid>
	<link>http://www.dingux.com/2010/11/traveling-to-china.html</link>
	<description>I'm leaving tomorrow to HK/China, where I'll be meeting the ChinaChip people. Will be back in a week, but will try to update as time permits on anything relevant to dingux on the GA330.&lt;br /&gt;&lt;br /&gt;UPDATE: Paris CDG airport is da bomb. At least in terminal E where I am as I write this, plenty of places to lay and take a nap, massage chairs, PS3 for entertainment (free). The 5 hours I have to wander here suddenly don't feel so uphill.&lt;br /&gt;&lt;br /&gt;They even have 10 minute free wifi. Too bad it's only 10 minutes. Unless you disconnect, clear the browser cookies, change the WiFi interface MAC address, and connect again, of course. You didn't read that here.&lt;br /&gt;&lt;br /&gt;sudo ifconfig wlan0 hw ether [your previous MAC + 1]&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-8047292386757400200?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 20 Nov 2010 20:19:32 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: DA330 ---&gt; GA330</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-3222673581962205918</guid>
	<link>http://www.dingux.com/2010/11/da330-ga330.html</link>
	<description>I'm not sure I understand as of know the relationship between ChinaChip, Dingoo, and Dingoo Technology. It appears that there are two Dingoo companies, one that produces 3D games and another that actually produces the A320. Both belong to ChinaChip group. Then there's Dingoo Technology, which have marketed the A330 which is basically an A320 (JZ4732/JZ4740 SoC) with a different case/LCD, 64MB RAM and stolen firmware. In order to avoid confusion with the later, at some point I decided to refer to it as A330 and to refer to the newer, CC1800 based machine as DA330. But I was mistaken since it is Gemei (another company of the ChinaChip group) who will be marketing it (my two sample machines have both the Gemei logo). So, I figured out I'd rather fix this silly mistake soon. So, from now on, I'll refer to the newer CC1800 based A330 as GA330.&lt;br /&gt;&lt;br /&gt;Sorry for any caused confusion. I've edited previous blog entries to reflect this change.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-3222673581962205918?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 08 Nov 2010 00:42:48 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: GA330 specs</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-584738837693012181</guid>
	<link>http://www.dingux.com/2010/11/da330-specs.html</link>
	<description>I believe there's some confusion on the GA330 specs. As I mentioned in the previous post, I have only preliminary, general, info, but this is what I found out so far (don't take it for granted anyway):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CC1800 processor (ARM926 400MHz).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;320x240 LCD, slightly larger than the A320 one.&lt;/li&gt;&lt;li&gt;64MB RAM.&lt;/li&gt;&lt;li&gt;2.4 GHz communication module. This is a true radio device and not just a keyboard hack. Enables multiplayer and custom peripherals.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;USB OTG port, which allows connecting USB devices, but you'll need external +5V power (i.e. a powered hub).&lt;/li&gt;&lt;/ul&gt;The CC1800 has some nice features: the OMIP seems to be a video decoding coprocessor, and the VPU seems to be some kind of video post processor which can do quick scaling and color conversion before spitting out the data to the LCD.&lt;br /&gt;&lt;br /&gt;I would say that the CC1800 CPU core belongs in the same class than the JZ4732 in the A320, however, being an ARM architecture has the advantage of the existing assembly optimized emulation cores. I bet that the VPU will allow a sizeable boost in performance by offloading the color conversion work from the SDL code.&lt;br /&gt;&lt;br /&gt;64MB vs. 32MB in the A320 are a big advantage too.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-584738837693012181?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 08 Nov 2010 00:39:32 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: GA330 guts</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-6082702797678202126</guid>
	<link>http://www.dingux.com/2010/10/a330-guts.html</link>
	<description>It's been some time now since I received the two &lt;span&gt;Gemei&lt;/span&gt; A330 sent by ChinaChip (&lt;span&gt;GA330 from now on&lt;/span&gt;, to distinguish it from the other A330 out there which is basically an A320 with 64MB RAM). We're still working out the details (NDA, possible trip to China) to acquire the required info on the CC1800 SoC (system-on-chip) in order to port dingux to it, and it might still take a bit longer. Please excuse me if I don't comment more on the matter until everything is settled.&lt;br /&gt;&lt;br /&gt;I'm working on the x760+ dingux port. As I said, I have all the required info, but time is limited and I've invested most of it reviewing all my initial work together with recent developments. Please be patient (yes, even more, sorry).&lt;br /&gt;&lt;br /&gt;Meanwhile, here you have some electronics &lt;span&gt;pron&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TM3KZKr0pSI/AAAAAAAAADA/bTByKopWTks/s1600/P1030565.JPG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TM3KZKr0pSI/AAAAAAAAADA/bTByKopWTks/s400/P1030565.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5534302050821907746&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TM3LMwEWIaI/AAAAAAAAADI/bKGhrms-iPM/s1600/P1030564.JPG&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TM3LMwEWIaI/AAAAAAAAADI/bKGhrms-iPM/s400/P1030564.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5534302937030205858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TM3ME2c9ppI/AAAAAAAAADQ/PW-hHUraow0/s1600/P1030556.JPG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_D1gi-wr2f2k/TM3ME2c9ppI/AAAAAAAAADQ/PW-hHUraow0/s400/P1030556.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5534303900816746130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TM3Mj0KuipI/AAAAAAAAADY/ywlMwaDQ0VI/s1600/P1030558.JPG&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TM3Mj0KuipI/AAAAAAAAADY/ywlMwaDQ0VI/s400/P1030558.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5534304432779332242&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TM3NF0UOgPI/AAAAAAAAADg/6zpxOHG6_gY/s1600/P1030561.JPG&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_D1gi-wr2f2k/TM3NF0UOgPI/AAAAAAAAADg/6zpxOHG6_gY/s400/P1030561.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5534305016934727922&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;You'll notice that there is no battery in the pictures. The samples were sent without battery due to customs regulations, and though it's not strictly necessary for development, I'll get hold of substitutes soon.&lt;br /&gt;&lt;br /&gt;You know I don't use the A320 and GA330 much for gaming (lack of time, you know, bla bla bla), so I can't give you a thorough review of the new GA330. Here are some first impressions. Please bear in mind that I'm not sure to which point the samples I got are definitve production machines, so take it with a pinch of salt:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The construction build feels good but not as good as the A320.&lt;/li&gt;&lt;li&gt;The LCD is exposed, i.e. there is no plastic protection (which is part of the enclosure) over it, as happens in the A320 and the X760+. This is definitely a no-no.&lt;/li&gt;&lt;li&gt;The LCD is a &quot;delta matrix&quot; type. Don't know much about the technology (I'll appreciate links), but it basically means that the color dots are not aligned in an orthogonal matrix but spread in a zig-zag pattern. This is supposed to be better for displaying pictures and video, but I think it's not good for games.&lt;/li&gt;&lt;/ul&gt;Please let me stress what I already said: these might not be definitive production units and the final product to market may have many of these thingies fixed. Also, note that ChinaChip actively supporting linux on their machines is a huge advance, and a first in the chinese PMP market as far as I know. And more powerful machines will come in the near future.&lt;br /&gt;&lt;br /&gt;One final comment on the CC1800: it as a video processing unit (VPU) capable of doing scaling and all kinds of color conversion. The JZ4732 in the A320 has an image processing unit (IPU) which unfortunately is only good for converting YUV to RGB. This is very useful for video playing but useless for gaming. The CC1800's VPU will allow to provide each game with the framebuffer resolution and color space which is best suited, allowing for a significant increase in performance. Being an ARM processor will allow also to use the already existing assembly optimized emulation cores, for another boost in performance.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-6082702797678202126?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 08 Nov 2010 00:38:38 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: hwinit fixed</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-6301463483793250632</guid>
	<link>http://www.dingux.com/2010/11/hwinit-modified.html</link>
	<description>I just modified hwinit (in the subversion repository) so it works on all A320 out there. These are the changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added WP bit clean in CP0 CAUSE register (original idea by BouKiCHi).&lt;/li&gt;&lt;li&gt;Added LCD init and logo display as visual feedback of hwinit success (original idea also by BouKiCHi).&lt;/li&gt;&lt;li&gt;Code cleanup and removal of unneeded nand code.&lt;/li&gt;&lt;/ul&gt;Kudos to BouKiCHi for an awesome work of debugging.&lt;br /&gt;&lt;br /&gt;The first fix is just weird. CP0 means &quot;coprocessor 0&quot; in MIPS architechture. It's the part that takes care of memory management, exceptions, privilege levels and such. It turns out that some versions of the IPL (Initial Program Loader) ROM code in the JZ4732 set up the WATCH registers in such a way that a watch exception occurs but it deferred (by setting the bit WP in the abovementiones CAUSE register). Then later, when the linux kernel boots, as soon as it sets up the CP0 STATUS register (another special regitser of the same &quot;coprocessor&quot;), the WATCH exception is immediately serviced, caused an unhandled exception panic (that is: for people suffering this problem, hwinit was actually working, but the kernel was panicking way before the LCD was initialized, so they could see nothing at all).&lt;br /&gt;&lt;br /&gt;Why some IPL ROM versions behave this way is a mystery, and would be harmless if the kernel MIPS initialization code was careful enough as to clear the WP bit before setting up the CP0 STATUS register (I bet this is fixed in more recent kernels, but I'm too lazy to verify it).&lt;br /&gt;&lt;br /&gt;I'm working to provide a native firmware based dual boot installer, so this hwinit issue wasn't really top priority, but it had bugged me for so long that I just had to sort it out before continuing. I'm just like that, like to walk on solid ground and feel very uncomfortable when I leave loose ties behind me.&lt;br /&gt;&lt;br /&gt;I won't make a new dual boot installer release with just the fixed hwinit, since by now I guess all those with trouble have eventually been lead to hwinit2. Next release should, in my opinion, include at least:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A newer kernel with:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Fixed I/O corruption bug(either Ingenic or OpenDingux based).&lt;/li&gt;&lt;li&gt;with support for newer flash chips in recent A320.&lt;/li&gt;&lt;li&gt;Support for x760+.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;An updated buildroot and toolchain, with both 32 and 64 bit versions. I had to upgrade my buildroot since the old one didn't compile in my Ubuntu 10.04 x64 box.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-6301463483793250632?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 07 Nov 2010 21:52:17 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: x760+ key mappings</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-4516305616741268368</guid>
	<link>http://www.dingux.com/2010/11/x760-key-mappings.html</link>
	<description>I know I asked this before, but it was loooong ago, and I'd like some more input on the topic. The x760+ has only UP/DOWN/LEFT/RIGHT/A/B/X/Y keys, which means START, SELECT, LSHOUDLER, RSHOULDER and HOLD are missing and they'll have to be emulated or I guess some dingux apps out there will not be usable.&lt;br /&gt;&lt;br /&gt;The funny thing is that the schematic shows actual HOLD, START and SELECT keys. Incidentally, it also has LSHOULDER and RSHOULDER, but those are available only as test pads (which means someone with enough time could theoretically add them).&lt;br /&gt;&lt;br /&gt;So I've though this simple approach:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;POWER + UP = LSHOULDER&lt;/li&gt;&lt;li&gt;POWER + DOWN = SELECT&lt;/li&gt;&lt;li&gt;POWER + Y (triangle) = RSHOULDER&lt;/li&gt;&lt;li&gt;POWER + B = START&lt;/li&gt;&lt;/ul&gt;None of those combinations will be comfortable to use, but it's better than nothing. I just chose the combinations so they reflect the spatial locations of the corresponding keys in the A320. Will have to increase the reboot/poweroff time when POWER is pressed, otherwise it might be accidentally triggered when using the combos.&lt;br /&gt;&lt;br /&gt;Comments welcome.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-4516305616741268368?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Nov 2010 19:23:51 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Gerard Braad: How-to setup dual-booting MeeGo 1.1 on the N900</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-3296543011196844802</guid>
	<link>http://blog.gbraad.nl/2010/11/how-to-setup-dual-booting-meego-11-on.html</link>
	<description>&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/gbraad/5142954468/&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; width=&quot;200&quot; src=&quot;http://3.bp.blogspot.com/_ZmgfsgbGDLs/TNFgcVKurcI/AAAAAAAAIhE/hf7Wl-Dkmvs/s200/DSC00440.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;The current image of MeeGo is for development purpose. Do NOT try to use it for daily use. You can make a phonecall or send a message, but I already had some issues with not being able to pick up phonecalls which I receive. It should be used as a means for developers to get familiar to the MeeGo environment for use on a handset. Also see the note at the end of this article.&lt;br /&gt;&lt;br /&gt;For this how-to I use Fedora 13, but tmost of the steps also apply to any other Linux distribution. Be sure you have downloaded the correct MeeGo images before you begin and that you have a MicroSD card of 2G or more. I used a 4G MicroSD card from SanDisk.&lt;br /&gt;&lt;br /&gt;The kernel root filesystem you download have to download from: &lt;a href=&quot;http://repo.meego.com/MeeGo/releases/1.1/handset/images/meego-handset-armv7l-n900/&quot;&gt;http://repo.meego.com/MeeGo/releases/1.1/handset/images/meego-handset-armv7l-n900/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You need the following two files:&lt;br /&gt;meego-handset-armv7l-n900-1.1-mmcblk0p.raw.bz2 (521M)&lt;br /&gt;meego-handset-armv7l-n900-1.1-vmlinuz-2.6.35.3-10.3-n900 (1.5M)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;N900&lt;/b&gt;&lt;br /&gt;Enable the extras-devel repo on your device and install from app-manager: &lt;a href=&quot;http://maemo.org/packages/view/uboot-pr13/&quot;&gt;uboot-pr13&lt;/a&gt; &lt;br /&gt;or from the terminal with:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt; # root&lt;br /&gt;$ apt-get install uboot-pr13&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Be sure you have upgraded to PR1.3 before doing this. This is all that's needed on the mobile handset.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Workstation&lt;/b&gt;&lt;br /&gt;On Fedora you have to install the &lt;i&gt;uboot-tools&lt;/i&gt; to create a bootable kernel image. For writing the disk image I also included &lt;i&gt;pv&lt;/i&gt; to have some progress indication. Install these tools with:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum install uboot-tools pv cfdisk&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Connect your N900 in Mass Storage mode with the MicroSD card inserted or use a multicard reader. As mentioned before, use a 2G or more MicroSD card to dump the raw image to. You have to find the correct device to use from e.g. the &lt;i&gt;dmesg&lt;/i&gt;, replace &lt;i&gt;sdX&lt;/i&gt; with the correct device. The command for this is:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ bzcat meego-handset-armv7l-n900-1.1-mmcblk0p.raw.bz2 | pv | sudo dd bs=4096 of=/dev/sdX&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Note: This may take some time, especially on the class of SD card you are using. I used just a class 2 4GB from SanDisk. Also be sure it is not mounted during this action. Some distributions use auto-mounting for Removable Media.&lt;br /&gt;&lt;br /&gt;To make the MicroSD card usable for dual-booting you have to add a third partition. This might be a little more tricky if you haven't done this often. That is why you can use &lt;i&gt;cfdisk&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ cfdisk /dev/sdX&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;And add a new partition in the last freespace you see. The first is only 1.3MB, which is TOO small to contain the kernel image. Define it as a primary partition of 4MB (or full size). Take note of the device name. It should be &lt;i&gt;sdX3&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Now create a FAT filesystem on the newly created partition. This is where your kernel needs to be placed.&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ mkfs.vfat /dev/sdX3&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Now you need to prepare the kernel image for use on the SD card.&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -n meego-handset-armv7l-n900-1.1-vmlinuz-2.6.35.3-10.3-n900 -d meego-handset-armv7l-n900-1.1-vmlinuz-2.6.35.3-10.3-n900 uImage&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;You would now have a file called &lt;i&gt;uImage&lt;/i&gt; which you need to place in the FAT filesystem on &lt;i&gt;/dev/sdX3&lt;/i&gt;. If you have difficulty creating the file, you can download it from &lt;a href=&quot;http://files.gbraad.nl/meego/firmware/n900/meego-1.1-uImage.bin&quot;&gt;here&lt;/a&gt;. Be sure you rename it to &lt;i&gt;uImage&lt;/i&gt;. Temporarily mount it or reinsert the SD card so auto-mount can deal with it. Copy the &lt;i&gt;uImage&lt;/i&gt; file to the root and unmount.&lt;br /&gt;&lt;br /&gt;Now you could use this MicroSD to boot MeeGo 1.1. Try it out by powering off your N900 phone, remove the backcover and place the SD card. Be sure you have placed the backcover before you power on the device. If you don't do so, the root filesystem can not be mounted and the device will show a &lt;a href=&quot;http://www.flickr.com/photos/gbraad/5142350005/&quot;&gt;kernel panic&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;b&gt;External links&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.meego.com/ARM/N900/Install/MMC#Installing_Rootfs_on_external_MMC_card&quot;&gt;Install root filesystem on external card&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://al.robotfuzz.com/~al/maemo/u-boot/&quot;&gt;U-Boot for N900&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.meego.com/ARM/N900&quot;&gt;MeeGo for Nokia N900&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;&lt;br /&gt;I do not take any responsibility in you damaging your device or loosing data during the process. As I had mentioned, it is intended for development use and therefore I hope you have some basic understanding of what you are doing. If you have any question, please post them in the &lt;a href=&quot;http://forum.meego.com/forumdisplay.php?f=7&quot;&gt;MeeGo Handset forum&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-3296543011196844802?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Nov 2010 05:39:00 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Capn's Tech: USB Doodad: An SMT exercise project</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-5534132273534243194</guid>
	<link>http://capnstech.blogspot.com/2010/11/usb-doodad-smt-exercise-project.html</link>
	<description>Surface mount soldering doesn't have to be scary!&lt;br /&gt;&lt;br /&gt;Way back in the distant past when I learned electronics, components were &quot;through hole&quot;. That means that components such as resistors had a wire out each end, and these wires were bent and passed through holes in a circuit board, then soldered.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.qrpkits.com/images/FireFly_Thru_Hole.jpg&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;An &lt;a href=&quot;http://www.qrpkits.com/firefly.html&quot;&gt;example&lt;/a&gt; through-hole board.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://www.qrpkits.com/images/FireFly_Thru_Hole.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;These days, through hole technology is on the decline. It's becoming harder to get the newer integrated circuits in through-hole form. In its place, more and more people are using &quot;surface mount&quot; technology to build circuits. With SMT, components are often in the form of a tiny block, which is placed on a circuit board, directly in contact with the circuit board tracks, then soldered into place.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;http://burnit.co.uk/sdiy/images/4xd/smt_soldering.jpg&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;An &lt;a href=&quot;http://burnit.co.uk/sdiy/index.php?page=4xd&amp;subpage=soldering&quot;&gt;example&lt;/a&gt; SMT board.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://burnit.co.uk/sdiy/images/4xd/smt_soldering.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;Many people I've spoken to think that using SMT is harder than through-hole. Sure, many SMT components are very tiny, but it's quite easy to buy larger sized SMT components.&lt;br /&gt;&lt;br /&gt;As a project at our hackerspace, &lt;a href=&quot;http://hackmelbourne.org/&quot;&gt;Connected Community Hackerspace&lt;/a&gt;, Ross McKenzie and I have been working on a project which shows people that doing SMT assembly is not as hard as people think.&amp;nbsp; We have deliberately used the largest size of SMT components to make assembly as easy as possible.&lt;br /&gt;&lt;br /&gt;The board has a USB connector at one end, a small expansion connector at the other, and a row of 16 software controlled LEDs in the middle.&lt;br /&gt;&lt;br /&gt;The primary purpose of the board is to act as a practical exercise in surface mount assembly.&amp;nbsp; The secondary purpose is to show how to use the &lt;a href=&quot;http://www.obdev.at/products/vusb&quot;&gt;V-USB&lt;/a&gt; software USB stack to make a USB device.&amp;nbsp; The third purpose is to give the Doodad some post-tutorial value, in a number of intentionally frivolous ways:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Persistence-of-vision toy. Wave it around or put it on the wheels of your bike. Enjoy making groovy flowing messages in the dark.&lt;/li&gt;&lt;li&gt;Secure password keystore.&lt;/li&gt;&lt;li&gt;Log-data-to-serial-flash data logger, where samples could be retrieved over USB at some later time.&lt;/li&gt;&lt;li&gt;“Messages waiting” / “processor load” / “build progress” indicator.&lt;/li&gt;&lt;li&gt;Multimedia keys (if your keyboard doesn’t have them).&lt;/li&gt;&lt;li&gt;Novelty breathalyser.&lt;/li&gt;&lt;li&gt;Countdown timer for car parking reminder.&lt;/li&gt;&lt;/ul&gt;Our estimate for the cost of this board is about AUD30, so it's well within hobbyist reach.&lt;br /&gt;&lt;br /&gt;We plan to release the design for this project under an open licence, possibly the &lt;a href=&quot;http://en.wikipedia.org/wiki/TAPR_Open_Hardware_License&quot;&gt;TAPR OHL&lt;/a&gt;, which means that others can copy this design.&lt;br /&gt;&lt;br /&gt;The project has been designed to use a single sided PCB.&amp;nbsp; Although this makes the job of designing and routing the board traces much more difficult, being single sided means people can make this board at home.&lt;br /&gt;&lt;br /&gt;For applications which require the doodad to operate independently of a PC, we plan to add a small Li-Ion battery and management chip to the reverse of the board.&lt;br /&gt;&lt;br /&gt;More information about the project can be found in the &lt;a href=&quot;https://docs.google.com/document/edit?id=1WQCoqUCBLerXPZcCEtfZYEQyeJJxjFSfO59MdShfL80&quot;&gt;USB Doodad&lt;/a&gt; Google doc. &lt;br /&gt;&lt;br /&gt;Ross and I are making rapid progress, and I'll post more project updates here soon.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-5534132273534243194?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Nov 2010 01:21:41 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: USB Doodad 3: Hot-air soldering of TQFP-32 chips</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-5222840721857300088</guid>
	<link>http://capnstech.blogspot.com/2010/11/usb-doodad-2-hot-air-soldering-of-tqfp.html</link>
	<description>The processor we're using in the USB Doodad is an AVR ATmega328P.&amp;nbsp; This very capable processor is at the heart of the popular &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; educational microcontroller platform. &lt;br /&gt;&lt;br /&gt;The two most common packages for the ATmega328P are the P&lt;a href=&quot;http://en.wikipedia.org/wiki/Dual_in-line_package&quot;&gt;DIP&lt;/a&gt;-28 and the &lt;a href=&quot;http://en.wikipedia.org/wiki/Thin_Quad_Flat_Pack&quot;&gt;TQFP&lt;/a&gt;-32.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;Good place to insert picture of PDIP vs TQFP&amp;gt;&lt;br /&gt;&lt;br /&gt;Because the whole purpose of the USB Doodad is to use surface mount components, we want to use the TQFP-32 package.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://static.sparkfun.com/images/products/09261-3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;Image courtesy of &lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=9261&quot;&gt;SparkFun&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Armed with a USB Doodad prototype board that Ross etched, I thought it was time to try soldering this chip.&lt;br /&gt;&lt;br /&gt;There are several ways to solder SMT ICs.&amp;nbsp; A good guide is in this &lt;a href=&quot;http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=96&quot;&gt;SparkFun SMT tutorial&lt;/a&gt;.&amp;nbsp; The method I used was using solder paste and hot air.&lt;br /&gt;&lt;br /&gt;In order to do hot air soldering, I use a &quot;hot air rework station&quot; which I bought for about $80 in China.&amp;nbsp; I found another one at &lt;a href=&quot;http://www.ameritronics.com/hotairreworkstation.htm&quot;&gt;Ameritronics&lt;/a&gt; which looks very nice, nicer than mine.&lt;br /&gt;&lt;br /&gt;Ideally, I'd use a syringe of solder paste, but I don't have one.&amp;nbsp; Instead I used the paste I covered &lt;a href=&quot;http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-vii.html&quot;&gt;previously&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I applied my solder paste with a jeweller's screwdriver.&amp;nbsp; Not a very precise way of doing it, but it did the job.&amp;nbsp; I applied one thin line of solder paste along the line of IC pads, then squished the chip pins into the paste.&amp;nbsp; Then I ran some liquid flux along the pins on all four sides of the chip.&lt;br /&gt;&lt;br /&gt;Next, I used the hot air to melt the solder on each corner of the chip.&amp;nbsp; That was to fix the chip into place.&amp;nbsp; Finally, I ran the hot air along each side of the chip in turn.&amp;nbsp; The combination of pins, solder paste and flux means that when the solder paste melted, it blobbed around each pin.&amp;nbsp; I didn't get any bridges between pins, but if I had, I'm confident I could have fixed it with some desoldering braid.&lt;br /&gt;&lt;br /&gt;My success makes me think that beginners could solder it too, if they had the right equipment (a hot air rework station).&amp;nbsp; And if we had a board with a solder mask (as we'll surely have for Doodad a little further down the track), I think beginners could do it with a regular iron too, if they had a video to watch showing how it's done.&lt;br /&gt;&lt;br /&gt;Well, that's how I soldered a TQFN-32!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-5222840721857300088?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Nov 2010 01:20:02 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: USB Doodad 2: Board design and layout</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-7534613455684636138</guid>
	<link>http://capnstech.blogspot.com/2010/11/usb-doodad-3-board-design-and-layout.html</link>
	<description>Some time ago, Ross and I discussed and agreed on what we'd like this board to do (and perhaps just as importantly, what we don't need it to do).&amp;nbsp; How do we get from this stage to something people can assemble?&amp;nbsp; One way is by making a prototype.&lt;br /&gt;&lt;br /&gt;A prototype lets us:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Try out the circuit and different variations,&lt;/li&gt;&lt;li&gt;Try out the PCB layout and variations,&lt;/li&gt;&lt;li&gt;Try out the software and variations, and&lt;/li&gt;&lt;li&gt;Try out different assembly ideas.&lt;/li&gt;&lt;/ul&gt;Ross started off by finding a &lt;a href=&quot;http://www.elektor.com/090773&quot;&gt;project&lt;/a&gt; in &lt;a href=&quot;http://www.elektor.com/&quot;&gt;Elektor&lt;/a&gt;, a famous English-language electronics magazine produced in the Netherlands.&amp;nbsp; What it has in common with the Doodad is that it uses an ATmega328P microcontroller, and uses &lt;a href=&quot;http://www.obdev.at/products/vusb&quot;&gt;V-USB&lt;/a&gt; to do software USB.&lt;br /&gt;&lt;br /&gt;Using that project as proof of what is possible, Ross designed the circuit to our requirements, and did a PCB layout.&amp;nbsp; Because we may use the underside of the board for other purposes later, Ross faced the additional constraint of having to make the board single-sided.&amp;nbsp; He and I discussed and improved the circuit and the layout several times, and Ross reworked the circuit and layout to match.&lt;br /&gt;&lt;br /&gt;In particular, if we use the same pins as the Elektor project, we'd only have 14 pins free for driving LEDs.&amp;nbsp; Ideally however, we'd like 16 LEDs.&amp;nbsp; We think by reassigning some pins, doing away with some features (for example, a bootloader exit button, and a reset button), and being creative with some circuit ideas (for example, using a resistor network to run a number of switches off some otherwise-unused ADC pins), we believe we can recover enough pins to give us 16 LEDs.&amp;nbsp; We'd also like to be able to use the SDA and SCK pins on the expansion port so we can easily attach I&lt;sup&gt;2&lt;/sup&gt;C devices such as sensors and storage ICs.&lt;br /&gt;&lt;br /&gt;In order to do this pin experimentation, the board currently has a number of solder pads we can link to reroute various signals.&amp;nbsp; Here's the current layout:&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/TNFa0rMlaTI/AAAAAAAAAV0/9cdzNMkGzoY/s1600/USB+Doodad+15+pcb.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;165&quot; src=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/TNFa0rMlaTI/AAAAAAAAAV0/9cdzNMkGzoY/s400/USB+Doodad+15+pcb.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;USB Doodad PCB artwork (v15)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;On the left is the expansion port (+, - and two data pins).&amp;nbsp; On the right is the USB finger port.&amp;nbsp; Along the bottom is where the LEDs and dropper resistors will go.&amp;nbsp; In the top right are the USB analog components.&amp;nbsp; In the middle is the microcontroller, and to each side are the power supply and clock components.&amp;nbsp; The switches go in the top left.&lt;br /&gt;&lt;br /&gt;While this board may not do everything we want it to, it will let us answer a lot of the questions we need to answer before we can produce a final board ready for sending to a manufacturing house.&lt;br /&gt;&lt;br /&gt;I want to say that Ross has done a top job: The single-sided layout constraint is pretty fierce, and the quality of the prototype board is easily as good as a bought one.&amp;nbsp; I am learning a lot working with him.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-7534613455684636138?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Nov 2010 01:19:27 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: Making PCBs using the toner transfer method</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-7830999256643795460</guid>
	<link>http://capnstech.blogspot.com/2010/10/making-pcbs-using-toner-transfer-method.html</link>
	<description>Last year the folk at &lt;a href=&quot;http://hackmelbourne.org/&quot;&gt;CCHS&lt;/a&gt;, my local &lt;a href=&quot;http://en.wikipedia.org/wiki/Hackerspace&quot;&gt;hackerspace&lt;/a&gt;, did some work on producing PCBs using the photo resist method.&lt;br /&gt;&lt;br /&gt;Because I don't have a UV box, and because I'd rather not keep buying UV sensitised PCB, I have been looking at the &quot;toner transfer&quot; method.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://www.riccibitti.com/pcb/pcb.htm&quot;&gt;http://www.riccibitti.com/pcb/pcb.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Most people use glossy magazine paper, or glossy inkjet paper.&amp;nbsp; I have been looking at other transfer materials.&lt;br /&gt;&lt;br /&gt;Last year, I was using the slippery backing paper from sheets of labels.&amp;nbsp; This didn't transfer too badly, but I did have somewhat of a problem of small sections of track flaking away from the backing paper before I could do the transfer.&amp;nbsp; Also, I don't have much of the backing paper.&lt;br /&gt;&lt;br /&gt;Last night I got to thinking of other transfer materials.&amp;nbsp; Something I can print on, but would be willing to give up the toner when it's heated.&amp;nbsp; I decided to try aluminium foil.&lt;br /&gt;&lt;br /&gt;I've done some searching this morning, and it seems I'm not the first to think of using foil:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://hackaday.com/2006/05/27/pcb-fuser-for-toner-transfer-etching/&quot;&gt;http://hackaday.com/2006/05/27/pcb-fuser-for-toner-transfer-etching/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, I did several experiments last night, what I can report is that the tracks on the aluminium foil transfer very nicely to the copper.&amp;nbsp; If the heat is right, there's absolutely no toner left on the aluminium, and the foil can be quickly and cleanly peeled back to leave the tracks of toner on the PCB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The artwork I'm using has SMT ICs of 0.6mm pitch, which means the tracks have to be really precise.&amp;nbsp; I haven't yet got one that's of sufficient quality to etch, but I think I'm very close.&amp;nbsp; Some of my attempts have had great tracks in the middle, but lost some tracks at the edge.&amp;nbsp; Some of the attempts have had 100% transfer to the copper, but are a little smudged.&amp;nbsp; I don't think this problem is because I'm using foil as a transfer medium.&amp;nbsp; Rather, I think it's a problem with the way I'm doing the ironing to transfer the image.&amp;nbsp; If I can refine the heating process, I think I can produce very high quality boards.&amp;nbsp; I'd expect to be able to do thinner than the 0.6mm our group can get with the photo resist process.&lt;br /&gt;&lt;br /&gt;I think I'll look into getting a laminating machine.&amp;nbsp; More results to follow.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-7830999256643795460?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 03 Nov 2010 15:44:46 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Electronica 2010</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-2345182546767417783</guid>
	<link>http://www.dingux.com/2010/11/electronica-2010.html</link>
	<description>Next week I'm going to electrodisneyla... er... I mean electronica 2010, in Munich. Since there are only direct flights from Valencia on tuesday and saturday, I'll be staying there for more days than I really need to visit the trade fair, so I'll have some spare time. Please let me take the liberty to use this otherwise technical blog to kindly ask for advice on what to do in Munich (besides beers and flash job interviews :-)&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-2345182546767417783?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 02 Nov 2010 16:11:30 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Antitronics: Knitting machines – Lady Ada takes the Baton!</title>
	<guid permalink="False">http://www.antitronics.com/?p=206</guid>
	<link>http://www.antitronics.com/?p=206</link>
	<description>&lt;p&gt;There&amp;#8217;s &lt;a href=&quot;http://ladyada.net/learn/electroknit/&quot;&gt;a great tutorial&lt;/a&gt; up by Lady Ada and Becky Stern which is based on some reverse engineering I did of a Brother Knitting machine. This is great, and makes me want to get that machine off the shelf.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s so great to find that something you threw out to the public is useful to someone.&lt;/p&gt;</description>
	<pubDate>Tue, 02 Nov 2010 13:20:01 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Arduino optical flow sensor (fun breadboard prototype)</title>
	<guid>tag:diydrones.com,2010-11-02:705844:BlogPost:216618</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:216618</link>
	<description>&lt;br /&gt;
  
&lt;br /&gt;
&lt;br /&gt;
I'm learning to love things open source! To see what the fuss was about, I obtained an Arudino Duemilanove board from Sparkfun and decided to play around with it. It didn't take very long for me to assemble a (very) simple optical flow sensor using this board and one of my 16x16 Tam vision chips.&lt;br /&gt;&lt;br /&gt;The circuit is very simple- the only electronic components were the Arduino board, a 16x16 Tam vision chip I developed at Centeye, and a single bypass capacitor. The vision chip and the bypass capacitor reside on a one inch (25.4mm) square breakout board. This particular Tam chip is pretty simple to operate- aside from the power signals, it requires two digital inputs, clock and reset counter, and generates one analog pixel output. A counter on the chip determines which pixel is to be output (by row/column) at the output analog line. Every time the clock is pulsed, the counter increments and the next pixel is selected. Pixels are read out one row at a time. The pixel circuits themselves operate in continuous time and are always generating a voltage in response to light. The counter merely determines which pixel voltage is sent to a voltage buffer before being sent off-chip.&lt;br /&gt;&lt;br /&gt;A simple Arduino program reads out the pixel signals, digitizes them with the Arduino/Atmel's ADC, and computes a simple one-dimensional optical flow measurement. For the optical flow algorithm, I chose a variation of the Hassenstein Reichardt algorithm, an venerable algorithm from the 1950's that was one of the first proposed neural models for visual motion sensing. The Arduino program then dumps the simple running graph of the optical flow onto the serial dump terminal.&lt;br /&gt;&lt;br /&gt;The optical flow algorithm is very simple. Let pA and pB be the signals output by pixels A and B respectively. Let lp( ) be a simple low-pass filter function, which can be implemented as a running average. The optical flow estimated from pixels A and B is merely lp(pA*lp(pB)-pB*lp(pA)), with the outer low pass filter having a longer time constant than the inner low pass filters. If we have an array of pixels A, B, C, D, and so on, then we compute this algorithm once for pA and pB, then again for pB and pC, and again for pC and pD, and so on, and average the results. This certainly isn't the best algorithm one could use, but it was very simple to throw together and I was actually curious to see how it would work.&lt;br /&gt;&lt;br /&gt;For this implementation, I'm only reading in the middle 8x8 block of pixels and row-averaging them to form an eight-pixel line image. Thus the optical flow output you see is really from eight pixels worth of image data, or seven individual optical flow measurements averaged together as described in the last paragraph.&lt;br /&gt;&lt;br /&gt;The first video above shows the response when the 16x16 Tam chip is exposed to light and a moving card casts a moving shadow across the chip. The second video shows the response when a lens is placed over the chip, so that the image of my moving hand is tracked. The pictures below show the two complete sensor setups, with and without lens, and a close-up of the Tam chip on it's breakout board.&lt;br /&gt;&lt;br /&gt;The purpose of this experiment was to see how easy it would be to throw together a simple optical flow sensor using an Arduino board and a simple image sensor chip. The results are certainly crude, but the concept works. I think with some more work a decent Arduino-based sensor can be made, and it could be as easy to hack as pretty much any other Arduino project. (Arduino rocks!)&lt;br /&gt;&lt;br /&gt;
For those that are curious, I have &lt;a href=&quot;http://embeddedeye.ning.com/profiles/blogs/having-fun-connecting-an&quot;&gt;another post on another forum&lt;/a&gt; that shows simple ASCII images taken from the image sensor, and discusses the operation of the chip in greater detail.&lt;br /&gt;&lt;br /&gt;(Note: The &quot;Tam&quot; chip here is similar to but not the same as the &quot;Tamalpais&quot; chip used in the recent post on the 125mg sensor. Both are 16x16, but the Tam has larger pixels and is simpler to operate while the Tamalpais is smaller and has better on-board amplification. There is a story behind both names...)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/sIl0qt83WzuyxoHAoLuCKj8wXk8CfmgOszr7lVc2TGk0JwJ-1tFdG*Hrhzyba2RZyN6uL8PvyKMFYd5FtpRJq-cAwjkkjEtr/DuemPlusTamOpen.JPG?width=721&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/TmSqT3jmw6WSFhJtrRJb1-RUQvHlTXqvlAamcAlKvK6q7rIWk7JEcDTQ*jgdQKNzjM9KjNEHZSivUKT4r6M145qSp4WANQW0/DuemPlusTamLens.JPG?width=721&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/88i40Uz2wTgUVh6PeUcHp4NMMmOIFwvXROoLZMN1UyYJ3p31TJDXGUCxnsR0O6yHz3TsPXg0dlF5ruixyuaioZC276*dDFG8/Tam_closeup.JPG?width=721&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;</description>
	<pubDate>Tue, 02 Nov 2010 14:05:03 +0000</pubDate>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: 125 milligram optical flow sensor &quot;TinyTam&quot;</title>
	<guid>tag:diydrones.com,2010-11-01:705844:BlogPost:216332</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:216332</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/i7OKVHbqXGAzIk*EbFSZFeM-NvT-fmr700kp6tqgfQvhSfXUWIx1gijWkXhLCdPoPYhup0vIo-M1TGY4oAPacDpMxjXaFoeV/CYE_TinyTam_front.jpg?width=721&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;&lt;br /&gt;
  
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;As an exercise in size reduction, we have prototyped a complete optical flow sensor in a 125 milligram and 7mm x 7mm package. This mass includes optics, image sensing, and all processing. Below is a video and two close-up photographs. In the video, note the green vector indicating measured optical flow as a result of image motion.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image sensor:&lt;/span&gt; Centeye Tamalpais 16x16 pixel image sensor (only an 8x8 block is being used), 1.3mm x 4.1mm, focal plane about 0.3mm x 0.3mm.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Optics:&lt;/span&gt; Proprietary printed pinhole, about 25 microns wide&lt;br /&gt;&lt;br /&gt;Processor: Atmel ATtiny84&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Optical flow algorithm:&lt;/span&gt; Modified &quot;Image Interplation&quot; algorithm, originally developed by &lt;a href=&quot;http://www.qbi.uq.edu.au/professor-mandyam-srinivasan-faa-frs&quot;&gt;Prof. Mandyam Srinivasan&lt;/a&gt; (well known for his research on honey bee vision and navigation). &lt;br /&gt;&lt;br /&gt;&lt;span&gt;Frame rate:&lt;/span&gt; About 20Hz.&lt;br /&gt;&lt;br /&gt;This work is being performed as part of Centeye's participation in the &lt;a href=&quot;http://robobees.seas.harvard.edu/&quot;&gt;Harvard University Robobees&lt;/a&gt; project, an NSF-funded project to build a robotic bee. The final target mass for the complete vision system (including processing) will be on the order of between 10mg to 25mg, and will include omnidirectional sensing as well as algorithms to detect flowers. Obviously we still have some more work to do!&lt;br /&gt;&lt;br /&gt;We documented the construction of this sensor, with lots of photographs, in case anyone is interested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Mon, 01 Nov 2010 19:30:00 +0000</pubDate>
</item>
<item>
	<title>Zedstar: SlowFi protocols on copyleft hardware</title>
	<guid>http://zedstar.org/blog/?p=208</guid>
	<link>http://zedstar.org/blog/2010/08/18/slowfi-protocols-on-copyleft-hardware/</link>
	<description>&lt;p&gt;Recently I have been working on &lt;a href=&quot;http://zedstar.org/packedobjects/#Introduction&quot;&gt;Packedobjects&lt;/a&gt; which included redesigning the &lt;a href=&quot;http://zedstar.org/packedobjects/#Quick-start&quot;&gt;API&lt;/a&gt; and replacing a lot of C code in Scheme. I will try and formalize the whole encoding process which I have called &lt;a href=&quot;http://zedstar.org/packedobjects/#Integer-Encoding-Rules&quot;&gt;Integer Encoding Rules&lt;/a&gt;. I also began work on a &lt;a href=&quot;http://zedstar.org/packedobjects/packedobjects.pdf&quot;&gt;manual&lt;/a&gt; which includes &lt;a href=&quot;http://zedstar.org/packedobjects/#Example-protocols&quot;&gt;some examples&lt;/a&gt;. My aim is to support the tool on &lt;a href=&quot;http://zedstar.org/packedobjects/#Embedded-Linux&quot;&gt;OpenWrt&lt;/a&gt; which also involves maintaining the &lt;a href=&quot;http://projects.qi-hardware.com/index.php/p/openwrt-packages/source/tree/master/guile/Makefile&quot;&gt;GNU Guile build&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I built and tested the software on my Ben Nanonote. The ipk is available:&lt;a href=&quot;http://zedstar.org/ipk/packedobjects_0.4_xburst.ipk&quot;&gt; http://zedstar.org/ipk/packedobjects_0.4_xburst.ipk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After improving the documentation I intend to use the tool in a networking course at work. I think it is important for students to gain some experience of designing and structuring binary network protocols.  We will be getting a bunch of Nanonotes to compliment the Openmoko Freerunners we have. This will provide some nice hands on experience packing some data and communicating it across different kinds of hardware.&lt;/p&gt;
&lt;p&gt;Long term, I am interested in designing some funky SlowFi protocols on copyleft hardware.&lt;/p&gt;</description>
	<pubDate>Fri, 29 Oct 2010 20:40:33 +0000</pubDate>
</item>
<item>
	<title>Capn's Tech: Open letter to seek.com.au: Suggestions for improvement</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-2222746211190190644</guid>
	<link>http://capnstech.blogspot.com/2010/10/open-letter-to-seekcomau-suggestions.html</link>
	<description>From time to time I jump on seek.com.au to see what jobs are out there.&amp;nbsp; They currently have a boring-as-all-getup survey to gauge how Seek users find the website.&amp;nbsp; Buried in the survey is a text field which says &quot;in what ways could the site be improved?&quot;.&lt;br /&gt;&lt;br /&gt;Since I couldn't fit my suggestions in their text field, I'm posting them here, and I'll send Seek a link to here instead.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Goodness, where do I start??? &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 0&lt;/b&gt;: Don't ask people &quot;Please provide as much information as possible&quot; then give them a 6-line text field to write it in.&lt;br /&gt;&lt;br /&gt;I can list 20 more ways to improve your website.&amp;nbsp; Please keep in mind that lots of my comments below are about how to make reviewing a large amount of data as simple and as speedy as possible.&lt;br /&gt;&lt;br /&gt;I am an experienced Software Engineer in Melbourne.&amp;nbsp; Naturally I look for jobs in the ICT classification, in the Melbourne area.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Job searching&lt;/h2&gt;&lt;br /&gt;Because I'm experienced, I could do jobs in several of the ICT sub-classifications.&amp;nbsp; Not to mention that many jobs are misclassified.&amp;nbsp; However your website only allows selection of one sub-classification at a time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 1&lt;/b&gt;: In the advanced search, allow users to select multiple subclassifications instead of just one.&lt;br /&gt;&lt;br /&gt;Since your site doesn't let me do that, I'm forced to use &quot;Any sub-classification&quot;.&amp;nbsp; That means I have to trawl through a LOT of jobs, most of which won't be relevant to me.&amp;nbsp; So it's vital that I can do that trawling as efficiently as possible.&amp;nbsp; &lt;br /&gt;While I understand many people just browse on your site, I'm the kind of guy who wants to be sure he's read every ad.&amp;nbsp; So it's important to me to know where I got up to on my last visit.&amp;nbsp; At the moment I start from the top and keep reading until yesterday's or last week's ads start appearing.&amp;nbsp; But this is something the Seek website could do for me.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;2&quot;&gt;&lt;b&gt;Suggestion 2&lt;/b&gt;&lt;/a&gt;: Have something like a bookmark, or a filter that says something like &quot;show me only ads listed since I last visited&quot;.&lt;br /&gt;&lt;br /&gt;Computers are very good at managing large amounts of data, and finding trends and correlations in that data.&amp;nbsp; For example, one of the little known purposes of your supermarket's loyalty card is so that the supermarket can use &quot;&lt;a href=&quot;http://www.information-drivers.com/market_basket_analysis.php&quot;&gt;market basket analysis&lt;/a&gt;&quot; to identify correlated buying patterns.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you want an example, head to the &lt;a href=&quot;http://www.jango.com/&quot;&gt;Jango&lt;/a&gt; music site.&amp;nbsp; Enter an artist.&amp;nbsp; Jango starts playing music, and you can say whether or not you like that song.&amp;nbsp; Your input, plus the listening patterns of Jango's other users, is used to start feeding you music from other artists.&amp;nbsp; Jango very quickly starts playing you only the music you like, and through this I have discovered many really cool music acts.&amp;nbsp; Go try it!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 3&lt;/b&gt;: Use market basket analysis and other data mining techniques to say to a user &quot;you liked that ad, you'd probably also like this ad&quot;.&amp;nbsp; Then show them those ads.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 4&lt;/b&gt;: Take this idea further, and play &quot;20 questions&quot; with the user.&amp;nbsp; Show them two ads.&amp;nbsp; Ask them which they prefer.&amp;nbsp; Use their selection and some &quot;affinity analysis&quot; to find two more ads.&amp;nbsp; Or show an ad and ask the user to rate it &quot;hot or not&quot;.&amp;nbsp; Twenty answers can whittle a million choices down to one.&amp;nbsp; Twenty questions, and Seek can then say &quot;based on that, here are the jobs we think you'll love&quot;.&amp;nbsp; Implemented well, Seek could use this in a marketing campaign as &quot;simply the fastest way to find the job that's right for you&quot;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Presentation&lt;/h2&gt;&lt;br /&gt;Trawling means I scan a whole page of jobs, then go to the next page.&amp;nbsp; I use space or &lt;span&gt;PgDn&lt;/span&gt;.&amp;nbsp; But when I get to the end of the page, I need to take my hands off the keyboard, point with the mouse and click Next.&amp;nbsp; That takes time I don't want to spend.&amp;nbsp; (I’ll cover the major reason I use the keyboard later on).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 5&lt;/b&gt;: Provide &lt;a href=&quot;http://www.pptools.com/ppt2html/FAQ00131.htm&quot;&gt;keyboard shortcuts&lt;/a&gt; so one can go to the next page without using the mouse.&lt;br /&gt;&lt;br /&gt;Since I have to look at every single ICT job in Melbourne, there's a lot of noise I have to trawl through.&amp;nbsp; Let's assume the user has a &quot;hot list&quot; and a &quot;not list&quot; of words.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;6&quot;&gt;&lt;b&gt;Suggestion 6&lt;/b&gt;&lt;/a&gt;: Given the &quot;hot list&quot;, &lt;a href=&quot;http://www.alistapart.com/articles/searchhighlight/&quot;&gt;highlight any of those words&lt;/a&gt; that appear in that ad.&lt;br /&gt;&lt;br /&gt;Note, these keywords are not definitive enough to warrant me searching on them.&amp;nbsp; Plenty of great jobs in a certain area don't use meaningful keywords.&amp;nbsp; Keywords are hints, not search keys.&lt;br /&gt;Conversely, there are a bunch of technologies out there that I have no experience or interest in.&amp;nbsp; If a term for that technology appears in an ad, it's a pretty fair bet that the job’s not for me.&amp;nbsp; So I really don’t want to put any brain power into that job.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;7&quot;&gt;&lt;b&gt;Suggestion 7&lt;/b&gt;&lt;/a&gt;: Given the &quot;not list&quot;, grey out the whole ad if any of these words appear.&amp;nbsp; It still appears in the jobs listing, but greyed out.&lt;br /&gt;&lt;br /&gt;Now let’s look at how you’re using screen real-estate.&amp;nbsp; I have an LCD monitor that’s 22” from corner to corner.&amp;nbsp; That’s by no means uncommon; you can buy one from MSY for under $180.&amp;nbsp; 22” corner to corner is 19” side to side.&amp;nbsp; Let’s look at how that space is used, left to right:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2.5” &lt;i&gt;absolutely blank space&lt;/i&gt;&lt;/li&gt;&lt;li&gt;2.5” refine your results (&lt;i&gt;only top 5% of column used&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;1” job selection checkbox&lt;/li&gt;&lt;li&gt;2.5+” location, and maybe salary&lt;/li&gt;&lt;li&gt;5.5” the text of the ad&lt;/li&gt;&lt;li&gt;2.5” some “helper” icons  (&lt;i&gt;only top 10% of column used&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;2.5” &lt;i&gt;absolutely blank space&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You are spending 5” in absolutely blank space!&amp;nbsp; And you are spending 5” on tools and search refinement that could live at the top/bottom of the page.&amp;nbsp; You’ve reduced my nice 19” monitor to a 9” monitor, smaller than my first 12&quot; monitor in 1989!&lt;br /&gt;&lt;br /&gt;You might say “well, ads (and web pages in general) look bad if they’re too wide so we have that space to burn any way&quot;.&amp;nbsp; But what happens if I want to use the left half of my screen to look at Seek ads, and the right half to compose a cover letter?&amp;nbsp; Or if I have a smaller screen?&amp;nbsp; Or I’m looking at it on a smart phone?&lt;br /&gt;&lt;br /&gt;Fortunately, the whitespace on the sides disappears when I resize the window smaller.&amp;nbsp; But everything else stays the same.&amp;nbsp; But I do end up having to sideways scroll the page to get the ads centred.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;8&quot;&gt;&lt;b&gt;Suggestion 8&lt;/b&gt;&lt;/a&gt;: Put the 2.5” of “refine your results” stuff, and the 2.5” of “helper” icons at the top/bottom of your page, and make sure your page doesn’t need sideways scrolling on smaller screens.&lt;br /&gt;&lt;br /&gt;As mentioned, I do a lot of scrolling through ads.&amp;nbsp; I rely on words of interest passing by and catching my eye.&amp;nbsp; You have a pink box that highlights an ad as the mouse goes over it.&amp;nbsp; I’m sure you thought that was a great idea.&amp;nbsp; But the flashing of that pink box as ads go under my mouse is INCREDIBLY distracting when I’m looking for keywords. And it makes your site look like someone’s CSS homework.&amp;nbsp; Just because it’s possible doesn’t mean it’s a good idea.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;9&quot;&gt;&lt;b&gt;Suggestion 9&lt;/b&gt;&lt;/a&gt;: Please, lose the pink highlight.&amp;nbsp; Please?&lt;br /&gt;&lt;br /&gt;One thing that really bugs me about Seek’s website is that once an advertiser retires an ad, Seek loses all memory of it.&amp;nbsp; For example, let’s say there’s an ad for a good job.&amp;nbsp; I bookmark the ad, and apply for it online.&amp;nbsp; Then the advertiser gets enough interest that they retire the ad, because they really don’t need any more candidates.&amp;nbsp; Next I get a call for an interview.&amp;nbsp; So I go back to the bookmarked ad to review what the advertiser wanted, and GRRR, it’s not there any more!&amp;nbsp; How can I prepare for the interview?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 10&lt;/b&gt;: Except in the case of an ad that was offensive or illegal, if someone has the URL, show them the ad, even if it’s been removed from the public listing.&lt;br /&gt;&lt;br /&gt;So, in order to cope with the above, I have to print out all the ads I’m interested in.&amp;nbsp; Means I can’t use your tools to manage my applications, but at least I've still got the ad after it's retired.&amp;nbsp; But what about if I want to go back to the online version?&lt;br /&gt;&lt;br /&gt;Let’s say I was after job number 18393608.&amp;nbsp; What I have to end up retyping is:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://www.seek.com.au/job/c-engineer-adelaide-based-satellite-communications-next-g/melbourne/18393608/28/1/&quot;&gt;http://www.seek.com.au/job/c-engineer-adelaide-based-satellite-communications-next-g/melbourne/18393608/28/1/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That’s a lot of annoying typing, and if I made a mistake in typing it or copying it down, a great job could get away from me.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;11&quot;&gt;&lt;b&gt;Suggestion 11&lt;/b&gt;&lt;/a&gt;: Rewrite your single job pages as (to use the above as an example): &lt;a href=&quot;http://www.seek.com.au/job?18393608&quot;&gt;http://www.seek.com.au/job?18393608&lt;/a&gt; or similar.&amp;nbsp; Note, short URLs are no easier for unscrupulous companies scraping your website for jobs, than long ones, so there's no reason to have long ones.&amp;nbsp; Long ones just make life difficult for schmucks like me.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Data quality&lt;/h2&gt;&lt;br /&gt;Remember I’m in Melbourne?  I have a family and I’m not interested in moving or working outside of Melbourne, so in the advanced search, I always choose Melbourne.&amp;nbsp; So I’m baffled that I keep seeing ads that aren’t for Melbourne, like the example ad from above.&amp;nbsp; Please, why does this ad show up if I searched for Melbourne?&lt;br /&gt;&lt;br /&gt;This is not a one-off: &lt;a href=&quot;http://seek.com.au/job/java-developer-paxus/melbourne/18389300/44/1/&quot;&gt;I’d&lt;/a&gt; &lt;a href=&quot;http://seek.com.au/job/peoplesoft-global-payroll-consultant-brisbane-contract-role/melbourne/18394388/23/1/&quot;&gt;estimate&lt;/a&gt; &lt;a href=&quot;http://seek.com.au/job/it-professionals-hong-kong/melbourne-cbd-inner-suburbs/18393991/30/1/&quot;&gt;about&lt;/a&gt; &lt;a href=&quot;http://seek.com.au/job/middleware-subject-matter-expert-canberra/melbourne/18392515/31/1/&quot;&gt;5%&lt;/a&gt; &lt;a href=&quot;http://seek.com.au/job/middleware-specialist/melbourne/18391177/38/1/&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;http://seek.com.au/job/client-principal/melbourne/18390892/39/1/&quot;&gt;your&lt;/a&gt; &lt;a href=&quot;http://seek.com.au/job/testers/melbourne/18389849/42/1/&quot;&gt;ads&lt;/a&gt; are similarly (and like the Adelaide Next-G ad above, I’d certainly say deliberately) misfiled.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 12&lt;/b&gt;: Give people a way of reporting such ads (but see below).&lt;br /&gt;&lt;br /&gt;Another extremely annoying thing is when recruitment companies put in ads for themselves.&amp;nbsp; In other words, there’s no job, just a company putting in an ad because they want to get you on their books.&amp;nbsp; Really, this isn’t why I visit Seek.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 13&lt;/b&gt;: Ban ads for recruitment companies.&amp;nbsp; An ad without a job behind it just undermines the quality of Seek’s database.&lt;br /&gt;&lt;br /&gt;What’s also annoying is speling misteaks in job ads.&amp;nbsp; I’m one of those people who notices every single spelling mistake, and when I’m reading ads, it’s like mental speed bumps.&amp;nbsp; Don’t advertisers know how poorly it reflects on them?&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=8636164148965447110&amp;postID=2222746211190190644&quot; name=&quot;14&quot;&gt;&lt;b&gt;Suggestion 14&lt;/b&gt;&lt;/a&gt;: When an advertiser places an ad, run it through a spell checker, and if there are typos, give the advertiser the chance to fix them.&amp;nbsp; Since ads contain many acronyms and company names, give advertisers the chance to tell the spell checker that words it highlighted are actually correct, for next time.&lt;br /&gt;&lt;br /&gt;All that raises another question: What are you doing to engage your users, &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_2.0&quot;&gt;Web 2.0&lt;/a&gt;-style?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 15&lt;/b&gt;: Give users a score, called a “reputation”.&amp;nbsp; If they correctly flag ads with incorrect location, no underlying job, or typos, their score goes up.&amp;nbsp; Users with scores higher than a certain amount have proven themselves and are trusted, and their reports are acted upon immediately, rather than needing moderation by Seek staff or other high score users.&amp;nbsp; This would be in place of the current “Something fishy?”&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 16&lt;/b&gt;: Give advertisers a publicly visible reputation.&amp;nbsp; If they keep posting ads that raise the ire of your users, don't take ads from them.&amp;nbsp; Do you really want their business?&amp;nbsp; If you do, what does it say about your business?&lt;br /&gt;&lt;br /&gt;What you get out of all this is improved data quality, which makes it more attractive for people to seek on Seek.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Another part of Web 2.0 is inviting your users to produce content.&amp;nbsp; At the moment, the Seek model is “all push”: You produce content (ads) and Seek users passively consume it.&amp;nbsp; But Web 2.0 is a two-way street.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 17&lt;/b&gt;: Do as eBay does: Let users give feedback, and allow them to ask questions of advertisers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 18&lt;/b&gt;: Consider the idea of web forums where job seekers can hang out, talk about their experiences, and create a community and buzz around the Seek name.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 19&lt;/b&gt;: Implement an online suggestion box, and invite your users to tell you what you can do better.&amp;nbsp; Don’t bury it in the middle of a boring survey!&lt;br /&gt;&lt;br /&gt;I’m in the position where I have to use your site, as it has great jobs.&amp;nbsp; Yet the user experience is pretty dated and frustrating.&amp;nbsp; In order to make my job-hunting life bearable, I’ve fixed as many of these suggestions as I can on my end, using a Firefox plugin called “&lt;a href=&quot;http://en.wikipedia.org/wiki/Greasemonkey&quot;&gt;GreaseMonkey&lt;/a&gt;”.&amp;nbsp; It lets me change web pages to be how I wish they’d be, and when I sit down to look for jobs, it’s as if you’ve done suggestions &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#2&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#6&quot;&gt;6&lt;/a&gt;, &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#7&quot;&gt;7&lt;/a&gt;, &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#8&quot;&gt;8&lt;/a&gt;, &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#9&quot;&gt;9&lt;/a&gt;, &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#11&quot;&gt;11&lt;/a&gt;, and &lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=8636164148965447110#14&quot;&gt;14&lt;/a&gt;.&amp;nbsp; So I have road-tested these particular enhancements.&amp;nbsp; (The other suggestions would need changes on your end of the deal, so I can’t use GreaseMonkey to fix them).&amp;nbsp; But when I go to look at jobs on another computer, I’m back in “lame Seek” land, and the pain comes back.&lt;br /&gt;&lt;br /&gt;I’ve now spent about two hours of my time writing 2000+ words to you.&amp;nbsp; I hope you guys actually read it, and even better, implement some of them!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggestion 20&lt;/b&gt;: Call me.&amp;nbsp; Seriously.&amp;nbsp; If you’re not sure what I mean, I’d be happy to further explain some of these suggestions.&amp;nbsp; Or if you’ve implemented some of them, and want someone to road test them, I’m happy to do that too.&amp;nbsp; Just make your site a bit less painful, please?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-2222746211190190644?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 23 Oct 2010 18:48:26 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: GPIO tables updated</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-6954802547057955760</guid>
	<link>http://www.dingux.com/2010/10/gpio-tables-updated.html</link>
	<description>ChinaChip provided the A320 schematic, so after studying it I've completed the A320 GPIO table here:&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/dingoo-linux/wiki/GPIO?ts=1286716650&amp;amp;updated=GPIO&lt;br /&gt;&lt;br /&gt;Some interesting updates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PD3 and PD4 are unused GPIO but connected to test pads. Could be used for hardware mods (but first those pads would have to be located on the PCB). I'll open one of the A320 this evening and have a look.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PD22 is connected to the HOLD key (0=pressed, already pointed out in the comments by BouKiCHi).&lt;/li&gt;&lt;li&gt;PB30 confirmed to be battery charge status input.&lt;/li&gt;&lt;li&gt;PD20 is the battery charge control output (1=charge enabled). Actually, this turns on a NMOS which shunts a resistor to ground. This resistor is used to set the charge control, so in theory a PWM output could be used to achieve lower charge current. However, this pin's alternate function is SSI data output, so PWM might be achieved by spitting out continuously the appropriate data.&lt;/li&gt;&lt;/ul&gt;Not related to GPIO, but also interesting:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The FM chip audio output is (as expected) connected to the LINE_IN inputs of the JZ4732.&lt;/li&gt;&lt;li&gt;As I had guessed, the LCD read signal is not connected, and thus it is not possible to identify the LCD type or synchronize the GRAM refresh to the VSYNC.&lt;/li&gt;&lt;/ul&gt;As I mentioned earlier, I also have the x760+ schematics and I'm making the GPIO tables, soon to be published.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-6954802547057955760?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 10 Oct 2010 16:41:16 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Capn's Tech: Replacing DS touchscreens (part II): When it starts to go right but something else goes wrong</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-8907989575267384660</guid>
	<link>http://capnstech.blogspot.com/2010/10/replacing-ds-touchscreens-part-ii-when.html</link>
	<description>Last &lt;a href=&quot;http://capnstech.blogspot.com/2010/02/replacing-ds-touchscreens-part-i-when.html&quot;&gt;article&lt;/a&gt; in this series, I replaced a Nintendo DS touchscreen, but in doing so, broke the touchscreen connector (whoops).&amp;nbsp; I ordered a new connector from GoldenBridge, but surprisingly enough, they didn't ship it until two weeks after I placed the order!&amp;nbsp; So including the shipping time, the connector ended up taking nearly a month to get here.&amp;nbsp; GoldenBridge, no cookie for you!&lt;br /&gt;&lt;br /&gt;Well, the connector finally arrived, and I took the DS and the connector to our weekly &lt;a href=&quot;http://hackmelbourne.org/&quot;&gt;hackerspace&lt;/a&gt; meeting.&lt;br /&gt;&lt;br /&gt;I don't have any pictures at present, but the good news is that I was able to desolder the connector from the board, and resolder on the new connector.&amp;nbsp; Took me a few goes, and use of flux and desolder wick and magnification, but I did it.&lt;br /&gt;&lt;br /&gt;Only problem is, when I was reassembling the board, I broke the slider off the power switch.&amp;nbsp; Ouch!&lt;br /&gt;&lt;br /&gt;I ordered a new power switch from DealExtreme, and when it arrived, I replaced the power switch.&amp;nbsp; Put it all back together and now I have a working Nintendo DS again.&amp;nbsp; I'm now out of danger of being disowned by the kids!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-8907989575267384660?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 09 Oct 2010 16:08:21 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: A personal note</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-5259464744488349067</guid>
	<link>http://www.dingux.com/2010/10/personal-note.html</link>
	<description>When I sat to write the previous post didn't initially intend to get into the personal side. However, I felt I sort of owed you some explanation on my sudden disappearance, and besides that, I thought that remembering and summarizing the last year of frantic work would help venting a bit. Now that I read it again I have the feeling that I may have painted a gloomy picture on my job status and short-term future, but that would be a bit untrue, and I don't want anyone to worry about it. So, just to clarify: I'm not worried. If things end up well here where I'm now, fine. If they don't, I'm pretty sure I'll be able to find a new job, and in such case I'd really want it to be in another country (so does my wife), so moving abroad is actually an appealing possibility (and to some extent and foreseeing where this country is heading for, I even feel I owe it to my two daughters). And even if it's not that easy to find another job, I have no debt and savings to live on in the meantime.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-5259464744488349067?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 01 Oct 2010 21:31:13 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Back</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-1212875862287990370</guid>
	<link>http://www.dingux.com/2010/09/back.html</link>
	<description>Hi all,&lt;br /&gt;&lt;br /&gt;Yes, I'm alive. I'll develop later a bit on what's happened for the last year, but first I'd like to apologize to all those disappointed by the sudden stop in A320/x760+ development. I was certainly forced by the circumstances, but that doesn't change the fact that some of you donated money and you probably feel it's not been put to good use. If you want your donation back, please email me.&lt;br /&gt;&lt;br /&gt;Now for the blast:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I have now sometime to work again on dingux.&lt;/li&gt;&lt;li&gt;Someone from ChinaChip, from the team that developed the A320, contacted me.&lt;/li&gt;&lt;li&gt;They want to support dingux development for the A330.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They will provide hardware info on the A320.&lt;/li&gt;&lt;li&gt;They will provide hardware info on the A330.&lt;/li&gt;&lt;li&gt;They will provide couple of A330 machines.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They already provided schematics and some source code for the x760+.&lt;/li&gt;&lt;li&gt;They will try to provide a second x760+.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Bam.&lt;br /&gt;&lt;br /&gt;The A320 is legacy and is no longer being manufactured (plus there seem to be quite a bunch of knock-offs), so they want to focus on the A330. The A330 is based on an ARM SoC (CC1800) for which, as far as I know, there's not already a linux port (as opposed to the Ingenic SoCs)... so this might be a bit off my skills. We'll see. The x760+ is no longer produced so it might not be possible to get another one (remember, I already have one purchased with donations), which would be helpful because there are two x760+ LCD types.&lt;br /&gt;&lt;br /&gt;Having the schematics and example source code for the x760+ should make it much easier to get dingux up and running on it.&lt;br /&gt;&lt;br /&gt;Hate to say this, but &lt;span&gt;don't hold your breath&lt;/span&gt;. Now I have some time and I'm very motivated (the ChinaChip support is a blast), but my personal situation might change at any time and the job that pays the bills will always be the topmost priority.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And on the personal side (feel free to stop reading here): what's happened in the last year?.&lt;br /&gt;&lt;br /&gt;By the time I was forced to put dingux on hold my company was struggling to survive, and downsizing like mad, up to the point that the I was the entire development department. Soon I became also the administrative, customer relations, manufacturing, and installation/repair department. Really. My gmail inbox just collapsed and at a certain point I just gave up trying to reply messages. I'm really sorry if some people felt ignored.&lt;br /&gt;&lt;br /&gt;I was working on the hardware and OS of an OMAP3530 based facial biometrics access control system which was itself a quite complex project and wasn't expected to yield some income in the short term, so future looked grim. Then, all of a sudden, two customers (the local government of two small villages) contacted us regarding an outdoor wireless mesh PA system we used to develop and sell. There was an special stimulus plan from the spanish government which would provide financing for those two installations. This was unexpected, since the local governments are literally struggling to pay wages and as a contractor, you're lucky if you get paid six months after invoicing, but the stimulus plan changed the whole thing. It was evident that this was a one-time chance to get good, immediate revenue with a nice profit margin (not really, but we would be using stock that would otherwise have zero value), so I sort of finished the biometrics thingie as fast and as good as I could and jumped on to it.&lt;br /&gt;&lt;br /&gt;That was about april.&lt;br /&gt;&lt;br /&gt;To make things more fun, there were two choices: either use the v1 system, which had some problems, or finish the design of the v2 system, which would work much better, be easier to maintain, and allow to use all the existing equipment stock. So, I don't fucking know why, I went with the second, and from april to june (remember, at that time I was pretty much the whole company):&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Designed a new 200W class D weathertight amplifier. S/PDIF over RS422 and streaming over ethernet inputs. It has two microcontrollers inside, a PIC24 and a LPC1768, and I had never worked before with the later, though had some exprience with the luminary cortex-M3 parts.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Built 20 units of the above, together with another 20 units of a specially modified wireless mesh node. I mean I literally built them. Ordered all the parts, soldered each and every component on the PCBs, machined the 20 cases and assembled it all. Well, actually my wife helped a lot by soldering most of the 0603 caps and resistors.&lt;/li&gt;&lt;li&gt;Loaded my car with all the equipment and went on to install it. Climbing on top of a crane to put it on the top of the 14m poles and on roofs. Fortunately I'm not afraid of heights.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bought the two computers for the control centers, installed the OS, control application and configured it.&lt;/li&gt;&lt;/ol&gt;In retrospective, I just don't know how I could do it all myself. One man band working 16 hours a day. I guess it was a combination of good engineering and luck, lots of luck (never ever had a first prototype errorless and straight to production). The installations were finished on time and are being used now to do all the public announcements. Now that I think about it, in between all that, I had also to do some repairs on another old installation and fix some issues in the biometrics thingie. What a madness.&lt;br /&gt;&lt;br /&gt;I spent july doing some adjustments to the wireless mesh nets. The customers paid promptly (nice special requirement of the stimulus plan, they must pay you before they get paid by the central government, otherwise... you know... six months to one year), which means we would be able to close the year in the green.&lt;br /&gt;&lt;br /&gt;So I needed some rest and time with my family and went on vacation for the whole month on august. The last month I've been working a bit more on the biometrics stuff and developing an asterisk based voice inbox for the PA system, which is a late special request by one of the customers, but makes a good addition to the feature list of the system (which I'm not sure matters at all because I think we're not selling any more for a long time, at least here in Spain). The outdoor IP amplifier is a good piece of engineering and there's a slight chance that could be sold to another company. We'll see.&lt;br /&gt;&lt;br /&gt;As I said, we're on the green up to the end of 2010, but there's no income prospect for 2011. So, while now I have some time to work on dingux, and I intend to take it easy for the next months, I will be looking for a new job, new city, new country, not necessarily in that order :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-1212875862287990370?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 30 Sep 2010 14:46:56 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Capn's Tech: Touchscreen update</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-3901476446159922697</guid>
	<link>http://capnstech.blogspot.com/2010/07/touchscreen-update.html</link>
	<description>It's been a very long time since I've posted any articles.&amp;nbsp; However I've been working slowly but consistently on my touchscreen.&amp;nbsp; I'll have some more info later, but here's a sneak preview:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/TEzwTV0o_jI/AAAAAAAAAVM/vUQPw34P45g/s1600/sxb-1.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;326&quot; src=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/TEzwTV0o_jI/AAAAAAAAAVM/vUQPw34P45g/s400/sxb-1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot;&gt;New touchscreen, wood case, direct USB.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I know, terrible photo, but that's the best my phone cam can do.&amp;nbsp; It looks heaps better in real life.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;This is a straight USB device, connected directly to my PC, and with no need of an Arduino.&amp;nbsp; As far as the PC is concerned, it looks like a USB mouse, except that the coordinates are absolute, not relative.&lt;br /&gt;&lt;br /&gt;There's a microcontroller inside the case: A &lt;a href=&quot;http://www.pjrc.com/teensy/&quot;&gt;Teensy 2.0&lt;/a&gt; running &lt;a href=&quot;http://www.fourwalledcubicle.com/LUFA.php&quot;&gt;LUFA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More details to follow!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-3901476446159922697?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 17 Sep 2010 22:44:11 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Zedstar: btlogger updated to support OAuth</title>
	<guid>http://zedstar.org/blog/?p=211</guid>
	<link>http://zedstar.org/blog/2010/09/17/btlogger-updated-to-support-oauth/</link>
	<description>&lt;p&gt;Twitter pulling the plug on basic authentication meant I had to make changes to &lt;a href=&quot;http://gitorious.org/btlogger/&quot;&gt;btlogger&lt;/a&gt; to support &lt;a href=&quot;http://dev.twitter.com/pages/oauth_faq&quot;&gt;OAuth&lt;/a&gt;. Fortunately, &lt;a href=&quot;http://moblin.org/projects/librest&quot;&gt;librest&lt;/a&gt; made the code changes trivial. However, I ran into some problems. The clock was out of sync on the PC where btlogger runs. This caused the authenticate process to fail at the token request stage and was not easy to debug. The other issue which has been heavily &lt;a href=&quot;http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars&quot;&gt;documented&lt;/a&gt; is how to support authentication keys in FOSS. Currently &lt;a href=&quot;http://gitorious.org/btlogger/btlogger/blobs/master/configure.ac&quot;&gt;configure.ac&lt;/a&gt; requires an edit to supply the key information. In theory I could supply the keys to somebody who wants to &lt;a href=&quot;http://gitorious.org/btlogger/btlogger/blobs/master/INSTALL&quot;&gt;build&lt;/a&gt; the software from source until I figure out another way to handle this. I think they call this &amp;#8220;best effort security&amp;#8221;.&lt;/p&gt;
&lt;p&gt;btlogger is now running from its own twitter account at: &lt;a href=&quot;http://twitter.com/bluetoothlogger&quot;&gt;http://twitter.com/bluetoothlogger&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 17 Sep 2010 11:02:23 +0000</pubDate>
</item>
<item>
	<title>Village Telco: Mesh Potatoes Go On Sale</title>
	<guid>http://villagetelco.org/?p=736</guid>
	<link>http://villagetelco.org/2010/09/mesh-potatoes-go-on-sale/</link>
	<description>&lt;p&gt;&lt;a class=&quot;tt-flickr tt-flickr-Small&quot; title=&quot;Production Mesh Potato&quot; href=&quot;http://www.flickr.com/photos/ssong/4953502591/&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://farm5.static.flickr.com/4091/4953502591_763295a846_m.jpg&quot; alt=&quot;Production Mesh Potato&quot; width=&quot;240&quot; height=&quot;171&quot; /&gt;&lt;/a&gt;This is a big moment for the Village Telco.  We have finally arrived at the of the journey that began in June 2008 when I sat down with some &lt;a title=&quot;group photo from first Village Telco workshop&quot; href=&quot;http://www.flickr.com/photos/shuttleworth/2627996110/in/set-72157605683187493/&quot; target=&quot;_blank&quot;&gt;very, very bright and innovative people&lt;/a&gt; and together we decided not to re-purpose rich world technology for Africa but to boldly design our tech to meet our own requirements.  Don&amp;#8217;t get me wrong, if something vaguely similar had already existed we would have jumped at it but at the time no one was manufacturing a mashed up WiFi AP and Analogue Telephony Adaptor.  They still aren&amp;#8217;t.&lt;/p&gt;&lt;p&gt;You can see the final design of the Mesh Potato at the right.  Those of you are familiar with the &lt;a title=&quot;Ubiquiti Nanostation II&quot; href=&quot;http://www.ubnt.com/nanostation&quot; target=&quot;_blank&quot;&gt;Ubiquiti Nanostation II&lt;/a&gt; will know that we borrowed wholesale from their excellent enclosure design.  They say imitation is the sincerest form of flattery.  In this case, it is certainly true.  We love Ubiquiti gear.&lt;/p&gt;&lt;p&gt;What we&amp;#8217;ve borrowed from Ubiquiti is the sealed-unit design which makes for a sturdy weather-proof enclosure.  What&amp;#8217;s a little bit different is the back mounting which has a slip-on piece that can be screwed to a wall.  Without the screw-on piece there is a similar mounting to the Nanostation for mounting on a pole.&lt;/p&gt;&lt;p&gt;&lt;a class=&quot;tt-flickr tt-flickr-Small&quot; title=&quot;A live Mesh Potato&quot; href=&quot;http://www.flickr.com/photos/ssong/4953531813/&quot;&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://farm5.static.flickr.com/4126/4953531813_cd65b24dfc_m.jpg&quot; alt=&quot;A live Mesh Potato&quot; width=&quot;240&quot; height=&quot;180&quot; /&gt;&lt;/a&gt; The best news of all is that Mesh Potatoes are now available for purchase by anyone.  Simply click on the &lt;a title=&quot;Buy Mesh Potatoes! :-)&quot; href=&quot;http://villagetelco.org/products/&quot; target=&quot;_self&quot;&gt;Products&lt;/a&gt; link above to buy them from our webstore.  The cost of each Mesh Potato is USD 119 but for the next two weeks we&amp;#8217;re making them available at the wholesale price of USD 89 per unit.  In order get that price, enter &amp;#8220;afinemesh&amp;#8221; as a coupon code on the Checkout page after you have selected the number of Mesh Potatoes that you&amp;#8217;d like.  Shipping is calculated via DHL from Atcom in China.  Please &lt;a title=&quot;Contact page&quot; href=&quot;http://villagetelco.org/contact/&quot; target=&quot;_self&quot;&gt;contact us&lt;/a&gt; if you&amp;#8217;d like to make other shipping arrangements.  Orders placed now will ship by the end of September.&lt;/p&gt;&lt;p&gt;Finally, I would just like to express ongoing amazement and appreciation of the many, many people who have contributed to making the Mesh Potato a reality in small ways and in big earth-shaking ways.  You know who you are.  You all seriously rock.  Open Software, Open Hardware refreshes the parts that other intellectual property regimes can&amp;#8217;t reach.  Thank you.&lt;/p&gt;</description>
	<pubDate>Fri, 03 Sep 2010 12:50:00 +0000</pubDate>
</item>
<item>
	<title>Village Telco: Dili Village Telco Rolls Out</title>
	<guid>http://villagetelco.org/?p=690</guid>
	<link>http://villagetelco.org/2010/08/dili-village-telco-rolls-out/</link>
	<description>&lt;p&gt;I&amp;#8217;ve just &lt;a href=&quot;http://www.rowetel.com/blog/?p=845&quot;&gt;blogged&lt;/a&gt; on the latest stage of the Dili Village Telco roll out in Timor Leste.  Fascinating what can be learnt from a real world deployment.  I find the social and business issues just as fascinating as the technical problems us geeks usually focus on.&lt;/p&gt;&lt;div id=&quot;attachment_691&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://villagetelco.org/wp-content/uploads/2010/08/hafoti.jpg&quot;&gt;&lt;img src=&quot;http://villagetelco.org/wp-content/uploads/2010/08/hafoti-300x225.jpg&quot; alt=&quot;Test call by HAFOTI Director&quot; title=&quot;hafoti&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;size-medium wp-image-691&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Test call by HAFOTI Director.  HAFOTI is an NGO working on Womens issues in Timor Leste&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1. More &lt;a href=&quot;http://www.flickr.com/photos/ssong/sets/72157624803665220/&quot;&gt;photos&lt;/a&gt; of the Dili Village Telco roll out.&lt;br /&gt;2. The &lt;a href=&quot;http://dili.villagetelco.org&quot;&gt;Dili Village Telco&lt;/a&gt; Wiki.&lt;br /&gt;3. Other &lt;a href=&quot;http://dili.villagetelco.org/index.php?title=Main_Page#Press.2C_Media_and_Blog_Posts&quot;&gt;blog posts&lt;/a&gt; in the Dili Village Telco series.&lt;/p&gt;</description>
	<pubDate>Mon, 30 Aug 2010 21:27:46 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Fedora visits China (Beijing/Shanghai)</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-5989317485829611117</guid>
	<link>http://blog.gbraad.nl/2010/08/fedora-visits-china-beijingshanghai_02.html</link>
	<description>A lot of things have happened in China relating to Fedora; our MIPS port gained attention from Loongson and we made Fedora 13 available on our servers. Although it has not been mirrored yet to secondary.fedoraproject.org, you can already try it out. The other thing is about what Kaio and I have been busy with for the last half year, &lt;a href=&quot;http://fedora-zh.org/&quot;&gt;the Chinese Fedora Community&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;It seems our efforts have not been unnoticed and the &lt;a href=&quot;http://fedoraproject.org/wiki/Community_Architecture&quot;&gt;Fedora Community Architecture&lt;/a&gt; team &lt;a href=&quot;http://blog.melchua.com/2010/07/31/mel-in-transit-now-in-china/&quot;&gt;sent Mel Chua to China&lt;/a&gt;. Yesterday she arrived in Beijing and we immediately started to discuss about our community and future activities and how to gain a more widespread acceptance of Open Source in China.&lt;br /&gt;&lt;br /&gt;One of the things we immediately agreed upon was, luckily her explanation was less morbid, to '&lt;a href=&quot;http://blog.melchua.com/2010/08/01/fedora-china-operation-raptor-proofing/&quot;&gt;Raptor-proof our community&lt;/a&gt;'. Our community is fragile when it comes to responsibilities and the load carried upon those shoulders. For this to succeed we would like you to propose people or yourself for a role within the community.&lt;br /&gt;&lt;br /&gt;It would be ideal if some of you would step forward and become a regional ambassador who can represent key regions in China, like Shanghai, Hong Kong, etc. The workload for this is low and when we can balance it out it would even be minimal. You would take care of distributing Fedora swag, like t-shirts in your area.&lt;br /&gt;&lt;br /&gt;This Raptor issue also troubles our MIPS port. Currently we have three members and of this only the lead role can be performed by someone else. We have a nice group of people around us, but we are always searching for new members. If you want to help with documenting or other activities, just get in touch. No, you don't need to be Chinese :-P. If you have a Yeeloong netbook and got tired or Mandriva, help us test and build third-party packages.&lt;br /&gt;&lt;br /&gt;We would really like to know about Open Source activities happening all over China or maybe you have suggestions. If you want to discuss this with us, join &lt;a href=&quot;irc://irc.freenode.net/#fedora-zh&quot;&gt;#fedora-zh&lt;/a&gt; and &lt;a href=&quot;https://admin.fedoraproject.org/mailman/listinfo/chinese&quot;&gt;mailinglist&lt;/a&gt;. Mel's agenda for this week &lt;a href=&quot;http://blog.melchua.com/2010/07/30/help-me-figure-out-my-time-in-china/&quot;&gt;is still open&lt;/a&gt;, so if you want to meet her in Shanghai, this is your chance.&lt;br /&gt;&lt;br /&gt;Thanks to all the members of the Chinese Fedora Community!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-5989317485829611117?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 02 Aug 2010 15:54:45 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: User programmable sub-gram optical flow / vision sensor</title>
	<guid>tag:diydrones.com,2010-07-07:705844:BlogPost:177115</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:177115</link>
	<description>&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/ZN6uWFpDaMyIB7AAk3Y5Fd*SVa-1FCGsuh1TMwGQV9Z4rE3dkN7lXswM5RvlE2H398NKZKElRV3B-AYbBrzSyGVtWRLsRoEQ/AVR8_proto2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;For a long time I've been wanting to make an ultra minimalist vision / optical flow sensor for the hobbyist and experimentalist community. I've been pursuing this as a small IR&amp;amp;D pet project at Centeye. We're almost there.&lt;/p&gt;
&lt;br /&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;The above photo shows one of these sensors next to a millimeter scale. The part count is small- One of our 64x64 custom image sensors, an Atmel ATmega644 processor, several resistors and capacitors, and some lightweight flat optics we developed. Two complete sensors are shown, including with mounted optics (yes it's that thin!). Total mass is about 440mg. The primary interface is via I2C/TWI, which will allow many sensors to be hooked up to a common bus. A secondary connector includes the interface with the ISP for uploading firmware.&lt;/p&gt;
&lt;br /&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;We chose to use an ATmega processor since they are loved by hardware hackers and are easy to use. Ideally for a single sensor, one can upload any number of different &quot;application firmwares&quot; to the sensor to make it whatever one wants, limited by just the processor and the base resolution. One firmware will turn it into an optical flow sensor . Another firmware will let it track bright lights. Yet another firmware could turn it into something else. Or someone could write their own firmware, whether by tweaking existing source code (yes I plan to share it) or writing something completely new.&lt;/p&gt;
&lt;br /&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;An ATmega644 may not sound like much for image processing- 64kB flash, 4k SRAM, 2k EEPROM, 20MHz max. Neither does a 64x64 array. But the reality is if you are witty you really don't need at lot of resolution or processing power to get some nice results. (We once did an altitude hold demo with just 16 pixels an 1MIPS back in 2001.)&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;We've already made our first batch of these (about 20) and handed them out to a few close collaborators. Based on feedback we are preparing our second run. The new sensors will be slightly larger and heavier (thicker PCB) but more rigid, and use strictly 0.1&quot; headers for all IO and power (including programming). Mass should still be under a gram.&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;We also have an even smaller version in the works, shown below with a chip mounted and wire bonded (sorry about the mess). This board uses ATtiny and the 7mm x 8mm board alone weighs about 95mg. I think we can get a whole sensor made for about 120mg, if only I had the time! (Maybe some brave person here would like to take a stab at programming it???) &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/cX8el*asW*kl8tBsN1HxQorCKVd8B-aYZx7XoufvDwjEUphqft3XFSVEoF1gdc4gGlfAAhe86HcY8B1ISK0hXQyw26xJ80EX/DR2_tiny_tamalpais.jpg?width=572&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;</description>
	<pubDate>Wed, 07 Jul 2010 03:41:35 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Installing SELinux on Linode (CentOS profile)</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-2530243858893374779</guid>
	<link>http://blog.gbraad.nl/2010/06/installing-selinux-on-linode-centos.html</link>
	<description>Recently I signed up for a different VPS hosting partner as the one I was using had a dreadful latency when dealing with international connections. The new VPS at &lt;a href=&quot;http://bit.ly/LinodeSignup&quot;&gt;Linode&lt;/a&gt; I am using has good ping times, the control panel often does correctly what it should do, but the out-of-the-box CentOS profile was in my opinion not what I am used to.&lt;br /&gt;&lt;br /&gt;RHEL and Fedora sys-admins know about &lt;a href=&quot;http://fedoraproject.org/wiki/SELinux&quot;&gt;SELinux&lt;/a&gt; and the pains and pleasures it can induce. If you are new to SELinux, be sure to read a little bit of background: &lt;a href=&quot;http://fedoraproject.org/wiki/SELinux/Understanding&quot;&gt;SELinux for dummies&lt;/a&gt; and &lt;a href=&quot;http://danwalsh.livejournal.com/&quot;&gt;Dan Walsh's Blog&lt;/a&gt;. Or watch these videos recorded by Scott Dowdle: &quot;&lt;a href=&quot;http://www.montanalinux.org/screencast-selinux-demystified-bozemanlug2010.html&quot;&gt;SELinux demystified&lt;/a&gt;&quot;, &quot;Intro to SELinux&quot; &lt;a href=&quot;http://www.montanalinux.org/lfnw2010-selinux-pt1.html&quot;&gt;Part 1&lt;/a&gt;, &lt;a href=&quot;http://www.montanalinux.org/lfnw2010-selinux-pt2.html&quot;&gt;Part 2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It seems Linode does not provide SELinux support with their provided kernel. I do not know what their motivation is. Maybe they want to relieve their support of troubling questions (to which I would say: permissive or enforcing=0) or maybe they just don't see the need. However after reading several reports on the web I am sure people want this functionality, but have been troubled by out-of-date resources about recompilation of the kernel to get the needed SELinux support and paravirtualization operations (pv_ops), setting up pv-grub, etc.&lt;br /&gt;&lt;br /&gt;Well, things are now much simpler as RHEL/CentOS provides the needed pv_ops kernels. The only missing part is to setup grub and get SELinux going. In several steps I will explain what needs to be done.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Instructions&lt;/b&gt;&lt;br /&gt;For these instructions I created a standard CentOS 5.5 (64bit) profile VPS using Linode's &lt;a href=&quot;https://www.linode.com/members/linode/dashboard.cfm&quot;&gt;Dashboard&lt;/a&gt; option 'Deploy a distribution'. Start the node and from the &lt;a href=&quot;https://www.linode.com/members/linode/console.cfm&quot;&gt;console&lt;/a&gt; or &lt;i&gt;ssh&lt;/i&gt; perform these steps.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Install grub&lt;/b&gt;&lt;br /&gt;Grub is not installed on the base system. You will need to install the package, create some symlinks and an empty configuration file which you will need later.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;# yum install grub&lt;br /&gt;# mkdir /boot/grub&lt;br /&gt;# cd /boot/grub/&lt;br /&gt;# touch grub.conf&lt;br /&gt;# ln -s ../boot/grub/grub.conf /etc/grub.conf&lt;br /&gt;# ln -s ./grub.conf menu.lst&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;2. Install kernel with pv_ops &lt;/b&gt;&lt;br /&gt;You will need to install a Xen enabled kernel which are provided by CentOS. But for some reason the &lt;i&gt;xennet&lt;/i&gt; and &lt;i&gt;xenblk&lt;/i&gt; are provided as modules and fail during startup. To solve this issue we create a new &lt;i&gt;initrd&lt;/i&gt; which can load these. Be sure to specify your kernel version correctly. You will also need this later for Grub.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;# yum install kernel-xen&lt;br /&gt;# mkinitrd -v -f --with=ext3 --with=xennet --with=xenblk /boot/initrd-2.6.18-194.3.1.el5xen-custom.img 2.6.18-194.3.1.el5xen&lt;br /&gt;# echo &quot;devpts    /dev/pts    devpts    defaults  0 0&quot; &amp;gt; /etc/fstab&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;3. Edit grub.conf&lt;/b&gt;&lt;br /&gt;To enable the new kernel, you need to add this to our empty grub.conf. Be sure to verify your version.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;# vi /etc/grub.conf&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The contents of the grub.conf are:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;#boot=/dev/vxda&lt;br /&gt;default=0&lt;br /&gt;timeout=1&lt;br /&gt;hiddenmenu&lt;br /&gt;title CentOS&lt;br /&gt;root (hd0)&lt;br /&gt;kernel /boot/vmlinuz-2.6.18-194.3.1.el5xen ro root=/dev/xvda&lt;br /&gt;initrd /boot/initrd-2.6.18-194.3.1.el5xen-custom.img&lt;br /&gt;title CentOS (enforcing=0)&lt;br /&gt;root (hd0)&lt;br /&gt;kernel /boot/vmlinuz-2.6.18-194.3.1.el5xen ro root=/dev/xvda enforcing=0&lt;br /&gt;initrd /boot/initrd-2.6.18-194.3.1.el5xen-custom.img&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The above configuration will automatically boot to the default option which is a pv_ops kernel which has SELinux enabled. The second boot option is handy of you encounter some issues during the next step. If you are uncertain, you can uncomment the following lines, but this means the boot will be interrupted by grub and needs you to select the boot option from the lish console.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;#default=0&lt;br /&gt;#timeout=1&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;4. Install SELinux&lt;/b&gt;&lt;br /&gt;Installing SELinux now is a breeze.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;# yum install libselinux selinux-policy selinux-policy-targeted&lt;br /&gt;# genhomedircon&lt;br /&gt;# touch /.autorelabel&lt;br /&gt;# shutdown -h now&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Now you only need to set your node to use pv-grub to boot from the configuration profile. This is briefly explained in &lt;a href=&quot;http://library.linode.com/Fzatyb&quot;&gt;this article&lt;/a&gt; on the Linode Library. Boot up your node and allow some time for the relabeling. It might be wise to verify the progress from the lish console. If everything went well, the filesystem should have been been relabeled after a while and the system should operate 'as normal' ;-). You can verify the state of SELinux from &lt;i&gt;ssh&lt;/i&gt; using the command &lt;i&gt;sestatus&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;There is however still one issue I have not resolved, as soon as the console is handled by &lt;i&gt;mingetty&lt;/i&gt;, it seems the lish console does not properly handle this. It might be an issue to use xvc0 instead, but I see this as a minor problem and rather have SELinux enabled.If you have a fix, please let me know so I can improve these instructions.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-2530243858893374779?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 22 Jun 2010 08:52:20 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part VII): Touchscreen 5</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-4815032971835379665</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-vii.html</link>
	<description>Last entry, I had the larger touchscreen working with X, and I worked out how to map the touchscreen data to a rectangular area on-screen.&amp;nbsp; This time, I will try to get a Nintendo DS touchscreen working with X. &lt;br /&gt;&lt;br /&gt;Although my ultimate goal is to make a true USB device, for the moment I'm going to use an Arduino as the microcontroller.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://www.arduino.cc/&quot;&gt;http://www.arduino.cc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Arduino has an FTDI FT232RL chip on it.&amp;nbsp; This speaks USB on one side, and TTL-level RS-232 on the other.&amp;nbsp; On the Arduino board, the FTDI's serial port connects to pins 0 and 1 of the Arduino, which is the microcontroller's UART port.&amp;nbsp; This lets you send information to and from the microcontroller over USB, and what the PC sees is a USB serial port. &lt;br /&gt;&lt;br /&gt;My plan is to make a serial port based touchscreen which emulates one of the existing serial port touchscreens supported by Linux.&amp;nbsp; Hopefully this means I don't have to write any kernel code.&lt;br /&gt;&lt;br /&gt;I looked around in the kernel's &lt;a href=&quot;http://lxr.linux.no/#linux/drivers/input/touchscreen/&quot;&gt;drivers/input/touchscreen&lt;/a&gt; directory for the serial port touchscreen driver with the simplest protocol.&amp;nbsp; The most likely candidate seemed to be the driver for the 3M MicroTouch.&amp;nbsp; It's a five byte protocol, and the &lt;a href=&quot;http://lxr.linux.no/#linux/drivers/input/touchscreen/mtouch.c&quot;&gt;driver&lt;/a&gt; looks pretty simple.&amp;nbsp; I'll come back to the protocol later.&amp;nbsp; For the moment, I want to see if I can read the touchscreen ok.&lt;br /&gt;&lt;br /&gt;A touchscreen is a sandwich of two transparent plastic plates.&amp;nbsp; Each plate is covered with a conductive film, and one plate is printed with tiny plastic bumps to keep the two plates apart when not being touched.&amp;nbsp; You can find out more about how touchscreens work &lt;a href=&quot;http://www.practicalarduino.com/projects/touch-control-panel&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My touchscreen has four wires.&amp;nbsp; These wires must be connected to the Arduino board, so I made my own &quot;breakout&quot; board.&amp;nbsp; I used one of the Sparkfun connectors I bought to &lt;a href=&quot;http://capnstech.blogspot.com/2010/02/replacing-ds-touchscreens-part-i-when.html&quot;&gt;fix my Nintendo&lt;/a&gt; DS touchscreen.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S4Sab4V_8yI/AAAAAAAAATc/RCLmsHQrWaM/s1600-h/IMG_5934r.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S4Sab4V_8yI/AAAAAAAAATc/RCLmsHQrWaM/s320/IMG_5934r.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Soldering the touchscreen connector was &quot;fun&quot;.&amp;nbsp; Remember, there's four conductors in the space of 1.5mm.&amp;nbsp; I had a lot of problems with solder bridges between the pins.&amp;nbsp; I eventually solved this problem by using a jig made of polyimide tape with three fingers, which fit between the pins and make a physical barrier to prevent solder getting from one pin to the next.&amp;nbsp; After completing the soldering, I removed the fingers.&lt;br /&gt;&lt;br /&gt;Polyimide tape is a heat-resistant film that is sold by DuPont under the name of &lt;a href=&quot;http://en.wikipedia.org/wiki/Kapton&quot;&gt;Kapton&lt;/a&gt;.&amp;nbsp; Cheap polyimide film can be bought &lt;a href=&quot;http://www.dealextreme.com/details.dx/sku.5101&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The wire I'm using is wire-wrap wire.&amp;nbsp; Four of these wires next to each other give exactly the right spacing.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S4SctoucXPI/AAAAAAAAATk/hq6sIPmACW8/s1600-h/IMG_5933r.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S4SctoucXPI/AAAAAAAAATk/hq6sIPmACW8/s320/IMG_5933r.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;In order to prevent the tiny wires on the connector from breaking, I wanted to put the connector on a board.  I didn't want to glue the connector, as there's a risk that glue will get inside.  So I made my board out of a small piece of unetched printed circuit board, and soldered the connector to the board.  The 4-pin connector has solder pads on the bottom: how to solder it to the board?&lt;br /&gt;&lt;br /&gt;Recently I bought myself a small tub of solder paste.&amp;nbsp; This is a mix of microscopic solder balls, suspended in a liquid to make a paste.&amp;nbsp; Although it looks a dull grey to the eye, I looked at it under the microscope at our hackerspace, and yes, it's a sea of unbelievably tiny balls.&amp;nbsp; How cool!&lt;br /&gt;&lt;br /&gt;I used a pen to draw the dimensions of the connector onto the end of the PCB, then used a rotary cutting tool to remove the copper where the touchscreen conductors go.&amp;nbsp; There's still copper underneath the solder pads on the connector, but no copper under the touchscreen wires.&lt;br /&gt;&lt;br /&gt;Using a jeweller's screwdriver, I applied a tiny amount of solder paste to the copper of the board where the connector's solder pads will go, and placed the connector.&amp;nbsp; Holding the connector in place with my finger, I touched the soldering iron to the copper next to the connector.&amp;nbsp; The copper conducted the heat into the solder paste, and I could see the paste turn from a dull grey to a lovely silver.&amp;nbsp; I could also see surface tension pull the solder into a nice shape around the solder pads.&amp;nbsp; Result: One nice strong strain relief for the connector and the wires.&amp;nbsp; This solder paste worked very well, and I will definitely use it more in the future.&amp;nbsp; I bought it very cheaply &lt;a href=&quot;http://www.dealextreme.com/details.dx/sku.7952&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Next, I used 4 header pins to join the wire-wrap wire to the four-conductor flexible ribbon cable, and used 4 right-angle header pins at the other end to make a plug for the Arduino.&amp;nbsp; To finish off. I used hot glue to lock the ribbon cable in place at both ends.&amp;nbsp; Here's the result:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/S4SezJHZCdI/AAAAAAAAATs/hZaoB_qrnUE/s1600-h/IMG_5932r.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/S4SezJHZCdI/AAAAAAAAATs/hZaoB_qrnUE/s400/IMG_5932r.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The breakout board is a bit rough, but it's a prototype.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;(If you have keen eyes, you may note a button attached to the lower Arduino connector.&amp;nbsp; More about that later)&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Well, that's the mechanicals done, now for some software!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-4815032971835379665?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 May 2010 11:50:54 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: Replacing DS touchscreens (part I): When it all goes wrong</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-6917610445094967938</guid>
	<link>http://capnstech.blogspot.com/2010/02/replacing-ds-touchscreens-part-i-when.html</link>
	<description>The other day I was talking about the cheapie touchscreens from DealExtreme:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://www.dealextreme.com/details.dx/sku.3245&quot;&gt;http://www.dealextreme.com/details.dx/sku.3245&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I bought a few for experimenting with, and one for replacing the touchscreen in my sons' Nintendo DS, as that touchscreen has developed problems.&lt;br /&gt;&lt;br /&gt;To find out how to replace the touchscreen, I watched these guides:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=5a1AIWYXPmg&quot;&gt;http://www.youtube.com/watch?v=5a1AIWYXPmg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=lir1HCupK9Q&quot;&gt;http://www.youtube.com/watch?v=lir1HCupK9Q&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;They make it look so easy!&lt;br /&gt;&lt;br /&gt;Anyway, I successfully opened up that Nintendo DS, and was able to split the old touchscreen from the LCD and replace it with a new one.  The problem came when I tried attaching the new touchscreen to the connector on the PCB.  That connector has a tiny black plastic lid, and unfortunately for me, one of the legs on the lid broke off.&amp;nbsp; You can see the connector here:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S4RwlWjpBfI/AAAAAAAAATU/KcIe5b2r2yM/s1600-h/busted-1.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;395&quot; src=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S4RwlWjpBfI/AAAAAAAAATU/KcIe5b2r2yM/s640/busted-1.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;That connector is &lt;i&gt;tiny as&lt;/i&gt;!&amp;nbsp; To give you an idea of scale, the touchscreen ribbon cable you can see in the lower left is 2.5mm across: Just 1/10th of a inch!&lt;br /&gt;&lt;br /&gt;Without the lid, the connector doesn't push down on the touchscreen cable, and the touchscreen doesn't work.&amp;nbsp; What to do?&amp;nbsp; Without a working DS, my kids will &lt;i&gt;kill me!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I thought of trying to hot-wire the touchscreen cable to the board, either directly or via four tiny wires, but I couldn't think of a way that wouldn't risk damage to the PCB, so I decided to buy a new connector.&lt;br /&gt;&lt;br /&gt;The first place I looked was SparkFun.&amp;nbsp; I found this connector:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=9105&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://static.sparkfun.com/images/products/09105-03-L_i_ma.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;small&gt;(Click on image to go to the product page)&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Although the shape is different, they are only about US$1 each, so I bought a few.&amp;nbsp; Actually, I bought them from SparkFun's local distributor, &lt;a href=&quot;http://www.littlebirdelectronics.com/&quot;&gt;Little Bird Electronics&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The connectors arrived in about a week, and when I got them, I noticed something rather unfortunate: The connectors on the Nintendo DS PCB are designed to have the contacts on the touchscreen facing down, whereas the SparkFun connectors are designed to have the contacts facing up.&amp;nbsp; I don't think that's going to work!&lt;br /&gt;&lt;br /&gt;In order to confirm this, I spent more than two hours at our &lt;a href=&quot;http://hackmelbourne.org/&quot;&gt;hackerspace&lt;/a&gt;, soldering wires onto those four pins under a microscope.&amp;nbsp; And yes, that connector &lt;i&gt;is&lt;/i&gt; the wrong way around and not suitable.&lt;br /&gt;&lt;br /&gt;So, I did some more web digging, and found a company called &lt;a href=&quot;http://www.goldenbridge.hk/&quot;&gt;Golden Bridge&lt;/a&gt; in Hong Kong.&amp;nbsp; It seems they're not dissimilar to Deal Extreme, and they have what appear to be the proper DS connectors:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://www.goldenbridge.hk/goods-1281.html&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.goldenbridge.hk/images/200911/goods_img/1281_P_1258429533329.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;small&gt;(Click on image to go to the product page)&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;I ordered a few connectors a week ago, and I'm waiting for them to arrive, which they should do any day now.&amp;nbsp; Unless they arrive tomorrow, I won't get them in time to solder at hackerspace.&amp;nbsp; Which is unfortunate, as if my kids don't get their DS back soon, I think I'm going to be buying them a new DS.&amp;nbsp; Either that or I think I'll have to leave home...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-6917610445094967938?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 May 2010 11:50:54 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part VI): Touchscreen 4</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-346874041504111167</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-vi.html</link>
	<description>Last article, I had a working touchscreen where the whole of the touchscreen surface was mapped to the whole of the display.  &lt;br /&gt;&lt;br /&gt;Skritter is a flash-based web app.&amp;nbsp; In scritter, there's an area in the middle of the window in which you can use your input device to enter the strokes for the character:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/S3IMwK_DRgI/AAAAAAAAASE/utOZSnKeQ5k/s1600-h/skr-2.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;http://4.bp.blogspot.com/_qj067rG1RIE/S3IMwK_DRgI/AAAAAAAAASE/utOZSnKeQ5k/s400/skr-2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So I have the requirement that I want to map the touchscreen area just into that rectangular area.&lt;br /&gt;&lt;br /&gt;Here's another requirement: A 15cm x 9cm touchscreen is designed to fit over a display, not sit on one's desk.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S3J7glymXgI/AAAAAAAAASU/BzmFOHbr8VE/s1600-h/IMG_5921s.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;http://1.bp.blogspot.com/_qj067rG1RIE/S3J7glymXgI/AAAAAAAAASU/BzmFOHbr8VE/s400/IMG_5921s.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It's too large to comfortably write on, as my wrist hits the surface when writing and throws off the cursor.  So I only want to use a small area of it.&lt;br /&gt;&lt;br /&gt;And since I eventually want to build this with a cheap nintendo touchscreen, not a full-sized one, I'd like to just use one corner of the large touchscreen.&lt;br /&gt;&lt;br /&gt;Further, I want size and aspect ratio of my small corner of the large touchscreen to be roughly the same as for the nintendo touchscreen.  Fair enough.&lt;br /&gt;&lt;br /&gt;But it gets better: When I finally use the nintendo touchscreen, I want the aspect area of &lt;i&gt;that&lt;/i&gt; touchscreen to be the same as Skritter's on-screen drawing area.  Since the aspect ratio of the Skritter writing area is slightly different to the nintendo touchscreen area, I will only use about 85% of the nintendo touchscreen area.&lt;br /&gt;&lt;br /&gt;So, somehow I have to map a small corner of the large touchscreen, onto this particular on-screen rectangle.&lt;br /&gt;&lt;br /&gt;The &lt;tt&gt;11-eGalax.fdi&lt;/tt&gt; file mentioned in the last article has a line of calibration data:&lt;br /&gt;&lt;pre&gt;&amp;lt;merge key=&quot;input.x11_options.Calibration&quot; type=&quot;string&quot;&amp;gt;32 3990 48 3990&amp;lt;/merge&amp;gt;&lt;/pre&gt;Those four values are the data values one should expect to get from the touchscreen when touching the minimum x, maximum x, minimum y and maximum y positions on the touchscreen.  The reason we can provide the numbers is to allow for variations in the properties of each touchscreen, although in general, the values will be around the minimum and maximum values the touchscreen can produce.  But what if I fake these values?&amp;nbsp; Can I use this to trick X into mapping one area onto another?&amp;nbsp; Let's try...&lt;br /&gt;&lt;br /&gt;One thing to note is that from my testing: I've found that the X axis and the Y axis are reasonably independent of each other: Running the stylus along a horizontal or vertical ruler on the touchscreen shows one axis changing a lot but not the other.&amp;nbsp; Therefore I think the number crunching for the X and Y axes can be done independently.&lt;br /&gt;&lt;br /&gt;Mapping an input range of numbers onto an output range of numbers isn't hard.  We can visualise the map as a graph, where the X axis shows the input range, and the Y axis shows the output range.  The limits of the input and output range correspond to two points on the graph.  We can then find the linear equation which describes the line, and once we know that, find the output value for any input value.  This should map the touchscreen area to the on-screen area, but also, if we reverse the mapping and feed in the dimensions of the screen, we should be able to find the four calibration values we need to give us the desired mapping.&lt;br /&gt;&lt;br /&gt;The first thing I did was work out how much of the touchscreen I want to use.  I first considered the case of the nintendo touchscreen.&lt;br /&gt;&lt;br /&gt;The pixels on my LCD display are square, so the aspect ratio is 1:1.  When the web page is fully maximised, the size of the Skritter writing area on my screen is 347 pixels by 402 pixels.  That's an aspect ratio of 0.86.  I want to keep the same ratio on my touchscreen.&lt;br /&gt;&lt;br /&gt;If I place the nintendo touchscreen with the long axis vertically, the active area is 47.5mm across by 63.5mm high, which is an aspect ratio of 0.75.&amp;nbsp;  Note the two aspect ratios aren't the same.&amp;nbsp;  If I want to keep the aspect ratio the same, I'll have to give up using a small area of the touchscreen.&lt;br /&gt;&lt;br /&gt;If I map the width of the touchscreen to the width of the Skritter writing area, the height of the part of the nintendo touchscreen I'll be using is 47.5mm / 0.86 = 55mm.  (I can use the remainder for not-on-screen special functions).&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_qj067rG1RIE/S3I__NqepGI/AAAAAAAAASM/c5z3qYtKlAI/s1600-h/IMG_5919s.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://3.bp.blogspot.com/_qj067rG1RIE/S3I__NqepGI/AAAAAAAAASM/c5z3qYtKlAI/s400/IMG_5919s.jpg&quot; width=&quot;397&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Note this picture is not to the same scale as the previous picture.&lt;br /&gt;&lt;br /&gt;I then got an index card and cut out a rectangle 47 x 55mm.&amp;nbsp; I can then place this on top of the larger touchscreen to show me the useable area of the smaller touchscreen:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_qj067rG1RIE/S3KKOqtYsGI/AAAAAAAAASc/YLEJmOZyMu4/s1600-h/IMG_5924s.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_qj067rG1RIE/S3KKOqtYsGI/AAAAAAAAASc/YLEJmOZyMu4/s320/IMG_5924s.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;For comparison, here's the nintendo touchscreen on top of the larger touchscreen:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_qj067rG1RIE/S3KMO3A-vkI/AAAAAAAAASk/pI2aBAMtGXA/s1600-h/IMG_5923s.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_qj067rG1RIE/S3KMO3A-vkI/AAAAAAAAASk/pI2aBAMtGXA/s320/IMG_5923s.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;(The colour difference is because I took the two pictures at different times of the day)&lt;br /&gt;&lt;br /&gt;Then I ran the &lt;tt&gt;evtest&lt;/tt&gt; program again,and recorded the touchscreen values for the top left and bottom right corners of the uncovered area on the card.&amp;nbsp; (The values are backwards because I'm using the touchscreen rotated by 180°).&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;th&gt;Tscreen Point&lt;/th&gt;     &lt;th&gt;X data value&lt;/th&gt;     &lt;th&gt;Y data value&lt;/th&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td&gt;top left&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;1940&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;1850 &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td&gt;bottom right &lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;950&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;203&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Skritter Point&lt;/th&gt;     &lt;th&gt;X data value&lt;/th&gt;     &lt;th&gt;Y data value&lt;/th&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td&gt;top left&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;504&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;285&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td&gt;bottom right &lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;851&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;687&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Screen Point&lt;/th&gt;     &lt;th&gt;X pixel&lt;/th&gt;     &lt;th&gt;Y pixel&lt;/th&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td&gt;top left&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;0&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td&gt;bottom right &lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;1680&lt;/td&gt;     &lt;td align=&quot;right&quot;&gt;1050&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Now, time for some number crunching.&amp;nbsp; Treating the X and Y axes separately, we can find the &lt;i&gt;m&lt;/i&gt; and &lt;i&gt;c&lt;/i&gt; in &lt;i&gt;y=mx+c&lt;/i&gt; to map the touchscreen coordinates to screen coordinates.&amp;nbsp; Then, using &lt;i&gt;x = (y-c)/m&lt;/i&gt;, we can feed in the boundaries of the screen, and found out the effective values &lt;i&gt;if&lt;/i&gt; the touchscreen was big enough to cover the whole screen, &lt;i&gt;and&lt;/i&gt; mapped our touchscreen area onto the Skritter writing area.&lt;br /&gt;&lt;br /&gt;I cooked up a spreadsheet to do the number crunching.&amp;nbsp; I typed in all the coords, and it spits out the four &quot;calibration values&quot; I needed.&amp;nbsp; You can find the spreadsheet here:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://spreadsheets.google.com/ccc?key=0Av3tC4mEgkZPdEl5cl9IR09RdzktUmJvWjEwQURoelE&quot;&gt;http://spreadsheets.google.com/ccc?key=0Av3tC4mEgkZPdEl5cl9IR09RdzktUmJvWjEwQURoelE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If I use the data from the tables above, I get the following four values:&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Min X&lt;/th&gt;     &lt;td align=&quot;right&quot;&gt;3378&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Max X&lt;/th&gt;     &lt;td align=&quot;right&quot;&gt;-1415&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Min Y&lt;/th&gt;     &lt;td align=&quot;right&quot;&gt;3018&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Max Y&lt;/th&gt;     &lt;td align=&quot;right&quot;&gt;-1284&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Note that two of the four numbers are negative.&amp;nbsp; That's to be expected.&amp;nbsp; It just means that with the mapping we have, the lower right corner of the touchscreen is inside the display area.&amp;nbsp; That's ok for us, because we'll never be sending negative values anyway.&amp;nbsp; (I'm feeling pretty lucky that whoever wrote the HAL and X stuff didn't disallow negative calibration values....)&lt;br /&gt;&lt;br /&gt;So, then I plugged these values into the &lt;tt&gt;11-evdev.fdi&lt;/tt&gt; file:&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!-- 10-synaptics.fdi is claiming all input.touchpad's as its&lt;br /&gt;     own. This file is meant to be loaded afterwards and to undo&lt;br /&gt;     any wrong assignments it did.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version=&quot;0.2&quot;&amp;gt;&lt;br /&gt;  &amp;lt;device&amp;gt;&lt;br /&gt;    &amp;lt;match key=&quot;info.capabilities&quot; contains=&quot;input.touchpad&quot;&amp;gt;&lt;br /&gt;      &amp;lt;match key=&quot;info.product&quot; contains=&quot;eGalax&quot;&amp;gt;&lt;br /&gt;        &amp;lt;merge key=&quot;input.x11_driver&quot; type=&quot;string&quot;&amp;gt;evdev&amp;lt;/merge&amp;gt;&lt;br /&gt;        &amp;lt;merge key=&quot;input.x11_options.Calibration&quot; type=&quot;string&quot;&amp;gt;&lt;b&gt;3378 -1415 3018 -1284&lt;/b&gt;&amp;lt;/merge&amp;gt;&lt;br /&gt;      &amp;lt;/match&amp;gt;&lt;br /&gt;    &amp;lt;/match&amp;gt;&lt;br /&gt;  &amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Enough talking, what happened after I restarted HAL and X?&amp;nbsp; Well, it worked first time!&amp;nbsp; A light touch to the corners of the restricted touchscreen area goes straight to the corners of my on-screen input area.&amp;nbsp; I love it when something works first time!&amp;nbsp; To celebrate, I went and practised Chinese characters for three hours.&amp;nbsp; So much nicer with a pen rather than a mouse! &lt;br /&gt;&lt;br /&gt;What's next?&amp;nbsp; Well, now that I have the larger touchscreen working, I want to get the cheapy nintendo touchscreen working.&amp;nbsp; Oh, and practice Chinese more :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-346874041504111167?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 May 2010 11:50:54 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part V): Touchscreen 3</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-7608653702783178401</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-v.html</link>
	<description>In the last article, I was getting good sample data from the touchscreen.&amp;nbsp; But does it work in X?  Sadly, it doesn't.  Or at least not straight away.&lt;br /&gt;&lt;br /&gt;(Note, you'll need to make sure the &lt;tt&gt;xorg-x11-drv-evdev&lt;/tt&gt; package is installed).&lt;br /&gt;&lt;br /&gt;When a new USB device (such as that touchscreen) is plugged in, the kernel tells the HAL subsystem. HAL notices the new input device, and tells X about it, and X starts listening to the new device. The beauty of this system is that X can respond correctly as input devices are connected and disconnected from the machine.&lt;br /&gt;The problem is that the standard Fedora kernel treats this kind of touchscreen as an &lt;tt&gt;evdev&lt;/tt&gt; device (good), but HAL makes a mistake about what kind of device it is.&amp;nbsp; There's a rule in HAL which says &quot;any touchscreen which I don't know about must be a &quot;Synaptics&quot; touchpad&quot;.  This bad guess gets passed onto X, and X tries to interpret the device as a Synaptics touchpad.  Since the device (by the time it gets to X) is really an &lt;tt&gt;evdev&lt;/tt&gt; device, X doesn't know how to handle the touchscreen properly.&lt;br /&gt;&lt;br /&gt;So in order to get the touchscreen to work, I had to work out how to convince HAL that the touchscreen was an &lt;tt&gt;evdev&lt;/tt&gt; device, not something else.&lt;br /&gt;&lt;br /&gt;This problem has also been experienced by others, and is covered in Fedora bug &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=473144&quot;&gt;473144&lt;/a&gt;. To cut a long story short, the most convenient solution is to create a file which tells HAL which kind of input device it really is. Comment 45 of that bug contains a suitable &lt;tt&gt;.fdi&lt;/tt&gt; file:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=473144#c45&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=473144#c45&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!-- 10-synaptics.fdi is claiming all input.touchpad's as its&lt;br /&gt;     own. This file is meant to be loaded afterwards and to undo&lt;br /&gt;     any wrong assignments it did.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version=&quot;0.2&quot;&amp;gt;&lt;br /&gt;  &amp;lt;device&amp;gt;&lt;br /&gt;    &amp;lt;match key=&quot;info.capabilities&quot; contains=&quot;input.touchpad&quot;&amp;gt;&lt;br /&gt;      &amp;lt;match key=&quot;info.product&quot; contains=&quot;eGalax&quot;&amp;gt;&lt;br /&gt;        &amp;lt;merge key=&quot;input.x11_driver&quot; type=&quot;string&quot;&amp;gt;evdev&amp;lt;/merge&amp;gt;&lt;br /&gt;        &amp;lt;merge key=&quot;input.x11_options.Calibration&quot; type=&quot;string&quot;&amp;gt;32 3990 48 3990&amp;lt;/merge&amp;gt;&lt;br /&gt;      &amp;lt;/match&amp;gt;&lt;br /&gt;    &amp;lt;/match&amp;gt;&lt;br /&gt;  &amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;gt;&lt;/pre&gt;That bug mentions a file in &lt;tt&gt;/etc/hal/fdi/policy&lt;/tt&gt; called &lt;tt&gt;10-synaptics.fdi&lt;/tt&gt;. I don't have a file of that name in that directory.  Instead, on my machine, it's in &lt;tt&gt;/usr/share/hal/fdi/policy/20thirdparty&lt;/tt&gt;.  So I decided to copy the file from that bug report into a file called &lt;tt&gt;11-evdev.fdi&lt;/tt&gt; in that directory.  Then I had to restart HAL in order for it to see the new &lt;tt&gt;.fdi&lt;/tt&gt; file:&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&amp;nbsp;service haldaemon restart&lt;/pre&gt;After doing that, I can now see the touchscreen in the output of &lt;tt&gt;lshal&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;What happens when I restart X?  Well, the touch screen works.  &lt;i&gt;Sort of&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Note that the maximum X and Y values in that file for the touchscreen axes are 3990.  But the &lt;tt&gt;evtest&lt;/tt&gt; utility reported maximum values of 2047.  I found that if I use 3990, I can only use the touchscreen for the top left quarter of the screen.  Obviously those numbers are wrong for my touchscreen.&lt;br /&gt;&lt;br /&gt;When I changed the numbers to 32 2000 32 2000, the touchscreen could point at any location on the X display.  Success!&lt;br /&gt;&lt;br /&gt;So, what I have now is a working touchscreen, and a setup which maps the whole of the touchscreen to the whole of the display.  For reasons I'll go into soon, that's not what I want.  But, good progress so far.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-7608653702783178401?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 May 2010 11:50:54 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part IV): Touchscreen 2</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-2432258334210004005</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-iv.html</link>
	<description>I want to use &lt;a href=&quot;http://www.skritter.com/&quot;&gt;Skritter&lt;/a&gt; with a pen, not a mouse.  Commercial products are too expensive for me, so I want to make something using a touchscreen.&lt;br /&gt;&lt;br /&gt;While I plan to eventually use a cheap Nintendo touchscreen, I want to start with a touchscreen that I already have, one that used to be in my EeePC.  This way, I don't have to deal with as many variables at once.&lt;br /&gt;&lt;br /&gt;The interface board for this touchscreen usually speaks to a proprietary kernel module, and proprietary X driver.  I would rather not use proprietary software, as proprietary software doesn't let me change things if I need to.&lt;br /&gt;&lt;br /&gt;Once upon a time, X was configured with a file called &lt;tt&gt;/etc/X11/xorg.conf&lt;/tt&gt;.  This file was a description of all the input and output devices that X had to speak to.  You could tell X about a device such as a touchscreen, by having an &lt;tt&gt;InputDevice&lt;/tt&gt; stanza in &lt;tt&gt;/etc/X11/xorg.conf&lt;/tt&gt;, which would cause X to load a driver for that input device.  The touchscreen maker provides a proprietary driver for this purpose.&lt;br /&gt;&lt;br /&gt;Those days are now gone.  In Fedora (and probably in other recent Linux distributions), there's no longer an &lt;tt&gt;/etc/X11/xorg.conf&lt;/tt&gt; file.  Instead, it's all done with auto-detection.&lt;br /&gt;&lt;br /&gt;The Linux kernel has a subsystem called &lt;tt&gt;evdev&lt;/tt&gt;.  It unifies handling of keyboards and pointing devices (and can even &quot;mix&quot; different input devices into one virtual device).  The kernel contains drivers for many input devices, which use the services of &lt;tt&gt;evdev&lt;/tt&gt;.  One of those drivers is for the touchscreen I have.  And for each input device, there'll be a device file in &lt;tt&gt;/dev/input&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;To start off, I did an &lt;tt&gt;ls&lt;/tt&gt; of &lt;tt&gt;/dev/input&lt;/tt&gt; for files matching &lt;tt&gt;event*&lt;/tt&gt;:&lt;br /&gt;&lt;pre&gt;mjd@blackcat [/] ls /dev/input/event*&lt;br /&gt;/dev/input/event0  /dev/input/event2  /dev/input/event4&lt;br /&gt;/dev/input/event1  /dev/input/event3  /dev/input/event5&lt;/pre&gt;After I plugged in the touchscreen, I saw this:&lt;br /&gt;&lt;pre&gt;mjd@blackcat [/] ls /dev/input/event*&lt;br /&gt;/dev/input/event0  /dev/input/event2  /dev/input/event4  /dev/input/event6&lt;br /&gt;/dev/input/event1  /dev/input/event3  /dev/input/event5&lt;/pre&gt;So it appears that &lt;tt&gt;/dev/input/event6&lt;/tt&gt; is the device file for the touchscreen.  I ran &lt;tt&gt;evtest&lt;/tt&gt; on this device: &lt;small&gt;(&lt;tt&gt;evtest&lt;/tt&gt; is in the &lt;tt&gt;evtest&lt;/tt&gt; package)&lt;/small&gt;&lt;br /&gt;&lt;pre&gt;[root@blackcat /]# evtest /dev/input/event6&lt;br /&gt;Input driver version is 1.0.0&lt;br /&gt;Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x100&lt;br /&gt;Input device name: &quot;eGalax Inc. USB TouchController&quot;&lt;br /&gt;Supported events:&lt;br /&gt;  Event type 0 (Sync)&lt;br /&gt;  Event type 1 (Key)&lt;br /&gt;    Event code 330 (Touch)&lt;br /&gt;  Event type 3 (Absolute)&lt;br /&gt;    Event code 0 (X)&lt;br /&gt;      Value    249&lt;br /&gt;      Min        0&lt;br /&gt;      Max     2047&lt;br /&gt;    Event code 1 (Y)&lt;br /&gt;      Value   1397&lt;br /&gt;      Min        0&lt;br /&gt;      Max     2047&lt;br /&gt;Testing ... (interrupt to exit)&lt;br /&gt;Event: time 1265760809.718325, type 1 (Key), code 330 (Touch), value 1&lt;br /&gt;Event: time 1265760809.718331, type 3 (Absolute), code 0 (X), value 246&lt;br /&gt;Event: time 1265760809.718332, type 3 (Absolute), code 1 (Y), value 1390&lt;br /&gt;Event: time 1265760809.718335, -------------- Report Sync ------------&lt;br /&gt;Event: time 1265760809.770319, type 3 (Absolute), code 1 (Y), value 1389&lt;br /&gt;Event: time 1265760809.770322, -------------- Report Sync ------------&lt;br /&gt;Event: time 1265760809.810320, type 3 (Absolute), code 1 (Y), value 1388&lt;br /&gt;Event: time 1265760809.810325, -------------- Report Sync ------------&lt;br /&gt;Event: time 1265760809.822320, type 3 (Absolute), code 0 (X), value 303&lt;br /&gt;Event: time 1265760809.822322, type 3 (Absolute), code 1 (Y), value 1331&lt;br /&gt;Event: time 1265760809.822326, -------------- Report Sync ------------&lt;br /&gt;Event: time 1265760809.834320, type 3 (Absolute), code 0 (X), value 331&lt;br /&gt;Event: time 1265760809.834322, type 3 (Absolute), code 1 (Y), value 1303&lt;br /&gt;Event: time 1265760809.834326, -------------- Report Sync ------------&lt;br /&gt;Event: time 1265760809.846321, type 3 (Absolute), code 0 (X), value 403&lt;br /&gt;Event: time 1265760809.846323, type 3 (Absolute), code 1 (Y), value 1235&lt;br /&gt;Event: time 1265760809.846326, -------------- Report Sync ------------&lt;br /&gt;Event: time 1265760809.878320, type 1 (Key), code 330 (Touch), value 0&lt;br /&gt;Event: time 1265760809.878326, -------------- Report Sync ------------&lt;br /&gt;^C&lt;br /&gt;[root@blackcat mjd]# &lt;/pre&gt;When I touch the touchscreen, I get data!  And the data looks sensible, with values for each axis from 0-2047!&amp;nbsp; Now to get it working with X...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-2432258334210004005?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 May 2010 11:50:54 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part II): Touchscreen 1</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-4329625791893317510</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-ii.html</link>
	<description>In learning Chinese, I want computers to assist me in two ways. The first is in learning Chinese characters, and the second is as an in-class dictionary/reference.&lt;br /&gt;&lt;br /&gt;The first is just a follow-on step from my flashcards and Chutor phone program.  But I need to get smarter about how I learn characters.  For that reason, I'm using Skritter, a great web service which uses spaced repetition to teach you characters:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;href://www.skritter.com/&quot;&gt;http://www.skritter.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To use Skritter, you have to write Chinese characters in an on-screen scribble area.&amp;nbsp; You can do this with a mouse, but it's fiddly, and I think it's not very good for your wrist, as you're using wrist muscles to try and get the fine motor control you usually get with your fingers on a pen.&lt;br /&gt;&lt;br /&gt;A better solution is to use some kind of pen input device.&amp;nbsp; This is a much more natural way of doing things.&amp;nbsp; Commercial pen input devices are far too expensive in Australia (at &lt;i&gt;least&lt;/i&gt; A$60 for an entry level model).&amp;nbsp; So I am thinking of using one of these extremely cheap touchscreens, which are intended as replacements for the Nintendo DS:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.dealextreme.com/details.dx/sku.3245&quot;&gt;http://www.dealextreme.com/details.dx/sku.3245&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eventually I want to read this touchscreen with a small microprocessor, and present this to the computer as a USB touchscreen.&amp;nbsp; For the moment, I'm going to take a number of half-way steps.&lt;br /&gt;&lt;br /&gt;The first half-way step is to start with the larger, commercial touchscreen that used to be inside my EeePC.&amp;nbsp; The touchscreen size is 15cm by 9cm, which is a lot bigger than I need, but it already has a working controller board.&lt;br /&gt;&lt;br /&gt;Once I have that working, I plan to move to one of the smaller replacement touchscreens, and use an Arduino to make it appear as a USB device.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.arduino.cc/&quot;&gt;http://www.arduino.cc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think if I can get all this working, I can replace the Arduino with a smaller dedicated micro, put it in a nice, flat case, and make a pen input device for about A$20.&lt;br /&gt;&lt;br /&gt;Second project in next post.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-4329625791893317510?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 May 2010 11:50:54 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Gerard Braad: Chinese Fedora Community and Fedora-MIPS Port</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-2731015237375484668</guid>
	<link>http://blog.gbraad.nl/2010/05/chinese-fedora-community-and-fedora.html</link>
	<description>Currently I'm getting ready to move to Beijing (北京), China (中国) in June. While I am still looking for employment I have also been busy with assisting the Chinese Fedora Community (&lt;a href=&quot;http://fedora-zh.org/&quot;&gt;FZUG/中文用户组&lt;/a&gt;). As part of some our activities I will give presentations about Fedora and the community at the &lt;a href=&quot;http://beijinglug.org/&quot;&gt;BeijingLUG&lt;/a&gt;.&amp;nbsp;It is a growing community... but we are still looking for new users, ambassadors and contributors.&amp;nbsp;We would also really like to work together with other other user groups in the APAC.&amp;nbsp;If you are Chinese, in China or interested, drop by in our IRC channel&amp;nbsp;&lt;a href=&quot;irc://irc.freenode.net/#fedora-zh&quot;&gt;#fedora-zh on freenode&lt;/a&gt;&amp;nbsp;or get in touch with me (吉拉德,&amp;nbsp;&lt;a href=&quot;https://fedoraproject.org/wiki/User:Gbraad&quot;&gt;gbraad&lt;/a&gt;), Caius Chance (&lt;a href=&quot;https://fedoraproject.org/wiki/User:Kaio&quot;&gt;kaio&lt;/a&gt;) or Yuan Yijun (袁乙钧,&amp;nbsp;&lt;a href=&quot;https://fedoraproject.org/wiki/User:Bbbush&quot;&gt;bbbush&lt;/a&gt;). We are looking forward to seeing you!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/Bfzhpk8RTASqZsnLGWonMg?feat=directlink&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;141&quot; src=&quot;http://lh3.ggpht.com/_ZmgfsgbGDLs/S-XDomTj1dI/AAAAAAAAITs/PXqKzi0hzFM/s200/fedora-mips.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Part of building the Fedora brand, some friends of the Chinese community and I started to port Fedora to the MIPS architecture. MIPS is an architecture that gained a lot of attention recently with the release of the Loongson processor. This processor is Chinese made and ended up in several netbooks and mini-pc's. While they were only available on the Chinese market, they are now being sold in America and Europe, e.g. by the &lt;a href=&quot;http://freedomincluded.com/&quot;&gt;Freedom Included&lt;/a&gt; initiative.&lt;br /&gt;&lt;br /&gt;Currently we have chosen to target the &lt;a href=&quot;http://www.linux-mips.org/wiki/Loongson&quot;&gt;Loongson&lt;/a&gt; 2F, but in time we will also support other MIPS-compatible processors. The primary goal of this project is to provide support for MIPS as a &lt;a href=&quot;http://fedoraproject.org/wiki/TomCallaway/SecondaryArchitectures&quot;&gt;secondary architecture&lt;/a&gt; in Fedora. Just like the &lt;a href=&quot;http://fedoraproject.org/wiki/Architectures/ARM&quot;&gt;ARM port&lt;/a&gt;, our secondary goal is to enable derivative distributions based on the Fedora package collection and repository that are more suitably optimized for embedded and mobile use-cases. For this we want to work together with the&amp;nbsp;&lt;a href=&quot;https://fedoraproject.org/wiki/SIGs/FedoraMini&quot;&gt;Mini SIG&lt;/a&gt;&amp;nbsp;as we can both benefit from this.&lt;br /&gt;&lt;br /&gt;We now have a test build available of &lt;a href=&quot;http://fedoraproject.org/wiki/Architectures/MIPS#Test_Release:_Fedora_12&quot;&gt;Fedora 12&lt;/a&gt;&amp;nbsp;(as n32 mipsel) which should be able to run on Qemu or MIPS-based hardware, like the &lt;a href=&quot;http://www.linux-mips.org/wiki/Fulong2f&quot;&gt;Fuloong&lt;/a&gt;. While we are in the process of fixing some remaining build and technical issues and submitting the patches, you are invited to help us test this release.&amp;nbsp;The Fuloong is currently the platform we build and test on ourselves. Be warned, expect to do some DIY especially since no documentation is available yet... and&amp;nbsp;your mileage may vary.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The team currently consists of me (project-lead), FaiWong (technical lead,&amp;nbsp;&lt;a href=&quot;http://fedoraproject.org/wiki/User:Lazyfai&quot;&gt;lazyfai&lt;/a&gt;) and XinZhen (co-lead,&amp;nbsp;&lt;a href=&quot;http://fedoraproject.org/wiki/User:Lonestar&quot;&gt;lonestar&lt;/a&gt;). If you want to contribute or donate hardware, please get in touch with us. More information can be found on the &lt;a href=&quot;https://fedoraproject.org/wiki/Architectures/MIPS&quot;&gt;Fedora-MIPS wiki page&lt;/a&gt;, or just drop by in our IRC channel &lt;a href=&quot;irc://irc.freenode.net/#fedora-mips&quot;&gt;#fedora-mips on freenode&lt;/a&gt;.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-2731015237375484668?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 08 May 2010 23:29:53 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Zedstar: GNU Guile on a Ben NanoNote with command line history (readline support)</title>
	<guid>http://zedstar.org/blog/?p=191</guid>
	<link>http://zedstar.org/blog/2010/05/02/gnu-guile-on-a-ben-nanonote-with-command-line-history-readline-support/</link>
	<description>&lt;p&gt;I have been hacking at the OpenWrt &lt;a href=&quot;http://zedstar.org/guile/Makefile&quot;&gt;Makefile&lt;/a&gt; and now have command line history working within the REPL.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
opkg install &lt;a href=&quot;http://zedstar.org/guile/libgmp_4.3.1-2_xburst.ipk&quot;&gt;http://zedstar.org/guile/libgmp_4.3.1-2_xburst.ipk&lt;/a&gt;&lt;br /&gt;
opkg install &lt;a href=&quot;http://zedstar.org/guile/libltdl_1.5.26-1_xburst.ipk&quot;&gt;http://zedstar.org/guile/libltdl_1.5.26-1_xburst.ipk&lt;/a&gt;&lt;br /&gt;
opkg install &lt;a href=&quot;http://zedstar.org/guile/guile_1.8.7_xburst.ipk&quot;&gt;http://zedstar.org/guile/guile_1.8.7_xburst.ipk&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Once installed setup a .guile file:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
root@BenNanoNote:~# cat /root/.guile&lt;br /&gt;
(use-modules (ice-9 readline))&lt;br /&gt;
(activate-readline)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When you run guile now you should be able to use the up and down cursor keys to go through your command history etc.&lt;/p&gt;</description>
	<pubDate>Sun, 02 May 2010 21:20:40 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: Gdium linux kernel support status</title>
	<guid permalink="False">http://vm-kernel.org/blog/?p=227</guid>
	<link>http://vm-kernel.org/blog/2010/04/16/gdium-linux-kernel-support-status/</link>
	<description>&lt;p&gt;After several days working, the 2.6.34-rc2 kernel is working on gdium expect sound. Of course most of the codes are from mandriva and Philippe's work.&lt;/p&gt;
&lt;p&gt;I will make some code clean and make the sound work in the next few days. It seems the sm501 sound driver needs a hardcoded 8051 firmware to work. Damn it. After these works are done, I will send the patches to&lt;a href=&quot;http://groups.google.com/group/loongson-dev&quot;&gt; loongson-dev&lt;/a&gt; maillist and merge it to &lt;a href=&quot;http://dev.lemote.com/code/linux-loongson-community&quot;&gt;linux-loongson-community&lt;/a&gt; and linux-mips mainline at last.&lt;/p&gt;
&lt;p&gt;I am keeping moving....... Please wait.&lt;/p&gt;
&lt;p&gt;ps: The linux kernel for gdium repository is &lt;a href=&quot;http://repo.or.cz/w/linux-2.6/linux-mips/linux-gdium.git&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;kill-bill:~# uname -a&lt;br /&gt;
Linux kill-bill 2.6.34-rc2 #24 PREEMPT Fri Apr 16 21:01:51 CST 2010 mips64 GNU/Linux&lt;br /&gt;
kill-bill:~# cat /proc/cpuinfo&lt;br /&gt;
system type             : dexxon-gdium-2f-10inches&lt;br /&gt;
processor               : 0&lt;br /&gt;
cpu model               : ICT Loongson-2 V0.3  FPU V0.1&lt;br /&gt;
BogoMIPS                : 598.01&lt;br /&gt;
wait instruction        : no&lt;br /&gt;
microsecond timers      : yes&lt;br /&gt;
tlb_entries             : 64&lt;br /&gt;
extra interrupt vector  : no&lt;br /&gt;
hardware watchpoint     : yes, count: 0, address/irw mask: []&lt;br /&gt;
ASEs implemented        :&lt;br /&gt;
shadow register sets    : 1&lt;br /&gt;
core                    : 0&lt;br /&gt;
VCED exceptions         : not available&lt;br /&gt;
VCEI exceptions         : not available
&lt;/p&gt;&lt;/blockquote&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560590/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2010/04/16/gdium-linux-kernel-support-status/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560590/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560590/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 16 Apr 2010 13:20:42 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: Install debian lenny on yeeloong 8089/8101</title>
	<guid permalink="False">http://vm-kernel.org/blog/?p=221</guid>
	<link>http://vm-kernel.org/blog/2010/03/27/install-debian-lenny-on-yeeloong-80898101/</link>
	<description>&lt;p&gt;NOTICE/TIPS:&lt;br /&gt;
[For one want to install the debian 6.0, there is a more easy way. See the following link.&lt;br /&gt;
&lt;a href=&quot;http://www.anheng.com.cn/loongson/install/readme.txt&quot;&gt;http://www.anheng.com.cn/loongson/install/readme.txt&lt;/a&gt; (In Chinese).]&lt;/p&gt;
&lt;p&gt;Yesterday I installed the debian lenny on yeeloong 8101, the 10.1 inch notebook based on loongson 2F CPU for a friend. Then I find there is less English document describing how to do this. So I write the process down to anyone who is interested in installing debian on yeloong. There are many ways to do it I choose the way of using a debian network installer. Please make sure you have a internet connection first.&lt;/p&gt;
&lt;p&gt;1. First download the kernel and initrd to your PC.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;wget http://dev.lemote.com/drupal/sites/default/files/kernel-2.6.27-LM8089.tar.gz&lt;br /&gt;
wget http://dev.lemote.com/drupal/sites/default/files/initrd_yl_netboot.gz&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;2. Decompress kernel on your PC.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;tar zxvf kernel-2.6.27-LM8089.tar.gz&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You will get the kernel vmlinux and the directory named lib. The lib directory contains all the kernel modules.&lt;/p&gt;
&lt;p&gt;3. Format your USB disk with ext2 partition and copy vmlinux, directory lib and initrd_yl_netboot.gz to the usb disk.&lt;/p&gt;
&lt;p&gt;4. Insert the usb disk to your netbook and boot it&lt;/p&gt;
&lt;p&gt;5. Enter the PMON command line.&lt;/p&gt;
&lt;p&gt;There are two ways to enter the PMON(the bootloader of yeeloong) command line. One is press DEL when booting. The other way is click C when you see the boot menu.&lt;/p&gt;
&lt;p&gt;Use the following commands to load the kernel and initrd, which contains the debian network installer.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;load /dev/fs/ext2@usb0/vmlinux&lt;br /&gt;
initrd /dev/fs/ext2@usb0/initrd_yl_netboot.gz&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Please be patient. The initrd command may need more than 5 miniutes to be finished.&lt;/p&gt;
&lt;p&gt;Sometimes the PMON bootloader may hang when you boot with a usb disk inserted. I do not know why. The workaround is booting into the default linux system and inserting the usb disk and then rebooting. Or you can use a tftp method to load the kernel and initrd.&lt;/p&gt;
&lt;p&gt;At last use the following command to launch the debian network installer.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;g console=tty no_auto_cmd&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Then just install the debian as normal.&lt;/p&gt;
&lt;p&gt;6. Install debian lenny&lt;/p&gt;
&lt;p&gt;After debian configurating the DHCP, it will complain about &quot;no kernel modules were found&quot; and will let you choose &quot;continue the install without loading kernel modules?&quot;, just choose Yes(the default answer is No) to continue.&lt;/p&gt;
&lt;p&gt;When in the part of Partition disks, it will complain about &quot;The current kernel doesn't support the Logical Volume Manager. You may need to load the lvm-mod modules&quot; and the background becomes red. Do not be scared. Just click continue. &lt;img src=&quot;http://vm-kernel.org/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Then everything goes as it should be. But at last, debian installer will say &quot;no installable kernel was found in the defined APT sources.... Continue without installing a kernel&quot;. Do not click Yes too quickly. We need to copy the kernel and all the modules into new system first. Please make sure that the USB disk is still inserting on the notebook. Use ALT+F2 to active a console. Mount the use disk and copy kernel and libs.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;mount /dev/sda1 /target/mnt&lt;br /&gt;
cp /mnt/vmlinux /target/boot&lt;br /&gt;
cp -rf /mnt/lib/modules /target/lib/&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Then click ALT+F1 return to the debian installer. Click Yes to continue installing.&lt;/p&gt;
&lt;p&gt;7. Install Desktop environment&lt;/p&gt;
&lt;p&gt;You can install LXDE or gnome as your desktop. I prefer LXDE because it is light.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;apt-get install lxde&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Install the X server driver.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;wget http://www.anheng.com.cn/loongson2f/lenny/xorg-server/xserver-xorg-video-siliconmotion_2.2.8-lemote.r04_mipsel.deb&lt;br /&gt;
dpkg -i xserver-xorg-video-siliconmotion_2.2.8-lemote.r04_mipsel.deb&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Change the xorg.conf according to &lt;a href=&quot;http://wiki.gnewsense.org/Projects/GNewSenseToMIPSYeeloongXorgConf&quot;&gt;this link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;8. Trouble shooting&lt;/p&gt;
&lt;p&gt;(1) My wifi does not work&lt;/p&gt;
&lt;p&gt;You can see &quot;rtl8187: rtl8187_open process failed because radio off&quot; if you use dmesg to see the message. Use FN+F5 to turn on the wifi first. You will see such message &quot;&lt;span&gt;rtl8187: SCI interrupt Methord Will Turn Radio On&lt;/span&gt;&quot; on your console.&lt;/p&gt;
&lt;p&gt;(2) My sound does not work&lt;/p&gt;
&lt;p&gt;Use alsamixer to adjust the volume. But install alsa-utils first.&lt;/p&gt;
&lt;p&gt;(3) OOPS, I forget to copy kernel to my new installed system. I can not boot it now. What should I do?&lt;/p&gt;
&lt;p&gt;You can load the kernel using tftp method.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560591/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2010/03/27/install-debian-lenny-on-yeeloong-80898101/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560591/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560591/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 27 Mar 2010 06:28:51 +0000</pubDate>
</item>
<item>
	<title>Methril: My 0x1F day</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-7572186296451811445</guid>
	<link>http://openblog.methril.net/2010/03/my-0x1f-day.html</link>
	<description>As a bit mask, today is my 0x1F (31) birthday (i´m almost 0x20). But the day is going ok.&lt;br /&gt;&lt;br /&gt;A lot of changes happens lately:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In my personal life, i moved my house from Spain to Brazil (really big change). One of the best consequence of this movement is the people i met at my new job, really nice people with a nice job.&lt;/li&gt;&lt;li&gt;In the job side i´ m working in a open-minded company for the hardwar/embedded path. That gets me happier.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So i´m comfortable and almost fully installed in my new home.&lt;br /&gt;&lt;br /&gt;In the Open projects side, i´m improving my knowledge and i´m proud to announce that Wolfgang added me to the qie-hardware planet [1] :)&lt;br /&gt;I´ve been testing the Ben Nanonote. A wonderful and amazing gadget that promise a lot. Wolfgang, with his efforts, is also engaging me to all the projects they are raising. I love the Milkymist project and the SAKC is a good hardware device for approaching the FPGA development. He is also encouraging some open-like hardware projects &amp;amp; putting them (or us) in contact to deal with &quot;open philosophy&quot; together.&lt;br /&gt;&lt;br /&gt;Thanks Wolfgang &amp;amp; all the people involved in Qi-hardware. Some of them: Mirko. Xiao. Adam. .... &amp;amp; some old friends Tuxbrain (David &amp;amp; Victor), Ida Systems (Rakshat) I hope to see more people involved &amp;amp; growing this community effort.&lt;br /&gt;&lt;br /&gt;See you soon.&lt;br /&gt;&lt;br /&gt;[1] http://en.qi-hardware.com/planet/&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-7572186296451811445?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 16 Mar 2010 19:55:22 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part III): Dictionary</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-8571654196111174957</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-iii.html</link>
	<description>The second project stems from my deep unhappiness with the Chinese electronic dictionaries that are out there.&amp;nbsp; Most of them are aimed at Chinese people learning English, not westerners learning Chinese, and they really suck.&amp;nbsp; The only thing more awful than the software that's generally on them is the horrid dictionary databases in use.&amp;nbsp; If there are five ways of saying the same thing, how do we know which one is right for the situation?&amp;nbsp; And which are current and not archaic?&lt;br /&gt;&lt;br /&gt;When I've read English dictionaries for Chinese people, the English seems about 100 years old and quite laughable.&amp;nbsp; I get the same impression when trying to find words I want in a Chinese-English dictionary:&amp;nbsp; It's not clear which one I want, and when my Chinese friends see my choice, they just tell me &quot;oh, we don't use that word&quot;.&amp;nbsp; Pah.&amp;nbsp; And don't get me started about how inflexible the searching is.&amp;nbsp; I should have the ability to click on a character, break it down into components, then see other words with the same components.&amp;nbsp; That will help me sort out whether I want 青、晴、清、情，or 请!&lt;br /&gt;&lt;br /&gt;When I'm online, I'm constantly using the dictionary at MDBG. It's aimed at Chinese for westerners, and the English descriptions are carefully worded so that in general, it's possible to tell which of the five ways of saying something you actually want. And seeing which HSK level a word is rated at also gives an idea of how common it is.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.mdbg.net/chindict/&quot;&gt;http://www.mdbg.net/chindict/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/HSK_test&quot;&gt;http://en.wikipedia.org/wiki/HSK_test&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This website uses the CC-CEDICT database, which can be downloaded and used for free! Since I like the database so much, I've been dreaming of writing my own Chinese dictionary program which uses that database. And I intend to turn that dream into reality. But in order to do that, I need a platform to run it on.&lt;br /&gt;&lt;br /&gt;I have looked around, and I've decided to write it for the Nintendo DS. This is a mature platform, with 4M of RAM, two nice screens, long battery life, a free toolchain, a GUI library, and as much read-only data as you can fit on an SDHC SD card. And cheap too: I picked up a grey market one the other day for A$130.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://en.wikipedia.org/wiki/Nintendo_DS_homebrew&quot;&gt;http://en.wikipedia.org/wiki/Nintendo_DS_homebrew&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As far as a user interface goes, I am thinking of making it work somewhat like this program called Pablo:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://ehaton.blogspot.com/2007/02/learning-chinese-pablo-my-personal.html&quot;&gt;http://ehaton.blogspot.com/2007/02/learning-chinese-pablo-my-personal.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://haton.free.fr/chino/pabloscreenshot.jpg&quot;&gt;http://haton.free.fr/chino/pabloscreenshot.jpg&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;There are also some free handwriting recognition engines which I plan to try, with a view to giving my dictionary handwriting recognition:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.tegaki.org/&quot;&gt;http://www.tegaki.org/&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://www.kiang.org/jordan/software/hanzilookup/&quot;&gt;http://www.kiang.org/jordan/software/hanzilookup/&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://hanzirecognizer.sourceforge.net/&quot;&gt;http://hanzirecognizer.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://zinnia.sourceforge.net/&quot;&gt;http://zinnia.sourceforge.net/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;The DS doesn't come with a UI library, so I would either have to write that myself, or use someone else's.&amp;nbsp; I am intending to use the &quot;Woopsi&quot; library:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://ant.simianzombie.com/?page_id=128&quot;&gt;http://ant.simianzombie.com/?page_id=128&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think my first task will be to port my Chutor program from J2ME to the DS.&amp;nbsp; As well as being useful in it's own right, it will be a good test of the UI library, and my ability to port Java to C++.&lt;br /&gt;&lt;br /&gt;Once that's done, I will move onto doing the dictionary program.&amp;nbsp; I'm likely to leave the handwriting recognition to last.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-8571654196111174957?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Mar 2010 21:37:48 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: International Space Station radio link-up</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-1401323492281694413</guid>
	<link>http://capnstech.blogspot.com/2010/02/international-space-station-radio-link.html</link>
	<description>I just had a lovely evening at my kids' primary school.&amp;nbsp; A group of staff, parents and amateur radio enthusiasts have worked for months to organise a very special event: A radio link-up with the international space station.&lt;br /&gt;&lt;br /&gt;To talk to the ISS, some local amateur radio enthusiasts hooked a phone line up to the PA, and this phone line went to &lt;a href=&quot;http://glenden-ariss.org/&quot;&gt;Shane Lynd&lt;/a&gt; of Glendon, Queensland.&amp;nbsp; Using his aerial, radio equipment and phone patch, we were able to talk with astronaut Timothy &quot;T. J.&quot; Creamer while the ISS was within line-of-sight of Glendon, which was about six or seven minutes.&lt;br /&gt;&lt;br /&gt;The link-up was arranged by &lt;a href=&quot;http://www.electric-web.org/&quot;&gt;Tony Hutchison&lt;/a&gt; of Kingston SE, South Australia, who coordinates &lt;a href=&quot;http://www.rac.ca/ariss/oindex.htm&quot;&gt;ARISS&lt;/a&gt; (Amateur Radio on the International Space Station).&amp;nbsp; ARISS lets crew members talk with family and schools, and provides backup comms with the station.&amp;nbsp; There's a nice video about Tony's work here&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://www.youtube.com/watch?v=2KL8TGTUBTU&quot;&gt;http://www.youtube.com/watch?v=2KL8TGTUBTU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The students took turns to say their name, ask their question, and finish with &quot;over&quot;.&amp;nbsp;&amp;nbsp; Here's the list of questions, plus my unreliable recollection of the answer T. J. gave [and some comments by me]:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;At what stage in your life did you decide you wanted to be an astronaut?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said it wasn't a sudden choice, a lot of things he'd done beforehand prepared him for it and when he had the chance, he said yes.&amp;nbsp; [His bio is &lt;a href=&quot;http://www.jsc.nasa.gov/Bios/htmlbios/creamer.html&quot;&gt;here&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Does living in a zero gravity environment cause long term health problems?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are changes to bone density, to the muscles of the heart, and even to the structure of the eye.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How far have astronauts ever been in space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;To the moon.&amp;nbsp; Most people don't realise that only 12 people have been to the moon.&amp;nbsp; Everything else has been done in low Earth orbit.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Who was the youngest astronaut to go into space? How old was she or he?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;T. J. didn't know the answer to this one, but he suggested that the student go to &lt;a href=&quot;http://nasa.gov/&quot;&gt;nasa.gov&lt;/a&gt; or Google for it.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How do you exercise in space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said he uses a treadmill, with bungees that keep him in place so he doesn't float away.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How did you get into space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said he was &lt;a href=&quot;http://suzymchale.com/ruspace/ceremonies.html&quot;&gt;launched&lt;/a&gt; on a &lt;a href=&quot;http://en.wikipedia.org/wiki/Soyuz_%28rocket_family%29&quot;&gt;Soyuz&lt;/a&gt; rocket from Baikonur Khazakstan.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;What if there is a fire? Can you get rescued?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said that the space station is designed so that in general, things can't catch fire.&amp;nbsp; But if there was a fire, they'd cut the power and the fire would likely go out.&amp;nbsp; They can also use fire extinguishers.&amp;nbsp; If the fire was too serious, they could come home in the Soyuz capsule that is always docked to the station.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;What’s the most interesting thing about space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said floating around, and looking at the Earth.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How do you drink in space because there is no gravity in space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He told us about how they drink from fluid pouches.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How do you control the space ship when it is floating in space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said that attitude control is done with gyrodynes [but I think he means &lt;a href=&quot;http://en.wikipedia.org/wiki/Control_moment_gyroscope#International_Space_Station&quot;&gt;control moment gyroscopes&lt;/a&gt;, as &lt;a href=&quot;http://en.wikipedia.org/wiki/Gyrodyne&quot;&gt;gyrodynes&lt;/a&gt; are a type of aircraft].&amp;nbsp; If the gyrodynes become saturated, small thruster rockets take over to correct the situation.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Are there aliens in space?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said he hadn't seen any, but he'd sure be glad to meet and talk with them.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How do you sleep in the space station?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said he zips himself into his sleeping bag, that has straps which stop him floating around.&amp;nbsp; He said he sleeps very well.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;What is your favourite food you eat in the space station?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Fresh fruit.&amp;nbsp; He said it was great when the Space Shuttle brought up some fresh fruit.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;What do you do on the space station to relax?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He mentioned that he likes to go into his bedroom and read or use the internet to research things.&amp;nbsp; [He also likes running]&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;What happens if you run out of air?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said that this is managed pretty closely from the ground, so it's unlikely to happen.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;What happens to all the rubbish from the space station?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;All the trash gets put into the &lt;a href=&quot;http://en.wikipedia.org/wiki/Progress_spacecraft&quot;&gt;Progress&lt;/a&gt; resupply vehicle, which is undocked and deorbited.&amp;nbsp; The vehicle and the trash burns up in the Earth's atmosphere.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How often do you have to do space walks to make repairs to the space station?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said that they don't generally go outside to fix things.&amp;nbsp; He said that he's done spacewalks, but he's not scheduled to do any spacewalks on this expedition.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;When you are in space are you ever nervous about anything?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He said that in general, he's not.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;When you swallow your food, does it feel funny in your stomach when in zero gravity?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;[&lt;i&gt;out of range&lt;/i&gt;]&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Unfortunately the 19th question couldn't be asked, as the station had moved out of range.&amp;nbsp; I feel sorry for that student.&amp;nbsp; If I was that student, that would be one of my &quot;life's regrets&quot;.&amp;nbsp; (And I have so few)&lt;br /&gt;&lt;br /&gt;In all, well over 200 people enjoyed the evening.&amp;nbsp; A big thank you to T.J., Tony, Shane, the local amateur radio enthusiasts, and all the others who made this possible.&amp;nbsp; It was certainly a night I'll never forget!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-1401323492281694413?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 26 Feb 2010 14:32:27 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Hawkboard: Active discussions</title>
	<guid permalink="False">http://www.hawkboard.org/?p=29</guid>
	<link>http://www.hawkboard.org/http:/www.hawkboard.org/%post%</link>
	<description>&lt;p&gt;
&lt;p&gt;Subscribe to RSS headline updates from: &lt;a href=&quot;http://feeds.feedburner.com/HawkboardGoogleGroup&quot;&gt;&lt;/a&gt;&lt;br /&gt;Powered by FeedBurner&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 26 Feb 2010 11:32:44 +0000</pubDate>
</item>
<item>
	<title>Zedstar: Guile on a Ben NanoNote</title>
	<guid>http://zedstar.org/blog/?p=183</guid>
	<link>http://zedstar.org/blog/2010/02/25/guile-on-a-ben-nanonote/</link>
	<description>&lt;p&gt;Received a &lt;a href=&quot;http://sharism.cc/products/ben-nanonote/&quot;&gt;Ben NanoNote&lt;/a&gt; today. It is a really natty little device with a lot of potential.&lt;/p&gt;
&lt;p&gt;My standard test on how hackable a device is involves getting Guile running. Anyway, it was pretty easy to accomplish this despite not using &lt;a href=&quot;http://www.openwrt.org/&quot;&gt;openWrt&lt;/a&gt; before.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
root@BenNanoNote:~#&lt;br /&gt;
root@BenNanoNote:~# guile&lt;br /&gt;
guile&amp;gt; (map (lambda (x) (+ x 1)) '(1 2 3 4 5))&lt;br /&gt;
(2 3 4 5 6)&lt;br /&gt;
guile&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To install get the 3 xburst packages from &lt;a href=&quot;http://zedstar.org/guile/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy Scheming!&lt;/p&gt;</description>
	<pubDate>Thu, 25 Feb 2010 22:58:36 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: Openmoko devroom at the fosdem</title>
	<guid>tag:blog.hackable1.org,2010://1.12</guid>
	<link>http://blog.hackable1.org/2010/02/openmoko-devroom-at-the-fosdem.html</link>
	<description>Hello hackable:1 users !&lt;br /&gt;&lt;br /&gt;Serdar Dere, from #openmoko-cdevel managed to get a devroom at this year's fosdem for the openmoko community !&lt;br /&gt;First things first, huge thanks to him.&lt;br /&gt;&lt;br /&gt;Second, we get the room on Sunday morning and the schedule is &lt;a href=&quot;http://www.fosdem.org/2010/schedule/devrooms/openmoko&quot;&gt;here&lt;/a&gt;. As you can see, it is full of talks and hackable:1 has a slot.&lt;br /&gt;&lt;br /&gt;Meet you there ! Who's coming ?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT:&lt;/b&gt; &lt;a href=&quot;http://islibre.org/%7Edeubeuliou/openmoko/h1_fosdem2010.pdf&quot;&gt;The slides&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>Mon, 15 Feb 2010 18:08:52 +0000</pubDate>
</item>
<item>
	<title>Capn's Tech: Computer assisted Chinese (part I)</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-2018623697951917116</guid>
	<link>http://capnstech.blogspot.com/2010/02/computer-assisted-chinese-part-i.html</link>
	<description>I am learning Chinese.&amp;nbsp; Since I hate doing things by hand that can be automated (and because it's much more fun to hack with the the computer than do work), I like to use the computer to help me whenever I can.&lt;br /&gt;&lt;br /&gt;For me, the hardest thing about Chinese is learning the characters.&amp;nbsp; Unless you're actively learning and reviewing them &lt;i&gt;every day&lt;/i&gt;, you're forgetting.&amp;nbsp; And the techniques I've seen my classmates use (such as just writing them a few times) doesn't seem to help me.&lt;br /&gt;&lt;br /&gt;When I was learning Chinese in 2005, I typed the word list from each chapter of the textbook into my computer.&amp;nbsp; From this, I could print the lists on labels, and make flash cards.&amp;nbsp; Each flash card had the Chinese character and the pinyin (pronounciation) on one side, and the English meaning on the other.&amp;nbsp; It took a lot of time to enter the characters, and a lot of time to make the flash cards, but I found it a very effective way of learning.&amp;nbsp; I'd stick a bundle about 6cm x 4cm and 3cm high into my pocket, and be all set to learn when I had some free time, such as waiting for a train.&lt;br /&gt;&lt;br /&gt;I'd start with all the cards in my hand, and look at each one in turn.&amp;nbsp; If I knew the card (for example, I could write the character from memory, given the meaning and the pronunciation), I'd remove that card from my hand, and put it on my discard pile.&amp;nbsp; Otherwise I'd move that card to the back of the pile I was holding.&amp;nbsp; The cards I knew well would quickly leave my hand, and my time would be spent working on the ones I didn't know.&amp;nbsp; For reasons I don't fully understand, some characters are easy for me to remember, and others give me such trouble.&amp;nbsp; It was years before I could remember to write such every-day things as 喜欢 and 意思!&amp;nbsp; When I'm learning, I might need to see some cards ten times before it will finally sink in.&lt;br /&gt;&lt;br /&gt;What I had implemented was a real-world form of a &quot;spaced repetition&quot; learning system, and it worked really well for me:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Spaced_repetition&quot;&gt;http://en.wikipedia.org/wiki/Spaced_repetition&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The drawback of this approach, as well as the preparation time, is that I ended up with a bag of some 22 bundles, which is a pile around 60cm high!&amp;nbsp; That was quite unwieldy to carry around, so I'd have to put some thought into the bundles I wanted to carry, and leave the rest at home.&lt;br /&gt;&lt;br /&gt;After a while I got tired of the physical nature of the cards, so I decided to do it with a computer program.&amp;nbsp; But lugging around a laptop is not really an option!&amp;nbsp; What could I run the software on?&lt;br /&gt;&lt;br /&gt;I eventually decided to write the app as a J2ME Java app, as J2ME programs will run on most phones.&amp;nbsp; Over the course of 2007, I worked on the program when I had some spare time (mostly on the train).&amp;nbsp; I finally released the program in 2007 as &quot;Chutor&quot;, which is a portmanteau of &quot;Chinese Tutor&quot;.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;a href=&quot;http://sf.net/projects/chutor&quot; target=&quot;_blank&quot;&gt;http://sf.net/projects/chutor&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;It shipped with the word lists from the New Practical Chinese Reader volumes I, II and III, because that was the textbook I was using at the time, but it can be tailored to take any vocab.&amp;nbsp; When I was in China in 2008, I reworked it to use the vocab of the textbooks were were using there.&lt;br /&gt;&lt;br /&gt;Although the program has a number of non-critical bugs, I find it very convenient for reviewing characters when I have a few spare&amp;nbsp;minutes:&amp;nbsp; waiting for a train, or for a few minutes before going to sleep (and yes, learning characters is very effective at inducing sleep).&lt;br /&gt;&lt;br /&gt;The missing feature I'd like most is spaced repetition (although I really want and need it, and adding it wouldn't be hard).&amp;nbsp; At the moment, if you get a character right, that character gets dropped until you go and select a new set of chapters.&amp;nbsp; But even so, the program is useful enough.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Give Chutor a try on your phone.&amp;nbsp; Does it work for you?&amp;nbsp; Does it help?&lt;/i&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-2018623697951917116?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 09 Feb 2010 15:35:23 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Capn's Tech: First post!</title>
	<guid>tag:blogger.com,1999:blog-8636164148965447110.post-2448321976846631671</guid>
	<link>http://capnstech.blogspot.com/2010/02/first-post.html</link>
	<description>Well, hardly surprising as it's my blog :-)&lt;br /&gt;&lt;br /&gt;I've created this blog to put tech stuff in that wouldn't appeal to the sort of people who read my other blog.  Expect stuff about electronics, creative spaces, Linux and coding.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8636164148965447110-2448321976846631671?l=capnstech.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 08 Feb 2010 18:53:02 +0000</pubDate>
	<author>noreply@blogger.com (mjd)</author>
</item>
<item>
	<title>Geoffrey L. Barrows - DIY Drones: Micro Helicopter Hovering in Place Using Vision Sensing</title>
	<guid>tag:diydrones.com,2010-01-27:705844:BlogPost:135537</guid>
	<link>http://diydrones.com/xn/detail/705844:BlogPost:135537</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://api.ning.com/files/Fyz9lPoEiAtyq9xMrdHQrtHzXPEMZpDRyvbuUxw*2V1xkB2otkCdtMDcEO*icRWK/Heli_YawRing_June2009.jpg?width=737&amp;height=565&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;
 
&lt;br /&gt;&lt;small&gt;&lt;a href=&quot;http://www.diydrones.com/video/video&quot;&gt;Find more videos like this on &lt;em&gt;DIY Drones&lt;/em&gt;&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
 
&lt;br /&gt;&lt;small&gt;&lt;a href=&quot;http://www.diydrones.com/video/video&quot;&gt;Find more videos like this on &lt;em&gt;DIY Drones&lt;/em&gt;&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
Some of you may have seen &lt;a href=&quot;http://www.centeye.com/pages/techres/techres.html&quot; target=&quot;_blank&quot;&gt;Centeye's old website&lt;/a&gt; showing our earlier work flying optical flow sensors on small RC-class aircraft. Much of this work was sponsored by DARPA and the U.S. Air Force. More recently we have been hacking an eFlite Blade mCX, a very stable small 7&quot; contra-rotating coaxial helicopter.&lt;br /&gt;
&lt;br /&gt;
The helicopter is a basic mCX airframe, minus the front canopy, and with the out-of-box green receiver / controller board replaced with one of our own design. Our own board sports an Atmel AVR32 microcontroller and an AT86RF230 wireless chip as well as carbon resistor strips and transistor circuits to implement the swashplate servos and rotor speed controllers. We have also integrated into the board a 6DOF IMU using standard MEMS components.&lt;br /&gt;
&lt;br /&gt;
In front of our controller board is a sensor ring with eight custom designed vision sensors mounted on a flexible circuit board and a processor board having another AVR32. They are stacked vertically via 0.8mm board-to-board connectors- Thank You cell phone industry! The processor board operates the eight vision sensors (which form an nice parallel system), acquires the imagery, computes optical flow, and sends high level control signals to the controller board. The whole sensor ring, including processor, flexible ring, vision sensors, and optics together weigh about 3 grams.&lt;br /&gt;
&lt;br /&gt;
Using a variation of control algorithms developed by &lt;a href=&quot;http://www.avl.umd.edu/&quot; target=&quot;_blank&quot;&gt;Sean Humbert's lab&lt;/a&gt; at the University of Maryland at College Park, we were able to have this helicopter &quot;hover in place&quot; for up to six minutes straight. We could even perturb the helicopter slightly by manually moving it, and it would attempt to return to its original position. We have been able to get this demonstration working in a variety of room sizes and illumination levels. For these experiments, we did not use the IMU- the helicopter held its position (including yaw angle) using purely visual information. The man in the videos above is Travis Young, who has been executing the control aspects of this project at Centeye.&lt;br /&gt;
&lt;br /&gt;
Just to make it clear- All sensing, processing, and control is being performed on the helicopter. There is no human in the loop in these videos.&lt;br /&gt;
&lt;br /&gt;
Centeye is participating in the NSF-funded &lt;a href=&quot;http://robobees.seas.harvard.edu/&quot; target=&quot;_blank&quot;&gt;Harvard RoboBees project&lt;/a&gt;, led by Harvard EECS professor Rob Wood. As part of this project, we will be building vision sensors weighing on the order of tens of milligrams. If all goes well, we should have our first prototype at this scale by this summer!&lt;br /&gt;
&lt;br /&gt;
The RoboBee project will also let us do something that I personally have been wanting to do for a long time- to develop a portfolio of purely consumer/academic/hobbyist vision sensors that I can get into the hands of people like the members of this community! I'll be starting a thread soon in the &quot;Sensors and IMUs&quot; forum where I'd enjoy discussing this with everyone.</description>
	<pubDate>Wed, 27 Jan 2010 21:30:00 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: UNSW Advanced OS about L4</title>
	<guid permalink="False">http://vm-kernel.org/blog/?p=206</guid>
	<link>http://vm-kernel.org/blog/2010/01/22/unsw-advanced-os/</link>
	<description>&lt;p&gt;For someone who is interested in OS and micro-kernel especially L4.&lt;/p&gt;
&lt;p&gt;Part 1:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Part 2:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-206&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Part 3:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Part 4:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Part 5:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Part 6:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Part 7:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Part 8:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560592/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2010/01/22/unsw-advanced-os/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560592/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560592/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 22 Jan 2010 08:18:05 +0000</pubDate>
</item>
<item>
	<title>Methril: A lot of time without news</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-8738228990853656383</guid>
	<link>http://openblog.methril.net/2010/01/lot-of-time-without-news.html</link>
	<description>I've been busy with my daily/paid job, and i have not be able to put any update to this blog.&lt;br /&gt;We start a new year and it's time to post some updates of whats going on from my part ;)&lt;br /&gt;&lt;br /&gt;First, i'm moving to Brazil. This give me a lot of headaches, as i need to do a lot of paperwork. I'm almost finishing this issue, as i'm going to travel in 9 days!!&lt;br /&gt;&lt;br /&gt;I would like to say thank you to my TuxBrain coleages (we get fun together and we work nicely together); i could not forget IdaSystems (that always believe in my hard work); news projects evolving like Genesi-USA (they finally sent me the EfikaMX board!! :D), Qi-hardware, Harald Welte &amp;amp; other hackers that are giving some GSM freedom :D; all OpenEmbedded hackers, that give me one of the better development tools that i never tested; all SHR &amp;amp; Openmoko comunity (they persist on this device and give us some usable software in that piece of hardware - and maybe a little bit more); and all the FOSS developers/hackers &amp;amp; communities that i'm involved :D (i don't have enough space to put all of them here).&lt;br /&gt;&lt;br /&gt;I don't know if i'm going to post anything before i move, but.. this is my first 2010 post &amp;amp; i'm really happy with my future plans.&lt;br /&gt;&lt;br /&gt;See you soon (from the south hemisphere) :D&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-8738228990853656383?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 20 Jan 2010 21:43:40 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Bearstech Hackable:1: New feature for rev5: h1settings</title>
	<guid>tag:blog.hackable1.org,2009://1.5</guid>
	<link>http://blog.hackable1.org/2009/08/new-feature-for-rev5-h1settings.html</link>
	<description>In this article I'm going to describe a new feature which will be available in rev5: h1settings.&lt;br /&gt;&lt;br /&gt;h1settings is a library which handles the global settings of the phone. It is a basic wrapper upon some gconf keys and has functions to :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;read and update key values&lt;br /&gt;&lt;/li&gt;&lt;li&gt;listen to gconf key changes&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Currently, only a few keys are available :&lt;br /&gt;&lt;br /&gt;Device states :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;gprs on/off : /desktop/h1/phone/enable_gprs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;gsm on/off : /desktop/h1/phone/enable_gsm&lt;br /&gt;&lt;/li&gt;&lt;li&gt;gps on/off : /desktop/h1/gps/enable_gps&lt;br /&gt;&lt;/li&gt;&lt;li&gt;wifi on/off : /desktop/h1/phone/enable_wifi&lt;br /&gt;&lt;/li&gt;&lt;li&gt;bluetooth on/off : /desktop/h1/phone/enable_bluetooth&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Power management :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;power management enabled / disabled&lt;/li&gt;&lt;/ul&gt;The idea behind this library is to add loose coupling between
components. For example the power management key is used by the gsm
applet when a call is in progress (to fix this silly bug: http://trac.hackable1.org/trac/ticket/42 ) in order to disable power management (i.e. suspend). The gsm
applet does not know how to disable PM but neod knows.&lt;br /&gt;
&lt;br /&gt;Currently, all the actions related to key states except gsm are handled by neod, the central daemon. It registers itself for these keys changes and sets the state of the devices. For the gsm part, it is handled by the gsm applet because it has already everything needed to switch on/off the antenna.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Another advantage is that an independant settings app can be built very easily without any dependencies with the underlying system, and this app already exists : h1settings.&lt;br /&gt;See some screenshots below :&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-1-13.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-1-thumb-480x640-13.png&quot; alt=&quot;h1settings-1.png&quot; class=&quot;mt-image-center&quot; height=&quot;640&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-2-16.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/h1settings-2-thumb-480x640-16.png&quot; alt=&quot;h1settings-2.png&quot; class=&quot;mt-image-center&quot; height=&quot;640&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:30:21 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: Running hackable:1 on the ROAD Officer S101</title>
	<guid>tag:blog.hackable1.org,2009://1.6</guid>
	<link>http://blog.hackable1.org/2009/08/running-hackable1-on-the-road-officer-s101.html</link>
	<description>Within my position for the promotion of free, open-source hardware solutions in general (and currently, telephony in particular), I am of course trying to keep in touch with the latest developments in this field. Eventually, I have met the fine people at &lt;a href=&quot;http://www.road.de/&quot;&gt;ROAD&lt;/a&gt;, a small company in Berlin developing a phone: the &lt;a href=&quot;http://www.road.de/en/handypcs/officer.html&quot;&gt;Officer S101&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you don't know about it already, its form-factor will remind you of the Nokia Communicator: from the outside, it looks like a regular candy-bar phone, but it also reveals a full keyboard and wide-screen display when opened. What interests us here is that its inside is open, too :)&lt;br /&gt;&lt;br /&gt;The device is not in production yet, but they have been so kind as to let me borrow a sample for a while, which I demonstrated during my &lt;a href=&quot;https://wiki.har2009.org/page/Workshop:OpenMoko&quot;&gt;hackable:Device workshops&lt;/a&gt; at &lt;a href=&quot;https://wiki.har2009.org/page/Main_Page&quot;&gt;HAR2009&lt;/a&gt; by the way. This is where I managed to install &lt;a href=&quot;http://www.hackable1.org/&quot;&gt;hackable:1&lt;/a&gt; on the phone.&lt;br /&gt;&lt;br /&gt;On the hardware side, it was difficult to let it be easier to test. Let me stress first that this was a pre-production device, and all of this may be subject to changes! So here we are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the phone has an internal flash memory but can also boot on an SD card, which is conveniently replaceable without opening the phone or even removing the battery,&lt;/li&gt;&lt;li&gt;the first partition of the SD card must be formatted as a FAT filesystem,&lt;/li&gt;&lt;li&gt;I was provided with two second-stage bootloaders: one that boots the phone from flash, and the other which updates it.&lt;/li&gt;&lt;/ul&gt;Therefore, it was just a matter of copying the correct bootloader on the SD card, along with the root filesystem to flash if desired.&lt;br /&gt;&lt;br /&gt;About the software now, this device happens to use the same architecture as the &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_FreeRunner&quot;&gt;Openmoko Freerunner&lt;/a&gt; within &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;, &quot;armel&quot;. One only has then to choose the right packages, configure them accordingly and generate a filesystem archive.&lt;br /&gt;&lt;br /&gt;First, I have added a generic device definition file in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/profiles/ROAD-Officer.include&quot;&gt;trunk/build/profiles/ROAD-Officer.include&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;DEBIAN_ARCH=&quot;armel&quot;&lt;br /&gt;STRIP=&quot;arm-linux-gnueabi-strip&quot;&lt;br /&gt;&lt;/pre&gt;The &quot;STRIP&quot; line is necessary because of the way we are currently cross-compiling Debian packages: the native tools are unable to strip the binaries cross-compiled. Therefore, strap:1 is currently doing it instead, while generating the images.&lt;br /&gt;&lt;pre&gt;#this device is a phone&lt;br /&gt;. &quot;profiles/generic-phone.include&quot;&lt;br /&gt;#add bluetooth support&lt;br /&gt;. &quot;profiles/generic-bluetooth.include&quot;&lt;br /&gt;#add GPS support&lt;br /&gt;. &quot;profiles/generic-gps.include&quot;&lt;br /&gt;#add touchscreen support&lt;br /&gt;. &quot;profiles/generic-touchscreen.include&quot;&lt;br /&gt;#add wifi support&lt;br /&gt;. &quot;profiles/generic-wifi.include&quot;&lt;br /&gt;&lt;/pre&gt;This should be self-explanatory :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#packages&lt;br /&gt;#Debian&lt;br /&gt;PACKAGES=&quot;$PACKAGES&lt;br /&gt;[...]&lt;br /&gt;xserver-xorg-core&lt;br /&gt;xserver-xorg-input-kbd&lt;br /&gt;xserver-xorg-input-tslib&lt;br /&gt;xserver-xorg-video-fbdev&lt;br /&gt;zlib1g&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Unlike the Openmoko Freerunner, which has its own dedicated X server, we are using the generic framebuffer-based X server. It just works :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#specific kernel&lt;br /&gt;#FIXME still needs to be packaged&lt;br /&gt;PACKAGES_BLACKLIST=&quot;xserver-xorg-video-all&quot;&lt;br /&gt;&lt;/pre&gt;In order to gain space, we are blacklisting this meta-package: xserver-xorg-core dependencies are actually satisfied with at least one video driver installed, which is the case here.&lt;br /&gt;&lt;br /&gt;Next comes the actual profile definition, in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/profiles/ROAD-Officer-user.profile&quot;&gt;trunk/build/profiles/ROAD-Officer-user.profile&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;. &quot;profiles/ROAD-Officer.include&quot;&lt;br /&gt;#blacklist packages to gain space&lt;br /&gt;PACKAGES_BLACKLIST=&quot;bash&lt;br /&gt;debconf-i18n&quot;&lt;br /&gt;#additional dependencies adjustments&lt;br /&gt;PACKAGES=&quot;$PACKAGES&lt;br /&gt;debconf-english&quot;&lt;br /&gt;CLEAN_DOC=yes&lt;br /&gt;CLEAN_LOCALES=yes&lt;br /&gt;&lt;/pre&gt;This was directly taken from the &lt;a href=&quot;http://wiki.openmoko.org/wiki/Neo_1973&quot;&gt;Openmoko Neo1973&lt;/a&gt; profile, which has tough space constraints on the flash. Here we do not have such limitations, however it made the testing process slightly faster.&lt;br /&gt;&lt;br /&gt;Anyway, after some more tuning in &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/packages/&quot;&gt;trunk/build/packages&lt;/a&gt;, it was time to generate the filesystem archive:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$ &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/build/build.sh&quot;&gt;./build.sh&lt;/a&gt; VENDOR=ROAD MODEL=Officer PURPOSE=user archive&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;At this stage, the only missing bit was the kernel. I simply used the one already flashed onto the device, but I still needed some modules. They were of course provided to me in source and binary forms, but I don't think this kernel tree is available publicly at the moment. I am sure it will be as soon as the ROAD developers can manage.&lt;br /&gt;&lt;br /&gt;Unfortunately, I could only get this far yet. It boots all the way to the graphical user interface, where the &lt;a href=&quot;http://wiki.openmoko.org/wiki/Om2007.2&quot;&gt;Om2007.2&lt;/a&gt; design does not really fit the rather wide screen. We are currently working hard on the next release, &lt;a href=&quot;http://trac.hackable1.org/trac/milestone/rev5&quot;&gt;rev5&lt;/a&gt;, and focusing on the Openmoko Freerunner first, but I will be resuming this work soon enough!&lt;br /&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:29:59 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: Temporary issues with emdebian's toolchain solved</title>
	<guid>tag:blog.hackable1.org,2009://1.7</guid>
	<link>http://blog.hackable1.org/2009/09/temporary-issues-with-emdebians-toolchain-solved.html</link>
	<description>When cross-compiling &lt;a href=&quot;http://www.hackable1.org/&quot;&gt;hackable:1&lt;/a&gt; packages, we are relying on the &lt;a href=&quot;http://buildd.emdebian.org/debian/&quot;&gt;stable emdebian toolchain&lt;/a&gt; to compile our programs. Apparently, there &lt;a href=&quot;http://lists.debian.org/debian-embedded/2009/08/msg00128.html&quot;&gt;has been a problem last week&lt;/a&gt;, where the toolchain was &lt;a href=&quot;http://lists.debian.org/debian-embedded/2009/08/msg00137.html&quot;&gt;erroneously recompiled&lt;/a&gt; and from then on depending on packages not available on &lt;a href=&quot;http://www.debian.org/releases/lenny/&quot;&gt;Debian Lenny&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We have coordinated this issue with &lt;a href=&quot;http://emdebian.org/&quot;&gt;emdebian&lt;/a&gt;'s team, and are glad to announce that everything &lt;a href=&quot;http://lists.debian.org/debian-embedded/2009/09/msg00001.html&quot;&gt;seems to be back in order&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have been upgrading your &lt;a href=&quot;http://download.hackable1.org/cross/&quot;&gt;hackable:1 cross-compilation environment&lt;/a&gt; during this window, there is a simple way to get it to work again:&lt;br /&gt;&lt;pre&gt;# apt-get remove --purge libgcc1-armel-cross&lt;br /&gt;# apt-get install gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then you should be able to &lt;a href=&quot;http://blog.hackable1.org/trac.hackable1.org/trac/wiki/CrossCompiler&quot;&gt;cross-compile&lt;/a&gt; again!&lt;br /&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:29:24 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: Study boot process to improve boot time</title>
	<guid>tag:blog.hackable1.org,2009://1.9</guid>
	<link>http://blog.hackable1.org/2009/09/study-boot-process-to-improve-boot-time.html</link>
	<description>&lt;p&gt;One thing I'll certainly work on in the upcoming weeks is boot time improvement. &lt;br /&gt;
So far, booting takes quite a long time. But instead of looking at my clock when powering up my FreeRunner,
I installed a tool to go deeper in the boot process and analyse its (non-)performance.  &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/09/bootchart_small-22.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/09/bootchart_small-thumb-600x352-22.png&quot; alt=&quot;bootchart_small.png&quot; class=&quot;mt-image-center&quot; height=&quot;352&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
This tool is called Bootchart-lite, a clone of the well known Bootchart on desktop systems. &lt;br /&gt;
That's a basic rewrite from embedded systems that create similar logs as its big brother bootchart, meaning bootchart can compute them.  &lt;/p&gt;

&lt;p&gt;If you are interested in working on boot time improvement, you should install it !  &lt;/p&gt;



&lt;p&gt;&lt;i&gt;&lt;b&gt;&lt;em&gt;Uboot configuration&lt;/em&gt;&lt;/b&gt;&lt;/i&gt; &lt;/p&gt;

&lt;p&gt;The bootloader must be configured to add a kernel parameter. Here is the way for Uboot. Adapt it for Qi if you use it.  &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    # apt-get install fso-utils # from FSO
    # mkdir /tmp/uboot &amp;amp;&amp;amp; cd /tmp/uboot
    # dfu-util -a u-boot_env -U env.u-boot
    # uboot-envedit -i env.u-boot -p &amp;gt; env_modified.u-boot.tx
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Edit env_modified.u-boot.txt to tell the kernel to use bootchart-lite instead of init as first process.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    boot_menu_timeout=300
    bootargs_base=rootfstype=jffs2 root=/dev/mtdblock6 quiet bootlevel=8 init=/usr/bin/bootchart-lite console=ttySAC2,115200 console=tty0 loglevel=8 regular_boot
    ...

    # uboot-envedit -i env.u-boot -f env_modified.u-boot.txt -o env_modified.u-boot
    # dfu-util -a u-boot_env -D env_modified.u-boot
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;&lt;em&gt;* Install the packages *&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;On your FreeRunner running Hackable:1, install bootchart-lite:
(As of september, 18, it is packaged for daily builds, and will be packaged for rev5)  &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    hackable1# apt-get install bootchart-lite
    hackable1# reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;&lt;b&gt;Get data and render the image&lt;/b&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On your computer, install bootchart-view (from the big brother bootchart project), and get the logs. &lt;br /&gt;
Then, render the PNG (or SVG) image.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    # apt-get install bootchart-view 
    $ scp -r root@hackable1:/etc/bootchart-lite .
    $ cd bootchart-lite
    $ tar czf bootchart.tgz *.log
    $ bootchart -f png bootchart.tgz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the most difficult step :)  !&lt;/p&gt;

&lt;p&gt;I'll have a look on that later, I'm focusing on rev5 for now.  &lt;/p&gt;

&lt;p&gt;Eh ! There are &quot;beta2&quot; images available on http://build.hackable1.org. Would you
give it a try ?  &lt;/p&gt;

&lt;p&gt;Please let us know how you like it and if bugs remain !&lt;/p&gt;</description>
	<pubDate>Tue, 22 Dec 2009 14:29:05 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: Hackable:1 rev5 is out !</title>
	<guid>tag:blog.hackable1.org,2009://1.11</guid>
	<link>http://blog.hackable1.org/2009/12/hackable1-rev5-is-out.html</link>
	<description>&lt;p&gt;Dear Hackable:1 users,&lt;br /&gt;&lt;br /&gt;After rev5rc1, we spent hours and hours debugging this or improving that to finally get the rev5 out today. Yep, that's right: &lt;b&gt;hackable:1 rev5 (Codename: Chuck) is there&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-28.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-thumb-300x385-28.png&quot; alt=&quot;Xbackground.png&quot; class=&quot;mt-image-center&quot; height=&quot;385&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;First of all, you can grab the different flavours (user for the flash and developer for the SD) here: &lt;a href=&quot;http://download.hackable1.org/rev5&quot;&gt;http://download.hackable1.org/rev5&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;font&gt;Changelog&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;Here are the changes since rev4:&lt;br /&gt;&lt;br /&gt;
&lt;font&gt;+ End users matters&lt;/font&gt;&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Most of the software stack now runs under the 'hackable1' user, for security purposes.&lt;/li&gt;&lt;li&gt; SMS proper implementation&lt;/li&gt;&lt;li&gt; The contact list bug has been found and fixed!&lt;/li&gt;&lt;li&gt;Power management improvements, suspend works, bluetooth and wifi are no longer turned on by default.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An application called 'h1settings' can be used to configure phone features, (enable / disable &lt;span class=&quot;caps&quot;&gt;GSM &lt;/span&gt;/ Wireless / &lt;span class=&quot;caps&quot;&gt;GPS, &lt;/span&gt;power management, ...) as well as time and date.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; We created a new theme to celebrate this new release!&lt;br /&gt;&lt;/li&gt;&lt;li&gt; We got a splashscreen! It features a Chuck figure to reflects the rev5 codename: Chuck&lt;/li&gt;&lt;li&gt;For those who used to love the games on OM2007.2, we put them back !&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Boot time seems to have been improved a bit&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;font&gt;+ Power users / developers matters&lt;/font&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; This rev5 release has entirely been built from the automatic build system.&lt;/li&gt;&lt;li&gt; A Linux kernel is now packaged in hackable:1, in order not to rely on fso-pkg anymore.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;    Debugging has been disabled (boot time improvement)&lt;/li&gt;&lt;li&gt;    Easier kernel upgrade when using an ext2 partition to store the kernel on µSD cards&lt;/li&gt;&lt;li&gt;    Separation of kernel modules in three sets: essential (comes with the kernel), common modules and &quot;more modules&quot;&lt;/li&gt;&lt;li&gt;    You can read a bit on &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&quot;&gt;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;CDBS &lt;/span&gt;is now used for some packages.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;the package h1packtools contains a CDBS rule that may suffice for simple programs with the autotools&lt;/li&gt;&lt;li&gt;this rule also enables cross-compilation ; it is based on previous works on this subject&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Git repositories can now be used as sources for remote projects.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;font&gt;Where can I find it? Where can I get it? I didn't understand last time, so I ask again : what is the answer to the ultimate question about life, the universe, and everything?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
As ever, you can download hackable:1 on &lt;a href=&quot;http://download.hackable1.org/rev5&quot;&gt;http://download.hackable1.org/rev5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
All the necessary information can be found on &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org&lt;/a&gt; as ever, that is documentation, installation instructions as well as known issues.&lt;br /&gt;&lt;br /&gt;
It's obvious that the answer to the aforementioned question is &quot;Chuck&quot;.&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;&lt;font&gt;Who should I thank for all that stuff?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
Among the people who worked on this release, the most notorious are (alphabetically):&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Marcus Bauer (mbauer)&lt;/li&gt;&lt;li&gt;Jérome Blondon (jbl2024)&lt;/li&gt;&lt;li&gt;Sébastien Bocahu (zecrazytux)&lt;/li&gt;&lt;li&gt;Pierre Pronchery (khorben)&lt;/li&gt;&lt;li&gt;David Wagner (Deubeuliou)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
We'd also like to thank all the testers, among them most notably Bearstech employees, and regular contributors/users of hackable:1, who kept us going forward.&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;&lt;font&gt;What should I expect next?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;Due to a very good number of good reasons, which could all of them be summed up by a minute of one of khorben's rants against libgsmd, we'll switch to Freesmartphone.Org for rev6.&lt;br /&gt;We will also switch from xserver-xglamo to xserver-xorg for the sake of more responsive graphics.&lt;br /&gt;On the developer side, we will of course continue to improve the packaging system and lower the entry barrier.&lt;br /&gt;&lt;br /&gt;All in all, more reliable &lt;span class=&quot;caps&quot;&gt;GSM &lt;/span&gt;&amp;amp; suspend, and almost all the features one may need. Stay tuned!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The hackable:1 team&lt;br /&gt;</description>
	<pubDate>Tue, 22 Dec 2009 13:27:04 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Migrating from VMware to KVM</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-3228659772707609407</guid>
	<link>http://blog.gbraad.nl/2009/12/migrating-from-vmware-to-kvm.html</link>
	<description>A lot of reports on the internet talk about the reduction of costs when you invest in virtualization. This is something I will certainly not deny after many years of experience with VMware Workstation, VMware Fusion, VMware GSX (now VMware Server) and VMware ESX and having implemented several high-availability setups using ESX. Even at home I had several whitebox servers with &lt;a href=&quot;http://picasaweb.google.com/lh/photo/9ftwxi4UAsNwhjDJK1bIFQ&quot;&gt;Virtual Center&lt;/a&gt;... until I migrated away to KVM. In this article I will explain the reason of the migration and how to perform it with an example.&amp;nbsp;It is written towards people who currently run VMware GSX or VMware Server on Linux.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;br /&gt;It is undeniable that virtualization provide you with a lot of benefits; consolidation of servers will save you money. Maintaining your virtualized servers becomes a breeze, since they are all accessible from a single front-end. But implementing your environment on VMware comes at a price... even for the free version VMware Server; maintenance.&amp;nbsp;You will still need to monitor your virtualization servers for performance and distribute your virtual machines among your servers or resource pools according to load. Although there are tools available to assist you, it is not the biggest issue.&lt;br /&gt;&lt;br /&gt;VMware Server requires an additional operating system like Linux (or Windows). This introduces an added maintenance dependency; kernel modules which VMware uses need to be recompiled when the kernel gets updated. If a security exploit is found in the kernel, the virtualization host can be compromised and therefore jeopardize the continuity of your business. To prevent this, you update the kernel, but on reboot you notice that VMware does not start properly. On the command line you will need to perform a &lt;i&gt;vmware-config.pl&lt;/i&gt; which build the modules. Unfortunately, your kernel headers are newer and either&lt;i&gt; vmmon&lt;/i&gt; (virtual machine monitor) or &lt;i&gt;vmnet&lt;/i&gt; (network component) does not build properly. Because of this, your whole infrastructure is offline until VMware provides new components or the release of the community patch package '&lt;a href=&quot;http://communities.vmware.com/message/76957&quot;&gt;vmware-any-any&lt;/a&gt;'.&lt;br /&gt;&lt;br /&gt;Users of VMware ESX will not have this issue, since the operating system and modules are provided in the form of the VMware's &lt;i&gt;vmkernel&lt;/i&gt;. If a security update is needed, you only need to install an update. The previously mentioned&amp;nbsp;issue &amp;nbsp;has happened to me often enough and I&amp;nbsp;I wanted to have the same solution as ESX, but with the convenience of using Un*x/Linux experience for maintenance without the dependency of a&amp;nbsp;third-party&amp;nbsp;product. Since RHEL 5.4 this is provided as an enterprise supported solution;&amp;nbsp;KVM, the&amp;nbsp;&lt;a href=&quot;http://www.linux-kvm.com/&quot;&gt;Kernel-based Virtual Machine&lt;/a&gt;, once developed by Qumranet and now owned by RedHat. And by using &lt;a href=&quot;http://www.centos.org/&quot;&gt;CentOS&lt;/a&gt; this is available to everyone without too much trouble.&lt;br /&gt;&lt;br /&gt;There are some differences between VMware and KVM. KVM is provided as part of the kernel, so any Linux distribution can provide it as part of their offering. KVM supports different formats for a virtual&amp;nbsp;hard disk, while VMware only uses their own VMDK format. VMware can run in a full virtualized mode and is therefore suitable for older hardware. KVM needs a processor that provides &lt;a href=&quot;http://en.wikipedia.org/wiki/X86_virtualization#Hardware_support&quot;&gt;VT-x (Intel) or AMD-V (AMD)&lt;/a&gt; to operate. VMware can run x86_64 guests on a i686 host, while KVM can not.&lt;br /&gt;&lt;br /&gt;Because of this last reason, I had to reinstall CentOS on one of my systems, since it still ran an i686 version of CentOS 5.4 (on a Core2Duo E6600). This provides a good overview of what needs to be done to run KVM on CentOS.&lt;br /&gt;&lt;br /&gt;Note: since KVM uses &lt;i&gt;qemu&lt;/i&gt; to emulate any hardware you can also choose to use qemu without KVM as the hypervisor, but instead use the kqemu kernel module.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/ncEH8sxHtZESZKToIMuTBQ?feat=embedwebsite&quot;&gt;&lt;img src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/SyVEVDP6AyI/AAAAAAAAHwE/INGRcuIqpW0/s288/host-install.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;You will need to &lt;a href=&quot;http://mirror.centos.org/centos/5/isos/&quot;&gt;download&lt;/a&gt; an installation disc of CentOS 5.4. Prefer to use the x86_64 version;&amp;nbsp;&lt;i&gt;CentOS-5.4-x86_64-bin-DVD.iso&lt;/i&gt;. During the installation you can keep the default settings and when asked for the 'additional tasks' you will perform, do not select the 'Virtualization' option. After the installation finished, you will need to update the system to the latest updates.&lt;br /&gt;&lt;br /&gt;From the reinstall I noticed a minor error in the CentOS 5.4 x86_64 installation. Due to installing openssl.i686 it also installed a lot of other standard i386-arch libraries. You can find out if you also have those packages installed as described in a &lt;a href=&quot;http://blog.gbraad.nl/2009/08/accidently-installed-i386-packages-on.html&quot;&gt;earlier post&lt;/a&gt;. If you also want to remove those packages, perform the following command line option before continuing.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ rpm -e `rpm -qa --qf '%{name}.%{ARCH}\n' |grep i386` openssl.i686&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;To update your system:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum update&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If your system is up-to-date, continue to install the needed packages for KVM and &lt;a href=&quot;http://virt-manager.et.redhat.com/&quot;&gt;Virt-Manager&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum install bridge-utils kvm kvm-qemu virt-manager virt-viewer python-virtinst&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In later versions of CentOS it might suffice to issue the command &quot;&lt;i&gt;yum groupinstall 'Virtualization'&lt;/i&gt;&quot;, but currently this installs a Xen enabled kernel. According to the used processor, you can test to load the needed kernel module and start the &lt;i&gt;libvirt&lt;/i&gt; daemon.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ modprobe kvm&lt;br /&gt;$ modprobe kvm-intel &lt;i&gt;(or kvm-amd)&lt;/i&gt;&lt;br /&gt;$ service libvirtd start&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;I normally use a different management workstation. And as an example I use a Fedora 12 installation to connect to the virtualization host (beibei). First from a tunneled connection to the host (with X11 forwarding).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ ssh -X root@beibei&lt;br /&gt;root@beibei's password: **************&lt;br /&gt;# virt-manager&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This will start the Virtual Machine Manager from which you can create new instances.&amp;nbsp;You can of course use a Gnome desktop from the CentOS system to manage your virtual machines, but it pays off to try a seperate management workstation. This will allow you to try additional features, like live migrations between KVM virtualization servers.&lt;br /&gt;&lt;br /&gt;This is all it needs to install KVM on a CentOS 5.4 installation. For an earlier version of CentOS, it is best to consult the &lt;a href=&quot;http://wiki.centos.org/HowTos/KVM&quot;&gt;wiki article about KVM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Network settings&lt;/b&gt;&lt;br /&gt;A default VMware Server installation will bridge the network card you have. You will probably want to have the same configuration for your KVM environment. For this you need standard Linux bridging utilities.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum install bridge-utils&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You only need to edit (or create) some network-scripts to make a bridge work.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ vi /etc/sysconfig/network-scripts/ifcfg-eth0&lt;br /&gt;DEVICE=eth0&lt;br /&gt;&lt;s&gt; HWADDR=00:1a:2b:3c:4d:5e&lt;/s&gt;&lt;br /&gt;ONBOOT=yes&lt;br /&gt;BRIDGE=br0&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And create the bridge&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ vi /etc/sysconfig/network-scripts/ifcfg-br0&lt;br /&gt;DEVICE=br0&lt;br /&gt;&lt;s&gt; BOOTPROTO=dhcp&lt;/s&gt;&lt;br /&gt;ONBOOT=yes&lt;br /&gt;TYPE=Bridge&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When you start the network again, you will have a &lt;i&gt;br0&lt;/i&gt; and &lt;i&gt;eth0&lt;/i&gt; device.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ service network restart&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You will now be able to select a bridged network card inside the KVM virtual machine configuration. If you have more network card, create a bridge per network card.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Converting the virtual disk files&lt;/b&gt;&lt;br /&gt;For the migration part I choose a virtual machine who once began it's life as a &lt;a href=&quot;http://picasaweb.google.com/lh/photo/D73i0Oqxov1U7lrY9e4s8A&quot;&gt;physical machine&lt;/a&gt;; forum.survion.net. It is a Linux installation once based on FC3, &lt;a href=&quot;http://blog.gbraad.nl/2009/01/wizard-of-yum-upgrade-from-fc3-to.html&quot;&gt;got migrated to CentOS&lt;/a&gt;... and then&amp;nbsp;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/qH4c-INqH_WZ-QaP3Qlvvw&quot;&gt;ran as a VMware virtual machine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The VMware virtual machine consists of one or more hard disk files, with the extension &lt;i&gt;.vmdk&lt;/i&gt; and a description file, with the extension &lt;i&gt;.vmx&lt;/i&gt;. A listing of &lt;i&gt;server-forum.vmwarevm&lt;/i&gt; looks like:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;[root@beibei server-forum.vmwarevm]# ls -al&lt;br /&gt;total 29405144&lt;br /&gt;drwxr-xr-x  2 root users        4096 Dec 12 20:53 .&lt;br /&gt;drwxr-xr-x 21 root root         4096 Dec  9 17:32 ..&lt;br /&gt;-rwxr-xr-x  1 root vmware       8684 Dec  7 21:09 nvram&lt;br /&gt;-rw-------  1 root vmware          0 Jan  3  2009 Red Hat Linux.vmsd&lt;br /&gt;-rwxr-xr-x  1 root vmware       2369 Dec  7 21:09 Red Hat Linux.vmx&lt;br /&gt;-rw-r--r--  1 root vmware        268 Jan  3  2009 Red Hat Linux.vmxf&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 storage-f001.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:20 storage-f002.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:21 storage-f003.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:20 storage-f004.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 storage-f005.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Aug 30 14:45 storage-f006.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 storage-f007.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Oct 25 19:18 storage-f008.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Nov 30 04:05 storage-f009.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Nov 30 04:04 storage-f010.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware    2621440 Jul 23  2008 storage-f011.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware        749 Dec  7 21:11 storage.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 system-f001.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 system-f002.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 system-f003.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware 2147221504 Dec  7 22:22 system-f004.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware   17659904 Jul 23  2008 system-f005.vmdk&lt;br /&gt;-rw-r--r--  1 root vmware        616 Dec  7 21:11 system.vmdk&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;As you can see, there are two hard disks (system and storage) and several other files. The hard disk as shown here is a fully allocated file which is divided up in seperate 2Gb files (handy for use on a FAT32 filesystem for portability). We have to convert it back into a monolithic file for use on KVM. Luckily KVM understands the monolithic VMDK file format, so we will choose this for interoperability. To convert the file you can use a VMware provided tool called &lt;i&gt;vmware-vdiskmanager&lt;/i&gt; (includes with VMware products).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ vmware-vdiskmanager -r system.vmdk -t 0 forum-system.img&lt;br /&gt;$ vmware-vdiskmanager -r storage.vmdk -t 0 forum-storage.img&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;After this you will have two files that need to be copied to the in the images folder of libvirt on the virtualization host (&lt;i&gt;/var/lib/libvirt/images/&lt;/i&gt;). You can do this using &lt;i&gt;scp&lt;/i&gt;, &lt;u&gt;&lt;i&gt;ftp&lt;/i&gt;&lt;/u&gt; or mount an &lt;i&gt;NFS&lt;/i&gt; export. From here we can create a virtual machine to connect these disk files to. Connect to the virtualization host and start the Virtual Machine Manager.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Create the Virtual Machine&lt;/b&gt;&lt;br /&gt;Select localhost and create a new virtual machine using the context menu. Give it a unique name that identifies it easily for you, as I did: server-forum. If KVM is installed properly, you can only select &quot;Full virtualized' from the Virtualization Method. Select the CPU architecture that fits your former VMware virtual machine and as the hypervisor: kvm.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/KHj7sXmPXBCtbNqb44TUcw&quot;&gt;&lt;img src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/SyVfP8LLpZI/AAAAAAAAHwk/Cp5_7_6JdWA/s400/virtual-method-window.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the 'Installation Method' page choose 'Network boot (PXE)' so you don't have to select a installation disk image.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/j2ubjLoplt0E0ojFQxVYdg&quot;&gt;&lt;img src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/SyVfP9IBPBI/AAAAAAAAHwo/N6rGaYgPRco/s400/install-method-window.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the 'Storage' page you deselect the 'Allocate entire virtual disk now' since we will not use the create virtual hard disk image. Beware; don't let the size become 0, since this way libvirt will not create the disk file and will fail to create the virtual machine.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/pRN911zC7BJlLixK2-Vsgg&quot;&gt;&lt;img src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/SyVgtQHV2lI/AAAAAAAAHww/wu8OISZLUss/s400/network-window.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the 'Network' page you will probably want to select the bridged network card. This gives you the same functionality as VMware did as default option. On the 'Memory and CPU Allocation page' you can adjust the settings which are most close to your former virtual machine. After the summary the virtual machine will start automatically. Immediately issue a 'Force Off' as Shut down option. Now select the 'Hardware' tab.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/87LIAgWBnsI-vJ8phrArVA&quot;&gt;&lt;img src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/SyVkYSgnagI/AAAAAAAAHw0/CYdB_F9Sf2c/s400/vm-hardware-window.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Remove the 'Disk hda' and add new hardware of the type 'Storage' and select the system file from the storage location. If you have selected the file, you will see the correct size. Do the same of the other disks you have.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/a36wVcZNSQVPekYw6xTaDw?feat=embedwebsite&quot;&gt;&lt;img src=&quot;http://lh5.ggpht.com/_ZmgfsgbGDLs/SyVl01FEfGI/AAAAAAAAHw4/kGS1x0BM_6Y/s400/vm-boot-window.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Be sure to change the boot device in the Boot options of this VM. Else it will try to start using Network (PXE) instead of the virtual hard disk.&lt;br /&gt;&lt;br /&gt;Now everything should be ok to start the virtual machine.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Issues you might encounter&lt;/b&gt;&lt;br /&gt;The conversion will probably not be without problems. For instance, I had a &lt;a href=&quot;http://bugs.centos.org/view.php?id=2912&quot;&gt;common issue with the kernel&lt;/a&gt; of the virtual machine. Due to a kernel panic it did not start properly. Fortunately tools are available to perform actions of the virtual hard disk files. One of those tools is &lt;a href=&quot;http://libguestfs.org/&quot;&gt;guestfish&lt;/a&gt;. On CentOS and Fedora you can install this tool using:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum install guestfish&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;For instance, I had to download a newer kernel and try to install this inside the virtual machine. The following commands show what I did:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ guestfish&lt;br /&gt;fs# add /var/lib/libvirt/images/forum-system.img&lt;br /&gt;fs# run&lt;br /&gt;Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory&lt;br /&gt;fs# mount /dev/sda2 /&lt;br /&gt;fs# mount /dev/sda1 /boot&lt;br /&gt;fs# upload /tmp/downloaded.rpm /tmp/kernel.rpm&lt;br /&gt;fs# command &quot;rpm -ivh /tmp/kernel.rpm&quot;&lt;br /&gt;fs# vi /boot/grub/grub.conf&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;These commands will add the &lt;i&gt;forum-system.img&lt;/i&gt; to a qemu instance. Inside the qemu instance you will then mount the mountpoints, upload the kernel RPM from the local path to the tmp inside the filesystem. From here nothing special... and then it will issue a command inside qemu to install the kernel package. This command will run inside the filesystem as if it performed the command from the commandline. Finally I verify the grub configuration and change it if necessary.&amp;nbsp;From here I was able to start the virtual machine without any errors.&lt;br /&gt;&lt;br /&gt;Note: If you convert Windows virtual machines you might encounter more issues. Those conversion steps are outside the scope of this document, but are not impossible to perform.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fedora 12&lt;/b&gt;&lt;br /&gt;The latest release of Fedora includes &lt;a href=&quot;http://fedoraproject.org/wiki/Virtualization_improvements_in_Fedora_12&quot;&gt;many improvements&lt;/a&gt; which are virtualization related. If you want to try KVM on a workstation, you should definitely try Fedora 12.&lt;br /&gt;&lt;br /&gt;Below here you can see virt-manager. The interface has changed a little. As you can see from the screenshot, it is connected to the local machine and two remote hosts. The console is shown from the remote host (using &lt;i&gt;ssh&lt;/i&gt; and &lt;i&gt;vnc&lt;/i&gt;). For this no additional configuration was needed.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/bM8ahy6bt-WhBQbJhEZEBg&quot;&gt;&lt;img src=&quot;http://lh3.ggpht.com/_ZmgfsgbGDLs/SyQVBLMeLhI/AAAAAAAAHu8/xJzllFxeT6A/s400/vm-running.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is easy to monitor the performance of a virtual machine using the Virtual Machine Manager. Here you can see the server-forum instance with an overview of CPU/Memory usage and Disk/Network activity.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/CRkLwK-4T5knIMJiiH7LfA&quot;&gt;&lt;img src=&quot;http://lh5.ggpht.com/_ZmgfsgbGDLs/SyQVBfmXuPI/AAAAAAAAHvA/E0RkzpQ_DO4/s400/vm-performance.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just a few days ago SPICE was released. This is an alternative to &lt;i&gt;vnc&lt;/i&gt; to view the console of a virtual machine. It is target towards the use of a Virtual Desktop. More information about this can be found on the &lt;a href=&quot;http://www.spice-space.org/&quot;&gt;SPICE website&lt;/a&gt;. A &lt;a href=&quot;http://www.linux-kvm.com/content/getting-started-spice-fedora-12&quot;&gt;how-to for Fedora 12&lt;/a&gt; is available.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-3228659772707609407?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 14 Dec 2009 19:14:40 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Zedstar: Scripting with Guile on Openmoko</title>
	<guid>http://zedstar.org/blog/?p=177</guid>
	<link>http://zedstar.org/blog/2009/12/05/scripting-with-guile-on-openmoko/</link>
	<description>&lt;p&gt;Having Guile running on an embedded device is very powerful. You can add scripting capabilities to a C program and avoid some of the cross compilation -&amp;gt; deploy cycles by simply editing the script to change some functionality. As an example I have taken the code from the excellent introductory article &lt;a href=&quot;http://www.ibm.com/developerworks/linux/library/l-guile/index.html&quot;&gt;Scripting with Guile&lt;/a&gt;. I packaged the code so that if you install the tarball or the ipk it will install both the binary and script to a suitable place.&lt;/p&gt;
&lt;p&gt;Tarball: &lt;a href=&quot;http://zedstar.org/tarballs/square-0.1.tar.gz&quot;&gt;http://zedstar.org/tarballs/square-0.1.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ipk: &lt;a href=&quot;http://zedstar.org/ipk/square_0.1-r0_armv4t.ipk&quot;&gt;http://zedstar.org/ipk/square_0.1-r0_armv4t.ipk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After installing Guile do:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;root@om-gta02 ~/ipks $ opkg install square_0.1-r0_armv4t.ipk&lt;br /&gt;
Installing square (0.1-r0) to root...&lt;br /&gt;
Configuring square&lt;br /&gt;
root@om-gta02 ~/ipks $ square&lt;br /&gt;
result of square is 49&lt;br /&gt;
result of square2 is 81&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 05 Dec 2009 13:44:07 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Maemo 5 SDK on Fedora 12</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-1217647278047033642</guid>
	<link>http://blog.gbraad.nl/2009/11/maemo-5-sdk-on-fedora-12.html</link>
	<description>It is possible to install the Maemo 5 SDK (final) on Fedora 12. It only takes two minor edits to the installer script. You first need to make sure you have installed Xephyr. You can do so with the command:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum install Xephyr&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;since the installer is not able to do so for other distributions than Ubuntu and debian. You can download the GUI installer script from Forum Nokia: &lt;a href=&quot;http://www.forum.nokia.com/info/sw.nokia.com/id/c05693a1-265c-4c7f-a389-fc227db4c465/Maemo_5_SDK.html&quot;&gt;Maemo 5 SDK&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the file  maemo-sdk-install-wizard_5.0.py you can change line 129 to&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;SB_PATH=&quot;/opt/scratchbox&quot;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;It is just optional. But to me this location feels more appropriate then '/scratchbox'. On my system it is linked to another location with other hardware and software development tools.&lt;br /&gt;&lt;br /&gt;The current version of the script seems to fail on Fedora because of not being able to install scratchbox due to a missing path.&lt;br /&gt;&lt;br /&gt;Change line 2311 to:&lt;br /&gt;&lt;div&gt;&lt;code&gt;exec_cmd(sb_installer_fn + opt + &quot;-s &quot; + SB_PATH)&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Change line 2351 to:&lt;br /&gt;&lt;div&gt;&lt;code&gt;cmd = &quot;%s -d -m %s -s %s&quot; % (sdk_installer_fn, self.__sdk_inst_m_opt_arg, SB_PATH)&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;This includes the Scratchbox path during the command invocation. You can then install the SDK by running the script. It will handle the download of PyQT and sip itself.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/Swm7miSGTwI/AAAAAAAAHmI/S1kcjs-efHQ/s320/maemosdk_install.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;After the install you can start Xephyr. However you can not use the -kb option:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac &amp;amp;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The first start of af-sb-init.sh failed for me with a coredump and several segmentation faults. try to close the scratchbox environment and try again.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://lh3.ggpht.com/_ZmgfsgbGDLs/SwnCCjHHqJI/AAAAAAAAHmw/4H9Wf5Dc9GM/s320/sb-af.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Note: I haven't tried it with SELinux as enforcing since I currently run my workstation as permissive. Discussion is possible on the &lt;a href=&quot;http://talk.maemo.org/showthread.php?p=386373#post386373&quot;&gt;Maemo developer's forum posting&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-1217647278047033642?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 23 Nov 2009 00:41:36 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: Using Mono 2.4 on coLinux to ease .NET development</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-6842264643622744443</guid>
	<link>http://blog.gbraad.nl/2009/03/using-mono-24-on-colinux-to-ease-net.html</link>
	<description>Currently I deal a lot with .NET development in my daily work. Most of the development is done on &lt;span&gt;Windows&lt;/span&gt;. When you need to develop cross-platform .NET you would like to use &lt;a href=&quot;http://mono-project.com/&quot;&gt;Mono&lt;/a&gt;. Mono is binary compatible with .NET and allows .NET applications to run on Linux distributions. If you would develop from Visual Studio you want to easily test the binary directly in a mono session on Linux!&lt;br /&gt;&lt;br /&gt;To test software both platforms in a convenient way mostly virtualization is chosen. Of course you can use VMware or VirtualBox when you use Windows, but you can also use &lt;a href=&quot;http://www.colinux.org/&quot;&gt;coLinux&lt;/a&gt;. coLinux is a port of the Linux kernel that allows it to run cooperatively alongside another operating system on a single machine. My choice of distribution to use on top of coLinux is the open version of SUSE, both supported by Novell.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;This description does expect you to have understanding of a Linux environment and administrative rights on your Windows system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Installation (Windows side)&lt;/span&gt;&lt;br /&gt;First of all you would need to coLinux installer. This file is available from the &lt;a href=&quot;http://www.colinux.org/&quot;&gt;coLinux website&lt;/a&gt;. The &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=98788&quot;&gt;downloads section&lt;/a&gt; will point you to the latest stable, as of writing v0.7.3. On the website of &lt;a href=&quot;http://www.henrynestler.com/&quot;&gt;Henry Nestler&lt;/a&gt; you can also find development and daily builds for 0.8.0. This installation is pretty straightforward, just keep the default settings. When the installer asks you 'Hardware installation' you need to press 'Continue anyways', this will allow the TAP network driver to be installed.&lt;br /&gt;&lt;br /&gt;To use a desktop environment from coLinux you need to install a X server. The more difficult way would be to use Cygwin/X... this way you will have a complete GNU system running on top of Windows to provide a Linux-like experience. The fastest and easy way is to use a tool like &lt;a href=&quot;http://www.straightrunning.com/XmingNotes/&quot;&gt;Xming&lt;/a&gt;. The installer you need is the Xming or Xming-portablePuTTY (Mesa is not needed). Also, this installation is quite straightforward. After the installation start the X server from the start menu (Programs → Xming → Xming).&lt;br /&gt;&lt;br /&gt;In the posting '&lt;a href=&quot;http://blog.gbraad.nl/2009/03/opensuse-111-on-colinux.html&quot;&gt;openSUSE 11.1 on coLinux&lt;/a&gt;' I described a way to make a base installation of openSUSE for use with the coLinux environment. The file 'colinux-opensuse-111.exe' (113Mb) [&lt;a href=&quot;http://delivery.vipeers.com/file_sharing?message_hash=uxpWz6Au7DMjNs8-zlaFnA==&quot;&gt;VIPeers&lt;/a&gt;] [&lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-opensuse-11.1.exe&quot;&gt;dropbox&lt;/a&gt;] contains all you need to run the openSUSE environment. As you can see from the size, it contains only a base system. After you have extracted the file, you will still need to perform some additional installations to make the Mono development work.&lt;br /&gt;&lt;br /&gt;Before you start the Mono installation inside the coLinux environment, you need to reserve a directory for your development files or some other shared directory. I choose to use '&lt;span&gt;D:\Development&lt;/span&gt;'. In the &lt;span&gt;run.txt&lt;/span&gt; file in the openSUSE directory, you can add a line which says:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cofs1=&quot;D:\Development&quot;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This will later be mounted inside the Linux environment.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Installation (Linux side)&lt;/span&gt;&lt;br /&gt;Now you can start the environment from the '&lt;span&gt;runonce.bat&lt;/span&gt;'. This one time start is needed to finalize the installation (describe in the 'openSUSE on coLinux' posting as the post-install). You will see something similar to:&lt;br /&gt;&lt;br /&gt;&lt;img alt=&quot;openSUSE 11.1 started on coLinux 0.7.3&quot; src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/ScVNslVwUgI/AAAAAAAAEB4/hVPU4voSaHA/s400/opensuse1.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Logon using the credentials: 'root' and the password 'password'. Immediately change the password using&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;passwd&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Enable the network using the command:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;for i in 0 1&lt;br /&gt;do&lt;br /&gt;cat &amp;gt; /etc/sysconfig/network/ifcfg-eth$i &amp;lt;&amp;lt; END BOOTPROTO='dhcp' STARTMODE='auto' USERCONTROL='no' END done &lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Add a mount point to your shared directory&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;mkdir /media/Development&lt;br /&gt;vi /etc/fstab&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;and add the following line to this file&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cofs1    /media/Development  cofs     defaults        0 0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;To enable the shared directory you need to mount it&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;mount /media/Development&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can now shutdown...&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;shutdown -hn now&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;... the system will halt and closes the console. From now on you are able to start the environment using the normal '&lt;span&gt;run.bat&lt;/span&gt;'. Do so and log on using your new password.&lt;br /&gt;&lt;br /&gt;Your network should now use &lt;span&gt;eth0&lt;/span&gt; as a serial line and &lt;span&gt;eth1&lt;/span&gt; as a bridged network using the device called 'Local Area Connection'. If your Windows network device is called differently, please change it in the '&lt;span&gt;run.txt&lt;/span&gt;' file. IP addresses are assigned using DHCP. The device &lt;span&gt;eth0&lt;/span&gt; will probably be assigned the address 10.0.2.15/24. For device &lt;span&gt;eth1&lt;/span&gt; this will depend on your local network settings. I will just assume that &lt;span&gt;eth1&lt;/span&gt; is configured and provides the Internet connection.&lt;br /&gt;&lt;br /&gt;To allow packages to be installed you would need to add the standard repositories to this installation.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;zypper ar http://download.opensuse.org/distribution/11.1/repo/oss/ openSUSE111&lt;br /&gt;zypper ar http://download.opensuse.org/distribution/11.1/repo/non-oss/ openSUSE111_NonOSS &lt;br /&gt;zypper ar http://download.opensuse.org/update/11.1/ openSUSE-11.1-Updates&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Enabling the User Interface&lt;/span&gt;&lt;br /&gt;You can use a full-blown desktop environment as GNOME, but since coLinux does not provide a framebuffer device it is not advisable at the moment. We will use the Xming as the X server for our desktop. The X protocol is a client/server model for user interfaces. To keep the installation small, we use a very lightweight Desktop Environment on top of X, namely &lt;a href=&quot;http://lxde.org/&quot;&gt;LXDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Install the LXDE packages using:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;OCICLI http://download.opensuse.org/repositories/home:/swyear/openSUSE_11.1/LXDE-desktop.ymp&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This will start the One-Click-Install. You will need to agree to some questions and lean back... this might take some time.&lt;br /&gt;&lt;br /&gt;If this finished, you can test if the installation finished correctly. You will need to set the &lt;span&gt;DISPLAY&lt;/span&gt; parameter to specify where the X server is running. Now let's start the appearance settings...&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;export DISPLAY=10.0.2.2:0.0&lt;br /&gt;lxappearance&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;and choose a theme that suits your current Windows theme.&lt;br /&gt;&lt;br /&gt;&lt;img alt=&quot;LX Appearance&quot; src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/ScVNslVwUgI/AAAAAAAAEB4/hVPU4voSaHA/s400/opensuse1.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;This means your desktop environment works.&lt;br /&gt;&lt;br /&gt;If you would receive a 'Gtk-WARNING **: cannot open display:' this means your connection might be blocked for some reason. Check your settings or disable a firewall/virus scanner.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Mono installation&lt;/span&gt;&lt;br /&gt;Mono will provide a Linux/Unix system with support to run .NET applications. Originally this description was written to use Mono 2.2 which was provided from the openSUSE repository. To install these packages issue a simple&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;zypper in -t pattern devel_mono&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;would be sufficient to install a development environment. To start the &lt;span&gt;Monodevelop&lt;/span&gt; you can start this using the command:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;export DISPLAY=10.0.2.2:0.0&lt;br /&gt;monodevelop &amp;amp;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt=&quot;Monodevelop&quot; src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/ScZWXVO8WHI/AAAAAAAAECA/tw29uAeVnII/s400/opensuse2.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Since the 30th of March a newer release of Mono (v2.4) is available. To install you will need to specify the mono repository and upgrade the previous installation.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;zypper addrepo http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.1 mono-stable&lt;br /&gt;zypper refresh --repo mono-stable&lt;br /&gt;zypper dist-upgrade --repo mono-stable&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can now start &lt;span&gt;Monodevelop 2.0&lt;/span&gt; and use managed debugging!&lt;br /&gt;&lt;br /&gt;That's it for now... In later posts I will automate the startup and show how to do development using this environment.&lt;br /&gt;&lt;pre&gt;Have a lot of fun...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span&gt;Notes&lt;/span&gt;&lt;br /&gt;If you think VMware provides a better solution you can make use of the files that the Mono Project provide in their &lt;a href=&quot;http://www.go-mono.com/mono-downloads/download.html&quot;&gt;download section&lt;/a&gt;. Either download the generated VMware image of the LiveCD.&lt;br /&gt;&lt;br /&gt;If you want to use GNOME as your desktop environment you are advised to remove the  &lt;span&gt;gnome-screensaver&lt;/span&gt; package and it's dependent, since it can cause issues during use. If you want to experiment with the LXDE environment, you are advised to use the &lt;span&gt;lxpanel&lt;/span&gt; and &lt;span&gt;pcmanfm&lt;/span&gt;. In a later post these will be explained in more detail.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-6842264643622744443?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 22 Nov 2009 00:30:39 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: 聚集：Fedora 12 正式发布 from LinuxTOY</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-3935713291327465801</guid>
	<link>http://blog.gbraad.nl/2009/11/fedora-12-from-linuxtoy.html</link>
	<description>以技术创新驰名的 Fedora Project 今日发布了代号 Constantine 的 Fedora 12 ，口号 Unite，取意“聚集开源软件智慧”。&lt;br /&gt;&lt;br /&gt;新特性&lt;br /&gt;&lt;ul&gt;&lt;li&gt;性能优化：在 32 位平台上全部软件包针对 i686 架构重新编译，并对 Intel Atom 处理器进行性能调优。&lt;/li&gt;&lt;li&gt;NetworkManager ：改善了对于宽带、蓝牙和 IPv6 的连接配置过程。配合 PolicyKit ，网络配置只需要点击鼠标即可轻松完成。&lt;/li&gt;&lt;li&gt;下一代 Theora 编码支持：Fedora 12 集成了最新的开源视频编解码器 Theora 1.1 版本（详情见本站&lt;a href=&quot;http://linuxtoy.org/archives/how-to-use-thoggen-to-backup-dvd-video-under-fedora.html&quot;&gt;此文&lt;/a&gt;）。&lt;/li&gt;&lt;li&gt;更好的显卡支持：针对 Nvidia Nouveau 驱动和 AMD R600/700 系列的 KMS 支持，同时为 Intel 显卡引入 DisplayPort 支持。&lt;/li&gt;&lt;li&gt;虚拟化支持：改善了 KVM 性能，并提供虚拟机磁盘镜像监控工具 guestfish。&lt;/li&gt;&lt;li&gt;自动臭虫汇报系统和 SELinux：新的崩溃收集程序 abrt 只需要点击几下鼠标即可将遇到的软件或 SELinux 提交至 Bugzilla，方便开发者修复。&lt;/li&gt;&lt;li&gt;新的 Dracut initrd 启动系统：并行、以事件为单位的 Dracut 系统进一步加快启动速度。&lt;/li&gt;&lt;li&gt;PackageKit 插件：当用户尝试运行一个包含在尚未安装的软件包中的命令时，PackageKit 可以自动提示安装相应软件包。&lt;/li&gt;&lt;li&gt;按需蓝牙服务：蓝牙服务会根据需要自动启动和停止。&lt;/li&gt;&lt;li&gt;Moblin 桌面环境：增加了 Moblin 桌面环境软件包组以及Fedora Moblin Spin 。&lt;/li&gt;&lt;li&gt;PulseAudio ：增添了 UPnP 和 DLNA 支持，可以直接将音频流发送至 PS3 等设备。同时改善了热拔插和蓝牙设备支持。&lt;/li&gt;&lt;li&gt;更加安全：降低了部分系统文件和进程的运行访问权限，避免使用 root 权限访问。同时为 SELinux 增添了沙箱支持。&lt;/li&gt;&lt;li&gt;Broadcom 固件：默认包含了 Open Broadcom 固件，对部分 Broadcom 无线网卡提供 out-of-the-box 支持。&lt;/li&gt;&lt;li&gt;混合 Live 镜像：现在只需要使用 dd 即可创建光盘或者 USB Live 镜像，不过还是推荐使用 Livecd-tools 以获得诸如保留空间等功能。&lt;/li&gt;&lt;li&gt;更好的摄像头支持：改善了部分摄像头的成象质量，尤其是很多廉价摄像头。&lt;/li&gt;&lt;li&gt;GNOME 2.28：使用 Gnote 替代了 Tomboy 成为默认便签，用 Empathy 替代了 Pidgin 成为默认即时通讯客户端。&lt;/li&gt;&lt;li&gt;GNOME-shell 预览：尽管 GNOME 3.0 延期了，但是依然可以在 Fedora 12 中提前体验下 GNOME Shell 的。&lt;/li&gt;&lt;li&gt;KDE 4.3：升级版的 Air 主题，可配置的快捷键支持，新的窗口管理器特效以及更好的红外线遥控支持。&lt;/li&gt;&lt;li&gt;开发者：Eclipse Galileo, Perl 6, PHP 5.3, Netbeans 6.7.1&lt;/li&gt;&lt;li&gt;管理员：GFS2 集群 Samba 管理&lt;/li&gt;&lt;li&gt;X.org 1.7.1：包含支持多指点设备支持的 XI2。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href=&quot;http://fedoraproject.org/wiki/Fedora_12_Announcement&quot;&gt;英文原文及详细贡献者&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://fedoraproject.org/get-fedora.html&quot;&gt;官方镜像下载&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://fedoraproject.org/wiki/Releases/12/FeatureList&quot;&gt;完整功能列表&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks &lt;a href=&quot;http://linuxtoy.org/archives/author/lovenemesis/&quot;&gt;黑日白月&lt;/a&gt;, &lt;a href=&quot;http://linuxtoy.org/archives/fedora-12-unite-golden-released.html&quot;&gt;Orginal article&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-3935713291327465801?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 18 Nov 2009 00:17:29 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: Get to know a Fedora Ambassador or User</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-6473511768138070712</guid>
	<link>http://blog.gbraad.nl/2009/11/get-to-know-fedora-ambassador-or-user.html</link>
	<description>Name: Gerard Braad&lt;br /&gt;IRC-Nick: gbraad&lt;br /&gt;IRC-Channels: #fedora-ambassadors, #maemo, #beijinglug on freenode (seldom)&lt;br /&gt;Location: Apeldoorn, NL / Beijing, CHN&lt;br /&gt;Fedora Ambassador: Netherlands&lt;br /&gt;FAS username: &lt;a href=&quot;http://fedoraproject.org/wiki/User:Gbraad&quot;&gt;gbraad&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh3.ggpht.com/_ZmgfsgbGDLs/R-Pqyv2RxRI/AAAAAAAAA5g/kwU8V4saZnA/s288/IMG_6523-800.png&quot; border=&quot;0&quot; alt=&quot;Gerard Braad&quot; /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-6473511768138070712?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 07 Nov 2009 16:14:16 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: performance of loongson 2f</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/10/30/performance-of-loongson-2f/</guid>
	<link>http://vm-kernel.org/blog/2009/10/30/performance-of-loongson-2f/</link>
	<description>&lt;p&gt;Some friends ask me about the performance of loongson2f. They want to know whether the performance of loongson 2f can surpass Marvell Sheeva CPU. Well I can not just say it's better or worse without giving the benchmark data.&lt;br /&gt;
Since there is a &lt;a href=&quot;http://computingplugs.com/index.php/SheevaPlug_Performance#CPU_performance_with_nbench-byte-2.2.3&quot;&gt;benchmark result&lt;/a&gt; of Marvell Sheeva CPU, we can run the same benchmark program on loongson 2f. The benchmark program is nbench.&lt;br /&gt;
Machine: gdium&lt;br /&gt;
OS: Debian squeeze&lt;br /&gt;
Kernel: Linux&lt;/p&gt;
&lt;p&gt;1. gcc-4.3.4&lt;br /&gt;
CFLAGS = -s -static -Wall -O3&lt;/p&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TEST&lt;/td&gt;
&lt;td&gt;Iterations/sec.&lt;/td&gt;
&lt;td&gt;Old Index&lt;/td&gt;
&lt;td&gt;New Index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Pentium 90*&lt;/td&gt;
&lt;td&gt;AMD K6/233*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NUMERIC SORT&lt;/td&gt;
&lt;td&gt;358.24.&lt;/td&gt;
&lt;td&gt;9.19&lt;/td&gt;
&lt;td&gt;3.02&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STRING SORT&lt;/td&gt;
&lt;td&gt;33.041&lt;/td&gt;
&lt;td&gt;14.76&lt;/td&gt;
&lt;td&gt;2.29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BITFIELD&lt;/td&gt;
&lt;td&gt;5.5164e+07&lt;/td&gt;
&lt;td&gt;9.46&lt;/td&gt;
&lt;td&gt;1.98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP EMULATION&lt;/td&gt;
&lt;td&gt;47.402&lt;/td&gt;
&lt;td&gt;22.75&lt;/td&gt;
&lt;td&gt;5.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FOURIER&lt;/td&gt;
&lt;td&gt;4721.1&lt;/td&gt;
&lt;td&gt;5.37&lt;/td&gt;
&lt;td&gt;3.02&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASSIGNMENT&lt;/td&gt;
&lt;td&gt;7.0534&lt;/td&gt;
&lt;td&gt;26.84&lt;/td&gt;
&lt;td&gt;6.96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IDEA&lt;/td&gt;
&lt;td&gt;1597.4&lt;/td&gt;
&lt;td&gt;24.43&lt;/td&gt;
&lt;td&gt;7.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HUFFMAN&lt;/td&gt;
&lt;td&gt;575.17&lt;/td&gt;
&lt;td&gt;15.95&lt;/td&gt;
&lt;td&gt;5.09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEURAL NET&lt;/td&gt;
&lt;td&gt;4.2065&lt;/td&gt;
&lt;td&gt;6.76&lt;/td&gt;
&lt;td&gt;2.84&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LU DECOMPOSITION&lt;/td&gt;
&lt;td&gt;107.28&lt;/td&gt;
&lt;td&gt;5.56&lt;/td&gt;
&lt;td&gt;4.01&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;==========ORIGINAL BYTEMARK RESULTS========&lt;br /&gt;
INTEGER INDEX : 16.297&lt;br /&gt;
FLOATING-POINT INDEX: 5.864&lt;br /&gt;
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0&lt;br /&gt;
==========LINUX DATA BELOW============&lt;br /&gt;
CPU                 :&lt;br /&gt;
L2 Cache            :&lt;br /&gt;
OS                  : Linux 2.6.24-gdium-1&lt;br /&gt;
C compiler          : gcc version 4.3.4 (Debian 4.3.4-5)&lt;br /&gt;
libc                : libc-2.9.so&lt;br /&gt;
MEMORY INDEX        : 3.156&lt;br /&gt;
INTEGER INDEX       : 4.918&lt;br /&gt;
FLOATING-POINT INDEX: 3.252&lt;br /&gt;
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38&lt;br /&gt;
* Trademarks are property of their respective holder.&lt;/p&gt;
&lt;p&gt;2. gcc-4.4&lt;br /&gt;
CFLAGS = -s -static -Wall -O3 -fomit-frame-pointer -funroll-loops&lt;br /&gt;
CFLAGS += -march=loongson2f  -mtune=loongson2f  -mabi=n32&lt;/p&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TEST&lt;/td&gt;
&lt;td&gt;Iterations/sec.&lt;/td&gt;
&lt;td&gt;Old Index&lt;/td&gt;
&lt;td&gt;New Index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Pentium 90*&lt;/td&gt;
&lt;td&gt;AMD K6/233*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NUMERIC SORT&lt;/td&gt;
&lt;td&gt;366.08&lt;/td&gt;
&lt;td&gt;9.39&lt;/td&gt;
&lt;td&gt;3.08&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STRING SORT&lt;/td&gt;
&lt;td&gt;46.686&lt;/td&gt;
&lt;td&gt;20.86&lt;/td&gt;
&lt;td&gt;3.23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BITFIELD&lt;/td&gt;
&lt;td&gt;4.764e+07&lt;/td&gt;
&lt;td&gt;8.17&lt;/td&gt;
&lt;td&gt;1.71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP EMULATION&lt;/td&gt;
&lt;td&gt;90.2&lt;/td&gt;
&lt;td&gt;43.28&lt;/td&gt;
&lt;td&gt;9.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FOURIER&lt;/td&gt;
&lt;td&gt;5171.9&lt;/td&gt;
&lt;td&gt;5.88&lt;/td&gt;
&lt;td&gt;3.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASSIGNMENT&lt;/td&gt;
&lt;td&gt;11.094&lt;/td&gt;
&lt;td&gt;42.21&lt;/td&gt;
&lt;td&gt;10.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IDEA&lt;/td&gt;
&lt;td&gt;1726.9&lt;/td&gt;
&lt;td&gt;26.41&lt;/td&gt;
&lt;td&gt;7.84&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HUFFMAN&lt;/td&gt;
&lt;td&gt;605&lt;/td&gt;
&lt;td&gt;16.78&lt;/td&gt;
&lt;td&gt;5.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEURAL NET&lt;/td&gt;
&lt;td&gt;9.761&lt;/td&gt;
&lt;td&gt;15.68&lt;/td&gt;
&lt;td&gt;6.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LU DECOMPOSITION&lt;/td&gt;
&lt;td&gt;215.64&lt;/td&gt;
&lt;td&gt;11.17&lt;/td&gt;
&lt;td&gt;8.07&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;==========ORIGINAL BYTEMARK RESULTS========&lt;br /&gt;
INTEGER INDEX       : 20.035&lt;br /&gt;
FLOATING-POINT INDEX: 10.100&lt;br /&gt;
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0&lt;br /&gt;
==========LINUX DATA BELOW============&lt;br /&gt;
CPU                 :&lt;br /&gt;
L2 Cache            :&lt;br /&gt;
OS                  : Linux 2.6.24-gdium-1&lt;br /&gt;
C compiler          : gcc-4.4&lt;br /&gt;
libc                : libc-2.9.so&lt;br /&gt;
MEMORY INDEX        : 3.922&lt;br /&gt;
INTEGER INDEX       : 5.997&lt;br /&gt;
FLOATING-POINT INDEX: 5.602&lt;br /&gt;
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38&lt;br /&gt;
* Trademarks are property of their respective holder.&lt;/p&gt;
&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=fe9d2c4f-b064-8a94-9f49-f0e49d152a7a&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560593/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2009/10/30/performance-of-loongson-2f/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560593/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560593/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 30 Oct 2009 09:11:31 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Nokia N900; the geek-device!</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-7652163268200137789</guid>
	<link>http://blog.gbraad.nl/2009/10/nokia-n900-geek-device.html</link>
	<description>&lt;a href=&quot;http://picasaweb.google.com/gbraad/MaemoSummit2009&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3467/4000077169_0a257d1824_m.jpg&quot; border=&quot;0&quot; alt=&quot;Phones should be open to anything&quot; /&gt;&lt;/a&gt;&lt;br /&gt;During the Maemo Summit 2009 I was given a Nokia N900 for evaluation and development. For about three weeks now I have been able to use the device and got used to it in such a way that I seldom check the internet on my notebook or desktop. Here you will find my thoughts on using this '&lt;span&gt;pre-production&lt;/span&gt;' model.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Services I often use, like Identi.ca and Twitter, are consolidated using my Google Mail account. Normally I would quickly browse the web to check my mail and check the messages I received while I was offline. During a working day, I tended to use my other Nokia phone for tethering to my N810. This way I was mostly always online (Bluetooth sometimes wouldn't re-establish until a power down of both devices)... I was able to receive VoIP calls (SIP) on both my phone and internet tablet. Most of the time I would still use my notebook to have a full web experience or respond to my emails... and for calendar-keeping? I gave up on that... Symbian's calendar isn't comparable to the Palm calendar (or Agendus!). I have tried to use the N810 as a PDA, but the GPE tools didn't work well for me... I missed a good synchronization and integration: then came the N900.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Near desktop experience&lt;/span&gt;&lt;br /&gt;The N900 is very powerful! That needs to be said. It is powered by a Texas Instruments OMAP3430. This processor is comparable to the BeagleBoards OMAP3530. The ARM Cortex-A8 core runs at 600Mhz and has the same PowerVR SGX 530 GPU. Only the DSP core is a little slower with 430MHz (TMS320C64x). The device gives a feeling of having more than enough power. When you start a game, like &lt;a href=&quot;http://www.youtube.com/watch?v=zBzUNe5ov_o&quot;&gt;Bounce&lt;/a&gt;, you can still see it being active in the task-switching overview; true multi-tasking. &lt;br /&gt;&lt;br /&gt;The OMAP-series processor can provide a full desktop experience, like the BeagleBoard can do with for instance Fedora and Ubuntu. However, this is also where the N900 falls a little short. Instead of providing a mini-HDMI connector it only has a composite out. After some tweaks in the OS you can connect a Bluetooth keyboard and mouse... and using the correct cables even USB. But you can't connect a larger screen... this way it is not a convergence device which could replace a desktop computer. Compare this to the the Creative Zii which I have for development; it provides HDMI-out and can playback a HD video in 1080p (but it can't do the desktop experience at the moment). The composite image quality is in my opinion too blurry. For games it works well, but viewing photos or a video felt a little disappointing.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Battery time and use&lt;/span&gt;&lt;br /&gt;Lately I have seen a lot of news about the Motorola Droid. This device is also powered by the OMAP3430 and would be thinner than a iPhone 3GS. I am curious to see how they deal with battery time... since that battery must be small! The N900 is quite large and the capacity of the BL-5J battery is less than the one in the N810. The battery is empty after half a day of extensive use; GPS always on, always online (using 3G or lower depending on the location in NL, WLAN at home), FM transmitter on when I go to work (and back home) while playing music of course.&lt;br /&gt;&lt;br /&gt;Luckily you can charge the device using the MicroUSB connector and at work I always have to do so. During this 'extensive' use I seldom made a phonecall! For me the N900 is primarily a mobile computer and a phone second. The GSM functionality provides me with the cellular data service I was missing the N810. Most of my phonecalls were done using VoIP (over 3G) and were short. I did notice the device became VERY HOT during a VoIP (over WLAN) of about 30 minutes.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Internet&lt;/span&gt;&lt;br /&gt;If you want the full Internet in a device, the N900 is what you want. It has a Firefox browser which loads pages fast and plays Flash videos from YouTube without any hiccup. Photos you take with the camera can be immediately uploaded to remote services, like Flickr and Ovi. GPS information can be set as a status message for your IM. Maemo uses the telepahy framework for messaging and video/voice calls. Out-of-the-box it provides support for SIP, Jabber/XMPP (and Google Talk, Ovi), Skype and GSM (Voice calls, SMS). What I really like is the way conversations are kept or started. Last messages are all easily viewed from the Conversations application.&lt;br /&gt;&lt;br /&gt;All contacts are aggregated from the IM accounts I use. This immediately fills the gap of not having a phonebook service for my SIP accounts. Contacts from different sources can be merged into a single contact entry. If you want to call a contact from the phone application you can easily see if he is online using Google Talk or Skype and even initiate such a call.&lt;br /&gt;&lt;br /&gt;You can send a message from either the contacts or conversations (or even desktop shortcut) and it will open a separate window in which you can see the chat. I haven't felt the need to install Pidgin, unlike what I did for the N810. By installing the telepathy-extras package you can also integrate MSN, Yahoo, ICQ, IRC and more.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Closing thoughts&lt;/span&gt;&lt;br /&gt;Maemo 5 includes a simple calendar which for the moment works quite well for me. Although you can not sync it to a remote service, it works very intuitive. Notes, calendar entries and your contacts can be synchronized using the Nokia PC Suite or SyncML compatible client. &lt;br /&gt;&lt;br /&gt;The camera in the device is 5 mega-pixels and can really make very good quality photos. Just take a look at the &lt;a href=&quot;http://www.tigert.com/2009/10/18/photojourney-with-n900/&quot;&gt;Photojourney with N900&lt;/a&gt; from tigert.&lt;br /&gt;&lt;br /&gt;As a game device the N900 could be a very good competition against the iPhone. It easily plays games like &lt;a href=&quot;http://http://www.youtube.com/watch?v=qiF60oWAsJI&quot;&gt;Quake3&lt;/a&gt;. Just connect it to the TV and play using the keyboard and the accelerometer! It is almost like having an embedded Wiimote. While the N810 still had a D-pad, this was dropped on the N900. The cursor keys feel more natural for typing emails... but for gaming it feels like you miss some control. Also the  screen does not allow multitouch... so no on-screen joysticks for now.&lt;br /&gt;&lt;br /&gt;Although the device has a complete open development model it currently lacks commercial support of big game companies. I have to admit, this is still where the iPod Touch and iPhone excels... it has a lot of available games. This will be addressed in the next release of Maemo (codenamed Harmattan). It allows a security model which will probably attract a lot more commercial development.&lt;br /&gt;&lt;br /&gt;Last week Nokia postponed the release of the N900 to allow more feedback from developers and evaluators. It also gives developers more opportunity to get familiar to the N900. As an example, most applications were installed in the / (root) filesystem, while large datafiles should have been installed to the user directory (/home/user). I had suffered from an almost complete device lock-up due to system memory being full. This should not happen to a none experienced (Linux) users. So I really think Nokia does a good thing here... They really want to give new users of Maemo a good experience.&lt;br /&gt;&lt;br /&gt;So if you are searching for a game console rather buy a PSP Go or even iPhone. But if you bought a Macbook with the idea of having Un*x under the hood (and a terminal) you should buy a N900. Even the Android falls short in this area. If you want a phone with mobile computer ambitions (being powerful and useful) buy a N97.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;For me the iPhone is a good sheep-phone, while the N900 is the real geek-phone (/device)!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Take note, I have been using a '&lt;span&gt;pre-production&lt;/span&gt;' model. The full production model will likely provided a much better experience.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-7652163268200137789?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 30 Oct 2009 01:31:55 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: FreeSWITCH packages for CentOS 5.3</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-6094427523019814771</guid>
	<link>http://blog.gbraad.nl/2009/08/freeswitch-packages-for-centos-53.html</link>
	<description>Recently I built and packaged the 1.0.4 release of FreeSWITCH for CentOS 5.3 as i386 and x86_64. They are hosted on a temporary location &lt;a href=&quot;http://vps01.spotsnel.net/freeswitch/&quot;&gt;http://files.spotsnel.net/freeswitch/&lt;/a&gt;. Eventually they will move to a repository for use with &lt;span&gt;yum&lt;/span&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-6094427523019814771?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 25 Oct 2009 20:48:30 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: New system/toolchain</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-5983019337585731711</guid>
	<link>http://www.dingux.com/2009/10/new-systemtoolchain.html</link>
	<description>Quick post. I just uploaded the latest system files and toolchain.&lt;br /&gt;&lt;br /&gt;Changes are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Compiled for MIPS32. Previous toolchain release was wrongly compiled again for MIPS I.&lt;/li&gt;&lt;li&gt;The whole system (libraries and executables) have been compiled with -O3.&lt;/li&gt;&lt;li&gt;Fixed MP3/OGG integer decoding in SDL_mixer.&lt;/li&gt;&lt;/ul&gt;Now for something completely different: if you are having trouble getting dingux up and running, try the following as suggested by some users:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you can't get the dual-boot installer to start, that is, you see nothing on the A320 screen after successfully running the two usbtool commands, try to unplug then the USB cable. No idea at all what's the problem and how unplugging the cable fixes it, though (I would need such an A320 and attach a serial console).&lt;/li&gt;&lt;li&gt;If, after installing the dual-boot, you cannot get dingux running, try to do a complete FAT32 format of your card (with ot without partition, dingux now supports both), and then copy zImage and rootfs before anything else. There might be some problem in u-boot-1.1.6 preventing it from reading FAT32 files in some circumstances, though I tried to fix it by backporting code from the latest u-boot.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-5983019337585731711?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 22 Oct 2009 14:03:56 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Bearstech Hackable:1: Hackable:1, rev5rc1, at last!</title>
	<guid>tag:blog.hackable1.org,2009://1.10</guid>
	<link>http://blog.hackable1.org/2009/10/hackable1-rev5rc1-at-last.html</link>
	<description>Dear Hackable:1 users,&lt;br /&gt;&lt;br /&gt;We are glad to announce that, after long &amp;amp; thorough efforts from the development team, after a bunch of testing hours, after a long time spent on arguing whether we should include this or that feature, we made it: &lt;b&gt;hackable:1 rev5rc1 (Codename: Chuck) is there&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-28.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/10/Xbackground-thumb-300x385-28.png&quot; alt=&quot;Xbackground.png&quot; class=&quot;mt-image-center&quot; height=&quot;385&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;Here is a changelog of corrected bugs and added features from rev4.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;font&gt;Changelog&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font&gt;+ End users matters&lt;/font&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Most of the software stack now runs under the 'hackable1' user, for security purposes.&lt;/li&gt;&lt;li&gt; SMS proper implementation&lt;/li&gt;&lt;li&gt; The contact list bug has been found and fixed!&lt;/li&gt;&lt;li&gt; Power management improvements, suspend works (well almost each &amp;amp; every time, sadly we're still hunting GSM issues for that matter)!&lt;/li&gt;&lt;li&gt; An application called 'h1settings' can be used to configure phone features, (enable / disable  GSM / Wireless / GPS, power management, ...)&lt;/li&gt;&lt;li&gt; We created a new theme to celebrate this new release! &lt;/li&gt;&lt;li&gt; We got a splashscreen! It features a Chuck figure to reflects the rev5 codename: Chuck&lt;/li&gt;&lt;li&gt; Boot time seems to have been improved a bit&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;font&gt;+ Power users / developers matters&lt;/font&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; This RC1 and the upcoming final rev5 release are now built from the automatic build system.&lt;/li&gt;&lt;li&gt; A Linux kernel is now packaged in hackable:1, in order not to rely on fso-pkg anymore.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;    Debugging has been disabled (boot time improvement)&lt;/li&gt;&lt;li&gt;    Easier kernel upgrade when using an ext2 partition to store the kernel on µSD cards&lt;/li&gt;&lt;li&gt;    Separation of kernel modules in three sets: essential (comes with the kernel), common modules and &quot;more modules&quot;&lt;/li&gt;&lt;li&gt;    You can read a bit on &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&quot;&gt;http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;font&gt;Where can I find it? Where can I get it? What is the answer to the ultimate question about life, the universe, and everything?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As ever, you can download hackable:1 on &lt;a href=&quot;http://download.hackable1.org/rev5rc1/&quot;&gt;http://download.hackable1.org/rev5rc1&lt;/a&gt;.&lt;br /&gt;All the necessary information can be found on &lt;a href=&quot;http://trac.hackable1.org/&quot;&gt;http://trac.hackable1.org&lt;/a&gt; as ever, that is documentation, installation instructions as well as known issues.&lt;br /&gt;It's obvious that the answer to the aforementioned question is &quot;Chuck&quot;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font&gt;Who should I thank for all that stuff?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Among the people who worked on this release, the most notorious are (alphabetically):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Marcus Bauer (mbauer)&lt;/li&gt;&lt;li&gt;Jérome Blondon (jbl2024)&lt;/li&gt;&lt;li&gt;Sébastien Bocahu (zecrazytux)&lt;/li&gt;&lt;li&gt;Pierre Pronchery (khorben)&lt;/li&gt;&lt;li&gt;David Wagner (Deubeuliou)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We'd also like to thank all the testers, among them most notably Bearstech employees, and regular contributors/users of hackable:1, who kept us going forward.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font&gt;What should I expect next?&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Due to a very good number of good reasons, which could all of them be summed up by a minute of one of khorben's rants against libgsmd, we'll switch to Freesmartphone.Org for rev6. &lt;br /&gt;All in all, more reliable GSM &amp;amp; suspend, and almost all the features one may need. Stay tuned!&lt;br /&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Oct 2009 15:58:10 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: qemu mips msub instruction emulation bug</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/10/15/qemu-mips-msub-instruction-emulation-bug/</guid>
	<link>http://vm-kernel.org/blog/2009/10/15/qemu-mips-msub-instruction-emulation-bug/</link>
	<description>&lt;p&gt;It's really a long time since last post. Now I am working on the android mips porting project. I want to run android on the MIPS emulator.&lt;/p&gt;
&lt;p&gt;The problem is that when I run mips-android on qemu, it hangs when executing init program in the initramfs root file-system. Then I use the remote gdb to debug the init and finds out that it it because pa_workspace is not initiated.&lt;/p&gt;
&lt;p&gt;Function ashmem_create_region will open /dev/ashmem and return the fd if succeed. However, it returns -1 and the errno is 19 which means NO SUCH DEVICES.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;fd = ashmem_create_region(&quot;system_properties&quot;, size);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The problem is who is responsible for creating /dev/ashmem?&lt;/p&gt;
&lt;p&gt;In fact, in android it uses udev mechanism to create devices in /dev when executing function device_init. The full cold patch to create a device is as following:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;device_init-&amp;gt;coldboot-&amp;gt;do_coldboot-&amp;gt;write(fd, &quot;add\n&quot;, 4)-&amp;gt;handle_device_fd-&amp;gt;handle_device_event-&amp;gt;make_device&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In function parse_event, it will parse the uevent msg and then pass uevent to handle_device_event. However, I find that the uevent message is a little weird. I use remote gdb to dump this message.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;0x7ff3d250:     &quot;add@/class/tty/console&quot;&lt;br /&gt;
0x7ff3d267:     &quot;ACTION=add&quot;&lt;br /&gt;
0x7ff3d272:     &quot;DEVPATH=/class/tty/console&quot;&lt;br /&gt;
0x7ff3d28d:     &quot;SUBSYSTEM=tty&quot;&lt;br /&gt;
0x7ff3d29b:     &quot;MAJOR=+&quot;&lt;br /&gt;
0x7ff3d2a3:     &quot;MINOR=/&quot;&lt;br /&gt;
0x7ff3d2ab:     &quot;SEQNUM=31+&quot;&lt;br /&gt;
0x7ff3d2b6:     &quot;&quot;&lt;br /&gt;
0x7ff3d2b7:     &quot;&quot;&lt;br /&gt;
0x7ff3d2b8:     &quot;&quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You see, in the message the MAJOR is +. It will confuse the parse_event so that the corresponding device won't be created.&lt;/p&gt;
&lt;p&gt;It looks the kernel passes wrong uevent message to user space. So the question is who has messed up the uevent message?&lt;/p&gt;
&lt;p&gt;Then I recall that when booting linux kernel, there are some weird messages.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Primary instruction cache .kB, VIPT, 2-way, linesize 1* bytes.&lt;br /&gt;
Primary data cache .kB, 2-way, VIPT, no aliases, linesize 1* bytes&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You see the instruction cache is .kB and linesize is 1* bytes, not a valid number at all.&lt;/p&gt;
&lt;p&gt;Then I suspect that something is wrong in kernel when parsing the numbers. So I use the remote gdb to debug the kernel again.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;r4k_cache_init-&amp;gt;probe_pcache-&amp;gt;printk-&amp;gt;vprintk-&amp;gt;vscnprintf-&amp;gt;vsnprintf-&amp;gt;number-&amp;gt;put_dec-&amp;gt;put_dec_trunc&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Function put_dec_trunc uses a unsigned int between[0,99999] as input and outputs the number as a string. But I find that when the input is 2, the output is '.', not the expected '2'. So maybe this function is the bad boy.&lt;/p&gt;
&lt;p&gt;In the following function I assume q=2.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;277 static char* put_dec_trunc(char *buf, unsigned q)&lt;br /&gt;
278 {&lt;br /&gt;
279         unsigned d3, d2, d1, d0;&lt;br /&gt;
280         d1 = (q&amp;gt;&amp;gt;4) &amp;amp; 0xf;            /*d1=0*/&lt;br /&gt;
281         d2 = (q&amp;gt;&amp;gt;8) &amp;amp; 0xf;            /*d2=0*/&lt;br /&gt;
282         d3 = (q&amp;gt;&amp;gt;12);                 /*d3=0*/&lt;br /&gt;
283&lt;br /&gt;
284         d0 = 6*(d3 + d2 + d1) + (q &amp;amp; 0xf);  /*d0=2*/&lt;br /&gt;
285         q = (d0 * 0xcd) &amp;gt;&amp;gt; 11;              /*q=0*/&lt;br /&gt;
286         d0 = d0 - 10*q;                     /*d==2*/&lt;br /&gt;
287         *buf++ = d0 + ''; /* least significant digit */&lt;br /&gt;
288         d1 = q + 9*d3 + 5*d2 + d1;   /*d1=0*/&lt;br /&gt;
289         if (d1 != 0) {               /* it is false so we won't get into here.*/&lt;br /&gt;
290                 q = (d1 * 0xcd) &amp;gt;&amp;gt; 11;&lt;br /&gt;
291                 d1 = d1 - 10*q;&lt;br /&gt;
292                 *buf++ = d1 + ''; /* next digit */&lt;br /&gt;
293&lt;br /&gt;
294                 d2 = q + 2*d2;&lt;br /&gt;
295                 if ((d2 != 0) || (d3 != 0)) {&lt;br /&gt;
296                         q = (d2 * 0xd) &amp;gt;&amp;gt; 7;&lt;br /&gt;
297                         d2 = d2 - 10*q;&lt;br /&gt;
298                         *buf++ = d2 + ''; /* next digit */&lt;br /&gt;
299&lt;br /&gt;
300                         d3 = q + 4*d3;&lt;br /&gt;
301                         if (d3 != 0) {&lt;br /&gt;
302                                 q = (d3 * 0xcd) &amp;gt;&amp;gt; 11;&lt;br /&gt;
303                                 d3 = d3 - 10*q;&lt;br /&gt;
304                                 *buf++ = d3 + '';  /* next digit */&lt;br /&gt;
305                                 if (q != 0)&lt;br /&gt;
306                                         *buf++ = q + '';  /* most sign. digit */&lt;br /&gt;
307                         }&lt;br /&gt;
308                 }&lt;br /&gt;
309         }    &lt;br /&gt;
310         return buf;&lt;br /&gt;
311 }&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;/*  MIPS uses a0/a1 to pass arguments.&lt;br /&gt;
 *  a0= address of bu&lt;br /&gt;
 *  a1= q = 2&lt;br /&gt;
 */&lt;br /&gt;
8015a040 &amp;lt;put_dec_trunc&amp;gt;:&lt;br /&gt;
8015a040:    00051202     srl    v0,a1,0x8        /* v0= q&amp;gt;&amp;gt;8*/&lt;br /&gt;
8015a044:    00053102     srl    a2,a1,0x4        /* a2= q&amp;gt;&amp;gt;4*/&lt;br /&gt;
8015a048:    30c6000f     andi    a2,a2,0xf        /* a2= (q&amp;gt;&amp;gt;4) &amp;amp; 0xf = d1 in line 280*/&lt;br /&gt;
8015a04c:    3048000f     andi    t0,v0,0xf        /* t0 = (q&amp;gt;&amp;gt;8) &amp;amp; 0xf = d2 in line 281*/&lt;br /&gt;
8015a050:    00054b02     srl    t1,a1,0xc        /* t1= (q&amp;gt;&amp;gt;12) = d3 in line 282*/&lt;br /&gt;
8015a054:    00c81021     addu    v0,a2,t0        &lt;br /&gt;
8015a058:    00491021     addu    v0,v0,t1          /* v0 = d1+d2+d3 in line 284*/&lt;br /&gt;
8015a05c:    24030006     li    v1,6&lt;br /&gt;
8015a060:    70433802     mul    a3,v0,v1          /*a3= 6*(d3 + d2 + d1)*/&lt;br /&gt;
8015a064:    30a5000f     andi    a1,a1,0xf         /*a1= q &amp;amp; 0xf*/&lt;br /&gt;
8015a068:    24020009     li    v0,9               /*v0=9*/&lt;br /&gt;
8015a06c:    00e56021     addu    t4,a3,a1          /*t4= 6*(d3 + d2 + d1) + (q &amp;amp; 0xf) = d0 in line 284*/&lt;br /&gt;
8015a070:    240b00cd     li    t3,205            /*t3= 0xcd*/&lt;br /&gt;
8015a074:    71223802     mul    a3,t1,v0          /*a3= 9*d3 in line 288. Apparently gcc has reordered the code.*/   &lt;br /&gt;
8015a078:    718b1802     mul    v1,t4,t3          /*v1= (d0*0xcd)*/&lt;br /&gt;
8015a07c:    24020005     li    v0,5&lt;br /&gt;
8015a080:    00e62821     addu    a1,a3,a2          /*a1= 9*d3 + d1 in line 288*/&lt;br /&gt;
8015a084:    71023002     mul    a2,t0,v0          /*a2= 5*d2 in line 288*/&lt;br /&gt;
8015a088:    00031ac2     srl    v1,v1,0xb         /*v1= (d0*0xcd)&amp;gt;&amp;gt;11 in line 285*/&lt;br /&gt;
8015a08c:    240a000a     li    t2,10             /*t2=10*/&lt;br /&gt;
8015a090:    01800013     mtlo    t4                /*put t4-&amp;gt;lo. lo=t4= 6*(d3 + d2 + d1) + (q &amp;amp; 0xf) = d0 in line 284 */&lt;br /&gt;
8015a094:    706a0004     msub    v1,t2             /*hilo = v1*t2 - hilo = 10*(q) - hilo in line 286*/&lt;br /&gt;
8015a098:    00c51021     addu    v0,a2,a1&lt;br /&gt;
8015a09c:    00002812     mflo    a1                /*lo-&amp;gt;a1*/    &lt;br /&gt;
8015a0a0:    00431821     addu    v1,v0,v1&lt;br /&gt;
8015a0a4:    24a20030     addiu    v0,a1,48         &lt;br /&gt;
8015a0a8:    00803821     move    a3,a0&lt;br /&gt;
8015a0ac:    a0820000     sb    v0,0(a0)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We just need to see the instruction in 0x8015a094, it is a msub instruction. The defination of msub is as following:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;(HI,LO) = (HI,LO) - (GRP[RS]*GPR[RT])&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Then after executing the instruction in 0x8015a094, the HI/LO should be 0/2. But qemu produces the value 0xffffffff/0xfffffffe, which is -2 indeed. Maybe this is the problem.&lt;/p&gt;
&lt;p&gt;Then I need to find how qemu emulates msub instruction.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;2178     case OPC_MSUB:&lt;br /&gt;
2179         {&lt;br /&gt;
2180             TCGv r_tmp1 = tcg_temp_new(TCG_TYPE_I64);&lt;br /&gt;
2181             TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64);&lt;br /&gt;
2182             TCGv r_tmp3 = tcg_temp_new(TCG_TYPE_I64);&lt;br /&gt;
2183&lt;br /&gt;
2184             tcg_gen_ext32s_tl(t0, t0);&lt;br /&gt;
2185             tcg_gen_ext32s_tl(t1, t1);&lt;br /&gt;
2186             tcg_gen_ext_tl_i64(r_tmp1, t0);&lt;br /&gt;
2187             tcg_gen_ext_tl_i64(r_tmp2, t1);&lt;br /&gt;
2188             tcg_gen_mul_i64(r_tmp1, r_tmp1, r_tmp2);  /*r_tmp1= gpr[rs]*gpr[rt] */&lt;br /&gt;
2189             gen_load_LO(t0, 0);                /*t0 &amp;lt;- lo*/&lt;br /&gt;
2190             gen_load_HI(t1, 0);                /*t1 &amp;lt;- hi*/&lt;br /&gt;
2191             tcg_gen_extu_tl_i64(r_tmp2, t0);   /*r_tmp2 = 64bit expand of lo*/&lt;br /&gt;
2192             tcg_gen_extu_tl_i64(r_tmp3, t1);   /*r_tmp3 = 64bit expand of hi*/&lt;br /&gt;
2193             tcg_gen_shli_i64(r_tmp3, r_tmp3, 32);&lt;br /&gt;
2194             tcg_gen_or_i64(r_tmp2, r_tmp2, r_tmp3);&lt;br /&gt;
2195             tcg_temp_free(r_tmp3);&lt;br /&gt;
2196             tcg_gen_sub_i64(r_tmp1, r_tmp1, r_tmp2); /*r_tmp1= r_tmp1 - r_tmp2 = gpr[rs]*gpr[rt] - HI/LO */&lt;br /&gt;
2197             tcg_temp_free(r_tmp2);&lt;br /&gt;
2198             tcg_gen_trunc_i64_tl(t0, r_tmp1);&lt;br /&gt;
2199             tcg_gen_shri_i64(r_tmp1, r_tmp1, 32);&lt;br /&gt;
2200             tcg_gen_trunc_i64_tl(t1, r_tmp1);&lt;br /&gt;
2201             tcg_temp_free(r_tmp1);&lt;br /&gt;
2202             tcg_gen_ext32s_tl(t0, t0);&lt;br /&gt;
2203             tcg_gen_ext32s_tl(t1, t1);&lt;br /&gt;
2204             gen_store_LO(t0, 0);&lt;br /&gt;
2205             gen_store_HI(t1, 0);&lt;br /&gt;
2206         }&lt;br /&gt;
2207         opn = &quot;msub&quot;;&lt;br /&gt;
2208         break;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You see, qemu makes an error emulation of msub instruction. It uses gpr[rs]*gpr[rt]-HI/LO and then put the results to HI/LO, which is different from the defination of msub instruction. I patched the qemu code and it works.&lt;/p&gt;
&lt;p&gt;BTW: MIPS32 4KTM Processor Core Family Software User’s Manual version MD00016 gives an error operation of msub instruction on papge 253.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Operation:&lt;br /&gt;
   temp ← (HI || LO) - (GPR[rs] * GPR[rt])&lt;br /&gt;
   HI ← temp63..32&lt;br /&gt;
   LO ← temp31..0&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Maybe this misleads the qemu developers. The latest qemu version has fixed this bug. We can see this instruction emulation in qemu-svn-20091014.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;2195     case OPC_MSUB:&lt;br /&gt;
2196         {&lt;br /&gt;
2197             TCGv_i64 t2 = tcg_temp_new_i64();&lt;br /&gt;
2198             TCGv_i64 t3 = tcg_temp_new_i64();&lt;br /&gt;
2199&lt;br /&gt;
2200             tcg_gen_ext_tl_i64(t2, t0);&lt;br /&gt;
2201             tcg_gen_ext_tl_i64(t3, t1);&lt;br /&gt;
2202             tcg_gen_mul_i64(t2, t2, t3);  /*t2=GPR[RS]*GPR[RT] */&lt;br /&gt;
2203             tcg_gen_concat_tl_i64(t3, cpu_LO[0], cpu_HI[0]);  /*t3= HI/LO*/&lt;br /&gt;
2204             tcg_gen_sub_i64(t2, t3, t2); /*t2= HI/LO - GPR[RS]*GPR[RT] */&lt;br /&gt;
2205             tcg_temp_free_i64(t3);&lt;br /&gt;
2206             tcg_gen_trunc_i64_tl(t0, t2);&lt;br /&gt;
2207             tcg_gen_shri_i64(t2, t2, 32);&lt;br /&gt;
2208             tcg_gen_trunc_i64_tl(t1, t2);&lt;br /&gt;
2209             tcg_temp_free_i64(t2);&lt;br /&gt;
2210             tcg_gen_ext32s_tl(cpu_LO[0], t0);&lt;br /&gt;
2211             tcg_gen_ext32s_tl(cpu_HI[0], t1);&lt;br /&gt;
2212         }&lt;br /&gt;
2213         opn = &quot;msub&quot;;&lt;br /&gt;
2214         break;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;See &lt;a href=&quot;http://www.archivum.info/qemu-devel@nongnu.org/2009-07/00011/%5BQemu-devel%5D_%5BPATCH%5D_target-mips:_fix_MADD_and_MSUB_MSUBU_instructions&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;So finding this bug is really not easy. I have to dig dig and dig from userland to linux kernel and then to qemu until catching this bad qemu bug. Thanks to the remote gdb and gdb stub in qemu, it makes life easier.&lt;/p&gt;
&lt;p&gt;Following is the patch of qemu.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;diff --git a/target-mips/translate.c b/target-mips/translate.c&lt;br /&gt;
index 3dded6c..0a1b461 100644&lt;br /&gt;
--- a/target-mips/translate.c&lt;br /&gt;
+++ b/target-mips/translate.c&lt;br /&gt;
@@ -2193,7 +2193,11 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc,&lt;br /&gt;
             tcg_gen_shli_i64(r_tmp3, r_tmp3, 32);&lt;br /&gt;
             tcg_gen_or_i64(r_tmp2, r_tmp2, r_tmp3);&lt;br /&gt;
             tcg_temp_free(r_tmp3);&lt;br /&gt;
-            tcg_gen_sub_i64(r_tmp1, r_tmp1, r_tmp2);&lt;br /&gt;
+            /* msub means HI/LO = HI/LO - GPR[RS]*GPR[RT],&lt;br /&gt;
+             * not HI/LO = GPR[RS]*GPR[RT] - HI/LO&lt;br /&gt;
+             */&lt;br /&gt;
+            //tcg_gen_sub_i64(r_tmp1, r_tmp2, r_tmp2);&lt;br /&gt;
+            tcg_gen_sub_i64(r_tmp1, r_tmp2, r_tmp1);&lt;br /&gt;
             tcg_temp_free(r_tmp2);&lt;br /&gt;
             tcg_gen_trunc_i64_tl(t0, r_tmp1);&lt;br /&gt;
             tcg_gen_shri_i64(r_tmp1, r_tmp1, 32);&lt;/p&gt;&lt;/blockquote&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560594/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2009/10/15/qemu-mips-msub-instruction-emulation-bug/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560594/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560594/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 15 Oct 2009 05:06:22 +0000</pubDate>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Progress on x760+ / buildroot published</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-6080429064680046726</guid>
	<link>http://www.dingux.com/2009/09/progress-on-x760-and-buildroot.html</link>
	<description>First and foremost: sorry for being so hard to get in touch with lately. We've been in defcon 1 for the last week at work preparing a demo for the current project (OMAP3530 based) which is crucial to the future of the company, so I had reduced my daily routine to sleep-eat-work-sleep. My inbox is exploding.&lt;br /&gt;&lt;br /&gt;Sweetlimre commented on having a writable home directory (see &lt;a href=&quot;http://dingoo-scene.blogspot.com/2009/09/interview-with-sweetlimre.html&quot;&gt;interview&lt;/a&gt;). If I recall correctly, I wrote about this already. The main application executed by busybox's init process is responsible for this. At this stage in the boot process no HOME environment variable has been set. I could easily modify busybox's init to set it to &quot;/usr/local/home&quot;, but I felt it's better to stick to a vanilla busybox as much as possible. Oh, wait: maybe if (as I recommended) the main menu application is using exec() to launch emus/apps things are not so simple. Need some input from devs here, and if the only solution is to modify busybox's init, so be it.&lt;br /&gt;&lt;br /&gt;Regarding the modified buildroot I'm using, as he requested it's now available for download at the google code project page. I hadn't published it before just because I could not find time to fix all the dirty hacks I used, which resulted in a partially manual build. I'll be glad to add anything developers suggest. Just send me the buildroot recipe. I would really like to stay away from OpenEmbedded. I have to use it for the OMAP3530 and IMHO it is way overengineered.&lt;br /&gt;&lt;br /&gt;Some good news on the Ingenic front: the Qi-Hardware guys have managed to get Ingenic to release their kernel development trees DAILY. This means immediate access to any useful fix they make. There are 2.6.24.3 and 2.6.27 branches, and I'm working on porting the A320 support code to the later, mostly to see if it helps somehow with the USB/DMA and SD/MMC standing bugs. Note that in the case of embedded devices like the A320 I don't think that newer kernel is necessarily better.&lt;br /&gt;&lt;br /&gt;Regarding the Gemei x760+ things are going slower than expected. I dumped the hardware initialization .DL from NAND flash and disassembled it, only to discover I was looking in the wrong place. Let me explain:&lt;br /&gt;&lt;br /&gt;When the JZ4740 boots a piece of code called the IPL (Initial Program Loader) is executed from ROM. Depending on the state of some pins this code either enters USB boot mode or boots from NOR or NAND flash. In the A320 we can only choose to enter USB boot mode or boot from NAND. The IPL only supports 512 and 2048 page size NAND, so despite the fact that the NAND chip in the A320 has a 4096 page size it is handled by the IPL as if it was 2048.&lt;br /&gt;&lt;br /&gt;The IPL reads the four first pages (8KB total) of NAND into the instruction cache (because the SDRAM is not yet available). This is called the SPL (secondary program loader) and its purpose is to do a basic hardware initialization, most notably making the SDRAM available, and load the system loader from NAND. The A320 SPL also handles the NAND as if it was 2048.&lt;br /&gt;&lt;br /&gt;In the original firmware the SDL is stored in the first 8KB of the first NAND block (0x00000-0x3FFFF). It loads the system loader from 0x50000-0xBFFFF. Before loading the operating system the A320 system loader does something interesting: it loads from 0x40000-0x4FFFF a piece of code that I call the hardware initialization DL. It is a dynamic linked object code chunk that does board-specific hardware initialization: GPIO, LCD, etc. This is the interesting stuff. In both the older and newer A320 the LCD initialization code was reverse engineered from this DL.&lt;br /&gt;&lt;br /&gt;However, the x760+ LCD initialization seems to be mostly done by the system loader itself. It stil loads the DL and uses it for some GPIO initialization that is also related to the LCD controller, but not much more. The DL does contain a large LCD register initialization code routine, but it is unused (and I lost a lot of time reverse engineering it).&lt;br /&gt;&lt;br /&gt;Since the system loader code is much larger (~260KB) than the DL code (~10KB), it's gonna take some time to reverse engineer the LCD handling code. Note also that I had already reverse engineered the A320 DL code and that helped a lot, but the system loader is unexplored territory.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-6080429064680046726?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 28 Sep 2009 14:53:21 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Gerard Braad: Fedora 11 on coLinux (fixes)</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-1047598729189375445</guid>
	<link>http://blog.gbraad.nl/2009/09/fedora-11-on-colinux-fixes.html</link>
	<description>Recently HenryN (of coLinux) made some &lt;a href=&quot;http://colinux.wikia.com/wiki/Fedora11Minimal&quot;&gt;minor changes&lt;/a&gt; to the &lt;a href=&quot;http://blog.gbraad.nl/2009/07/fedora-11-on-colinux.html&quot;&gt;Fedora 11 image for coLinux&lt;/a&gt;. The new image is available from the &lt;a href=&quot;http://sourceforge.net/projects/colinux/forum/forum/342354/topic/3347702&quot;&gt;coLinux forum&lt;/a&gt; at SourceForge or directly from [&lt;a href=&quot;http://gbraad.fedorapeople.org/files/colinux-fedora11.exe&quot;&gt;FedoraPeople&lt;/a&gt;] or [&lt;a href=&quot;http://www.megaupload.com/?d=NGI1PYO3&quot;&gt;MegaUpload&lt;/a&gt;] (70.3 MB).&lt;br /&gt;&lt;br /&gt;Thanks!&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Note: the original image has been replaced by this fixed image. If needed the original image is available upon request. However it should be considered obsolete.&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-1047598729189375445?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 21 Sep 2009 16:47:47 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: Fedora 11 on coLinux</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-5515705174811542907</guid>
	<link>http://blog.gbraad.nl/2009/07/fedora-11-on-colinux.html</link>
	<description>After some minor issues I managed to install &lt;a href=&quot;http://www.fedoraproject.org/&quot;&gt;Fedora&lt;/a&gt; 11 on &lt;a href=&quot;http://www.colinux.org/&quot;&gt;coLinux&lt;/a&gt;. Normally I would perform a manual installation by creating a basic rpm environment, but with Fedora 11 I encountered problems during the installation; first the version of squashfs was different. This was easily fixed with a dump from Fedora 10... but second, rpm packages were all of a sudden not available halfway a rpm transaction. Since it occurred more than once, I settled for using qemu again.&lt;br /&gt;&lt;br /&gt;The file colinux-fedora11.exe (82MB) is published on [&lt;a href=&quot;http://gbraad.fedorapeople.org/files/colinux-fedora11.exe&quot;&gt;fedorapeople&lt;/a&gt;], [&lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-fedora11.exe&quot;&gt;dropbox&lt;/a&gt;] and [&lt;a href=&quot;http://files.gbraad.nl/virtual/colinux/colinux-fedora11.exe&quot;&gt;files&lt;/a&gt;]. It does have some minor issues during startup, but besides this it is operational. The installation was performed as a basic installation; so it does not contain any graphical environment, no additional network servers, no updates, etc. This way the download is small. The only added packages are &lt;i&gt;wget&lt;/i&gt;, &lt;i&gt;mc&lt;/i&gt; and my &lt;a href=&quot;http://gbraad.fedorapeople.org/files/kernel-modules-2.6-co0.7.3.i386.rpm&quot;&gt;kernel modules RPM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh3.ggpht.com/_ZmgfsgbGDLs/Sm4Hj8LVn1I/AAAAAAAAGl0/kZ3ME5zvf_Y/s288/leonidas.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;All you need to run it is: coLinux, &lt;a href=&quot;http://www.winpcap.org/&quot;&gt;winpcap&lt;/a&gt; and the archive. The file 'run.bat' would start the cooperative environment. Any tweaks you would like to make can be placed in the 'run.txt' file. The user is 'root' without a password. After you start it, do set a password for this user.&lt;br /&gt;&lt;br /&gt;Personally I use the environment for &lt;a href=&quot;http://chitlesh.fedorapeople.org/FEL/&quot;&gt;Fedora Electronic Lab&lt;/a&gt; which coexists with Cygwin. Not all the tools I use for electronics are available on Linux... yet!&lt;br /&gt;&lt;br /&gt;Note: I have used version 0.7.3 of coLinux because the current stable release 0.7.4 suffers from a problem with the tap device.&lt;br /&gt;&lt;br /&gt;Note 21-09-09: The original image has been replaced by the &lt;a href=&quot;http://blog.gbraad.nl/2009/09/fedora-11-on-colinux-fixes.html&quot;&gt;updated image&lt;/a&gt; from HenryN. IF needed the original image is available upon request. It should however be considered as obsolete.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-5515705174811542907?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 21 Sep 2009 16:46:18 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Ignacio Garcia, dingux.com: Testing new dual-boot installer</title>
	<guid>tag:blogger.com,1999:blog-5905067180537420094.post-1583277575144619134</guid>
	<link>http://www.dingux.com/2009/09/testing-new-dual-boot-installer.html</link>
	<description>I've just released a new dual-boot installer in the hope that it fixes the &quot;flash write error&quot; problem some users have experienced. The error is caused by one or more bad pages in the first block of NAND. This is normal and there is a mechanism that was supposed so handle it but wasn't working. As I don't have bad pages in this first block in my two A320s, I can't test it myself, so, until someone reports that it is working for him, consider it beta.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;UPDATE 1&lt;/span&gt;: so far three success reports. Yeah, looks like this bug is squashed!.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;UPDATE 2&lt;/span&gt;: confirmed. No more flash write errors.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5905067180537420094-1583277575144619134?l=www.dingux.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 18 Sep 2009 10:35:40 +0000</pubDate>
	<author>noreply@blogger.com (booboo)</author>
</item>
<item>
	<title>Gerard Braad: Beijing LUG meeting (8th of September 2009)</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-6298039631945932374</guid>
	<link>http://blog.gbraad.nl/2009/09/beijing-lug-meeting-8th-of-september.html</link>
	<description>Last night I attended a &lt;a href=&quot;http://www.beijinglug.org/en/index.php?option=com_content&amp;task=view&amp;id=426&amp;Itemid=14&quot;&gt;meeting&lt;/a&gt; of the &lt;a href=&quot;http://www.beijinglug.org/&quot;&gt;Beijing Linux User Group&lt;/a&gt;. It was for me the first time I could attend it during my time in Beijing and it is certainly something I will do more often. Every 2nd Tuesday of the month they will have a group meeting in which they will have speakers about a subject. I was lucky to listen to &lt;span&gt;Coly Li&lt;/span&gt; and &lt;span&gt;Ulrich Drepper&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://farm4.static.flickr.com/3422/3901133414_f2e74d30d1.jpg&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3422/3901133414_f2e74d30d1.jpg&quot; alt=&quot;Ulrich Drepper at BLUG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span&gt;Coly Li&lt;/span&gt; is a kernel developer who supervised a Google Summer of Code student, &lt;span&gt;YuEr&lt;/span&gt;, who ported openSUSE to MIPS. YuEr showed what he had done, the results and the errors still left. He was able to start a X11 session using FVWM on a Gdium (MIPS-based smartbook). For this he had used a cross-platform RPM build environment targeting MIPS and qemu. Amazing results for such a short period he was able to work on it.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Ulrich Drepper&lt;/span&gt; gave the same talk as he did at the RedHat Summit in Chicago about '&lt;a href=&quot;http://people.redhat.com/drepper/summit09-stream.pdf&quot;&gt;Acceleration Through Stream Computing&lt;/a&gt;'. In this talk he explains how to speed up applications by using vectorization and the vector extensions as provided by SSE. Using templates and partial specialization in C++ it is possible to speed up applications without a lot of changes. The specialized critical code could be altered by experts and just a rebuild would suffice. He explains this for instance with a simple example of a vector scaling and translation... the result speaks for themselves. It was also apparent that Ulrich is not a promoter of CUDA (or even CTM) either. In my opinion they result in vendor-lockin. The alternative to look for is OpenCL...&lt;br /&gt;&lt;br /&gt;Overall it was a nice evening. I talked to a talented bunch of 'folklore dancers' wearing T-Shirts. If you ever have the chance to be in Beijing, stop by... you will not regret it.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-6298039631945932374?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 09 Sep 2009 05:47:27 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Methril: What i've been doing</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-8914617289354698081</guid>
	<link>http://openblog.methril.net/2009/09/what-ive-been-doing.html</link>
	<description>Hello to all specially to openmokers, as this is my first post that is going to appear at planet.openmoko.org&lt;br /&gt;&lt;br /&gt;I'm being a little bit silent lately.&lt;br /&gt;The good news is that i've not been quiet :)&lt;br /&gt;What i've been doing? Well, first of all i'm being too busy with a lot of tuxbrain stuff :)&lt;br /&gt;I put a smile because they are giving me the opportunity to develop/hack a lot of devices and they give e the opportunity to hardware hacking, that is not an easy one :)&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt; I've been doing some buzz fixes [1] [2] [3] [4]. &lt;/li&gt;&lt;br /&gt; &lt;li&gt; I've been hacking some devices [5] [6].&lt;/li&gt;&lt;br /&gt; &lt;li&gt; I've been hacking some OE recipes (Porting some shr recipes from import/shr to org.openembedded.dev), and putting some patches [7].&lt;/li&gt;&lt;br /&gt; &lt;li&gt; I've been following new interesting companies [8].&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt; And off course i've been having a lot of fun, a real life, a paid job and a wonderful wife that supports me ;) until one holiday week :)&lt;br /&gt;&lt;br /&gt;I put this post because i've one specific blog with some new stuff [9] An i.MX515 [10] development platform that i'm going to start to hack.&lt;br /&gt;&lt;br /&gt;I'm reading my mails from the last weeks (now last month), and i'm getting up to date.&lt;br /&gt;&lt;br /&gt;.....&lt;br /&gt;&lt;br /&gt;Stay tunned to know what i've been doing in next weeks :)&lt;br /&gt;&lt;br /&gt;Hope to write here soon.&lt;br /&gt;&lt;br /&gt;Greetings&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;The links&lt;br /&gt;[1] &lt;a href=&quot;http://www.openmoko-spain.org/tiki-view_blog_post.php?blogId=1&amp;postId=10&quot;&gt;http://www.openmoko-spain.org/tiki-view_blog_post.php?blogId=1&amp;amp;postId=10&lt;/a&gt;&lt;br /&gt;[2] &lt;a href=&quot;http://www.tuxbrain.com/en/content/buzz-fix-party-barcelona-movie&quot;&gt;http://www.tuxbrain.com/en/content/buzz-fix-party-barcelona-movie&lt;/a&gt;&lt;br /&gt;[3] &lt;a href=&quot;http://www.tuxbrain.com/en/content/buzz-fix-party-madridphotos&quot;&gt;http://www.tuxbrain.com/en/content/buzz-fix-party-madridphotos&lt;/a&gt;&lt;br /&gt;[4] &lt;a href=&quot;http://www.tuxbrain.com/en/content/there-and-back-againtuxbrain-debconf09-pics&quot;&gt;http://www.tuxbrain.com/en/content/there-and-back-againtuxbrain-debconf09-pics&lt;/a&gt;&lt;br /&gt;[5] &lt;a href=&quot;http://www.compulab.co.il/x270em/html/x270-em-datasheet.htm&quot;&gt;http://www.compulab.co.il/x270em/html/x270-em-datasheet.htm&lt;/a&gt;&lt;br /&gt;[6] &lt;a href=&quot;http://openinkpot.org/wiki/NetronixEB600&quot;&gt;http://openinkpot.org/wiki/NetronixEB600&lt;/a&gt;&lt;br /&gt;[7] &lt;a href=&quot;http://article.gmane.org/gmane.comp.handhelds.openembedded/25655&quot;&gt;http://article.gmane.org/gmane.comp.handhelds.openembedded/25655&lt;/a&gt;&lt;br /&gt;[8] &lt;a href=&quot;http://www.qi-hardware.com/&quot;&gt;http://www.qi-hardware.com/&lt;/a&gt;&lt;br /&gt;[9] &lt;a href=&quot;http://projects.powerdeveloper.org/project/imx515/752&quot;&gt;http://projects.powerdeveloper.org/project/imx515/752&lt;/a&gt;&lt;br /&gt;[10] &lt;a href=&quot;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX515&quot;&gt;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX515&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-8914617289354698081?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 02 Sep 2009 02:23:01 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Gerard Braad: Accidently installed i386 packages on x86_64?</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-2944829085970138008</guid>
	<link>http://blog.gbraad.nl/2009/08/accidently-installed-i386-packages-on.html</link>
	<description>If you have a CentOS installation (or Fedora) running as x86_64 architecture, be sure to install your packages with &lt;span&gt;yum&lt;/span&gt; using the following command:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ yum install [packagename].x86_64&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;This way you will specify the architecture to use. If you do not specify the architecture you might end up installing both the x86_64 and the i386 packages with all it's dependencies.&lt;br /&gt;&lt;br /&gt;If you have already done so in error, you can easily query for these packages using the following command:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;$ rpm -qa --qf '%{name}.%{ARCH}\n' |grep i386&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;this command returns all i386 packages. You can pipe it directly into &lt;span&gt;rpm -e&lt;/span&gt; or choose to uninstall them by hand.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-2944829085970138008?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 25 Aug 2009 23:16:45 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Bearstech Hackable:1: Run Ogsmd on Hackable:1</title>
	<guid>tag:blog.hackable1.org,2009://1.4</guid>
	<link>http://blog.hackable1.org/2009/08/run-ogsmd-on-hackable1.html</link>
	<description>&lt;p&gt;As you may know, we are willing to migrate to FSO. As part of it, we made ogsmd running on H:1 and we will rewrite phone-kit to use libfso-glib instead of libgsmd.&lt;/p&gt;

&lt;p&gt;Until we get all the stuff packaged, here are the step to make ogsmd running on a Hackable:1 rev4 installation.&lt;/p&gt;

        &lt;font&gt;Install the framework

&lt;/font&gt;&lt;p&gt;We will use a git version that I know working. On your computer:
&lt;pre class=&quot;brush: shell&quot;&gt;
git clone git://git.freesmartphone.org/framework.git
cd framework
git checkout 17898fc0f73453c11d1b1e8db57f8e8a0cfbc943 .
cd ..
scp -r framework root@192.168.0.202: # I assume that it is you FR's IP
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;SSH into your freerunner and:
&lt;pre class=&quot;brush: shell&quot;&gt;
cd framework
python setup.py install
cd ..
&lt;/pre&gt;
&lt;/p&gt;

&lt;font&gt;Install the muxer&lt;/font&gt;&lt;br /&gt;

&lt;p&gt;We will use SHR packages which a copy of them is on our trac.
&lt;pre class=&quot;brush: shell&quot;&gt;
wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/fso-abyss_0.3.5+gitr67+ff68be1581069ca494a559e85f6299246888d3b5-r0_armv4t.ipk&amp;quot;
ar -x fso-abyss_0.3.5+gitr67+ff68be1581069ca494a559e85f6299246888d3b5-r0_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libgsm0710mux0_0.3.5+gitr35+8e3e7533b286d8086bce8fa09bce23bb9f18bb98-r1_armv4t.ipk&amp;quot;
ar -x libgsm0710mux0_0.3.5+gitr35+8e3e7533b286d8086bce8fa09bce23bb9f18bb98-r1_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libgsm0710-0_1.1.1+gitr15+3bb80ba6cc9f86ed3996f88bfa2986cc572489d6-r1_armv4t.ipk&amp;quot;
ar -x libgsm0710-0_1.1.1+gitr15+3bb80ba6cc9f86ed3996f88bfa2986cc572489d6-r1_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libfsotransport0_0.9.3+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk&amp;quot;
ar -x libfsotransport0_0.9.3+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk
tar -xvzf data.tar.gz -C /

wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/ogsmd/libfsobasics0_0.8.1.0+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk&amp;quot;
ar -x libfsobasics0_0.8.1.0+gitr367+3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7-r6.1_armv4t.ipk
tar -xvzf data.tar.gz -C /
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;We will use SHR frameworkd.conf:
&lt;pre class=&quot;brush: shell&quot;&gt;wget &amp;quot;http://git.shr-project.org/git/?p=shr-themes.git;a=blob_plain;f=frameworkd/frameworkd-config-shr/om-gta02/frameworkd.conf;hb=HEAD&amp;quot; -O /etc/frameworkd.conf
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;If the following file doesn't exists, libgsm0710mux segfaults (see http://trac.freesmartphone.org/ticket/467)
&lt;pre class=&quot;brush: shell&quot;&gt;
cat &amp;lt;&amp;lt; __EOF &amp;gt; /etc/abyss.conf
[omuxerd]
autoopen = 1
autoclose = 1
autoexit = 1
[session]
mode = 1
framesize = 98
port = /dev/ttySAC0
speed = 115200

[device]
wakeup_threshold = 6
wakeup_waitms = 200

__EOF
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;And if this one doesn't exists, fso-abyss claims it doesn't provide any channel
&lt;pre class=&quot;brush: shell&quot;&gt;
touch /etc/cornucopia.conf
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;A file may have permissions problem, first check it:
&lt;pre class=&quot;brush: shell&quot;&gt;
ls -l /usr/lib/dbus-1.0/dbus-daemon-launch-helper
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If the group isn't messagebus:
&lt;pre class=&quot;brush: shell&quot;&gt;
chgrp messagebus /usr/lib/dbus-1.0/dbus-daemon-launch-helper
chmod u+s /usr/lib/dbus-1.0/dbus-daemon-launch-helper # because chgrp removes the SUID
&lt;/pre&gt;&lt;/p&gt;

&lt;font&gt;Launch Ogsmd&lt;/font&gt;&lt;br /&gt;

&lt;p&gt;Let's kill the old stuff...
&lt;pre class=&quot;brush: shell&quot;&gt;
killall -9 ogsmd
&lt;/pre&gt;
...and launch te framework:
&lt;pre class=&quot;brush: shell&quot;&gt;
frameworkd -s ogsmd
&lt;/pre&gt;
If no error (Python Traceback) occurs, we can move on:&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;libfso-glib sample&lt;/font&gt;&lt;br /&gt;
&lt;font&gt;Install libfso-glib&lt;/font&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
wget &amp;quot;http://trac.hackable1.org/trac/raw-attachment/wiki/libfso-glib/libfso-glib0_0.2.0-gitrx44+9d292508739452b55b80ec40ec57405a5de2159f-r0_armv4t.ipk&amp;quot;
ar -x libfso-glib0_0.2.0-gitrx44+9d292508739452b55b80ec40ec57405a5de2159f-r0_armv4t.ipk
tar -xvzf data.tar.gz -C /
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;Install the sample&lt;/font&gt;
(See &lt;a href=&quot;http://trac.hackable1.org/trac/browser/trunk/src/applications/sample-libfso-glib-0.1/src/main.c&quot;&gt;the sources&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
wget http://trac.hackable1.org/trac/raw-attachment/wiki/libfso-glib/sample-libfso-glib_0.1-1_armel.deb
dpkg -i sample-libfso-glib_0.1-1_armel.deb
sample-w
&lt;/pre&gt;
You will be asked for your PIN
(unless you are already authentified) and you will be registered.


&lt;p&gt;Then, it will catch several signals. after that, you can call yourself and see the signals &quot;CallStatus&quot; be matched. These signals are sent whenever the status of a call (which ID is specified, i.e. &quot;1&quot;) change. (ie &quot;incoming&quot; or &quot;release&quot;). See &lt;a href=&quot;http://docs.freesmartphone.org/&quot;&gt;FSO doc&lt;/a&gt; for further information.&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;And now what ?&lt;/font&gt;
You can already, by reading freesmartphone.h, find any interesting function you need and write nice applications.&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;Any question ?&lt;/font&gt;&lt;br /&gt;
If you have any question about this manipulation or about Hackable:1, feel free to ask in the comments.&lt;/p&gt;

You can fin updates of this tutorial on our &lt;a href=&quot;http://trac.hackable1.org/trac/wiki/ogsmd&quot;&gt;trac&lt;/a&gt;</description>
	<pubDate>Wed, 19 Aug 2009 21:31:46 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: hackable:1 makes your device happy</title>
	<guid>tag:blog.hackable1.org,2009://1.3</guid>
	<link>http://blog.hackable1.org/2009/08/hackable1-makes-your-device-happy.html</link>
	<description>As a lot of you know, at Bearstech, we're very serious with hackable:1 and what we intend to do with it.&lt;br /&gt;&lt;br /&gt;If you were to ask to a typical hackable:1 developer, he'd probably say he crafts his code as he would paint an art piece or carve a nice wooden table. All the development is done for your GTA02 pleasure. &lt;br /&gt;
&lt;br /&gt;As can prove the following pictures, left alone, our GTA02s are not that happy. See how they seem to whine or just how they seem alone, oblivious to the fact that they're with their peers:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/boite-6.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/boite-thumb-600x450-6.jpg&quot; alt=&quot;boite.jpg&quot; class=&quot;mt-image-center&quot; height=&quot;450&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;But then, a little bit of H:1 magic, and look at how they seem to shine in happiness, all directed towards the same common objective, united to fight for their common goal:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.hackable1.org/assets_c/2009/08/hackable_1-7.html&quot;&gt;&lt;img src=&quot;http://blog.hackable1.org/assets_c/2009/08/hackable_1-thumb-600x450-7.jpg&quot; alt=&quot;hackable_1.jpg&quot; class=&quot;mt-image-center&quot; height=&quot;450&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;There is no &lt;strike&gt;spoon&lt;/strike&gt; more proof needed to say that hackable:1 will make your device happy. Up to you guys !&lt;br /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 17 Aug 2009 14:11:00 +0000</pubDate>
</item>
<item>
	<title>Bearstech Hackable:1: Welcome on our new hackable:blog !</title>
	<guid>tag:blog.hackable1.org,2009://1.2</guid>
	<link>http://blog.hackable1.org/2009/08/welcome-on-our-new-hackableblog.html</link>
	<description>Hey everyone,&lt;br /&gt;&lt;br /&gt;Long time no see. At last, we decided to setup a blog in order to keep you all in touch with what you need to know about hackable:1, and about the new things we do.&lt;br /&gt;&lt;br /&gt;Stay tuned, as we're bounded to put a lot of things here sooner than later!&lt;br /&gt;</description>
	<pubDate>Thu, 13 Aug 2009 17:35:21 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: qemu internal part 3: memory watchpoint</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/07/15/qemu-internal-part-3-memory-watchpoint/</guid>
	<link>http://vm-kernel.org/blog/2009/07/15/qemu-internal-part-3-memory-watchpoint/</link>
	<description>&lt;p align=&quot;justify&quot;&gt;In qemu there is an amazing feature – memory watchpoint. It can watch all the memory access including memory read, write or both of them. When guest os/application touches the memory region watched by qemu, a registered function will be called and you can do everything as you want in this function. The gdb stub in qemu uses it to implement the memory watch command.&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;The implemention of memory watchpoint is tricky in qemu. &lt;a href=&quot;http://vm-kernel.org/blog/2009/07/10/qemu-internal-part-2-softmmu/&quot;&gt;In last article of qemu internal&lt;/a&gt;, we know that when emulating memory access, qemu needs to distinguish the normal RAM read/write from memory mapped I/O read/write. If it is a memory mapped I/O address access, qemu will dispatch this access to the registered I/O emulation functions. Qemu use this mechanism to implement the memory watchpoint. When accessing the memory address watched by qemu, qemu will dispatch this access to the registered memory watch functions, even if this address is normal guest RAM address or memory mapped I/O address! Qemu will do all the magic things in these memory watch functions.&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;In the following, I will use an example to explain the whole process of memory watch implement of qemu.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;80103c60 &amp;lt;memcpy&amp;gt;:     &lt;br /&gt;80103c60:       00801021        move    v0,a0      &lt;br /&gt;80103c64 &amp;lt;__copy_user&amp;gt;:      &lt;br /&gt;80103c64:       2cca0004        sltiu   t2,a2,4      &lt;br /&gt;80103c68:       30890003        andi    t1,a0,0x3      &lt;br /&gt;80103c6c:       15400068        bnez    t2,80103e10 &amp;lt;__copy_user+0x1ac&amp;gt;      &lt;br /&gt;80103c70:       30a80003        andi    t0,a1,0x3      &lt;br /&gt;80103c74:       1520003d        bnez    t1,80103d6c &amp;lt;__copy_user+0x108&amp;gt;      &lt;br /&gt;80103c78:       00000000        nop      &lt;br /&gt;80103c7c:       15000046        bnez    t0,80103d98 &amp;lt;__copy_user+0x134&amp;gt;      &lt;br /&gt;80103c80:       00064142        srl     t0,a2,0x5      &lt;br /&gt;80103c84:       11000017        beqz    t0,80103ce4 &amp;lt;__copy_user+0x80&amp;gt;      &lt;br /&gt;80103c88:       30d8001f        andi    t8,a2,0x1f      &lt;br /&gt;80103c8c:       00000000        nop      &lt;br /&gt;80103c90:       8ca80000        lw      t0,0(a1)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align=&quot;justify&quot;&gt;These asm lines are objdumped from linux 2.6.30 kernel for mips malta. Assume that I want to  watch the memory access of virtual address 0x804cd000(&lt;em&gt;swapper_pg_dir&lt;/em&gt; in linux kernel).&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;First I insert the watchpoint into cpu. &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpu_watchpoint_insert(env, 0x804cd000, 4, BP_GDB | BP_MEM_ACCESS,     &lt;br /&gt;                        NULL);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And then I need to register the vm state changing call back functions.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;qemu_add_vm_change_state_handler(spy_vm_state_change, NULL);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align=&quot;justify&quot;&gt;If register a1=0x804cd000, guest linux kernel will touch the watched memory region when pc is 0x80103c90, then qemu dispatches this access to the registered memory watch function, even if this access is a noram guest RAM access.The memory watch functions in qemu are in array &lt;em&gt;watch_mem_read/watch_mem_write&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;exec.c&lt;/p&gt;
&lt;p&gt;2649 static CPUReadMemoryFunc *watch_mem_read[3] = {     &lt;br /&gt;2650     watch_mem_readb,      &lt;br /&gt;2651     watch_mem_readw,      &lt;br /&gt;2652     watch_mem_readl,      &lt;br /&gt;2653 };      &lt;br /&gt;2654       &lt;br /&gt;2655 static CPUWriteMemoryFunc *watch_mem_write[3] = {      &lt;br /&gt;2656     watch_mem_writeb,      &lt;br /&gt;2657     watch_mem_writew,      &lt;br /&gt;2658     watch_mem_writel,      &lt;br /&gt;2659 };&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In function &lt;em&gt;watch_mem_readl&lt;/em&gt;, it will call function &lt;em&gt;check_watchpoint&lt;/em&gt; first.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;exec.c&lt;/p&gt;
&lt;p&gt;2622 static uint32_t watch_mem_readl(void *opaque, target_phys_addr_t addr)     &lt;br /&gt;2623 {      &lt;br /&gt;2624     check_watchpoint(addr &amp;amp; ~TARGET_PAGE_MASK, ~0x3, BP_MEM_READ);      &lt;br /&gt;2625     return ldl_phys(addr);      &lt;br /&gt;2626 }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;2563 static void check_watchpoint(int offset, int len_mask, int flags)     &lt;br /&gt;2564 {      &lt;br /&gt;2565     CPUState *env = cpu_single_env;      &lt;br /&gt;2566     target_ulong pc, cs_base;      &lt;br /&gt;2567     TranslationBlock *tb;      &lt;br /&gt;2568     target_ulong vaddr;      &lt;br /&gt;2569     CPUWatchpoint *wp;      &lt;br /&gt;2570     int cpu_flags;      &lt;br /&gt;2571       &lt;br /&gt;2572     if (env-&amp;gt;watchpoint_hit) {      &lt;br /&gt;2573         /* We re-entered the check after replacing the TB. Now raise      &lt;br /&gt;2574          * the debug interrupt so that is will trigger after the      &lt;br /&gt;2575          * current instruction. */      &lt;br /&gt;2576         cpu_interrupt(env, CPU_INTERRUPT_DEBUG);      &lt;br /&gt;2577         return;      &lt;br /&gt;2578     }      &lt;br /&gt;2579     vaddr = (env-&amp;gt;mem_io_vaddr &amp;amp; TARGET_PAGE_MASK) + offset;      &lt;br /&gt;2580     TAILQ_FOREACH(wp, &amp;amp;env-&amp;gt;watchpoints, entry) {      &lt;br /&gt;2581         if ((vaddr == (wp-&amp;gt;vaddr &amp;amp; len_mask) ||      &lt;br /&gt;2582              (vaddr &amp;amp; wp-&amp;gt;len_mask) == wp-&amp;gt;vaddr) &amp;amp;&amp;amp; (wp-&amp;gt;flags &amp;amp; flags)) {      &lt;br /&gt;2583             wp-&amp;gt;flags |= BP_WATCHPOINT_HIT;      &lt;br /&gt;2584             if (!env-&amp;gt;watchpoint_hit) {      &lt;br /&gt;2585                 env-&amp;gt;watchpoint_hit = wp;      &lt;br /&gt;2586                 tb = tb_find_pc(env-&amp;gt;mem_io_pc);      &lt;br /&gt;2587                 if (!tb) {      &lt;br /&gt;2588                     cpu_abort(env, &amp;quot;check_watchpoint: could not find TB for &amp;quot;      &lt;br /&gt;2589                               &amp;quot;pc=%p&amp;quot;, (void *)env-&amp;gt;mem_io_pc);      &lt;br /&gt;2590                 }      &lt;br /&gt;2591                 cpu_restore_state(tb, env, env-&amp;gt;mem_io_pc, NULL);      &lt;br /&gt;2592                 tb_phys_invalidate(tb, -1);      &lt;br /&gt;2593                 if (wp-&amp;gt;flags &amp;amp; BP_STOP_BEFORE_ACCESS) {      &lt;br /&gt;2594                     env-&amp;gt;exception_index = EXCP_DEBUG;      &lt;br /&gt;2595                 } else {      &lt;br /&gt;2596                     cpu_get_tb_cpu_state(env, &amp;amp;pc, &amp;amp;cs_base, &amp;amp;cpu_flags);      &lt;br /&gt;2597                     tb_gen_code(env, pc, cs_base, cpu_flags, 1);      &lt;br /&gt;2598                 }      &lt;br /&gt;2599                 cpu_resume_from_signal(env, NULL);      &lt;br /&gt;2600             }      &lt;br /&gt;2601         } else {      &lt;br /&gt;2602             wp-&amp;gt;flags &amp;amp;= ~BP_WATCHPOINT_HIT;      &lt;br /&gt;2603         }      &lt;br /&gt;2604     }      &lt;br /&gt;2605 }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align=&quot;justify&quot;&gt;When &lt;em&gt;check_watchpoint&lt;/em&gt; is executed in the first time, &lt;em&gt;env-&amp;gt;watchpoint_hit&lt;/em&gt; is null. Then it will check whether the address is a watched address. If so, set the flag BP_WATCHPOINT_HIT in &lt;em&gt;wp-&amp;gt;flags&lt;/em&gt;(line 2583) and set &lt;em&gt;env-&amp;gt;watchpoint_hit&lt;/em&gt; to &lt;em&gt;wp&lt;/em&gt;. Then it will find and invalidate the current translation block(line 2586-2592). If the flag BP_STOP_BEFORE_ACCESS in &lt;em&gt;wp&lt;/em&gt; is not set, then qemu will translate the code from current pc(line 2596-2597) and resume the guest instruction emulation(line 2599). Function &lt;em&gt;cpu_resume_from_signal&lt;/em&gt; will jump to line 256 in cpu-exec.c and rerun the emulation process from the lw instruction(pc=0x80103c90). &lt;/p&gt;
&lt;blockquote&gt;&lt;p align=&quot;justify&quot;&gt;cpu-exec.c&lt;/p&gt;
&lt;p&gt;255     for(;;) {     &lt;br /&gt;256         if (setjmp(env-&amp;gt;jmp_env) == 0) {      &lt;br /&gt;257             env-&amp;gt;current_tb = NULL;      &lt;br /&gt;258             /* if an exception is pending, we execute it here */      &lt;br /&gt;259             if (env-&amp;gt;exception_index &amp;gt;= 0) {      &lt;br /&gt;260                 if (env-&amp;gt;exception_index &amp;gt;= EXCP_INTERRUPT) {      &lt;br /&gt;261                     /* exit request from the cpu execution loop */      &lt;br /&gt;262                     ret = env-&amp;gt;exception_index;      &lt;br /&gt;263                     if (ret == EXCP_DEBUG)      &lt;br /&gt;264                         cpu_handle_debug_exception(env);      &lt;br /&gt;265                     break;      &lt;br /&gt;266                 } else {&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align=&quot;justify&quot;&gt;Why do qemu need to invalidate current translation block and regenerate the code? Because this memory access(pc=0x80103c90) is in the middle of a translation block. If we want to rerun this instruction, we need to regenerate the code from this instruction(pc=0x80103c90). Moreover before invalidating the translation block, qemu needs to sync the cpu state to guest cpu(&lt;em&gt;cpu_restore_state&lt;/em&gt;). That’s because the cpu state in the middle of translation block is different from the actual cpu state. Understanding this process needs some knowledge of binary translation. If you find it is hard to understand, just ignore it.&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;Now qemu rerun the guest os from pc=0x80103c90. Because the memory address is a watched memory address, qemu will call &lt;em&gt;watch_mem_readl-&amp;gt;check_watchpoint&lt;/em&gt; again. But this time, &lt;em&gt;env-&amp;gt;watchpoint_hit&lt;/em&gt; is not null(qemu set it in last call), then it will call &lt;em&gt;cpu_interrupt&lt;/em&gt; and return from function &lt;em&gt;check_watchpoint&lt;/em&gt;. Then in &lt;em&gt;watch_mem_readl&lt;/em&gt; it will call &lt;em&gt;ldl_phys&lt;/em&gt; to fetch the value from guest RAM. Function &lt;em&gt;cpu_interrupt&lt;/em&gt; in &lt;em&gt;check_watchpoint&lt;/em&gt;  sets the &lt;em&gt;CPU_INTERRUPT_DEBUG&lt;/em&gt; to flag to &lt;em&gt;env-&amp;gt;interrupt_request&lt;/em&gt;.  &lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;Then qemu runs normally just like nothing has happened. Because the &lt;em&gt;CPU_INTERRUPT_DEBUG&lt;/em&gt; has been set in &lt;em&gt;env-&amp;gt;interrupt_request&lt;/em&gt;, the main loop of cpu emulation will return.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpu-exec.c&lt;/p&gt;
&lt;p&gt;355                     if (interrupt_request &amp;amp; CPU_INTERRUPT_DEBUG) {     &lt;br /&gt;356                         env-&amp;gt;interrupt_request &amp;amp;= ~CPU_INTERRUPT_DEBUG;      &lt;br /&gt;357                         env-&amp;gt;exception_index = EXCP_DEBUG;      &lt;br /&gt;358                         cpu_loop_exit();      &lt;br /&gt;359                     }&lt;/p&gt;
&lt;p&gt; 54 void cpu_loop_exit(void)     &lt;br /&gt; 55 {      &lt;br /&gt; 56     /* NOTE: the register at this point must be saved by hand because      &lt;br /&gt; 57        longjmp restore them */      &lt;br /&gt; 58     regs_to_env();      &lt;br /&gt; 59     longjmp(env-&amp;gt;jmp_env, 1);      &lt;br /&gt; 60 }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align=&quot;justify&quot;&gt;Function &lt;em&gt;cpu_loop_exit&lt;/em&gt; will do longjmp to line 256 in cpu-exec.c. Because &lt;em&gt;env-&amp;gt;exception_index&lt;/em&gt; is &lt;em&gt;EXCP_DEBUG&lt;/em&gt;, it will break from the loop of function &lt;em&gt;cpu_exec&lt;/em&gt;. Function &lt;em&gt;cpu_exec&lt;/em&gt; returns to &lt;em&gt;main_loop&lt;/em&gt; in vl.c.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;vl.c&lt;/p&gt;
&lt;p&gt;3800                 ret = cpu_exec(env);&lt;/p&gt;
&lt;p&gt;3850             if (unlikely(ret == EXCP_DEBUG)) {     &lt;br /&gt;3851                 gdb_set_stop_cpu(cur_cpu);      &lt;br /&gt;3852                 vm_stop(EXCP_DEBUG);      &lt;br /&gt;3853             }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align=&quot;justify&quot;&gt;It will call &lt;em&gt;gdb_set_stop_cpu&lt;/em&gt; and then &lt;em&gt;vm_stop&lt;/em&gt; to stop the qemu. It the virtual state is changed, qemu will the call the callback functions registered by &lt;em&gt;qemu_add_vm_change_state_handler&lt;/em&gt;. So the function &lt;em&gt;spy_vm_state_change&lt;/em&gt; will be called.&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;In sum, when accessing the watched memory address, the memory watch functions will be called. It will call function&lt;em&gt; check_watchpoint&lt;/em&gt;. Function &lt;em&gt;check_watchpoint&lt;/em&gt; will set &lt;em&gt;env-&amp;gt;watchpoint_hit&lt;/em&gt; to current watchpoint and rerun the guest os/applicaton from current pc. Then memory watched functions will be called again. It will call &lt;em&gt;function check_watchpoint&lt;/em&gt;. This time, function &lt;em&gt;check_watchpoint&lt;/em&gt; just set the flag in &lt;em&gt;env-&amp;gt;interrupt_request&lt;/em&gt; and tells cpu to interrupt the emulation process. And then qemu will return to the &lt;em&gt;main_loop&lt;/em&gt; and stop the vm. At last it will call the registered vm change state callback functions. &lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560595/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2009/07/15/qemu-internal-part-3-memory-watchpoint/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560595/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560595/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 15 Jul 2009 09:31:00 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: qemu internal part 2: softmmu</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/07/10/qemu-internal-part-2-softmmu/</guid>
	<link>http://vm-kernel.org/blog/2009/07/10/qemu-internal-part-2-softmmu/</link>
	<description>&lt;p&gt;Qemu uses softmmu to accelerate the process of finding the mapping between guest physical address and host virtual address and the mapping between guest I/O region and qemu I/O emulation functions. In this article, I assume the guest page table size is 4K.&lt;/p&gt;
&lt;p&gt;1. the two level guest physical page descriptor table&lt;/p&gt;
&lt;p&gt;Qemu uses a two level guest physical page descriptor table to maintain the guest memory space and MMIO space. The table is pointed by &lt;em&gt;l1_phys_map&lt;/em&gt;. Bits [31:22] is used to index first level entry and bits [21:12] is used to index the second level entry. The entry of the second level table is &lt;em&gt;PhysPageDesc&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;exec.c&lt;/p&gt;
&lt;p&gt;146 typedef struct PhysPageDesc {      &lt;br /&gt;147     /* offset in host memory of the page + io_index in the low bits */       &lt;br /&gt;148     ram_addr_t phys_offset;       &lt;br /&gt;149     ram_addr_t region_offset;       &lt;br /&gt;150 } PhysPageDesc;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If the memory region is RAM, then the bits [31:12] of &lt;em&gt;phys_offset&lt;/em&gt; means the offset of this page in emulated physical memory. If the memory region is memory mapped I/O, then the bits of [11:3] of &lt;em&gt;phys_offset&lt;/em&gt; means the index in &lt;em&gt;io_mem_write/io_mem_read&lt;/em&gt; array. When accessing this memory region, the functions in &lt;em&gt;io_mem_write/io_mem_read&lt;/em&gt; of index phys_offset will be called.&lt;/p&gt;
&lt;p&gt;2. register the guest physical memory&lt;/p&gt;
&lt;p&gt;Function &lt;em&gt;cpu_register_physical_memory&lt;/em&gt; is used to register a guest memory region. If &lt;em&gt;phys_offset&lt;/em&gt; is IO_MEM_RAM then it means this region is guest RAM space. If the &lt;em&gt;phys_offset&lt;/em&gt; &amp;gt;IO_MEM_ROM, then it means this memory region is MMIO space.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;898 static inline void cpu_register_physical_memory(target_phys_addr_t start_addr,      &lt;br /&gt;899                                                 ram_addr_t size,       &lt;br /&gt;900                                                 ram_addr_t phys_offset)       &lt;br /&gt;901 {       &lt;br /&gt;902     cpu_register_physical_memory_offset(start_addr, size, phys_offset, 0);       &lt;br /&gt;903 }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Function &lt;em&gt;cpu_register_physical_memory_offset&lt;/em&gt; will first find the PhysPageDesc in table &lt;em&gt;l1_phys_map&lt;/em&gt; using the given guest physical address&lt;em&gt;.&lt;/em&gt; If finding the entry, qemu will update the entry. If not finding the entry, then qemu creates a new entry and updates its value and insert this entry to the table at last.&lt;/p&gt;
&lt;p&gt;In malta emulation, the following is the code to register malta RAM space.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;hw/mips_malta.c&lt;/p&gt;
&lt;p&gt;811     cpu_register_physical_memory(0, ram_size, IO_MEM_RAM);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;3. register the mmio space&lt;/p&gt;
&lt;p&gt;Before registering mmio space using &lt;em&gt;cpu_register_physical_memory,&lt;/em&gt; qemu uses the function &lt;em&gt;cpu_register_io_memory&lt;/em&gt; to register the I/O emulation functions to array &lt;em&gt;io_mem_write/io_mem_read.&lt;/em&gt; &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;exec.c&lt;/p&gt;
&lt;p&gt;2851 int cpu_register_io_memory(int io_index,      &lt;br /&gt;2852                            CPUReadMemoryFunc **mem_read,       &lt;br /&gt;2853                            CPUWriteMemoryFunc **mem_write,       &lt;br /&gt;2854                            void *opaque)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This function will return the index in array io_mem_write/io_mem_read and this index will be passed to function &lt;em&gt;cpu_register_physical_memory&lt;/em&gt; via parameter &lt;em&gt;phys_offset&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;hw/mips_malta.c&lt;/p&gt;
&lt;p&gt;malta = cpu_register_io_memory(0, malta_fpga_read,      &lt;br /&gt;                                   malta_fpga_write, s); &lt;/p&gt;
&lt;p&gt;cpu_register_physical_memory(base, 0x900, malta);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;4. softmmu&lt;/p&gt;
&lt;p&gt;Given the guest virtual address, how does qemu find the corresponding host virtual address? First qemu needs to translate the guest virtual address to guest physical address. Then qemu needs to find the PhysPageDesc entry in table &lt;em&gt;l1_phys_map&lt;/em&gt; and get the &lt;em&gt;phys_offset&lt;/em&gt;. At last qemu should add &lt;em&gt;phys_offset&lt;/em&gt; to &lt;em&gt;phys_ram_base&lt;/em&gt; to get the host virtual address.&lt;/p&gt;
&lt;p&gt;Qemu uses a softmmu model to speed up this process. Its main idea is storing the offset of guest virtual address to host virtual address in a TLB table. When translating the guest virtual address to host virtual address, it will search this TLB table firstly. If there is an entry in the table, then qemu can add this offset to guest virtual address to get the host virtual address directly. Otherwise, it needs to search the l1_phys_map table and then fill the corresponding entry to the TLB table. The index of this TLB table is bits [19:12] of guest virtual address and there is no asid field in tlb entry. This means the TLB table needs to be flushed in process switch!&lt;/p&gt;
&lt;p&gt;This TLB table idea is just like the most traditional hardware TLB. However, to MIPS cpu, there is another mmu model in qemu. Unlike x86 cpu, MIPS does &lt;strong&gt;NOT&lt;/strong&gt; care about hardware page table. Instead it uses hardware TLB which is &lt;strong&gt;NOT&lt;/strong&gt; transparent to software. Maybe It is another topic I will explain in another article. What we need to understand here is that the softmmu model in this article is not the mmu model of MIPS cpu itself.&lt;/p&gt;
&lt;p&gt;Moreover, besides helping speed up the process of translating guest virtual address to host virtual address, this softmmu model can speed up the process of dispatching I/O emulation functions according to guest virtual address too. In this case, the idex of I/O emulation functions in &lt;em&gt;io_mem_write/io_mem_read&lt;/em&gt; is stored in iotlb.&lt;/p&gt;
&lt;p&gt;The format of TLB entry is as flowing:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpu-defs.h&lt;/p&gt;
&lt;p&gt;176     CPUTLBEntry tlb_table[NB_MMU_MODES][CPU_TLB_SIZE];                  \      &lt;br /&gt;177     target_phys_addr_t iotlb[NB_MMU_MODES][CPU_TLB_SIZE];   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;108 typedef struct CPUTLBEntry {      &lt;br /&gt;109     /* bit TARGET_LONG_BITS to TARGET_PAGE_BITS : virtual address       &lt;br /&gt;110        bit TARGET_PAGE_BITS-1..4  : Nonzero for accesses that should not       &lt;br /&gt;111                                     go directly to ram.       &lt;br /&gt;112        bit 3                      : indicates that the entry is invalid       &lt;br /&gt;113        bit 2..0                   : zero       &lt;br /&gt;114     */       &lt;br /&gt;115     target_ulong addr_read;       &lt;br /&gt;116     target_ulong addr_write;       &lt;br /&gt;117     target_ulong addr_code;       &lt;br /&gt;124     target_phys_addr_t addend;       &lt;br /&gt;131 } CPUTLBEntry;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Field &lt;em&gt;addr_read/write/code&lt;/em&gt; stores the guest virtual address for TLB entry. It is the tag of this entry. Filed a&lt;em&gt;ddend&lt;/em&gt; is the offset of host virtual address to guest virtual address. We can add this value to guest virtual address to get the host virtual address.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;addend = host_virtual_address – guest_virtual_address&lt;/p&gt;
&lt;p&gt;host_virtual_address = &lt;em&gt;&lt;strong&gt;phys_ram_base(qemu variable)&lt;/strong&gt;&lt;/em&gt; + guest_physical_address – guest_physical_address_base(0 in MIPS) &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;em&gt;iotlb&lt;/em&gt; stores the index of I/O emulation function in &lt;em&gt;io_mem_write/io_mem_read.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Function __ldb_mmu/__ldl_mmu/__ldw_mmu is used to translating the guest virtual address to host virtual address or dispatching guest virtual address to I/O emulation functions.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;softmmu_template.h&lt;/p&gt;
&lt;p&gt; 86 DATA_TYPE REGPARM glue(glue(__ld, SUFFIX), MMUSUFFIX)(target_ulong addr,     &lt;br /&gt; 87                                                       int mmu_idx)      &lt;br /&gt; 88 {      &lt;br /&gt; 89     DATA_TYPE res;      &lt;br /&gt; 90     int index;      &lt;br /&gt; 91     target_ulong tlb_addr;      &lt;br /&gt; 92     target_phys_addr_t addend;      &lt;br /&gt; 93     void *retaddr;      &lt;br /&gt; 94       &lt;br /&gt; 95     /* test if there is match for unaligned or IO access */      &lt;br /&gt; 96     /* XXX: could done more in memory macro in a non portable way */      &lt;br /&gt; 97     index = (addr &amp;gt;&amp;gt; TARGET_PAGE_BITS) &amp;amp; (CPU_TLB_SIZE - 1);      &lt;br /&gt; 98  redo:      &lt;br /&gt; 99     tlb_addr = env-&amp;gt;tlb_table[mmu_idx][index].ADDR_READ;      &lt;br /&gt;100     if ((addr &amp;amp; TARGET_PAGE_MASK) == (tlb_addr &amp;amp; (TARGET_PAGE_MASK | TLB_INVALID_MASK))) {      &lt;br /&gt;101         if (tlb_addr &amp;amp; ~TARGET_PAGE_MASK) {      &lt;br /&gt;102             /* IO access */      &lt;br /&gt;103             if ((addr &amp;amp; (DATA_SIZE - 1)) != 0)      &lt;br /&gt;104                 goto do_unaligned_access;      &lt;br /&gt;105             retaddr = GETPC();      &lt;br /&gt;106             addend = env-&amp;gt;iotlb[mmu_idx][index];      &lt;br /&gt;107             res = glue(io_read, SUFFIX)(addend, addr, retaddr);      &lt;br /&gt;108         } else if (((addr &amp;amp; ~TARGET_PAGE_MASK) + DATA_SIZE - 1) &amp;gt;= TARGET_PAGE_SIZE) {      &lt;br /&gt;109             /* slow unaligned access (it spans two pages or IO) */      &lt;br /&gt;110         do_unaligned_access:      &lt;br /&gt;111             retaddr = GETPC();      &lt;br /&gt;112 #ifdef ALIGNED_ONLY      &lt;br /&gt;113             do_unaligned_access(addr, READ_ACCESS_TYPE, mmu_idx, retaddr);      &lt;br /&gt;114 #endif      &lt;br /&gt;115             res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(addr,      &lt;br /&gt;116                                                          mmu_idx, retaddr);      &lt;br /&gt;117         } else {      &lt;br /&gt;118             /* unaligned/aligned access in the same page */      &lt;br /&gt;119 #ifdef ALIGNED_ONLY      &lt;br /&gt;120             if ((addr &amp;amp; (DATA_SIZE - 1)) != 0) {      &lt;br /&gt;121                 retaddr = GETPC();      &lt;br /&gt;122                 do_unaligned_access(addr, READ_ACCESS_TYPE, mmu_idx, retaddr);      &lt;br /&gt;123             }      &lt;br /&gt;124 #endif      &lt;br /&gt;125             addend = env-&amp;gt;tlb_table[mmu_idx][index].addend;      &lt;br /&gt;126             res = glue(glue(ld, USUFFIX), _raw)((uint8_t *)(long)(addr+addend));      &lt;br /&gt;127         }      &lt;br /&gt;128     } else {      &lt;br /&gt;129         /* the page is not in the TLB : fill it */      &lt;br /&gt;130         retaddr = GETPC();      &lt;br /&gt;131 #ifdef ALIGNED_ONLY      &lt;br /&gt;132         if ((addr &amp;amp; (DATA_SIZE - 1)) != 0)      &lt;br /&gt;133             do_unaligned_access(addr, READ_ACCESS_TYPE, mmu_idx, retaddr);      &lt;br /&gt;134 #endif      &lt;br /&gt;135         tlb_fill(addr, READ_ACCESS_TYPE, mmu_idx, retaddr);      &lt;br /&gt;136         goto redo;      &lt;br /&gt;137     }      &lt;br /&gt;138     return res;      &lt;br /&gt;139 }      &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In this function, it will get the index of TLB table and compare the guest virtual address with the address stored in this tlb entry(line 97-100). If these two addresses match, it means this guest virtual address hits the tlb entry. Then qemu will determine this virtual address is a MMIO address or RAM address. If it is a MMIO address, get the index of IO emulation functions from &lt;em&gt;env-&amp;gt;iotlb &lt;/em&gt;and call these functions(line 103-117). If it is a RAM space, add the guest virtual address to addend to get the host virtual address(line 118-128). If there is no matched tlb entry, then fietch the entry from table &lt;em&gt;l1_phys_map &lt;/em&gt;and insert the entry to tlb table(line 135).&lt;/p&gt;
&lt;p&gt;5. an example&lt;/p&gt;
&lt;p&gt;When fetching code from guest memory, the whole code path is as flowing:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpu_exec-&amp;gt;tb_find_fast-&amp;gt;tb_find_slow-&amp;gt;get_phys_addr_code-&amp;gt;(if tlb not match)ldub_code(softmmu_header.h)-&amp;gt;__ldl_mmu(softmmu_template.h)-&amp;gt;tlb_fill-&amp;gt;cpu_mips_handle_mmu_fault-&amp;gt;tlb_set_page-&amp;gt;tlb_set_page_exec&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560596/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2009/07/10/qemu-internal-part-2-softmmu/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560596/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560596/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 10 Jul 2009 03:14:00 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: qemu internal part 1: the code path of memory load emulation</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/07/08/qemu-internal-part-1-the-code-path-of-memory-load-emulation/</guid>
	<link>http://vm-kernel.org/blog/2009/07/08/qemu-internal-part-1-the-code-path-of-memory-load-emulation/</link>
	<description>&lt;p&gt;In qemu, there are two different meanings of target. The first meaning of ‘target’ means the emulated target machine architecture. For example, when emulating mips machine on x86, the target is mips and host is x86. However, in tcg(tiny code generator), target has a different meaning. It means the generated binary architecture. In the example of emulating mips on x86, in tcg the target means x86 because tcg will generate x86 binary.&lt;/p&gt;
&lt;p&gt;This article is based on qemu version 0.10.5 and target machine emulated is little endian mips. I will summarize the code path of mips lw instruction emulation in qemu.&lt;/p&gt;
&lt;p&gt;Function &lt;i&gt;decode_opc&lt;/i&gt; is used for decoding all the fetched instructions before tcg generating the target binary.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;target-mips/translate.c&lt;/p&gt;
&lt;p&gt;7566 static void decode_opc (CPUState *env, DisasContext *ctx)&lt;/p&gt;
&lt;p&gt;7960     case OPC_LB ... OPC_LWR: /* Load and stores */      &lt;br /&gt;7961     case OPC_SB ... OPC_SW:       &lt;br /&gt;7962     case OPC_SWR:       &lt;br /&gt;7963     case OPC_LL:       &lt;br /&gt;7964     case OPC_SC:       &lt;br /&gt;7965          gen_ldst(ctx, op, rt, rs, imm);       &lt;br /&gt;7966          break;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It will call function &lt;em&gt;gen_ldst&lt;/em&gt; which is also in &lt;em&gt;target-mips/translate.c&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote dir=&quot;ltr&quot;&gt;&lt;p&gt;target-mips/translate.c&lt;/p&gt;
&lt;p&gt;973 static void gen_ldst (DisasContext *ctx, uint32_t opc, int rt,      &lt;br /&gt;974                       int base, int16_t offset)&lt;/p&gt;
&lt;p&gt;1046     case OPC_LW:      &lt;br /&gt;1047         op_ldst_lw(t0, ctx);       &lt;br /&gt;1048         gen_store_gpr(t0, rt);       &lt;br /&gt;1049         opn = &amp;quot;lw&amp;quot;;       &lt;br /&gt;1050         break;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Function &lt;em&gt;op_ldst_lw&lt;/em&gt; will generate the target binary which fetches the value from the emulated guest memory and &lt;em&gt;gen_store_gpr&lt;/em&gt; will store this value to the emulated cpu’s general register rt.&lt;/p&gt;
&lt;p&gt;Function &lt;em&gt;op_ldst_lw &lt;/em&gt;is generated by the macro &lt;em&gt;OP_LD&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;target-mips/translate.c&lt;/p&gt;
&lt;p&gt;901 #define OP_LD(insn,fname)                                        \      &lt;br /&gt;902 static inline void op_ldst_##insn(TCGv t0, DisasContext *ctx)    \       &lt;br /&gt;903 {                                                                \       &lt;br /&gt;904     tcg_gen_qemu_##fname(t0, t0, ctx-&amp;gt;mem_idx);                  \       &lt;br /&gt;905 }&lt;/p&gt;
&lt;p&gt;910 OP_LD(lw,ld32s);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We can find that &lt;em&gt;op_ldst_lw &lt;/em&gt;is a function which calls function &lt;em&gt;tcg_gen_qemu_ld32s&lt;/em&gt;. It will output the OPC(&lt;em&gt;INDEX_op_qemu_ld32u&lt;/em&gt;) and args to &lt;em&gt;gen_opc_ptr&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;tcg/tcg-op.h&lt;/p&gt;
&lt;p&gt;1793 static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index)      &lt;br /&gt;1794 {       &lt;br /&gt;1795 #if TARGET_LONG_BITS == 32       &lt;br /&gt;1796     tcg_gen_op3i_i32(INDEX_op_qemu_ld32u, ret, addr, mem_index);       &lt;br /&gt;1797 #else       &lt;br /&gt;1798     tcg_gen_op4i_i32(INDEX_op_qemu_ld32u, TCGV_LOW(ret), TCGV_LOW(addr),       &lt;br /&gt;1799                      TCGV_HIGH(addr), mem_index);       &lt;br /&gt;1800     tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31);       &lt;br /&gt;1801 #endif       &lt;br /&gt;1802 }&lt;/p&gt;
&lt;p&gt;99 static inline void tcg_gen_op3i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2,      &lt;br /&gt;100                                     TCGArg arg3)       &lt;br /&gt;101 {       &lt;br /&gt;102     *gen_opc_ptr++ = opc;       &lt;br /&gt;103     *gen_opparam_ptr++ = GET_TCGV_I32(arg1);       &lt;br /&gt;104     *gen_opparam_ptr++ = GET_TCGV_I32(arg2);       &lt;br /&gt;105     *gen_opparam_ptr++ = arg3;       &lt;br /&gt;106 }&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The path of generation of target binary code of tcg is as following.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cpu_gen_code-&amp;gt;tcg_gen_code-&amp;gt;tcg_gen_code_common-&amp;gt;tcg_reg_alloc_op-&amp;gt;tcg_out_op&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;tcg/i386/tcg-target.c&lt;/p&gt;
&lt;p&gt;856 static inline void tcg_out_op(TCGContext *s, int opc,      &lt;br /&gt;857                               const TCGArg *args, const int *const_args)&lt;/p&gt;
&lt;p&gt;1041     case INDEX_op_qemu_ld32u:     &lt;br /&gt;1042         tcg_out_qemu_ld(s, args, 2);      &lt;br /&gt;1043         break;&lt;/p&gt;
&lt;p&gt;431 static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,     &lt;br /&gt;432                             int opc)&lt;/p&gt;
&lt;p&gt;508 #if TARGET_LONG_BITS == 32     &lt;br /&gt;509     tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_EDX, mem_index);      &lt;br /&gt;510 #else      &lt;br /&gt;511     tcg_out_mov(s, TCG_REG_EDX, addr_reg2);      &lt;br /&gt;512     tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_ECX, mem_index);      &lt;br /&gt;513 #endif      &lt;br /&gt;514     tcg_out8(s, 0xe8);      &lt;br /&gt;515     tcg_out32(s, (tcg_target_long)qemu_ld_helpers[s_bits] -       &lt;br /&gt;516               (tcg_target_long)s-&amp;gt;code_ptr - 4);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In line 514, tcg outputs 0xe8 which means a call instruction in x86. It will call the functions in array &lt;em&gt;qemu_ld_helpers.&lt;/em&gt; The args to the functions is passed by registers EAX,EDX and ECX.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;tcg/i386/tcg-target.c&lt;/p&gt;
&lt;p&gt;413 static void *qemu_ld_helpers[4] = {     &lt;br /&gt;414     __ldb_mmu,      &lt;br /&gt;415     __ldw_mmu,      &lt;br /&gt;416     __ldl_mmu,      &lt;br /&gt;417     __ldq_mmu,      &lt;br /&gt;418 };&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These functions &lt;em&gt;__ldb_mmu/__ldw_mmu&lt;/em&gt; are defined in softmmu_template.h.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;softmmu_tempate.h&lt;/p&gt;
&lt;p&gt;DATA_TYPE REGPARM glue(glue(__ld, SUFFIX), MMUSUFFIX)(target_ulong addr,     &lt;br /&gt;                                                      int mmu_idx)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In sum, function &lt;em&gt;gen_ldst&lt;/em&gt; outputs the OPC(INDEX_op_qemu_ld32u) to &lt;em&gt;gen_opc_ptr&lt;/em&gt; and &lt;em&gt;tcg_out_op&lt;/em&gt; will generates the target binary according to the OPC. In the lw instruction emulation, it will generate the x86 binary calls the functions in &lt;em&gt;softmmu_template.h&lt;/em&gt;.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560597/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2009/07/08/qemu-internal-part-1-the-code-path-of-memory-load-emulation/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560597/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560597/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 08 Jul 2009 06:58:00 +0000</pubDate>
</item>
<item>
	<title>Open Electrons: Using Fedoras Windows cross compilers to extend EDA software distribution</title>
	<guid>http://www10.edacafe.com/blogs/chitleshgoorah/?p=10</guid>
	<link>http://www10.edacafe.com/blogs/chitleshgoorah/2009/06/14/using-fedoras-windows-cross-compilers-to-extend-eda-software-distribution/</link>
	<description>&lt;p&gt;Last week &lt;a href=&quot;http://clunixchit.blogspot.com/2009/06/fedora-electronic-lab-11-leonidas.html&quot;&gt;announced&lt;/a&gt; the availability of Fedora 11. This new release entails Windows cross-compilers&lt;br /&gt;
introduced by &lt;a href=&quot;http://fedoraproject.org/wiki/MinGW&quot;&gt;Fedora&amp;#8217;s MinGW Special Interest Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The aim is to eliminate duplication of work for application developers by providing a range of libraries and development tools which have already been ported to the cross-compiler environment. This means that developers will not need to recompile the application stack themselves, but can concentrate just on the changes needed to their own application. &lt;/p&gt;
&lt;p&gt;Though this feature will interest a wide range of software developers, I believe EDA vendors will also be very interested. I will demonstrate a quick example of how to use these Windows cross-compilers.&lt;/p&gt;
&lt;p&gt;In this demo, I will use &lt;a href=&quot;http://gerbv.sourceforge.net/&quot;&gt;gerbv&lt;/a&gt;, a gerber viewer and the example &amp;#8220;&lt;a href=&quot;http://clunixchit.blogspot.com/2009/05/eda-temperature-collector.html&quot;&gt;Temperature Collector&lt;/a&gt;&amp;#8221; developed by Levente Kovacs.&lt;/p&gt;
&lt;p&gt;To install gerbv on fedora,&lt;/p&gt;
&lt;p&gt;# yum install gerbv&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_MLRG-hriKN8/SjTuXReG7kI/AAAAAAAABZ0/3k6I7RkcRcA/s1600-h/col_gerbv.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_MLRG-hriKN8/SjTuXReG7kI/AAAAAAAABZ0/3k6I7RkcRcA/s200/col_gerbv.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The above screenshot shows gerbv compiled under a normal Linux &amp;#8220;configure &amp;amp;&amp;amp; make&amp;#8221;. Now we will compile the same gerbv for Windows. &lt;/p&gt;
&lt;p&gt;1. &lt;a href=&quot;http://kent.dl.sourceforge.net/sourceforge/gerbv/gerbv-2.2.0.tar.gz&quot;&gt;Download&lt;/a&gt; the sources of gerbv.&lt;/p&gt;
&lt;p&gt;2. Setup your Fedora 11 Linux&lt;/p&gt;
&lt;p&gt;# yum install mingw32-gcc mingw32-gtk2 mingw32-crossreport mingw32-nsiswrapper wine&lt;/p&gt;
&lt;p&gt;3. &lt;a href=&quot;http://fedoraproject.org/wiki/MinGW/Configure_wine&quot;&gt;Configure Wine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;4. Extract gerbv sources.&lt;/p&gt;
&lt;p&gt;5. Compilation of gerbv for Windows&lt;br /&gt;$ cd gerbv-2.2.0&lt;br /&gt;$ mingw32-configure&lt;br /&gt;$ mingw32-make&lt;/p&gt;
&lt;p&gt;The final Windows executable file of gerbv will be stored in src/.libs/ as gerbv.exe together with its DLL file, libgerbv-1.dll.&lt;/p&gt;
&lt;p&gt;6. Launch gerbv.exe under wine&lt;/p&gt;
&lt;p&gt;$ wine src/.libs/gerbv.exe&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_MLRG-hriKN8/SjTxP75ObrI/AAAAAAAABZ8/O8dlRDTHUrU/s1600-h/col_wine.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_MLRG-hriKN8/SjTxP75ObrI/AAAAAAAABZ8/O8dlRDTHUrU/s200/col_wine.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;7. Test gerbv.exe under windows.&lt;/p&gt;
&lt;p&gt;Under windows, extra DLLs are required and these can be downloaded from &lt;a href=&quot;http://www.gtk.org/download-windows.html&quot;&gt;The GTK+ Project&lt;/a&gt; or simply from &lt;a href=&quot;http://chitlesh.fedorapeople.org/mingw/dlls.tar.gz&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_MLRG-hriKN8/SjTxcYDu_4I/AAAAAAAABaE/GvB2DuvOv0U/s1600-h/col_windows.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_MLRG-hriKN8/SjTxcYDu_4I/AAAAAAAABaE/GvB2DuvOv0U/s200/col_windows.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The gerber files used in this example, my compiled gerbv.exe and libgerbv-1.dll can be downloaded from &lt;a href=&quot;http://chitlesh.fedorapeople.org/mingw/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;mingw32-nsiswrapper can later be used for building automated Windows installers for distribution.&lt;/p&gt;
&lt;p&gt;I hope this short crash course will help you. For any additional details, please join the &lt;a href=&quot;https://admin.fedoraproject.org/mailman/listinfo/fedora-mingw&quot;&gt;Fedora Mingw mailing list&lt;/a&gt; or IRC: #fedora-mingw on FreeNode.&lt;/p&gt;
&lt;p&gt;References:
&lt;ul&gt;
&lt;li&gt;Fedora IRC Classroom &amp;#8211; &lt;a href=&quot;https://fedoraproject.org/wiki/Using_the_Windows_cross-compiler_Classroom_%2820090308%29&quot;&gt;Using the Windows cross-compiler&lt;/a&gt; with Richard Jones&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fedoraproject.org/wiki/Features/Windows_cross_compiler&quot;&gt;Windows cross compiler Feature wiki page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 14 Jun 2009 13:38:09 +0000</pubDate>
</item>
<item>
	<title>Open Electrons: FEL: Improving collaborative hardware development experience</title>
	<guid>http://www10.edacafe.com/blogs/chitleshgoorah/?p=7</guid>
	<link>http://www10.edacafe.com/blogs/chitleshgoorah/2009/06/11/fel-improving-collaborative-hardware-development-experience/</link>
	<description>&lt;p&gt;One of the many faces of digital hardware design entails tracking many files to be fed to multiple EDA tools. The eventual reports or netlists are carefully analysed and logged as part of the sign-off methodology. Each company tracks these project dependent files under a certain directory structure and under a certain r&lt;a href=&quot;http://en.wikipedia.org/wiki/Revision_control&quot;&gt;evision controlled system&lt;/a&gt; of their choice.&lt;/p&gt;
&lt;p&gt;The development cycle &lt;a href=&quot;http://chitlesh.fedorapeople.org/FEL&quot;&gt;Fedora Electronic Lab&lt;/a&gt; 12 has started. One key feature for the next Fedora 12 release will be improving &amp;#8220;collaborative hardware development experience&amp;#8221; on Fedora. As a test-case scenario, let&amp;#8217;s imagine 4 persons (from 4 different continents) have encountered each other using a particular social networking medium and want to engage into the development of a FPGA project.&lt;/p&gt;
&lt;p&gt;While Fedora Electronic Lab already includes the respective simulators for digital design (VHDL/Verilog), &lt;a href=&quot;http://clunixchit.blogspot.com/2009/05/emacs-verilog-mode-dinotrace.html&quot;&gt;waveforms viewers&lt;/a&gt;, schematic editors, &lt;a href=&quot;http://clunixchit.blogspot.com/2009/05/eda-temperature-collector.html&quot;&gt;PCB layout editor&lt;/a&gt; and Fedora&amp;#8217;s different webserver and security solutions, these 4 persons (test-case scenario) should not have any issue with the &lt;a href=&quot;http://clunixchit.blogspot.com/2009/06/fedora-electronic-lab-11-leonidas.html&quot;&gt;latest Fedora 11 release&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For Fedora 12, we want to ensure that these persons have adequate tools to set up a webserver dedicated for hardware design and help them improve their sign-off and code review methodologies. Hardware code review for small inexperienced companies is often misguided and ends up wasting work hours in unnecessary meetings. Designers often have mixed feelings about code reviews. Sometimes when the code review is outsourced to a third party, source codes are sent in the form of tarballs and tracked as tarballs instead of files, which this is no means an efficient way.&lt;/p&gt;
&lt;p&gt;We are currently including an efficient and reliable code review solution into the Fedora collection. This free and opensource solution will also help create links and seamless references between bugs, tasks, changesets and files. Project coordinators will have a more realistic the overview of the on-going project and track the progress very easy with respect to different milestones and deadlines.&lt;/p&gt;
&lt;p&gt;Coupled with Fedora&amp;#8217;s commitment in Virtualization and SELinux, hardware designers will benefit with a free and robust platform which can easily be deployed.&lt;/p&gt;</description>
	<pubDate>Thu, 11 Jun 2009 19:06:37 +0000</pubDate>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: a little progress on qemu-loongson</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/07/08/a-little-progress-on-qemu-loongson/</guid>
	<link>http://vm-kernel.org/blog/2009/06/10/a-little-progress-on-qemu-loongson/</link>
	<description>&lt;p&gt;Hi guys, it is about one month since posting last blog entry. These days I am really very busy preparing the GRE and Tofel test. Moreover I have to work to support my life. So I have to spend less time on qemu-loongson.&lt;/p&gt;
&lt;p&gt;Anyway, there are progress these days. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rewrite the GPIO I2C emulation for gdium. Now it is more clear than before.&lt;/li&gt;
&lt;li&gt;add st4180 rtc emulation to qemu&lt;/li&gt;
&lt;li&gt;add stds75 temperature sensor emulation to qemu&lt;/li&gt;
&lt;li&gt;change a little in uart emulation to satisfy pmon’s uart probing process&lt;/li&gt;
&lt;li&gt;fix a little bug in pflash_cfi02.c&lt;/li&gt;
&lt;li&gt;fix gdb stub bug in qemu to support mips64&lt;/li&gt;
&lt;p&gt; Follow is the uart output of qemu-loongson.&lt;/p&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;blockquote dir=&quot;ltr&quot;&gt;
&lt;p&gt;kill-bill:/home/root/sdd/gdium/qemu-loongson/mips64el-softmmu# ./qemu-system-mips64el -M gdium -pflash gzrom.bin.gdb -nographic -S -s &lt;br /&gt;Register sst39vf040&amp;nbsp; size 80000&amp;nbsp; at offset 08800000 addr 1fc00000 'pflash0' 80        &lt;br /&gt;devfn 70         &lt;br /&gt;unassigned_mem_readl Unassigned mem read 000000001fbffffc        &lt;br /&gt;unassigned_mem_readl Unassigned mem read 000000001fbffffc        &lt;br /&gt;new_sm502_mm_io 7000000 pci_mem _base 10000000        &lt;br /&gt;PMON2000 MIPS Initializing. Standby...        &lt;br /&gt; PRID=00006302        &lt;br /&gt;enable register space of MEMORY        &lt;br /&gt;DDR2 config begin_whd        &lt;br /&gt;DIMM read        &lt;br /&gt;0000008000000008read DIMM number of rows        &lt;br /&gt;read number of cols        &lt;br /&gt;module data width        &lt;br /&gt;DIMM SIZE=20000000        &lt;br /&gt;cols rows:        &lt;br /&gt;04030940DDR2 config end        &lt;br /&gt;DDR2 DLL locked        &lt;br /&gt;00000004        &lt;br /&gt;disable register space of MEMORY        &lt;br /&gt;jlliu : rom speed reg : 0x00000f8c        &lt;br /&gt;Init SDRAM Done!        &lt;br /&gt;Sizing caches...        &lt;br /&gt;Init caches...        &lt;br /&gt;godson2 caches found        &lt;br /&gt;Init caches done, cfg = 00030932        &lt;br /&gt;Copy PMON to execute location...        &lt;br /&gt;copy text section done.        &lt;br /&gt;Copy PMON to execute location done.        &lt;br /&gt;sp=80ffc000...............new_sm502_mm_io 6000000 pci_mem _base 10000000        &lt;br /&gt;cmd 7        &lt;br /&gt;mmio 6000000        &lt;br /&gt;FREQ        &lt;br /&gt;FREI        &lt;br /&gt;DONE        &lt;br /&gt;DEVI        &lt;br /&gt;ENVI        &lt;br /&gt;MAPV        &lt;br /&gt;nvram=bfc00000        &lt;br /&gt;NVRAM is invalid!        &lt;br /&gt;NVRAM@bfc00000        &lt;br /&gt;STDV        &lt;br /&gt;80100000: heap is already above this point        &lt;br /&gt;SBDD        &lt;br /&gt;P12PCIH&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/430560598/vm-kernel/feedsky/s.gif?r=http://vm-kernel.org/blog/2009/06/10/a-little-progress-on-qemu-loongson/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560598/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560598/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 10 Jun 2009 03:15:00 +0000</pubDate>
</item>
<item>
	<title>Open Electrons: Hello EDACafe!</title>
	<guid>http://www10.edacafe.com/blogs/chitleshgoorah/?p=5</guid>
	<link>http://www10.edacafe.com/blogs/chitleshgoorah/2009/06/01/hello-edacafe/</link>
	<description>&lt;p&gt;It is with great pleasure that today I&amp;#8217;ve a featured blog on EDACafe. My name is Chitlesh Goorah. I will be exposing different opensource solutions which will interest both EDA engineers and ASIC designers.&lt;/p&gt;
&lt;p&gt;Some of you may know me from my work behind &lt;a href=&quot;http://chitlesh.fedorapeople.org/FEL&quot;&gt;Fedora Electronic Lab&lt;/a&gt;. For about three years now, we are proposing an opensource ASIC design and simulation platform, which is fairly well accepted by many universities around the world. We are working closely with many upstream projects such as gEDA, veripool, open circuit design, &amp;#8230; in order to ensure interoperability between our solutions.&lt;/p&gt;
&lt;p&gt;At the same time, Fedora developers are introducing &lt;a href=&quot;https://fedoraproject.org/wiki/Features/Windows_cross_compiler&quot;&gt;Windows cross-compilers&lt;/a&gt; for the next version. Thereby, EDA vendors can also use Fedora or entreprise-class distribution such as RHEL or CentOS as a development ground for their products.&lt;/p&gt;
&lt;p&gt;Later, I will introduce other features such as virtualisation, mass deployment, various design handoff checking facilities, &amp;#8230; etc each accompanying with at least an example. Many designers and CAD engineers are already using opensource tools such as Vi, Emacs, svn, &amp;#8230; I am looking forward to read your comments on my next posts.&lt;/p&gt;</description>
	<pubDate>Mon, 01 Jun 2009 18:18:55 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: Linux distributions for ARM</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-5433904653330938477</guid>
	<link>http://blog.gbraad.nl/2009/05/linux-distributions-for-arm.html</link>
	<description>Recently there is a lot of attention for the ARM port of Linux. This is of course related to the netbooks and specialized distributions like &lt;a href=&quot;http://maemo.org/&quot;&gt;Maemo&lt;/a&gt; for the Nokia Internet Tablets and &lt;a href=&quot;http://code.google.com/android/&quot;&gt;Android&lt;/a&gt; from Google. Earlier I wrote &lt;a href=&quot;http://blog.gbraad.nl/2008/11/mojos-hasty-distribution-for-use-with.html&quot;&gt;a short post&lt;/a&gt; about the Hasty Hippogriff release of the &lt;a href=&quot;http://mojo.handhelds.org/&quot;&gt;Mojo Project&lt;/a&gt;. This Nokia-sponsored project ported Ubuntu's Hardy Heron to the ARM architecture. It allowed a full desktop distribution to be run on hardware like &lt;a href=&quot;http://beagleboard.org/&quot;&gt;BeagleBoard&lt;/a&gt;. Luckily the major distributions also have increased their support for ARM. &lt;a href=&quot;http://opensuse.org/&quot;&gt;openSUSE&lt;/a&gt;, &lt;a href=&quot;http://debian.org/&quot;&gt;Debian&lt;/a&gt; and &lt;a href=&quot;http://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; officially announced their support for the ARM architecture in their next release. This will allow companies to use a distribution like openSUSE as a thin client solution or for hardware developers to use Debian as their base system.&lt;br /&gt;&lt;br /&gt;The distributions I have tried are &lt;a href=&quot;http://fedoraproject.org/&quot;&gt;Fedora&lt;/a&gt; 10, Debian 5.0 (Lenny) and Ubuntu 9.04. Debian 5.0 (Lenny) and Ubuntu 9.04 (Jaunty Jackalope) are now released. Debian provides downloads and bootstrap tools in their distro and lots of documentation. Despite the announcement it seems Ubuntu only has a release candidate?! So the release schedule seemed to not apply for the ARM architecture. Fedora however did not official announce any ARM support, but has a wiki page which describe how to use their distribution. openSUSE recently released a testing milestone for their 11.2 release, but I was unable to find the packages necessary to make a base system. I do have to make a note here: the &lt;a href=&quot;http://en.opensuse.org/Build_Service&quot;&gt;openSUSE Build Service&lt;/a&gt; (OBS) provides &lt;a href=&quot;http://lizards.opensuse.org/2008/11/18/arm-support-for-opensuse-buildservice-and-opensuse/&quot;&gt;ARM support&lt;/a&gt; for building packages for Fedora 10, Debian 5.0 and Ubuntu 9.04.&lt;br /&gt;&lt;br /&gt;Below you can find the images I have created or used to test the distributions and the information I have used. These images are all base systems to get you started. They can serve as a starting point to create a build environment.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Fedora 10&lt;/span&gt;&lt;br /&gt;Fedora does not provide official downloads, but all the files are provided on the &lt;a href=&quot;http://fedoraproject.org/wiki/Architectures/ARM&quot;&gt;wiki&lt;/a&gt;. To ease the deployment from a Windows system I created a usable root image which you can download from &lt;a href=&quot;http://dl.getdropbox.com/u/131903/arm/rootfs-fedora10.img.bz2&quot;&gt;dropbox&lt;/a&gt; or &lt;a href=&quot;http://delivery.vipeers.com/publish?message_hash=gSZSsSQjEAu-kCwTmfZ6Qw==&quot;&gt;vipeers&lt;/a&gt; and the &lt;a href=&quot;http://ftp.linux.org.uk/pub/linux/arm/fedora/qemu/zImage-versatile-2.6.24-rc7.armv5tel&quot;&gt;kernel&lt;/a&gt; (&lt;a href=&quot;http://dl.getdropbox.com/u/131903/arm/zImage-versatile-2.6.24-rc7.armv5tel&quot;&gt;dropbox&lt;/a&gt;). The archive can be unpacked using a tool like Winrar.&lt;br /&gt;&lt;br /&gt;With the following command will start the qemu environment without networking:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;qemu-system-arm.exe -M versatilepb -kernel zImage-versatile-2.6.24-rc7.armv5tel -hda rootfs-f10.img -append &quot;root=/dev/sda&quot;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You can login with username: root, without a password.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Ubuntu 9.04&lt;/span&gt;&lt;br /&gt;Canonical only provides a Release Candidate for their ARM port of Jaunty Jackalope. You can find a the downloads from the &lt;a href=&quot;http://cdimage.ubuntu.com/netboot/jaunty/&quot;&gt;cdimage server&lt;/a&gt;, such as a general image and an image for the NSLU2. I however built a new rootfs using the information provided on the &lt;a href=&quot;https://wiki.ubuntu.com/ARM/RootfsFromScratch&quot;&gt;wiki&lt;/a&gt; and the build-arm-rootfs script. This script will use &lt;span&gt;debootstrap&lt;/span&gt; and qemu to produce a usable tarball or qemu image. I used the script to create a tarball and dumped this in a mounted image (the same as done for the fedora image).&lt;br /&gt;&lt;br /&gt;You can download the root image from &lt;a href=&quot;http://dl.getdropbox.com/u/131903/arm/rootfs-jaunty.img.bz2&quot;&gt;dropbox&lt;/a&gt; or &lt;a href=&quot;http://delivery.vipeers.com/publish?message_hash=B2asMVTEu50_C9ZtpU93QA==&quot;&gt;vipeers&lt;/a&gt; and the &lt;a href=&quot;http://ports.ubuntu.com/ubuntu-ports/dists/jaunty/main/installer-armel/current/images/versatile/netboot/vmlinuz-2.6.28-11-versatile&quot;&gt;kernel&lt;/a&gt; (&lt;a href=&quot;http://dl.getdropbox.com/u/131903/arm/vmlinuz-2.6.28-11-versatile&quot;&gt;dropbox&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;To start the environment:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;qemu-system-arm.exe -M versatilepb -kernel vmlinuz-2.6.28-11-versatile -hda rootfs-jaunty.img -append &quot;root=/dev/sda&quot;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;To login use the username: ubuntu and the password: ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Debian 5.0&lt;/span&gt;&lt;br /&gt;The ARM support for Ubuntu is no miracle, as their base distribution Debian has support for this &lt;a href=&quot;http://www.debian.org/ports/arm/&quot;&gt;architecture&lt;/a&gt;. The &lt;a href=&quot;http://www.debian.org/releases/stable/arm/&quot;&gt;installation guide&lt;/a&gt; can be found on the debian website. Using the &lt;span&gt;debootstrap&lt;/span&gt; tool you can easily create your own rootfs. On the webpage of Aurélien Jarno (aurel32) you can find a complete article which describe the process of &lt;a href=&quot;http://www.aurel32.net/info/debian_arm_qemu.php&quot;&gt;getting debian running on an emulated ARM&lt;/a&gt; using qemu on Linux. The root images and kernel he uses can be found &lt;a href=&quot;http://people.debian.org/~aurel32/qemu/arm/&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To start the environment:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;qemu-system-arm.exe -M versatilepb -kernel vmlinuz-2.6.26-2-versatile -hda debian_lenny_arm_small.qcow -append &quot;root=/dev/sda1&quot;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;To login using the username: user and password: user. The password for root is root.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Notes&lt;/span&gt;&lt;br /&gt;Read the &lt;a href=&quot;http://www.h7.dion.ne.jp/~qemu-win/HowToNetwork-en.html&quot;&gt;How to use Network&lt;/a&gt; if you want to enable networking for the qemu environment on Windows.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-5433904653330938477?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 02 May 2009 00:09:41 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: Mojo's Hasty distribution for use with qemu.</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-6921840424339768452</guid>
	<link>http://blog.gbraad.nl/2008/11/mojos-hasty-distribution-for-use-with.html</link>
	<description>As part of &lt;a href=&quot;http://dotnet.gbraad.nl/2008/11/mono-on-arm.html&quot;&gt;a test I am doing&lt;/a&gt;, I started to use the Mojo distribution. This is a desktop distribution compiled for mobile and embedded devices. Currently they provide a Ubuntu Hardy (8.04) which is known as Hasty. Since the installation can be a little troubling at first, I will provide a full installation of the Mojo distribution I use. Hopefully it will encourage other to also use it.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_ZmgfsgbGDLs/SSl_3mRUh9I/AAAAAAAADik/ZLZdoROC6ZM/s320/mojo-hasty.png&quot; border=&quot;0&quot; alt=&quot;mojo hasty running firefox&quot; id=&quot;BLOGGER_PHOTO_ID_5271885431956604882&quot; /&gt;&lt;br /&gt;&lt;br /&gt;You need the following files:&lt;br /&gt;   mojo-hasty.tar.bz2.00 [&lt;a href=&quot;http://rapidshare.com/files/166609851/mojo-hasty.tar.bz2.00.html&quot;&gt;rapidshare&lt;/a&gt;] [&lt;a href=&quot;https://dl.getdropbox.com/u/131903/arm/mojo-hasty.tar.bz2.00&quot;&gt;dropbox&lt;/a&gt;] (100mb)&lt;br /&gt;   mojo-hasty.tar.bz2.01 [&lt;a href=&quot;http://rapidshare.com/files/166614949/mojo-hasty.tar.bz2.01.html&quot;&gt;rapidshare&lt;/a&gt;] [&lt;a href=&quot;https://dl.getdropbox.com/u/131903/arm/mojo-hasty.tar.bz2.01&quot;&gt;dropbox&lt;/a&gt;] (100mb)&lt;br /&gt;   mojo-hasty.tar.bz2.02 [&lt;a href=&quot;http://rapidshare.com/files/166620576/mojo-hasty.tar.bz2.02.html&quot;&gt;rapidshare&lt;/a&gt;] [&lt;a href=&quot;https://dl.getdropbox.com/u/131903/arm/mojo-hasty.tar.bz2.02&quot;&gt;dropbox&lt;/a&gt;] (100mb)&lt;br /&gt;   mojo-hasty.tar.bz2.03 [&lt;a href=&quot;http://rapidshare.com/files/166621912/mojo-hasty.tar.bz2.03.html&quot;&gt;rapidshare&lt;/a&gt;] [&lt;a href=&quot;https://dl.getdropbox.com/u/131903/arm/mojo-hasty.tar.bz2.03&quot;&gt;dropbox&lt;/a&gt;] (32mb)&lt;br /&gt;&lt;br /&gt;Mirrors are welcome... please post your locations in the comments of this article. After download you can extract the files using the command&lt;br /&gt;&lt;pre&gt;$ cat mojo-hasty.tar.bz2.* | tar -xvj&lt;/pre&gt;&lt;br /&gt;Included are the scripts to install (will overwrite hasty.img) and to start the emulation environment.&lt;br /&gt;&lt;br /&gt;Installed as described at &lt;a href=&quot;http://mojo.handhelds.org/wiki/Using_the_Debian_Installer_with_QEMU&quot;&gt;Using the Debian Installer with QEMU&lt;/a&gt;&lt;br /&gt;with all the missing bits added:&lt;br /&gt;&lt;br /&gt;   during the installtion it will ask you to provide a mirror location:&lt;br /&gt;   host: &lt;i&gt;repository.handhelds.org&lt;/i&gt;&lt;br /&gt;   path: &lt;i&gt;/hasty-armv5el&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;continue without installing the kernel and bootloader. Do not try to install the desktop environment; due to muine being missing it is not possible at the moment to do so. After installation of the base system, I installed &lt;i&gt;xfce4 xfce4-terminal gdm&lt;/i&gt; and &lt;i&gt;xserver-xorg&lt;/i&gt; with a configured fbdev device.&lt;br /&gt;&lt;br /&gt;   username: &lt;i&gt;user&lt;/i&gt;&lt;br /&gt;   password: &lt;i&gt;user&lt;/i&gt;&lt;br /&gt;   sudo password: &lt;i&gt;user&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;It will start from the start script as a recovery console. This can be handy if you encounter unforeseen difficulties, else just continue normal boot. If you don't want this behaviour, just remove '&lt;i&gt;single&lt;/i&gt;' from the append command for qemu.&lt;br /&gt;&lt;br /&gt;Additional actions I did to make the experience a little bit more enjoyable are:&lt;br /&gt;   &lt;pre&gt;$ mkdir /lib/modules/2.6.25.10/&lt;br /&gt;$ depmod -a&lt;/pre&gt;&lt;br /&gt;   xfce: changed panel to a fixed position (bottom, size 24)&lt;br /&gt;   xfce: changed terminal font to monospace 4&lt;br /&gt;   xfce: changed background color rgb(0, 112, 224)&lt;br /&gt;   gdm: enabled automatic login, User: user&lt;br /&gt;   gdm: changed local theme to 'Happy GNOME'&lt;br /&gt;   gdm: changed background color rgb(0, 112, 224)&lt;br /&gt;   user, root: &lt;pre&gt;$ rm ~/.bash_history&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Tested with the qemu installation as provided by CentOS 5.2, Fedora 9 and Ubuntu 8.04. Any comments are welcome at '&lt;i&gt;me+mojo-hasty [monkey] gbraad [dot] nl&lt;/i&gt;'.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;In the published files I forgot to mention I also installed the &lt;i&gt;xorg&lt;/i&gt; meta package. This is needed to install the fonts for the X server.&lt;br /&gt;   &lt;pre&gt;$ apt-get install xorg&lt;/pre&gt;&lt;br /&gt;This action does not need to be performed, since GDM starts. But for a reinstall, this is needed to run the X environment.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Links&lt;br /&gt;&lt;a href=&quot;http://mojo.handhelds.org/&quot;&gt;Mojo Handhelds&lt;/a&gt;,&lt;br /&gt;&lt;a href=&quot;http://bellard.org/qemu/&quot;&gt;Qemu, processor emulator&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-6921840424339768452?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 01 May 2009 21:40:06 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Zhou Yajin, vm-kernel.org: what's the difference between these two definitions</title>
	<guid permalink="False">http://vm-kernel.org/blog/2009/04/23/whats-the-difference-between-these-two-definitions/</guid>
	<link>http://vm-kernel.org/blog/2009/04/23/whats-the-difference-between-these-two-definitions/</link>
	<description>&lt;p&gt;I write this article because some guys are talking about it in &lt;a href=&quot;http://www.linuxforum.net/forum/showflat.php?Cat=&amp;Board=embedded&amp;Number=717266&amp;page=0&amp;view=collapsed&amp;sb=5&amp;o=0&amp;fpart=&quot;&gt;CLF&lt;/a&gt;. The question is: what is the difference between the two following definitions:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A. const char temp[]=&amp;quot;abc&amp;quot;;&lt;/p&gt;
&lt;p&gt;B. const char *temp=&amp;quot;abc&amp;quot;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You may have your own answer already. But wait a moment, let me write some test cases first and you can see whether your answer is right or not. &lt;img src=&quot;http://vm-kernel.org/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;(1) Test case 1&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;const char temp[]=&amp;quot;abc&amp;quot;;      &lt;br /&gt;int main()       &lt;br /&gt;{       &lt;br /&gt;temp[0]='c';       &lt;br /&gt;printf(&amp;quot;temp %s \n&amp;quot;,temp);       &lt;br /&gt;}       &lt;br /&gt;debian:~# gcc -o test test.c       &lt;br /&gt;test.c: In function `main':       &lt;br /&gt;test.c:8: error: assignment of read-only location `temp[0]'&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(2) Test case 2&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;const char temp[]=&amp;quot;abc&amp;quot;;      &lt;br /&gt;char temp1[]=&amp;quot;def&amp;quot;;       &lt;br /&gt;int main()       &lt;br /&gt;{       &lt;br /&gt;temp = temp1;       &lt;br /&gt;printf(&amp;quot;temp %s \n&amp;quot;,temp);       &lt;br /&gt;}       &lt;br /&gt;debian:~# gcc -o test test.c       &lt;br /&gt;test.c: In function `main':       &lt;br /&gt;test.c:8: error: assignment of read-only variable `temp'&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(3) Test case 3&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;const char* temp=&amp;quot;abc&amp;quot;;      &lt;br /&gt;char temp1[]=&amp;quot;def&amp;quot;;       &lt;br /&gt;int main()       &lt;br /&gt;{       &lt;br /&gt;temp = temp1;       &lt;br /&gt;printf(&amp;quot;temp %s \n&amp;quot;,temp);       &lt;br /&gt;}       &lt;br /&gt;debian:~# gcc -o test test.c       &lt;br /&gt;debian:~# ./test       &lt;br /&gt;temp def&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(4) Test case 4&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;const char* temp=&amp;quot;abc&amp;quot;;      &lt;br /&gt;int main()       &lt;br /&gt;{       &lt;br /&gt;temp[0] = 'd';       &lt;br /&gt;printf(&amp;quot;temp %s \n&amp;quot;,temp);       &lt;br /&gt;}       &lt;br /&gt;debian:~# gcc -o test test.c       &lt;br /&gt;test.c: In function `main':       &lt;br /&gt;test.c:8: error: assignment of read-only location `*temp'&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So the definition A means both temp and array is const and you can not change it. Definition B means temp points to a const string, which you can not change its content. But you can change temp itself.&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/vm-kernel/430560599/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/vm-kernel/430560599/art01.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 23 Apr 2009 01:39:03 +0000</pubDate>
</item>
<item>
	<title>Gerard Braad: CentOS 5.3 image for coLinux</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-719817486244277037</guid>
	<link>http://blog.gbraad.nl/2009/04/centos-53-image-for-colinux.html</link>
	<description>A few days ago &lt;a href=&quot;http://centos.org/&quot;&gt;CentOS&lt;/a&gt; 5.3 was finally released. Just like what I have done with the previous version, I created a &lt;a href=&quot;http://colinux.org/&quot;&gt;coLinux&lt;/a&gt; environment. This installation is a base system performed using the previously described &lt;a href=&quot;http://blog.gbraad.nl/2009/03/manually-installing-centos-52-on.html&quot;&gt;manual method&lt;/a&gt;. Updated instructions are included in the published archive.&lt;br /&gt;&lt;br /&gt;For now you can find the files here:&lt;br /&gt;colinux-centos53.exe [&lt;a href=&quot;http://delivery.vipeers.com/file_sharing?message_hash=QUllJkSLYR_sB1jpF8lGXQ==&quot;&gt;VIPeers&lt;/a&gt;] [&lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-centos53.exe&quot;&gt;dropbox&lt;/a&gt;] (98mb)&lt;br /&gt;&lt;br /&gt;It is configured to use DHCP on the network connections eth0 (slirp) and eth1 (bridged). The user account is 'root' without a password. After login, you should change the password. During startup you will see some complaints about the kernel modules. To solve this you can install my &lt;a href=&quot;http://gbraad.fedorapeople.org/files/kernel-modules-2.6-co0.7.3.i386.rpm&quot;&gt;kernel modules RPM&lt;/a&gt; or use the tarball provided by coLinux.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-719817486244277037?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 03 Apr 2009 22:54:57 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: openSUSE 11.1 on coLinux</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-5287485685807748493</guid>
	<link>http://blog.gbraad.nl/2009/03/opensuse-111-on-colinux.html</link>
	<description>To ease cross-platform .NET development, I have installed openSUSE on coLinux. This allows me to develop from &lt;span&gt;Windows&lt;/span&gt; and also test and debug the binary on Linux. Advantages are: No need to dual boot and a much better performance than using VMware or other virtualization solution. In this article you can find the base system and I will describe how I did the base installation.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Take note, these instructions do NOT provide any details about the .NET environment. Those are published on my &lt;a href=&quot;http://dotnet.gbraad.nl/2009/03/using-mono-24-on-colinux-to-ease-net.html&quot;&gt;.NET blog&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/ScZWXVO8WHI/AAAAAAAAECA/tw29uAeVnII/s400/opensuse2.png&quot; alt=&quot;Monodevelop&quot; /&gt;&lt;br /&gt;&lt;br /&gt;The files to install and run the environment '&lt;span&gt;colinux-opensuse-11.1.exe&lt;/span&gt;' can be found at [&lt;a href=&quot;http://delivery.vipeers.com/file_sharing?message_hash=uxpWz6Au7DMjNs8-zlaFnA==&quot;&gt;VIPeers&lt;/a&gt;], [&lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-opensuse-11.1.exe&quot;&gt;dropbox&lt;/a&gt;] (113Mb). This file contains the base &lt;span&gt;system.img&lt;/span&gt;, a swap image and start commands. If you don't want to install it yourself, you can at least immediately start to use openSUSE on coLinux. Take note, network has not been configured yet (see notes). The user account is 'root' with the password 'password'.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Preparation&lt;/span&gt;&lt;br /&gt;The installation closely follows the instructions I wrote for &lt;a href=&quot;http://blog.gbraad.nl/2009/03/manually-installing-centos-52-on.html&quot;&gt;CentOS&lt;/a&gt;. You will need a clean &lt;span&gt;system.img&lt;/span&gt; which you can find in the &lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-centos52-base.rar&quot;&gt;colinux-centos52-base.rar&lt;/a&gt;. Copy the Debian businnesscard init ramdisk to install_initrd.gz. And of course you need to download the openSUSE 11.1 DVD from &lt;a href=&quot;http://www.opensuse.org/&quot;&gt;http://www.opensuse.org/&lt;/a&gt;. This file will be about 4.25GB in size.&lt;br /&gt;&lt;br /&gt;You can perform a RPM installation, but since openSUSE provides an image-based installation I will use this for the base of the coLinux environment. My main purpose was to keep the installation easy to perform (and if possible small in size). Copy the files &lt;span&gt;base-i386.tar.lzma&lt;/span&gt;, &lt;span&gt;base-meta-i386.tar.lzma&lt;/span&gt; and &lt;span&gt;common-base-i386.tar.lzma&lt;/span&gt; from the openSUSE 11.1 DVD. It is located in the directory &lt;span&gt;images&lt;/span&gt;. Since the Debian initrd does not contain the lzma binary, so you will need to decompress the archives with a tool like 7-Zip. The resulting files will be standard tape-archives. Place them in a directory called '&lt;span&gt;images&lt;/span&gt;'. The &lt;span&gt;install.bat&lt;/span&gt; will map it to &lt;span&gt;cofs1&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;br /&gt;If you have the install files from the opensuse-11.1.exe file, the &lt;span&gt;images&lt;/span&gt;, debian's &lt;span&gt;install_initrd.gz&lt;/span&gt; and the &lt;span&gt;system.img&lt;/span&gt; from the centos52-base.rar, you are ready to go.&lt;br /&gt;&lt;br /&gt;Start the &lt;span&gt;install.bat&lt;/span&gt;. You will see a debian installation screen... toggle with ALT-F2 to a console and press Enter.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;   Please press Enter to activate this console.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/Sb63brlBLtI/AAAAAAAAEAY/chtkT6AMxk4/s400/install2.png&quot; border=&quot;0&quot; alt=&quot;Please press Enter to activate this console. BusyBox v1.10.2 (Debian 1:1.10.2-2) built-in shell (ash) Enter 'help' for a list of built-in commands.&quot; /&gt;&lt;br /&gt;&lt;br /&gt;From here you can perform the following commands. The line which says '&lt;span&gt;tar -C /mnt/linux -xf $i&lt;/span&gt;' will unpack the image to the &lt;span&gt;system.img&lt;/span&gt;. Just be sure to have some coffee ready since it might take some time.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;mkswap /dev/cobd7&lt;br /&gt;swapon /dev/cobd7&lt;br /&gt;&lt;br /&gt;mkdir /mnt/linux&lt;br /&gt;mkdir /mnt/win&lt;br /&gt;mount /dev/cobd0 /mnt/linux&lt;br /&gt;mount -t cofs cofs0 /mnt/win&lt;br /&gt;&lt;br /&gt;mkdir /mnt/images&lt;br /&gt;mount -t cofs cofs1 /mnt/images&lt;br /&gt;cd /mnt/images&lt;br /&gt;&lt;br /&gt;for i in *.tar&lt;br /&gt;do&lt;br /&gt;tar -C /mnt/linux -xf $i&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;mkdir -p /mnt/linux/media/cdrom&lt;br /&gt;mount /dev/cobd1 /mnt/linux/media/cdrom&lt;br /&gt;&lt;br /&gt;chroot /mnt/linux&lt;br /&gt;cd /media/cdrom/suse/i586&lt;br /&gt;&lt;br /&gt;rpm -ivh openSUSE-release-[0-9]*.rpm \&lt;br /&gt;openSUSE-release-dvd-[0-9]*.rpm&lt;br /&gt;&lt;br /&gt;echo password | passwd - stdin root &lt;br /&gt;&lt;br /&gt;cat &gt; /etc/fstab  END&lt;br /&gt;/dev/cobd0 / ext3 acl,user_xattr 1 1&lt;br /&gt;/dev/cobd7 swap swap defaults 0 0&lt;br /&gt;proc /proc proc defaults 0 0&lt;br /&gt;devpts /dev/pts devpts gid=5,mode=620 0 0&lt;br /&gt;sysfs /sys sysfs noauto 0 0&lt;br /&gt;debugfs /sys/kernel/debug debugfs noauto 0 0&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;exit&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After this you can &lt;span&gt;halt&lt;/span&gt; the system. And start it for the first time.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Post-install&lt;/span&gt;&lt;br /&gt;To finish the installation you need to start it with the coLinux initrd once. The script &lt;span&gt;runonce.bat&lt;/span&gt; will take care of that... after you have run it, openSUSE will start properly. Log on and halt again. After this you can start it without a initrd being specified. The script &lt;span&gt;run.bat&lt;/span&gt; will start the final system.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/ScVNslVwUgI/AAAAAAAAEB4/hVPU4voSaHA/s400/opensuse1.png&quot; alt=&quot;openSUSE 11.1 started on coLinux 0.7.3&quot; /&gt;&lt;br /&gt;&lt;br /&gt;It might give some startup errors... nothing serious. I didn't configure the network inside the base system. This can be done using &lt;span&gt;yast&lt;/span&gt; or perform the following command:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;for i in 0 1&lt;br /&gt;do&lt;br /&gt;cat &gt; /etc/sysconfig/network/ifcfg-eth$i  END&lt;br /&gt;BOOTPROTO='dhcp'&lt;br /&gt;BROADCAST=''&lt;br /&gt;ETHTOOL_OPTIONS=''&lt;br /&gt;IPADDR=''&lt;br /&gt;MTU=''&lt;br /&gt;NAME=''&lt;br /&gt;NETMASK=''&lt;br /&gt;NETWORK=''&lt;br /&gt;REMOTE_IPADDR=''&lt;br /&gt;STARTMODE='auto'&lt;br /&gt;USERCONTROL='no'&lt;br /&gt;END&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This enables both &lt;span&gt;eth0&lt;/span&gt; and &lt;span&gt;eth1&lt;/span&gt; to use DHCP. Kernel modules can be installed with the same RPM I have provided earlier. Just use the following commands:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;zypper in http://gbraad.fedorapeople.org/files/kernel-modules-2.6-co0.7.3.i386.rpm&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Alternative installation&lt;/span&gt;&lt;br /&gt;If you want to perform a RPM-based installation you will still need to install the &lt;span&gt;base-i386.tar&lt;/span&gt; image. I tried without, but ended up with a lot of errors during installation. The can find the installation instructions in the file &lt;a href=&quot;http://dl.getdropbox.com/u/131903/opensuse-instructions-rpm.txt&quot;&gt;instructions-rpm.txt&lt;/a&gt; which is included in the archive. Eventually I have not further tested this alternative installation...&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Notes&lt;/span&gt;&lt;br /&gt;I have tried to only use the files provided by openSUSE, but somehow they seem to consume too much time. The common filesystem did not provide all the tools I needed (similar to the stage2.img from redhat). If you know another way to install it, let me know. Qemu can also install it, but it consumes a lot more time in my opinion; install, &lt;span&gt;dd&lt;/span&gt;, etc.&lt;br /&gt;&lt;br /&gt;For the moment it is not possible to perform an image installation without the openSUSE DVD installation media. I do hope they will provide a single CD image installer or provide the images from their &lt;a href=&quot;http://download.opensuse.org/distribution/11.1/&quot;&gt;11.1 download&lt;/a&gt; site. If it is possible, please enlighten me?!&lt;br /&gt;&lt;br /&gt;If you want to install additional software, you will need to add the openSUSE repositories. This can easily be done using &lt;span&gt;zypper&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;zypper ar http://download.opensuse.org/distribution/11.1/repo/oss/ openSUSE111&lt;br /&gt;zypper ar http://download.opensuse.org/distribution/11.1/repo/non-oss/ openSUSE111_NonOSS &lt;br /&gt;zypper ar http://download.opensuse.org/update/11.1/ openSUSE-11.1-Updates&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now you can install Gnome by using a command like:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;zypper in -t pattern gnome&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;More information about installing software can be found on &lt;a href=&quot;http://opensuse-tutorials.com/2008/07/zypper-tips-and-tricks/&quot;&gt;openSUSE Tutorials&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Have a lot of fun...&lt;br /&gt;&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-5287485685807748493?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 03 Apr 2009 21:50:19 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: CentOS 5.2 image for coLinux</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-160685553415922711</guid>
	<link>http://blog.gbraad.nl/2009/03/centos-52-image-for-colinux.html</link>
	<description>Although soon we hope to have the newer 5.3 release of CentOS, I still decided to create a coLinux image of the current release. The problem with this release is that the kernel has issues when run on Qemu as can be seen in &lt;a href=&quot;http://bugs.centos.org/view.php?id=2912&quot;&gt;this bug report&lt;/a&gt;. This issues is known upstream and is solvable by installing 5.1 and then update it beyond the problematic kernel... or you could just wait until CentOS 5.3 is released.&lt;br /&gt;&lt;br /&gt;To make CentOS 5.2 usable in coLinux you could install 5.1 in this way using Qemu and update it. I just took a different approach: use RPM. I used a modified initrd image and installed a basic RPM installation (kinda similar to the FC3-CentOS frankenupgrade). More details about how the installation was performed will follow. &lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_ZmgfsgbGDLs/Sbq-NYDCGHI/AAAAAAAAD_U/DsgmMmRuew0/s320/centos52-colinux.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5312767847439669362&quot; /&gt;&lt;br /&gt;&lt;br /&gt;For now you can find the files here:&lt;br /&gt;colinux-centos52.exe [&lt;a href=&quot;http://delivery.vipeers.com/file_sharing?message_hash=DqndxLVLCZtSWzi5b3x3rQ==&quot;&gt;VIPeers&lt;/a&gt;] [&lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-centos52.exe&quot;&gt;dropbox&lt;/a&gt;] (82mb)&lt;br /&gt;&lt;br /&gt;The files contain an image with a minimal installation which you can use on coLinux 0.7.3. The startup is not error-free... but you can ignore the failures for now, since I will update the images to reflect the Fedora images. Your suggestions are of course welcome.&lt;br /&gt;&lt;br /&gt;It is configured to use DHCP on the network connections eth0 and eth1. The user account is 'root' without a password.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Edit: repacked the archive to be self-extracting and kernel modules (co0.7.3) have been installed by RPM.&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-160685553415922711?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 02 Apr 2009 19:50:23 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: Manually installing CentOS 5.2 on coLinux</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-2401169128586259517</guid>
	<link>http://blog.gbraad.nl/2009/03/manually-installing-centos-52-on.html</link>
	<description>In the &lt;a href=&quot;http://blog.gbraad.nl/2009/03/centos-52-image-for-colinux.html&quot;&gt;previous post&lt;/a&gt; I published a minimal CentOS 5.2 environment for use with coLinux. As I described in the posting, I did a manual installation since I was unable to use Qemu to start the CentOS 5.2 installation process. Although I received a comment that someone else was able to install CentOS, I am still unable to do so... even with the latest build of Qemu (currently 0.9.1) on Windows. Instead of trying to convert a VMware image or using an update process, I wanted to only use coLinux. In this posting I will try to describe what I did.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Requirements&lt;/span&gt;&lt;br /&gt;To ease the installation I have created a base which can assist you with installing. It contains the files you need as images (formatted as Ext3). It is available as centos52-base.rar [&lt;a href=&quot;http://dl.getdropbox.com/u/131903/colinux-centos52-base.rar&quot;&gt;dropbox&lt;/a&gt;] (35kb).&lt;br /&gt;&lt;br /&gt;This file contains what is needed to install the CentOS 5.2 image for&lt;br /&gt;use with coLinux:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;   &lt;li&gt;system.img  4Gb system image, formatted as Ext3&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;swap512m.img  512Mb swap location&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Batch and parameters file needed to start coLinux&lt;br /&gt;&lt;br /&gt;   install.bat, install.txt for the installation process (needed once)&lt;br /&gt;&lt;br /&gt;   run.bat, run.txt  to start the environment after install&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;instructions.txt file containing the commands to perform&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Extract the base archive and place the CentOS 5.2 (i386) installation media in the same directory. Mirrors are provided on the &lt;a href=&quot;http://mirror.centos.org/centos/5/isos/i386&quot;&gt;download page&lt;/a&gt; of CentOS. If you do not want to download the DVD file, you can also choose to only download CD 1of6. For this you need to change the install.txt parameters file. After the initial install, you can then rely on YUM to install all additional packages.&lt;br /&gt;&lt;br /&gt;I used a custom init ramdisk to create the images and perform the installation. Since this file is still rough, I suggest you to download this &lt;a href=&quot;http://blog.gbraad.nl/feeds/posts/ http://cdimage.debian.org/debian-cd/5.0.0/i386/iso-cd/&quot;&gt;business card iso&lt;/a&gt; from debian. The businesscard ISO is about 35Mb.&lt;br /&gt;&lt;br /&gt;With a tool like winrar (or mount it using a tool like Daemon Tools), you can extract the file /install.386/initrd.gz. If you prefer to only download the &lt;a href=&quot;http://dl.getdropbox.com/u/131903/debian-500-i386-initrd.gz&quot;&gt;initrd.gz&lt;/a&gt;. Save this file as &lt;span&gt;install_initrd.gz&lt;/span&gt; in the directory where you extracted this base directory. This ramdisk will be used to start a system to perform commands from which will start the RPM install.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh5.ggpht.com/_ZmgfsgbGDLs/Sb63bmCkY8I/AAAAAAAAEAQ/N30aTNpZEEo/s400/install1.png&quot; border=&quot;0&quot; alt=&quot;Please choose the language used for the installation process. This language will be the default language for the final system. Choose a language: C - No localization English - English&quot; /&gt;&lt;br /&gt;&lt;br /&gt;After installing coLinux to the standard location you can run the install.bat and start the installation process. It will start the start kernel with the install_initrd.gz as ramdisk. The terminal of choice for this process was a NT terminal, since copy-n-paste was easier to perform. When the installation process interface is shown, you should toggle with ALT+F2 to a console.&lt;br /&gt;&lt;br /&gt;   Please press Enter to activate this console.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/Sb63brlBLtI/AAAAAAAAEAY/chtkT6AMxk4/s400/install2.png&quot; border=&quot;0&quot; alt=&quot;Please press Enter to activate this console. BusyBox v1.10.2 (Debian 1:1.10.2-2) built-in shell (ash) Enter 'help' for a list of built-in commands.&quot; /&gt;&lt;br /&gt;&lt;br /&gt;When you do so, you will see a BusyBox prompt where you can perform the instructions as shown in the instructions.txt.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Instructions&lt;/span&gt;&lt;br /&gt;You will now perform the instructions needed to do the actual install. We will create a basic environment to perform an RPM installation of the base packages. After this you can use YUM to download and/or install additional packages. To create &lt;br /&gt;the basic layout:&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;mkswap /dev/cobd7&lt;br /&gt;swapon /dev/cobd7&lt;br /&gt;mkdir /mnt/linux&lt;br /&gt;mkdir /mnt/win&lt;br /&gt;mkdir /mnt/stage2&lt;br /&gt;mount /dev/cobd0 /mnt/linux&lt;br /&gt;mkdir -p /mnt/linux/media/cdrom&lt;br /&gt;mount -t cofs cofs0 /mnt/win&lt;br /&gt;mount /dev/cobd1 /mnt/linux/media/cdrom&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;This will create some swapspace, a mountpoint &lt;span&gt;/mnt/linux&lt;/span&gt; which points to the block device cobd0 (system.img), &lt;span&gt;/mnt/win&lt;/span&gt; will be used to point to the coLinux program files folder and &lt;span&gt;/mnt/stage2&lt;/span&gt; will later be used to mount the CentOS stage2 image file. Block device cobd1 is used to mount the DVD image to the mountpoint &lt;span&gt;/mnt/linux/media/cdrom&lt;/span&gt;. This will later be used to install the base packages from. &lt;br /&gt;&lt;br /&gt;The stage2 image file uses the squashfs filesystem. CoLinux provides kernel modules to use this filesystem.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;tar xzvf /mnt/win/vmlinux-modules.tar.gz lib/modules/2.6.22.18-co-0.7.3/kernel/fs/squashfs/squashfs.ko&lt;br /&gt;insmod /lib/modules/2.6.22.18-co-0.7.3/kernel/fs/squashfs/squashfs.ko&lt;br /&gt;mount -t squashfs -o loop /mnt/linux/media/cdrom/images/stage2.img /mnt/stage2&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The contents then need to be copied to the &lt;span&gt;/mnt/linux&lt;/span&gt; to form the basis of our installation process.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cp -a /mnt/stage2/ /mnt/linux&lt;br /&gt;umount /mnt/stage2&lt;br /&gt;mv /mnt/linux/stage2 /mnt/linux/base&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;This might take some time...&lt;br /&gt;&lt;br /&gt;The system needs to have some directories which will form the basis. The following command will create this.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;for n in bin dev proc lib usr tmp etc&lt;br /&gt;do&lt;br /&gt;  mkdir -p /mnt/linux/$n&lt;br /&gt;done&lt;br /&gt;touch /mnt/linux/etc/fstab /mnt/linux/etc/mtab&lt;br /&gt;mkdir -p /mnt/linux/var/lib/rpm&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The location &lt;span&gt;/var/lib/rpm&lt;/span&gt; is needed to store the RPM database files.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Pre-installation&lt;/span&gt;&lt;br /&gt;RPM will need some libraries to run. These will be copied to the appropriate location using the following commands:&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cd /mnt/linux/lib&lt;br /&gt;ln -s ../base/lib/* .&lt;br /&gt;rm /mnt/linux/lib/udev&lt;br /&gt;rm /mnt/linux/lib/bdevid&lt;br /&gt;mkdir /mnt/linux/usr/lib&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/librpm-* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/librpmio-* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/librpmdb-* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libpopt.* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libsqlite3.* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libelf* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libbeecrypt.* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libz.* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libbz2.* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/libstdc++.* /mnt/linux/usr/lib/&lt;br /&gt;cp -a /mnt/linux/base/usr/lib/rpm /mnt/linux/usr/lib/&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;All necessary libraries are now available to pivot the root to the &lt;span&gt;/mnt/linux&lt;/span&gt; location.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;chroot /mnt/linux /base/usr/bin/sh&lt;br /&gt;/base/usr/bin/rpm --initdb&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;This will create a fresh RPM database which the installation process can use.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Installation&lt;/span&gt;&lt;br /&gt;You are now ready to perform the installation.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cd /media/cdrom/CentOS&lt;br /&gt;/base/usr/bin/rpm -ivh setup-*.rpm&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The following packages need to be installed at once. These will form a base installation of CentOS. &lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;/base/usr/bin/rpm -ivh \&lt;br /&gt;audit-libs-[0-9]*.rpm \&lt;br /&gt;audit-libs-python-[0-9]*.rpm \&lt;br /&gt;authconfig-[0-9]*.rpm \&lt;br /&gt;basesystem-[0-9]*.rpm \&lt;br /&gt;bash-[0-9]*.rpm \&lt;br /&gt;beecrypt-[0-9]*.rpm \&lt;br /&gt;bzip2-libs-[0-9]*.rpm \&lt;br /&gt;centos-release-[0-9]*.rpm \&lt;br /&gt;centos-release-notes-[0-9]*.rpm \&lt;br /&gt;checkpolicy-[0-9]*.rpm \&lt;br /&gt;chkconfig-[0-9]*.rpm \&lt;br /&gt;coreutils-[0-9]*.rpm \&lt;br /&gt;cpio-[0-9]*.rpm \&lt;br /&gt;cracklib-[0-9]*.rpm \&lt;br /&gt;cracklib-dicts-[0-9]*.rpm \&lt;br /&gt;cryptsetup-luks-[0-9]*.rpm \&lt;br /&gt;cyrus-sasl-lib-[0-9]*.rpm \&lt;br /&gt;db4-[0-9]*.rpm \&lt;br /&gt;dbus-[0-9]*.rpm \&lt;br /&gt;dbus-glib-[0-9]*.rpm \&lt;br /&gt;device-mapper-[0-9]*.rpm \&lt;br /&gt;device-mapper-event-[0-9]*.rpm \&lt;br /&gt;device-mapper-multipath-[0-9]*.rpm \&lt;br /&gt;dhclient-[0-9]*.rpm \&lt;br /&gt;dhcpv6-client-[0-9]*.rpm \&lt;br /&gt;diffutils-[0-9]*.rpm \&lt;br /&gt;dmidecode-[0-9]*.rpm \&lt;br /&gt;dmraid-[0-9]*.rpm \&lt;br /&gt;e2fsprogs-[0-9]*.rpm \&lt;br /&gt;e2fsprogs-libs-[0-9]*.rpm \&lt;br /&gt;ecryptfs-utils-[0-9]*.rpm \&lt;br /&gt;ed-[0-9]*.rpm \&lt;br /&gt;elfutils-libelf-[0-9]*.rpm \&lt;br /&gt;ethtool-[0-9]*.rpm \&lt;br /&gt;expat-[0-9]*.rpm \&lt;br /&gt;file-[0-9]*.rpm \&lt;br /&gt;filesystem-[0-9]*.rpm \&lt;br /&gt;findutils-[0-9]*.rpm \&lt;br /&gt;gawk-[0-9]*.rpm \&lt;br /&gt;gdbm-[0-9]*.rpm \&lt;br /&gt;glib2-[0-9]*.rpm \&lt;br /&gt;glibc-[0-9]*.i686.rpm \&lt;br /&gt;glibc-common-[0-9]*.rpm \&lt;br /&gt;gnu-efi-[0-9]*.rpm \&lt;br /&gt;grep-[0-9]*.rpm \&lt;br /&gt;grub-[0-9]*.rpm \&lt;br /&gt;gzip-[0-9]*.rpm \&lt;br /&gt;hal-[0-9]*.rpm \&lt;br /&gt;hdparm-[0-9]*.rpm \&lt;br /&gt;hwdata-[0-9]*.rpm \&lt;br /&gt;info-[0-9]*.rpm \&lt;br /&gt;initscripts-[0-9]*.rpm \&lt;br /&gt;iproute-[0-9]*.rpm \&lt;br /&gt;iptables-[0-9]*.rpm \&lt;br /&gt;iptables-ipv6-[0-9]*.rpm \&lt;br /&gt;iputils-[0-9]*.rpm \&lt;br /&gt;kbd-[0-9]*.rpm \&lt;br /&gt;kernel-[0-9]*.rpm \&lt;br /&gt;keyutils-libs-[0-9]*.rpm \&lt;br /&gt;kpartx-[0-9]*.rpm \&lt;br /&gt;krb5-libs-[0-9]*.rpm \&lt;br /&gt;kudzu-[0-9]*.rpm \&lt;br /&gt;less-[0-9]*.rpm \&lt;br /&gt;libacl-[0-9]*.rpm \&lt;br /&gt;libattr-[0-9]*.rpm \&lt;br /&gt;libcap-[0-9]*.rpm \&lt;br /&gt;libgcc-[0-9]*.rpm \&lt;br /&gt;libgcrypt-[0-9]*.rpm \&lt;br /&gt;libgpg-error-[0-9]*.rpm \&lt;br /&gt;libhugetlbfs-[0-9]*.rpm \&lt;br /&gt;libselinux-[0-9]*.rpm \&lt;br /&gt;libselinux-python-[0-9]*.rpm \&lt;br /&gt;libsemanage-[0-9]*.rpm \&lt;br /&gt;libsepol-[0-9]*.rpm \&lt;br /&gt;libstdc++-[0-9]*.rpm \&lt;br /&gt;libsysfs-[0-9]*.rpm \&lt;br /&gt;libtermcap-[0-9]*.rpm \&lt;br /&gt;libusb-[0-9]*.rpm \&lt;br /&gt;libuser-[0-9]*.rpm \&lt;br /&gt;libvolume_id-[0-9]*.rpm \&lt;br /&gt;libxml2-[0-9]*.rpm \&lt;br /&gt;libxml2-python-[0-9]*.rpm \&lt;br /&gt;lvm2-[0-9]*.rpm \&lt;br /&gt;m2crypto-[0-9]*.rpm \&lt;br /&gt;MAKEDEV-[0-9]*.rpm \&lt;br /&gt;mcstrans-[0-9]*.rpm \&lt;br /&gt;mingetty-[0-9]*.rpm \&lt;br /&gt;mkinitrd-[0-9]*.rpm \&lt;br /&gt;mktemp-[0-9]*.rpm \&lt;br /&gt;module-init-tools-[0-9]*.rpm \&lt;br /&gt;nash-[0-9]*.rpm \&lt;br /&gt;ncurses-[0-9]*.rpm \&lt;br /&gt;net-tools-[0-9]*.rpm \&lt;br /&gt;newt-[0-9]*.rpm \&lt;br /&gt;nspr-[0-9]*.rpm \&lt;br /&gt;nss-[0-9]*.rpm \&lt;br /&gt;openldap-[0-9]*.rpm \&lt;br /&gt;openssh-[0-9]*.rpm \&lt;br /&gt;openssh-clients-[0-9]*.rpm \&lt;br /&gt;openssh-server-[0-9]*.rpm \&lt;br /&gt;openssl-[0-9]*.i686.rpm \&lt;br /&gt;pam-[0-9]*.rpm \&lt;br /&gt;passwd-[0-9]*.rpm \&lt;br /&gt;pciutils-[0-9]*.rpm \&lt;br /&gt;pcre-[0-9]*.rpm \&lt;br /&gt;pm-utils-[0-9]*.rpm \&lt;br /&gt;policycoreutils-[0-9]*.rpm \&lt;br /&gt;popt-[0-9]*.rpm \&lt;br /&gt;prelink-[0-9]*.rpm \&lt;br /&gt;procps-[0-9]*.rpm \&lt;br /&gt;psmisc-[0-9]*.rpm \&lt;br /&gt;python-[0-9]*.rpm \&lt;br /&gt;python-elementtree-[0-9]*.rpm \&lt;br /&gt;python-iniparse-[0-9]*.rpm \&lt;br /&gt;python-sqlite-[0-9]*.rpm \&lt;br /&gt;python-urlgrabber-[0-9]*.rpm \&lt;br /&gt;readline-[0-9]*.rpm \&lt;br /&gt;redhat-logos-[0-9]*.rpm \&lt;br /&gt;rhpl-[0-9]*.rpm \&lt;br /&gt;rootfiles-[0-9]*.rpm \&lt;br /&gt;rpm-[0-9]*.rpm \&lt;br /&gt;rpm-libs-[0-9]*.rpm \&lt;br /&gt;rpm-python-[0-9]*.rpm \&lt;br /&gt;sed-[0-9]*.rpm \&lt;br /&gt;selinux-policy-[0-9]*.rpm \&lt;br /&gt;selinux-policy-targeted-[0-9]*.rpm \&lt;br /&gt;setools-[0-9]*.rpm \&lt;br /&gt;setserial-[0-9]*.rpm \&lt;br /&gt;shadow-utils-[0-9]*.rpm \&lt;br /&gt;slang-[0-9]*.rpm \&lt;br /&gt;sqlite-[0-9]*.rpm \&lt;br /&gt;sysfsutils-[0-9]*.rpm \&lt;br /&gt;sysklogd-[0-9]*.rpm \&lt;br /&gt;system-config-securitylevel-tui-[0-9]*.rpm \&lt;br /&gt;SysVinit-[0-9]*.rpm \&lt;br /&gt;tar-[0-9]*.rpm \&lt;br /&gt;tcl-[0-9]*.rpm \&lt;br /&gt;tcp_wrappers-[0-9]*.rpm \&lt;br /&gt;termcap-[0-9]*.rpm \&lt;br /&gt;tzdata-[0-9]*.rpm \&lt;br /&gt;udev-[0-9]*.rpm \&lt;br /&gt;udftools-[0-9]*.rpm \&lt;br /&gt;usermode-[0-9]*.rpm \&lt;br /&gt;util-linux-[0-9]*.rpm \&lt;br /&gt;vim-minimal-[0-9]*.rpm \&lt;br /&gt;wireless-tools-[0-9]*.rpm \&lt;br /&gt;yum-[0-9]*.rpm \&lt;br /&gt;yum-metadata-parser-[0-9]*.rpm \&lt;br /&gt;zlib-[0-9]*.rpm&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;If you perform the command, the following will show indicating that the installation process started.&lt;br /&gt;&lt;img src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/Sb7CBbq-d_I/AAAAAAAAEAo/wmQeB7eTx0k/s400/install4.png&quot; alt=&quot;RPM installation process&quot; /&gt;&lt;br /&gt;This will again take some time... and will eventually result in the following.&lt;br /&gt;&lt;img src=&quot;http://lh6.ggpht.com/_ZmgfsgbGDLs/Sb7Cu1wUJRI/AAAAAAAAEAw/tTKTKyDtVTM/s400/install5.png&quot; /&gt;&lt;br /&gt;If no error occurred you can start with the post-installation to make the system usable from coLinux.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Post-installation&lt;/span&gt;&lt;br /&gt;We will now perform some post-installation commands to finish the installation. Create the device nodes in the device directory. These will be used by the filesystem table to mount the filesystem. Do not forget to first exit out of the chroot environment.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;exit&lt;br /&gt;mknod -m 666 /mnt/linux/dev/null c 1 3&lt;br /&gt;for i in 0 1 2 3 4 5 6 7 8 9 10&lt;br /&gt;do&lt;br /&gt;  mknod -m 660 /mnt/linux/dev/cobd${i} b 117 ${i}&lt;br /&gt;done&lt;br /&gt;chown 0:6 /mnt/linux/dev/cobd*&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;To have the filesystems mounted on startup you need to have the fstab file being created. Just overwrite the current file:&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cat &gt; /mnt/linux/etc/fstab  END&lt;br /&gt;/dev/cobd0   /          ext3     defaults        1 1&lt;br /&gt;/dev/cobd7   swap       swap     defaults        0 0&lt;br /&gt;none         /proc      proc     defaults        0 0&lt;br /&gt;none         /dev/shm   tmpfs    defaults        0 0&lt;br /&gt;none         /dev/pts   devpts   gid=5,mode=620  0 0&lt;br /&gt;none         /sys       sysfs    defaults        0 0&lt;br /&gt;END&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Write some basic information to the hosts file.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cat &gt; /mnt/linux/etc/hosts  END&lt;br /&gt;127.0.0.1 localhost localhost.localdomain&lt;br /&gt;END&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;The following will create the shared memory and the pseudo terminal devices, turns off the hardware daemon and allows you to give an initial password for the root user.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;chroot /mnt/linux /sbin/MAKEDEV con&lt;br /&gt;chroot /mnt/linux /bin/bash -c &quot;/bin/mkdir /dev/{shm,pts}&quot;&lt;br /&gt;chroot /mnt/linux /bin/bash -c &quot;/bin/chmod a+rwxt /dev/shm&quot;&lt;br /&gt;chroot /mnt/linux /sbin/MAKEDEV generic&lt;br /&gt;chroot /mnt/linux /sbin/chkconfig haldaemon off&lt;br /&gt;chroot /mnt/linux /usr/sbin/authconfig --enableshadow --update&lt;br /&gt;chroot /mnt/linux /usr/bin/passwd root&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;To have the network start, you need to create the following files. This way your system will be configured with a basic hostname and two network devices using DHCP.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cat &gt; /mnt/linux/etc/sysconfig/network  END&lt;br /&gt;NETWORKING=yes&lt;br /&gt;HOSTNAME=localhost.localdomain&lt;br /&gt;END&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cat &gt; /mnt/linux/etc/sysconfig/network-scripts/ifcfg-eth0  END&lt;br /&gt;DEVICE=eth0&lt;br /&gt;BOOTPROTO=dhcp&lt;br /&gt;ONBOOT=yes&lt;br /&gt;TYPE=Ethernet&lt;br /&gt;END&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;cat &gt; /mnt/linux/etc/sysconfig/network-scripts/ifcfg-eth0  END&lt;br /&gt;DEVICE=eth1&lt;br /&gt;BOOTPROTO=dhcp&lt;br /&gt;ONBOOT=yes&lt;br /&gt;TYPE=Ethernet&lt;br /&gt;END&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;span&gt;Cleanup&lt;/span&gt;&lt;br /&gt;You can now remove the base directory we had copied from the stage2 image.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;rm -rf /mnt/linux/base&lt;br /&gt;halt&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;After this you can halt the system and start the environment using the &lt;span&gt;run.bat&lt;/span&gt; file. If everything went well your system would look like this!&lt;br /&gt;&lt;img src=&quot;http://lh4.ggpht.com/_ZmgfsgbGDLs/Sb7GZ6einxI/AAAAAAAAEA4/8WWXLCyp1eQ/s400/install6.png&quot; /&gt;&lt;br /&gt;During startup you will notice some minor error which are related to the kernel dependencies file being missing. To solve this, you can extract the kernel modules using the &lt;span&gt;/dev/cofs0&lt;/span&gt; mapping. Although I prefer to use RPMs, since they are easier to cleanup and upgrade when needed.&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;yum install wget&lt;br /&gt;wget http://gbraad.fedorapeople.org/files/kernel-modules-2.6-co0.7.3.i386.rpm&lt;br /&gt;rpm -ivh kernel-modules-2.6-co0.7.3.i386.rpm&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Enjoy using it... If you have suggestions or stories about your use, leave a comment or send me an email.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-2401169128586259517?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 22 Mar 2009 19:18:41 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Methril: Remember my first OpenSource project</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-6210120389845582287</guid>
	<link>http://openblog.methril.net/2009/03/remember-my-first-opensource-project.html</link>
	<description>Today I'm in a melancholic mod. And i started to think about my collaborations to the OpenSource world. I did a lot of experiments at home, but i didn't made it public available, because i wasn't so proud of my code, and I feel scared that someone laughs about my style or my syntax.&lt;br /&gt;&lt;br /&gt;I remember my first public project: &lt;a href=&quot;http://rtl-etherbootd.sourceforge.net&quot;&gt;RTL-EtherBootD&lt;/a&gt; is an Open Source project which consists of porting the Ethernet card drivers provided in the Etherboot project to RTLinux. It was my graduate work at University. Since that project, i didn't publish any OpenSource code. I worked in some different environments, but unluckily at my country (Spain) they didn't work a lot with Linux.&lt;br /&gt;&lt;br /&gt;I started my actual job very enthusiastic, i was going to work developing Linux in Embedded Systems, but it's not what i'm doing right now :( I'm sad about that, i hope to work in Embedded Linux environments one day, but for now i've to work on this at home.&lt;br /&gt;&lt;br /&gt;At work, i started my small patches to &lt;a href=&quot;http://www.denx.de/wiki/U-Boot/WebHome&quot;&gt;u-boot&lt;/a&gt; project here. Not really big, but a small step to start doing it more frequently (i've code to submit, but i didn't find it good enough to send it).&lt;br /&gt;&lt;br /&gt;Personally, with the OpenMoko project, i started to hack the &lt;a href=&quot;http://www.idasystems.net/&quot;&gt;IDA Systems&lt;/a&gt; project, and the build system &lt;a href=&quot;http://wwww.openembedded.org&quot;&gt;Openembedded&lt;/a&gt;. I found some problems with my working environment at home (Ubuntu 8.10 with a Core2Duo MacBookPro), but i'm solving the environment problems sending some patches to OpenEmbedded.&lt;br /&gt;&lt;br /&gt;What i'd like to do is have a day to day work with Linux in Embedded environments, but actually i'm frustrated with a 8-bit PIC micro that i've to develop in Linux environments. Some time before, i was working with 16-bit Motorola uC, at R&amp;amp;D department devolping embedded systems from scratch, for ships. A lot of restrictions: hard-real time, fast response, 3 redundancy communication channels, .... I miss the hardware hacks that i've to do with our prototypes, the evaluation boards and all the stuff. It was funny and i miss the friends that still are there.&lt;br /&gt;&lt;br /&gt;For now, i've to see to the future and look for another comfortable environment, Linux, and OpenSource development. I like to don't have to wait too much to find that change.&lt;br /&gt;&lt;br /&gt;In my most important project, at the moment (the collaboration with IDA Systems), i suffer from the combination of OpenEmbedded and my environment. I hope to solve this soon. I'm going step by step :)&lt;br /&gt;&lt;br /&gt;Now that i wrote some words about my senses, i start to feel better and i can afford my day-to-day job.&lt;br /&gt;&lt;br /&gt;See you soon.&lt;br /&gt;&lt;br /&gt;-- Edited --&lt;br /&gt;My u-boot patch (the first): &lt;a href=&quot;http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/44824/focus=45183&quot;&gt;http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/44824/focus=45183&lt;/a&gt;&lt;br /&gt;My OpenEmbedded patch: &lt;a href=&quot;http://article.gmane.org/gmane.comp.handhelds.openembedded/21425&quot;&gt;http://article.gmane.org/gmane.comp.handhelds.openembedded/21425&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-6210120389845582287?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 03 Mar 2009 12:35:38 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Methril: Delays in my updates</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-8537383143629080654</guid>
	<link>http://openblog.methril.net/2009/02/delays-in-my-update.html</link>
	<description>Lately i'm not being really active in my blog.&lt;br /&gt;&lt;br /&gt;This is because i had a lot of changes in my personal life, and in my working environment.&lt;br /&gt;&lt;br /&gt;First of all i've to announce (if someone has interest in it) that i changed my relationship status. Now i'm married. This has give me a lot of my responsabilities and a lot of housework.&lt;br /&gt;Well, not all is bad, but i've less time ;)&lt;br /&gt;&lt;br /&gt;Other delayed cause is that i've been traveling in my honeymoon. Now i'm back and i'm reading the news, and future developments (a lot of news missed).&lt;br /&gt;&lt;br /&gt;In other order of things, i've been fighting with fso &amp;amp; openembedded to build some images. As allways, i see a lot of dependencies missed. And my build hardware is not really fast (i'm going to need an update) but it's hard because is a computer. My only options are upgrade the HDD to bigger 7200 rpm &amp;amp; upgrade the RAM from 2 GB to 4 GB, other upgrades means buy another hardware, and actually it's not possible.&lt;br /&gt;&lt;br /&gt;More updates soon.&lt;br /&gt;&lt;br /&gt;As everybody said: &lt;blockquote&gt;&quot;I'm trying to be more active in my development efforts, and post more often&quot;.&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-8537383143629080654?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Feb 2009 20:05:05 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Methril: First post, &quot;First&quot; device</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-7459500720835140373</guid>
	<link>http://openblog.methril.net/2008/07/first-post-first-device.html</link>
	<description>Hello to everybody,&lt;br /&gt;&lt;br /&gt;This is my first english post in that blog. I created this blog in order to have the my hardware development in the OpenSource world up to date to the community.&lt;br /&gt;&lt;br /&gt;I'm working with some ARM Hardware devices (soon patches are in the kitchen). And in my spare time i'm getting fun hacking the Compulab EM-X270. I get this device thanks to rakshat  &lt;a href=&quot;http://idasystems.net&quot;&gt;http://idasystems.net&lt;/a&gt; . The goal is to make Openmoko Linux &quot;distro&quot;, that was designed for NeoFreerunnere and Neo1973 hardware phones, to work with this device, and I'm hands on it.&lt;br /&gt;&lt;br /&gt;I'll try to keep the blog up to date.&lt;br /&gt;&lt;br /&gt;Hope you like.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-7459500720835140373?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Feb 2009 18:11:33 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Methril: Trying poky</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-6513098963907758920</guid>
	<link>http://openblog.methril.net/2008/07/trying-poky.html</link>
	<description>Well, some Openembedded distros have &quot;support&quot; for the em-x270, but only poky (http://pokylinux.org) is officially supported into the distro.&lt;br /&gt;&lt;br /&gt;As a Openembedded distro, i'll try to compile and get it working with the module.&lt;br /&gt;Here you can see some screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp2.blogger.com/__YNP9fQGsgo/SIoVLaoNl_I/AAAAAAAAAAc/wleMiW_QIH0/s1600-h/25072008482.jpg&quot;&gt;&lt;img src=&quot;http://bp2.blogger.com/__YNP9fQGsgo/SIoVLaoNl_I/AAAAAAAAAAc/wleMiW_QIH0/s320/25072008482.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227013603387611122&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt; Poky running into the em-x270. No icons loaded.&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp0.blogger.com/__YNP9fQGsgo/SIoVLnRKp_I/AAAAAAAAAAk/04qe6nT_KB8/s1600-h/25072008483.jpg&quot;&gt;&lt;img src=&quot;http://bp0.blogger.com/__YNP9fQGsgo/SIoVLnRKp_I/AAAAAAAAAAk/04qe6nT_KB8/s320/25072008483.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227013606780610546&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;A better picture of the main screen:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp1.blogger.com/__YNP9fQGsgo/SIofwHfZC5I/AAAAAAAAAAs/9nMQSvDejTg/s1600-h/IMGP1122.JPG&quot;&gt;&lt;img src=&quot;http://bp1.blogger.com/__YNP9fQGsgo/SIofwHfZC5I/AAAAAAAAAAs/9nMQSvDejTg/s320/IMGP1122.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227025229021776786&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp2.blogger.com/__YNP9fQGsgo/SIofwRmpksI/AAAAAAAAAA0/Tg_9VF4xn8k/s1600-h/IMGP1123.JPG&quot;&gt;&lt;img src=&quot;http://bp2.blogger.com/__YNP9fQGsgo/SIofwRmpksI/AAAAAAAAAA0/Tg_9VF4xn8k/s320/IMGP1123.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227025231736574658&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's not working properly, but it could be because the nfs server. I'll take a look on it.&lt;br /&gt;&lt;br /&gt;I'll get working some distros, then: angstrom (the officially compulab distro), and poky linux.&lt;br /&gt;Next step, use the Openmoko distro rootfs.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-6513098963907758920?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Feb 2009 18:11:21 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Methril: First Openmoko image</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-4316736375698527641</guid>
	<link>http://openblog.methril.net/2008/09/first-openmoko-image.html</link>
	<description>It's a long time since my last post., but here I come back to show you new progress.&lt;br /&gt;&lt;br /&gt;I'm being bussy trying to make the poky trunk build system work in my company server. But the config of that server, makes it almost impossible. As the &lt;a href=&quot;http://www.idasystems.net/&quot;&gt;Ida Systems Ltd.&lt;/a&gt; guys send me the new phone Openmoko Neo Freerunner as a present, i though that was time to get hands on it (but, keeping in mind the em-x270). After some compiling warnings and errors with the OE environment, i'll found one really nice, in mix with the FSO (&lt;a href=&quot;http://www.freesmartphone.org/&quot;&gt;http://www.freesmartphone.org&lt;/a&gt;) framework that is going to be used with openmoko in the near future (i hope). This environment works, because the openemebedded repository used was the official one, plenty of configurations and machines.&lt;br /&gt;&lt;br /&gt;This gives us the opportunity to make the FSO-image for other machines that om-gta01 or om-gta02. This is what i get, a working image for em-x270 :)&lt;br /&gt;&lt;br /&gt;Take a look of the em-x270 and the Openmoko Neo Frerunner:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://2.bp.blogspot.com/__YNP9fQGsgo/SM7CpfvQOWI/AAAAAAAAABE/fpeyUaK6Tfo/s1600-h/imgp1817.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/__YNP9fQGsgo/SM7CpfvQOWI/AAAAAAAAABE/fpeyUaK6Tfo/s320/imgp1817.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246344634083326306&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Bootin the board.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://2.bp.blogspot.com/__YNP9fQGsgo/SM7CNBKtTkI/AAAAAAAAAA8/4No4U6kwDNI/s1600-h/imgp1818.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/__YNP9fQGsgo/SM7CNBKtTkI/AAAAAAAAAA8/4No4U6kwDNI/s320/imgp1818.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246344144840642114&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;First Openmoko Look&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://1.bp.blogspot.com/__YNP9fQGsgo/SM7DOS6PWdI/AAAAAAAAABM/0eHMGWs-qMk/s1600-h/imgp1819.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/__YNP9fQGsgo/SM7DOS6PWdI/AAAAAAAAABM/0eHMGWs-qMk/s320/imgp1819.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246345266294905298&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;A deeper look.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://2.bp.blogspot.com/__YNP9fQGsgo/SM7EfxfmeHI/AAAAAAAAABU/sEfDG-Sp-WM/s1600-h/imgp1822.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/__YNP9fQGsgo/SM7EfxfmeHI/AAAAAAAAABU/sEfDG-Sp-WM/s320/imgp1822.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246346666074077298&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Booting the FSO image.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/__YNP9fQGsgo/SM7EgPyO4dI/AAAAAAAAABc/SRksw2z0kUM/s1600-h/imgp1823.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/__YNP9fQGsgo/SM7EgPyO4dI/AAAAAAAAABc/SRksw2z0kUM/s320/imgp1823.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246346674205286866&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Zhone started. (Take a look that the dbus system is not working)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/__YNP9fQGsgo/SM7EgYub4MI/AAAAAAAAABk/I9cHTbICrYw/s1600-h/imgp1824.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/__YNP9fQGsgo/SM7EgYub4MI/AAAAAAAAABk/I9cHTbICrYw/s320/imgp1824.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246346676605280450&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;zhone out of time :) Left: mls2 Right mls3&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/__YNP9fQGsgo/SM7EggtiGBI/AAAAAAAAABs/I9NPxnC5hbA/s1600-h/imgp1825.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/__YNP9fQGsgo/SM7EggtiGBI/AAAAAAAAABs/I9NPxnC5hbA/s320/imgp1825.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5246346678748977170&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The Home in action (another icon fix problem).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The bad things are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; No dbus properly working (i'd like to help the FSO guys to get more hardware working with the framework)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some of the devices has to be linked with the touchscreen: &lt;code&gt; ln -s /dev/input/touchscreen0 /dev/ts &lt;/code&gt; or &lt;code&gt; ln -s /dev/input/touchscreen0 /dev/touchscreen/0 &lt;/code&gt; that are the ones that the openmoko uses.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;All this stuff is working through NFS, because it's easier to has a dev cross env until everything goes working properly.&lt;br /&gt;&lt;br /&gt;Well, it needs some real dev work to get the devices working, but it would be a happy hacking time :)&lt;br /&gt;&lt;br /&gt;Some more news soon.&lt;br /&gt;&lt;br /&gt;P.D. Ah! I forget to said that the poky system, that has official support to the em-x270 machine, has the icons working properly.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-4316736375698527641?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Feb 2009 18:11:07 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Methril: D-BUS working, but not all services available</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-7359074569416137778</guid>
	<link>http://openblog.methril.net/2008/11/d-bus-working-but-not-all-services.html</link>
	<description>Hello to everybody,&lt;br /&gt;&lt;br /&gt;well, some progress have been made in the desired port. The DBUS systems is up and more or less working. We'll have he zhone app working properly with DBUS connected into the app. To surf deeply into the API, and the services running, we have some usefull commands, thanks to mdbus app provided by Michael Lauer.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;root@em-x270:~# mdbus -s&lt;br /&gt;:1.0&lt;br /&gt;:1.1&lt;br /&gt;:1.2&lt;br /&gt;:1.3&lt;br /&gt;:1.4&lt;br /&gt;:1.5&lt;br /&gt;:1.6&lt;br /&gt;:1.7&lt;br /&gt;org.bluez&lt;br /&gt;org.freedesktop.Avahi&lt;br /&gt;org.freedesktop.DBus&lt;br /&gt;org.freedesktop.Gypsy&lt;br /&gt;org.freesmartphone.frameworkd&lt;br /&gt;org.freesmartphone.odeviced&lt;br /&gt;org.freesmartphone.oeventsd&lt;br /&gt;org.freesmartphone.ogpsd&lt;br /&gt;org.freesmartphone.ogsmd&lt;br /&gt;org.freesmartphone.ophoned&lt;br /&gt;org.freesmartphone.opreferencesd&lt;br /&gt;org.freesmartphone.ousaged&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We could see a lot of services, but not all of them are working properly.&lt;br /&gt;&lt;br /&gt;Now it's time to write some code to add support for the GSM modem, the WiFI, the bluetooh, the GPS, battery, speakers, ... &lt;br /&gt;A lot of things to test :D&lt;br /&gt;&lt;br /&gt;Time to dev a litle bit. &lt;br /&gt;&lt;br /&gt;See you soon.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-7359074569416137778?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Feb 2009 18:10:46 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Methril: Conference at LUG - Madrid</title>
	<guid>tag:blogger.com,1999:blog-6029821478274526561.post-1285563879680444144</guid>
	<link>http://openblog.methril.net/2008/11/conference-at-lug-madrid.html</link>
	<description>I'm proud to announce to the community my first presentation about OpenMoko.For the English speakers, i'm so sorry, but it's in english.&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://www.gul.uc3m.es/&quot;&gt;UC3M LUG&lt;/a&gt; and the creator of the &lt;a href=&quot;http://www.tuxbrain.com/fdom_en.html&quot;&gt;FDOM distro&lt;/a&gt; (&lt;a href=&quot;http://www.tuxbrain.com/fdom.html&quot;&gt;es&lt;/a&gt;), David Samblas, give me the opportunity to talk about this amazing project.&lt;br /&gt;The event was the &lt;a href=&quot;http://congreso.gul.es/&quot;&gt;Congreso GUL UC3M 2008&lt;/a&gt;. A lot of Spanish people talking about OpenSource projects. (i love it :D)&lt;br /&gt;&lt;br /&gt;You could see the presentation in two parts.(in Spanish, sorry):&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;a href=&quot;http://www.dailymotion.com/video/x7rdhr_presentacion-openmoko-neo-freerunne_tech&quot;&gt;Presentación Openmoko - Neo Freerunner - Parte 1&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Cargado por &lt;a href=&quot;http://www.dailymotion.com/inoxbrain&quot;&gt;inoxbrain&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;a href=&quot;http://www.dailymotion.com/video/x7rdlo_presentacion-openmoko-neo-freerunne_tech&quot;&gt;Presentación Openmoko - Neo Freerunner - Parte 2&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Cargado por &lt;a href=&quot;http://www.dailymotion.com/inoxbrain&quot;&gt;inoxbrain&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And the Presentation in &lt;a href=&quot;http://ftp.gul.uc3m.es/pub/gul/congreso2008/openmoko/presentacion_neo-freerunner_openmoko-spainv5.odp&quot;&gt;OpenOffice&lt;/a&gt; format.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6029821478274526561-1285563879680444144?l=openblog.methril.net&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 21 Feb 2009 18:10:03 +0000</pubDate>
	<author>noreply@blogger.com (Methril)</author>
</item>
<item>
	<title>Gerard Braad: libvirt for RHEL5/CentOS 5</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-8514563115460221130</guid>
	<link>http://blog.gbraad.nl/2009/02/libvirt-for-rhel5centos-5.html</link>
	<description>Just built and packaged the libvirt library version 0.6.0 for use with Red Hat Enterprise Linux 5 and CentOS 5 (or any other EL5 compatible system). This library supports the following virtualization systems: Xen, KVM, Qemu and OpenVZ.&lt;br /&gt;&lt;br /&gt;Files are located at &lt;a href=&quot;http://files.gbraad.nl/packages/el5/&quot;&gt;http://files.gbraad.nl/packages/el5/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;These packages have been signed with my packaging key, which is available &lt;a href=&quot;http://files.gbraad.nl/packages/RPM-GPG-KEY-gbraad.asc&quot;&gt;here&lt;/a&gt; (&lt;a href=&quot;http://gbraad.fedorapeople.org/RPM-GPG-KEY-gbraad.asc&quot;&gt;mirror&lt;/a&gt;). More information about this library can be found on the &lt;a href=&quot;http://libvirt.org/&quot;&gt;libvirt&lt;/a&gt; homepage.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-8514563115460221130?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 15 Feb 2009 20:20:56 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: The Wizard of Yum: Upgrade from FC3 to CentOS 5.2</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-6567027638289898167</guid>
	<link>http://blog.gbraad.nl/2009/01/wizard-of-yum-upgrade-from-fc3-to.html</link>
	<description>&lt;p&gt;If you have a production server, you would like to stay on the yellow brick road of upgrades for the operating system and installed software. However, it might happen you forget to support a server... and get 'scared' of performing updates: &quot;If it ain't broken, don't fix it&quot;! This mentality is not always correct, since errors you don't have at the moment, might still be a problem later on. The further away you get from the updates, the more difficult it will become to perform an upgrade to a later version of a distribution.&lt;/p&gt;&lt;p&gt;&lt;span&gt;Why to write about it&lt;/span&gt;&lt;br /&gt;The motivation to describe my experience of upgrading is because I hear a lot of people still complain about RPM and the dependency issues. Most of them have never used it and call the apt system the best solution. In my opinion, the key to success for apt is the reliance on a single repository. Debian people seldomly use &lt;span&gt;&lt;span&gt;dpkg -i&lt;/span&gt;&lt;/span&gt; to install package, since they use &lt;span&gt;&lt;span&gt;apt-get install&lt;/span&gt;&lt;/span&gt; to resolve dependencies. YUM solves the issue for RPM systems in a similar fashion. Instead of using &lt;span&gt;&lt;span&gt;rpm -i&lt;/span&gt;&lt;/span&gt; you can install packages using &lt;span&gt;&lt;span&gt;yum install&lt;/span&gt;&lt;/span&gt;, which resolves necessary dependencies from the configured repositories.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Note: With Ubuntu and Maemo I have noticed that more repositories get introduced which cause the same problems for apt-get. Dependency resolving might not work, since packages and depencies get fragmented and sometimes even unavailable or conflicting. The Red Hat community recently merged several repositories (RPM Fusion and RPM Forge) which does solve a lot of issues.&lt;/p&gt;&lt;p&gt;&lt;span&gt;Setup&lt;/span&gt;&lt;br /&gt;I was faced with the upgrade problem with my &lt;a href=&quot;http://picasaweb.google.com/lh/photo/D73i0Oqxov1U7lrY9e4s8A&quot;&gt;own personal (web)server&lt;/a&gt; for quite some time. I have no idea what I originally installed on it, but it has always been a Red Hat Linux system. It has been upgraded many times until it ran Fedora Core 3. At least the oldest file on the server was from January 2000. Since the server ran FC3, there was a problem. Fedora Core 3 was released in November 2004 it therefore only had updates available until about 2006.&lt;/p&gt;&lt;p&gt;Last year the machine was taken apart and virtualized to run on a &lt;a href=&quot;http://picasaweb.google.com/lh/photo/q8rgW7f5iueNHoXKn68_GQ&quot;&gt;newer VMware environment&lt;/a&gt;. I did update the system quite often... but never upgrade the distribution again. I had strayed from the yellow brick road and had no clear upgrade path any more. To solve this issue I could do to things:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Install a new server and migrate the files&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Upgrade to a new distribution and hope this would start&lt;/li&gt;&lt;/ol&gt;No matter what option I would choose, I wanted to have similar functionality. Currently it runs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Webserver:&lt;br /&gt;Apache HTTPd (with various modules) → Zope&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Mail infrastructure:&lt;br /&gt;Postfix → Amavisd-new → Cyrus-imapd&lt;/li&gt;&lt;li&gt;Database:&lt;br /&gt;PostgreSQL&lt;/li&gt;&lt;/ul&gt;I wanted to upgrade (option 2) as I had always done. Because of this, my options for upgrade were kinda limited: Fedora Core 4? Fedora Core had no support either... and the support for Fedora 8 would also expire soon (as it did this week). On the internet I had seen people mention it would be impossible to perform an upgrade from FC3 to a later version, like FC9 or they strongly advice others not to do so...&lt;p&gt;&lt;/p&gt;&lt;p&gt;Hmmm, so instead I copied my 'sites', 'imap', 'zope' and database dumps to an NFS. Did I have to start a new installation?!??? All other servers I installed allready ran CentOS, I would also make this a CentOS installation. Well, considering CentOS is derived from RHEL (RedHat Enterprise Linux) it is in fact a Fedora installation. If you look at the release details:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;RHEL-4 is based on FC3&lt;/li&gt;&lt;li&gt;RHEL-5 is based on FC6&lt;/li&gt;&lt;/ul&gt;You can upgrade from RHEL-4 to RHEL-5, this would mean like you jump from FC3 to FC6. CentOS 5.2 is a RedHat derivative from RHEL-5.2... So I wanted to upgrade my FC3 to CentOS 5.2. I know this would be difficult, but in my opinion possible. The key to success would be YUM, the chosen applications and the self-contained installs. The structure I had laid out was simple &lt;ul&gt;&lt;li&gt;Amavisd-new ran its own Perl installation from &lt;span&gt;&lt;span&gt;/opt/activestate/perl/&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Zope&lt;br /&gt;ran from a Python installation from &lt;span&gt;&lt;span&gt;/opt/activestate/python/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;datafiles are in &lt;span&gt;&lt;span&gt;/home/zope/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cyrus was built from source&lt;br /&gt;installed in &lt;span&gt;&lt;span&gt;/opt/cyrus/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;datafiles are in &lt;span&gt;&lt;span&gt;/home/cyrus/&lt;/span&gt;&lt;/span&gt;, totalling 7GB.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each website has its own &lt;span&gt;&lt;span&gt;vhost-[domainname].conf&lt;/span&gt;&lt;/span&gt; for Apache and a separate directory in &lt;span&gt;&lt;span&gt;/home/sites/[domainname]/[hostname]/web/&lt;/span&gt;&lt;/span&gt; which contains the files. Several websites, subdomains and databases, totalling 4GB of data.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;Description&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;The following description are the actions I took, but it is NOT a howto for guaranteed success. It might work for you, although you could also end up with a non-booting system. Only perform this installation if you have enough knowledge of a Linux system and have backups available if it goes wrong.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;On VMware I made a snapshot of the VM and opened the console, logged in on the 2nd and 3rd console as root. The main installation I would perform from two SSH connections (one as a backup). The tool I would use for the upgrade is YUM. YUM is a tool which resolves dependencies from repositories you have specified.&lt;/p&gt;&lt;p&gt;As root I created a 'frankenstein' directory with the following files from a &lt;a href=&quot;http://www.centos.org/modules/tinycontent/index.php?id=13&quot;&gt;CentOS mirror&lt;/a&gt;.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;centos-release-5-2.el5.centos.i386.rpm&lt;br /&gt;&lt;br /&gt;beecrypt-4.1.2-10.1.1.i386.rpm&lt;br /&gt;centos-release-notes-5.2-2.i386.rpm&lt;br /&gt;db4-4.3.29-9.fc6.i386.rpm&lt;br /&gt;db4-devel-4.3.29-9.fc6.i386.rpm&lt;br /&gt;db4-utils-4.3.29-9.fc6.i386.rpm&lt;br /&gt;elfutils-0.125-3.el5.i386.rpm&lt;br /&gt;elfutils-libelf-0.125-3.el5.i386.rpm&lt;br /&gt;elfutils-libelf-devel-0.125-3.el5.i386.rpm&lt;br /&gt;elfutils-libelf-devel-static-0.125-3.el5.i386.rpm&lt;br /&gt;elfutils-libs-0.125-3.el5.i386.rpm&lt;br /&gt;glib2-2.12.3-2.fc6.i386.rpm&lt;br /&gt;glib2-devel-2.12.3-2.fc6.i386.rpm&lt;br /&gt;glibc-2.5-24.i386.rpm&lt;br /&gt;glibc-common-2.5-24.i386.rpm&lt;br /&gt;glibc-devel-2.5-24.i386.rpm&lt;br /&gt;glibc-headers-2.5-24.i386.rpm&lt;br /&gt;keyutils-1.2-1.el5.i386.rpm&lt;br /&gt;keyutils-libs-1.2-1.el5.i386.rpm&lt;br /&gt;krb5-devel-1.6.1-25.el5.i386.rpm&lt;br /&gt;krb5-libs-1.6.1-25.el5.i386.rpm&lt;br /&gt;krb5-workstation-1.6.1-25.el5.i386.rpm&lt;br /&gt;libselinux-1.33.4-5.el5.i386.rpm&lt;br /&gt;libselinux-devel-1.33.4-5.el5.i386.rpm&lt;br /&gt;libsepol-1.15.2-1.el5.i386.rpm&lt;br /&gt;libsepol-devel-1.15.2-1.el5.i386.rpm&lt;br /&gt;libxml2-python-2.6.26-2.1.2.1.i386.rpm&lt;br /&gt;m2crypto-0.16-6.el5.2.i386.rpm&lt;br /&gt;mcstrans-0.2.7-1.el5.i386.rpm&lt;br /&gt;openssl-0.9.8b-10.el5.i386.rpm&lt;br /&gt;popt-1.10.2-48.el5.i386.rpm&lt;br /&gt;python-2.4.3-21.el5.i386.rpm&lt;br /&gt;python-devel-2.4.3-21.el5.i386.rpm&lt;br /&gt;python-elementtree-1.2.6-5.i386.rpm&lt;br /&gt;python-ldap-2.2.0-2.1.i386.rpm&lt;br /&gt;python-sqlite-1.1.7-1.2.1.i386.rpm&lt;br /&gt;python-urlgrabber-3.1.0-2.noarch.rpm&lt;br /&gt;readline-5.1-1.1.i386.rpm&lt;br /&gt;readline-devel-5.1-1.1.i386.rpm&lt;br /&gt;rpm-4.4.2-48.el5.i386.rpm&lt;br /&gt;rpm-build-4.4.2-48.el5.i386.rpm&lt;br /&gt;rpm-devel-4.4.2-48.el5.i386.rpm&lt;br /&gt;rpm-libs-4.4.2-48.el5.i386.rpm&lt;br /&gt;rpm-python-4.4.2-48.el5.i386.rpm&lt;br /&gt;sqlite-3.3.6-2.i386.rpm&lt;br /&gt;sqlite-devel-3.3.6-2.i386.rpm&lt;br /&gt;yum-3.2.8-9.el5.centos.1.noarch.rpm&lt;br /&gt;yum-metadata-parser-1.1.2-2.el5.i386.rpm&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The centos-release file tell your YUM to which repository it should refer for an upgrade. Your version number may differ, but this would generally give you a working YUM installation from a CentOS system. Install all the packages at once.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ rpm -Uvh *.rpm --nodeps&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/5O-5aBCaTcs-QwLRMtSNoQ&quot;&gt;This is what&lt;/a&gt; my console showed after the installation. Since the berkely database version has been upgraded, you need to remove the previous RPM database and rebuild it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ rm -f /var/lib/rpm/__db.*&lt;br /&gt;$ rpm --rebuilddb&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;From this moment on, you could upgrade the system. The command&lt;br /&gt;&lt;p&gt;&lt;code&gt;$ yum upgrade&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;will show you what issues you need to satisfy for the dependencies. These you can install using:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ yum install [packagename]&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Before I upgraded, I disabled several repositories in my &lt;span&gt;&lt;span&gt;/etc/yum.repos.d/&lt;/span&gt;&lt;/span&gt; directory. You can do this by adding &lt;span&gt;&lt;span&gt;enabled=0&lt;/span&gt;&lt;/span&gt; to a repo definition. Before continuing the upgrade I stopped unnecessary services and disabled SELinux for now. Depending on the use of your installation you may need to also remove some packages. I had to do so.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ rpm -qa&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;shows you all the installed packages. For my installation I removed some Novell branded packages for Mono and most of the X11 packages. After this remove the installed kernels. You might to iterate these steps (&lt;span&gt;&lt;span&gt;rpm -qa&lt;/span&gt;&lt;/span&gt; and &lt;span&gt;&lt;span&gt;rpm -e &lt;/span&gt;&lt;/span&gt;or&lt;span&gt;&lt;span&gt; yum remove&lt;/span&gt;&lt;/span&gt;) several times before you can perform the upgrade.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;code&gt;$ yum upgrade&lt;/code&gt;&lt;br /&gt;&lt;p&gt;starts &lt;a href=&quot;http://picasaweb.google.com/lh/photo/JSsCeTyMo0NEi2_u7YjPkg&quot;&gt;the actual upgrade&lt;/a&gt;... be careful during the installation, since some services might not function as expected. Do not abort it. This would render your system not usable.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;After the yum upgrade has been performed, you need to check if you have a kernel configured in &lt;span&gt;&lt;span&gt;/boot/grub/grub.conf&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span&gt;/etc/grub.conf&lt;/span&gt;&lt;/span&gt;). I had to install the kernel myself due to architecture conflicts?!&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ rpm -ivh --ignorearch kernel-2.6.18-92.el5.1686.rpm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Even after this installation you would need to check the grub configuration. &lt;a href=&quot;http://picasaweb.google.com/lh/photo/sdxn46KuxC4ysvGL5eHu6Q&quot;&gt;Reboot the system&lt;/a&gt; and when it starts, you would have a CentOS system.&lt;/p&gt;After this you can cleanup your system.&lt;br /&gt;&lt;p&gt;&lt;code&gt;$ rpm -qa &gt; /tmp/rpmlist&lt;br /&gt;$ cat /tmp/rpmlist | grep fc3&lt;br /&gt;$ cat /tmp/rpmlist | grep FC3&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Remove any remaining package which refer to your previous installation. Note: it is normal to find references to fc6 packages for your CentOS installation.&lt;/p&gt;&lt;p&gt;After the reboot, I noticed that most of the applications still worked as they should. Most of the time went into getting Apache and Zope running well together. Now a week later, I removed the VMware snapshot, even consolidated two harddisc files into one. Cyrus-impad is now makes use of the official release package (using my own config file) and upgraded amavisd-new to the RPMforge release. Only zope is running the old installation...&lt;/p&gt;&lt;p&gt;&lt;span&gt;Conclusion&lt;/span&gt;&lt;br /&gt;Always plan your system for future use. A sever has a lifespan which may exceed your initial thoughts. Try to compose the server as seperate responsibilities (mail, web, etc) as this would make upgrade easier. Try to stay close to the release schedule of patches and updates for your system... try to avoid &lt;a href=&quot;http://www.bofh-hunter.com/2009/01/02/evils-of-source/&quot;&gt;building from&lt;/a&gt; &lt;a href=&quot;http://www.arrfab.net/blog/?p=106&quot;&gt;source&lt;/a&gt; or compiling your own kernels as this would make management more difficult later on. And when a distribution gets the end-of-life status, try to move away from it immediately.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As you can see, it would still be possible to upgrade to CentOS 5.2 from Fedora Core 3... but this is NOT advised or a common practice. For me it shows how well thought the components and layout were, since this is also the setup I had used for SpotlightMedia and my previous employer.&lt;/p&gt;&lt;p&gt;In my opinion it shows how well the YUM dependency resolving and upgrading works. The wonderful wizard of Yum gave me a working CentOS system!&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-6567027638289898167?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 01 Feb 2009 14:48:49 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>
<item>
	<title>Gerard Braad: Installation of OpenVZ on CentOS 5.2</title>
	<guid>tag:blogger.com,1999:blog-5606041637705531621.post-1505211348895837845</guid>
	<link>http://blog.gbraad.nl/2008/12/installation-of-openvz-on-centos-52.html</link>
	<description>OS virtualization allows you to better scale if you need a large amount of similar software installations and you do not want to deploy more than one physical (or even virtual) machine. It creates isolated containers in which your environment run. In a way it is comparable to a jailed environment, but it provides better isolation, security and management. Hardware virtualization, for products as VMware, XEN and KVM, has a different approach in which you run a completely emulated distribution (often paravirualized) on top of your host system. OS and Hardware virtualization can complement each other.&lt;br /&gt;&lt;br /&gt;The installation of &lt;a href=&quot;http://www.openvz.org/&quot;&gt;OpenVZ&lt;/a&gt; containers on &lt;a href=&quot;http://www.centos.org/&quot;&gt;CentOS&lt;/a&gt; (or RHEL5) is very simple. The following steps were performed on a default installation of CentOS 5.2. In my case I use a virtual machine in a VMware environment.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The OpenVZ installation&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ setup&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;First you need to disable SELinux and the firewall.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cd /etc/yum.repos.d&lt;br /&gt;$ wget http://download.openvz.org/openvz.repo&lt;br /&gt;$ rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ&lt;br /&gt;$ yum -y install ovzkernel&lt;br /&gt;$ vi /etc/sysctl.conf&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;In this file change the following lines:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;net.ipv4.ip_forward = 1&lt;br /&gt;kernel.sysrq = 1&lt;br /&gt;net.ipv4.conf.default.proxy_arp = 0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;In this same file add the following lines:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;net.ipv4.conf.default.send_redirects = 1&lt;br /&gt;net.ipv4.conf.all.send_redirects = 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install the OpenVZ service and have it start at boot:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ yum install vzctl vzquota&lt;br /&gt;$ chkconfig --add vz&lt;br /&gt;$ reboot&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Container configuration&lt;/b&gt;&lt;br /&gt;After this, you need to create or download an OS template. For keeping this post easy, I use a precreated template:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cd /vz/template/cache&lt;br /&gt;$ wget http://mirror.proserve.nl/openvz/contrib/template/precreated/centos-5-i386-default.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now you can create your first OS container from this template. The information we need is an IP address, hostname and nameservers.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ vzctl create 101 --ostemplate centos-5-i386-default --conf vps.basic --ipadd 10.73.11.150 --hostname c1.survion.net&lt;br /&gt;$ vzctl set 101 --name c1 --nameserver &quot;10.73.11.1 10.73.11.2 10.73.11.3&quot; --diskspace 10G:10G --save&lt;br /&gt;$ vzctl set 101 --userpasswd root:password --save&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Each container instance is represented by an CTID. In the previous steps we used id 101 the identify the container. The configured information can now be found in the file /etc/vz/conf/101.conf. Be sure to use your own secret password for the last command.&lt;br /&gt;&lt;br /&gt;You can now start this container and list processes&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ vzctl start 101&lt;br /&gt;$ vzctl exec 101 ps ax&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You can also issue an enter command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ vzctl enter 101&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You would then authenticate as root inside the container. On the console you can perform commands as if you would on a normal machine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it! You now have a CentOS container running on top of your CentOS installation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Links and additional information&lt;/b&gt;&lt;br /&gt;Information on how to create a template can be found on &lt;a href=&quot;http://wiki.openvz.org/OS_template_cache_preparation&quot;&gt;http://wiki.openvz.org/OS_template_cache_preparation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OS Templates can be found at:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://forum.openvz.org/index.php?t=msg&amp;goto=15905&quot;&gt;http://forum.openvz.org/index.php?t=msg&amp;amp;goto=15905&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirror.proserve.nl/openvz/contrib/template/precreated/&quot;&gt;http://mirror.proserve.nl/openvz/contrib/template/precreated/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;If you download the minimal template you can not enter the container. This is because the container does not have a console configured. You could still issue commands using the 'vzctl exec' command and be able to configure the console, but YMMV.&lt;br /&gt;&lt;br /&gt;You can read more detailed information about the installation on the following websites:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.openvz.org/Quick_installation&quot;&gt;http://wiki.openvz.org/Quick_installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.centos.org/HowTos/Virtualization/OpenVZ&quot;&gt; http://wiki.centos.org/HowTos/Virtualization/OpenVZ&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Edit: An interesting experiment performed by Scott Dowdle can be found on &lt;a href=&quot;http://www.montanalinux.org/scott&quot;&gt;his blog&lt;/a&gt; called '&lt;a href=&quot;http://www.montanalinux.org/openvz-experiment.html&quot;&gt;How many containers?&lt;/a&gt;'.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5606041637705531621-1505211348895837845?l=blog.gbraad.nl&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 01 Feb 2009 14:48:16 +0000</pubDate>
	<author>noreply@blogger.com (gbraad)</author>
</item>

</channel>
</rss>

