<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bluetooth Router Development</title>
	<atom:link href="http://ee07m060.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ee07m060.wordpress.com</link>
	<description>Building a Bluetooth Router for Wireless Sensor Area Network applications</description>
	<lastBuildDate>Sat, 09 Oct 2010 06:44:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ee07m060.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Bluetooth Router Development</title>
		<link>http://ee07m060.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ee07m060.wordpress.com/osd.xml" title="Bluetooth Router Development" />
	<atom:link rel='hub' href='http://ee07m060.wordpress.com/?pushpress=hub'/>
		<item>
		<title>OWON releases official spec!</title>
		<link>http://ee07m060.wordpress.com/2010/07/14/owon-release-official-specifications/</link>
		<comments>http://ee07m060.wordpress.com/2010/07/14/owon-release-official-specifications/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 20:14:48 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ee07m060.wordpress.com/?p=95</guid>
		<description><![CDATA[Owon, the manufacturer of this excellent range of digital storage oscilloscopes has released the developers&#8217; full specification. This includes complete documentation of the USB transaction protocol, and the data format of the vectorgrams. Owon&#8217;s document is titled &#8220;OWON Oscilloscope PC Guidance Manual 1.1&#8221; and is available for free download from the sourceforge page for the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=95&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.owon.com.cn/eng/">Owon</a>, the manufacturer of this excellent range of digital storage oscilloscopes has released the developers&#8217; full specification.</p>
<p>This includes complete documentation of the USB transaction protocol, and the data format of the vectorgrams.</p>
<p>Owon&#8217;s document is titled &#8220;<a href="https://sourceforge.net/projects/owondriver/">OWON Oscilloscope PC Guidance Manual 1.1</a>&#8221; and is available for free download from the sourceforge page for the Linux driver.</p>
<p><a href="http://www.pavelcejka.com/">Pavel Čejka</a> deserves credit for initially approaching Owon. Pavel requested the release of this information into the public domain. May Owon&#8217;s willingness to support the Linux community be in everyone&#8217;s best interest.</p>
<p>&nbsp;</p>
<div id="attachment_118" class="wp-caption aligncenter" style="width: 310px"><a href="http://ee07m060.files.wordpress.com/2010/07/1198662076.jpg"><img class="size-medium wp-image-118" title="1198662076" src="http://ee07m060.files.wordpress.com/2010/07/1198662076.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a><p class="wp-caption-text">Owon PDS5022</p></div>
<p>&nbsp;</p>
<p>These scopes are ideal for academic use where Linux is commonplace, so Owon should find many new buyers for its equipment now there is a driver for Linux.</p>
<p>There is still much work needed on the driver. As yet, it cannot retrieve data in real-time via USB. This is an important function which the &#8216;scopes are quite capable of performing.</p>
<p>The driver is built in userspace but should probably be re-written as a loadable kernel module, and accessed through a separate userspace client. See the hard work of <a href="http://en.wikipedia.org/wiki/Greg_Kroah-Hartman">Greg Kroah-Hartman</a> who offers a blueprint for how this might be done.</p>
<p>For in-depth knowledge, see the book <a href="http://lwn.net/Kernel/LDD3/">Linux Device Drivers</a> that Greg co-authored with Jonathan Corbet and Alessandro Rubini. The book has been generously released to us under a Creative Commons licence, and is also available in <a href="http://oreilly.com/catalog/9780596005900/">print format from O&#8217;Reilly</a>.</p>
<p>Thanks go to Melissa Zhang at Owon, Pavel﻿ Cejka﻿, Greg Kroah-Hartman, Jonathan Corbet, Alessandro Rubini, Eamon Skelton, Michel Pollet, Chris Leaver, and many others in the Open Source community.</p>
<p>Special thanks must go to Dr John Pollard, who tirelessly served as my supervisor at Queen Mary, University of London. John oversaw my development of an embedded Bluetooth Router device, which is an ongoing project today. However, that work also culminated in the release of this USB device driver for Owon oscilloscopes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=95&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2010/07/14/owon-release-official-specifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2010/07/1198662076.jpg?w=300" medium="image">
			<media:title type="html">1198662076</media:title>
		</media:content>
	</item>
		<item>
		<title>Asynchronous USB transfers using libusb-win32</title>
		<link>http://ee07m060.wordpress.com/2009/07/28/asynchronous-usb-transfers-using-libusb-win32/</link>
		<comments>http://ee07m060.wordpress.com/2009/07/28/asynchronous-usb-transfers-using-libusb-win32/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 02:05:30 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ee07m060.wordpress.com/?p=80</guid>
		<description><![CDATA[The official documentation for the libusb-win32 library makes no mention of the asynchronous API that the library provides.  Evidence of these functions is to be found in the prototypes defined in the header file usb.h that forms part of the source code for the win32 port of this important library. Those async functions are defined [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=80&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ibr.cs.tu-bs.de/cgi-bin/dwww?type=html&amp;location=/usr/share/doc/libusb-dev/html/index.html">The official documentation</a> for the <a href="http://sourceforge.net/projects/libusb-win32">libusb-win32 library</a> makes no mention of the asynchronous API that the library provides.  Evidence of these functions is to be found in the prototypes defined in the header file <a href="http://libusb-win32.svn.sourceforge.net/viewvc/libusb-win32/trunk/libusb/src/usb.h?view=markup">usb.h</a> that forms part of the source code for the win32 port of this important library.</p>
<p>Those async functions are defined as follows:</p>
<pre style="padding-left:30px;"><strong>int usb_submit_async(void *context, char *bytes, int size);</strong></pre>
<pre style="padding-left:30px;"><strong>int usb_reap_async(void *context, int timeout);</strong></pre>
<pre style="padding-left:30px;"><strong>int usb_reap_async_nocancel(void *context, int timeout);</strong></pre>
<pre style="padding-left:30px;"><strong>int usb_cancel_async(void *context);</strong></pre>
<pre style="padding-left:30px;"><strong>int usb_free_async(void **context);</strong></pre>
<p>What still remains absent in the async API is any documentation on how to use it!</p>
<p>The clearest example of working async code that I have found was written by Kevin Kofler.  Kevin developed it as part of the <a href="http://svn.calcforge.org/viewvc/libcalccables/trunk/src/linux/link_usb.c?view=markup&amp;root=calcforgelp&amp;sortby=author&amp;pathrev=4278">USB codebase for the Texas Instrument calculator project</a>.  Here is a small excerpt of Kevin&#8217;s code.  It should get you going with async USB transfers in Windows using libusb-win32:</p>
<pre style="padding-left:30px;"><span style="color:#000000;"><strong>[..]
/* variables for slv_check and slv_bulk_read2 */

static int         io_pending = 0;
uint8_t            rBuf[64];
uint8_t*           rBufPtr;

[..]
</strong></span></pre>
<pre style="padding-left:30px;"><span style="color:#000000;"><strong>static int slv_check(CableHandle *h, int *status) {

	int ret;</strong></span></pre>
<pre style="padding-left:30px;"><span style="color:#000000;"><strong>	if (!io_pending) {
		ret = usb_bulk_setup_async(uHdl, &amp;context, TIGL_BULK_IN);
		if (ret &lt; 0)
			return ERR_READ_ERROR;</strong></span></pre>
<pre style="padding-left:30px;"><span style="color:#000000;"><strong>		ret = usb_submit_async(context, (char*)rBuf, max_ps);

		if (ret &lt; 0) {
			usb_free_async(&amp;context);
			return ERR_READ_ERROR;
		}
		io_pending = TRUE;
	}</strong></span></pre>
<pre style="padding-left:30px;"><span style="color:#000000;"><strong>	ret = usb_reap_async_nocancel(context, 0);

	if (ret &lt; 0 &amp;&amp; ret != -ETIMEDOUT) { 		// Error, unlink URB and return failure.
                usb_cancel_async(context);
		usb_free_async(&amp;context);
		io_pending = FALSE;
		if (ret &gt; 0) {
			nBytesRead = ret;
			rBufPtr = rBuf;
			*status = STATUS_RX; // data available
		}
	}
	return 0;
}</strong></span></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=80&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2009/07/28/asynchronous-usb-transfers-using-libusb-win32/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>
	</item>
		<item>
		<title>New Sourceforge project for Linux driver for Owon scopes</title>
		<link>http://ee07m060.wordpress.com/2009/06/29/new-sourceforge-project-for-linux-driver-for-owon-scopes/</link>
		<comments>http://ee07m060.wordpress.com/2009/06/29/new-sourceforge-project-for-linux-driver-for-owon-scopes/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 01:02:54 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ee07m060.wordpress.com/?p=63</guid>
		<description><![CDATA[I just set up a new project at Sourceforge to hold the Linux driver code for the Owon digital storage oscilloscopes. http://sourceforge.net/projects/owondriver The first release of the driver is now uploaded. It should work okay. No warranties, but I can tentatively vouch that it does what it says on the tin! Nevertheless, there are plenty [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=63&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just set up a new project at Sourceforge to hold the Linux driver code for the Owon digital storage oscilloscopes.</p>
<p style="padding-left:60px;"><a title="http://sourceforge.net/projects/owondriver" href="http://sourceforge.net/projects/owondriver">http://sourceforge.net/projects/owondriver</a></p>
<p>The first release of the driver is now uploaded. It should work okay. No warranties, but I can tentatively vouch that it does what it says on the tin!</p>
<p>Nevertheless, there are plenty of TODOs outstanding.   For example, it would be nice to find out exactly what data is stored in the remaining 32-bit integers in the channel vectorgram headers.  </p>
<p>There are five or six integers in the vectorgram headers which are still of an unknown purpose.  At a guess they might hold Peak-to-Peak and frequency measurements for the channel.</p>
<p>All comments welcomed!</p>
<p><strong>Edit:</strong></p>
<p>While I remember, I used the following resources to determine the Owon&#8217;s USB transaction protocol, and to write the code to drive the device:</p>
<p><a title="http://www.steventoth.net/ReverseEngineering/USB/reverse-0.4.txt" href="http://www.steventoth.net/ReverseEngineering/USB/reverse-0.4.txt">Reverse engineering Windows USB device drivers (Steven Toth, linuxtv.org)</a></p>
<p><a title="http://www.pcausa.com/Utilities/UsbSnoop/default.htm" href="http://www.pcausa.com/Utilities/UsbSnoop/default.htm">SniffUsb 2.0 USB Sniffer for Windows (Benoit Papillault, PCAUSA)</a></p>
<p><a title="http://www.kernel.org/doc/Documentation/usb/usbmon.txt" href="http://www.kernel.org/doc/Documentation/usb/usbmon.txt">usbmon.txt (Linux kernel documentation)</a></p>
<p><a title="http://people.redhat.com/zaitcev/linux/OLS05_zaitcev.pdf" href="http://people.redhat.com/zaitcev/linux/OLS05_zaitcev.pdf">The usbmon: USB monitoring framework (Pete Zaitcev, Red Hat Inc)</a></p>
<p><a title="http://www.linuxjournal.com/article/7582" href="http://www.linuxjournal.com/article/7582">Snooping the USB Data Stream (Greg Kroah-Hartman, Linux Journal)</a></p>
<p><a title="http://www.linuxjournal.com/article/7353" href="http://www.linuxjournal.com/article/7353">Writing a Simple USB Driver (Greg Kroah-Hartman, Linux Journal)</a></p>
<p><a title="http://www.linuxjournal.com/article/7466" href="http://www.linuxjournal.com/article/7466">Writing a Real Driver &#8211; In User Space (Greg Kroah-Hartman, Linux Journal)</a></p>
<p><a title="http://libusb.sourceforge.net/doc/" href="http://libusb.sourceforge.net/doc/">libusb Developers Guide (Johannes Erdfelt)</a></p>
<p><a title="http://www.beyondlogic.org/usbnutshell/usb-in-a-nutshell.pdf" href="http://www.beyondlogic.org/usbnutshell/usb-in-a-nutshell.pdf">USB in a Nutshell &#8211; Making sense of the USB standard (Beyond Logic)</a></p>
<p><a title="http://www.usbmadesimple.co.uk/ums_4.htm" href="http://www.usbmadesimple.co.uk/ums_4.htm">USB Made Simple: Part 4 &#8211; Protocol (MQP Electronics Ltd)</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=63&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2009/06/29/new-sourceforge-project-for-linux-driver-for-owon-scopes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>
	</item>
		<item>
		<title>Reverse engineering a USB peripheral driver for the Owon scope</title>
		<link>http://ee07m060.wordpress.com/2009/06/23/reverse-engineering-a-usb-peripheral-driver-for-the-owon-scope/</link>
		<comments>http://ee07m060.wordpress.com/2009/06/23/reverse-engineering-a-usb-peripheral-driver-for-the-owon-scope/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 04:11:56 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[usb]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[libusb]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[owon]]></category>
		<category><![CDATA[pds5022s]]></category>
		<category><![CDATA[reverse engineering]]></category>

		<guid isPermaLink="false">http://ee07m060.wordpress.com/?p=31</guid>
		<description><![CDATA[As part of this router project, I need to understand USB at a low-level &#8211; for driving a MAX3421 controller.   And for some months now, I have been meaning to look at a digital storage oscilloscope made by Owon.  It is the PDS5022s model which can be connected to a PC over a USB [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=31&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As part of this router project, I need to understand USB at a low-level &#8211; for driving a MAX3421 controller.   And for some months now, I have been meaning to look at a digital storage oscilloscope made by Owon.  It is the PDS5022s model which can be connected to a PC over a USB link.</p>

<a href='http://ee07m060.wordpress.com/2009/06/23/reverse-engineering-a-usb-peripheral-driver-for-the-owon-scope/pds5022s-800/' title='PDS5022S'><img data-attachment-id='32' data-orig-size='800,460' data-liked='0'width="150" height="86" src="http://ee07m060.files.wordpress.com/2009/06/pds5022s-800.jpg?w=150&#038;h=86" class="attachment-thumbnail" alt="Owon PDS5022S scope with USB peripheral port" title="PDS5022S" /></a>
<a href='http://ee07m060.wordpress.com/2009/06/23/reverse-engineering-a-usb-peripheral-driver-for-the-owon-scope/pds5022s/' title='pds5022s'><img data-attachment-id='33' data-orig-size='512,384' data-liked='0'width="150" height="112" src="http://ee07m060.files.wordpress.com/2009/06/pds5022s.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="pds5022s scope" title="pds5022s" /></a>
<a href='http://ee07m060.wordpress.com/2009/06/23/reverse-engineering-a-usb-peripheral-driver-for-the-owon-scope/owonbitmapsnapshot-2/' title='owon bitmap using linux driver'><img data-attachment-id='53' data-orig-size='648,511' data-liked='0'width="150" height="118" src="http://ee07m060.files.wordpress.com/2009/06/owonbitmapsnapshot3.jpg?w=150&#038;h=118" class="attachment-thumbnail" alt="owon bitmap using linux driver" title="owon bitmap using linux driver" /></a>

<p>Unfortunately, the Owon software although written in Java is wrapped up in a Windows-only executable.   I want to use the scope in Linux, and the binary won&#8217;t even run in Wine, nor can I unwrap it to get to the Java classes.</p>
<p>So, there lies the dilemma. I needed to understand USB, and I wanted to reverse engineering the USB peripheral driver for the digital scope.  Here we see two birds and one stone!</p>
<p>With the help of a USB sniffer that runs on Windows, the libusb C library, gcc, khexedit, usbmon and some sticky-backed plastic, I finally got there..   a working userspace Linux driver for the Owon.  At a guess, the code should also work for other scopes in the Owon range.  Once I&#8217;ve debugged it a bit, I will post up the source.</p>
<pre style="padding-left:30px;">[michael@epox Debug]$ ./owondump test5.bin

..Initialising libUSB
..Finding USB buses
..Searching buses for Owon
..Found an Owon device 5345:1234 on bus 001
..Attempting USB lock on device  5345:1234
..Trying to claim interface 0 of 5345:1234
..Successfully claimed interface 0 to 5345:1234
..Attempting to get the Device Descriptor
..Successfully obtained device descriptor!
..Attempting to bulk write start command to device...
..Successful bulk write of 0005h bytes!
..Attempting to bulk read 000ch bytes from device...
..Successful bulk read of 000ch bytes! :
        00000000: e1 d7 00 00 8d d4 2d 21 00 00 00 00
..Attempting to malloc read buffer space of 0000d7e1h bytes
..Successful malloc!
..Owon ready to bulk transfer 0000d7e1h bytes
..Attempting to bulk read 0000d7e1h bytes from device...
..Successful bulk read of 0000d7e1h bytes! :
..Hexdump of CH1 header :
        00000000: 53 50 42 56 30 31 e1 d7 00 00 43 48 31 04 31 00
        00000001: 00 6a 18 00 00 6a 18 00 00 00 00 00 00 11 00 00
        00000002: 00 fe ff ff ff 02 00 00 00 00 00 00 00 00 00 80
        00000003: 40 cb 17 48 42 6c 2d 9c 46 cd cc cc 3e 2a 00 29
..Channel Settings :
 channel name: CH1
 vertical sens: 10mV
 timebase: 0.0025s

 channel name: CH2
 vertical sens: 20mV
 timebase: 0.0025s

 channel name: CHA
 vertical sens: 10mV
 timebase: 0.01s

 channel name: CHB
 vertical sens: 10mV
 timebase: 0.005s

 channel name: CHC
 vertical sens: 20mV
 timebase: 0.01s
..Successfully opened file 'test5.bin'!
..Successfully written 55265 bytes to file test5.bin
..Attempting to release interface 0
..Successful release of interface 0!
[michael@epox Debug]$</pre>
<p><img src="http://ee07m060.files.wordpress.com/2009/06/owonbitmapsnapshot3.jpg?w=450" alt="owon bitmap using linux driver" width="80%/"><br />
Waveform bitmap downloaded using Linux driver for Owon</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=31&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2009/06/23/reverse-engineering-a-usb-peripheral-driver-for-the-owon-scope/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/pds5022s-800.jpg?w=150" medium="image">
			<media:title type="html">PDS5022S</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/pds5022s.jpg?w=150" medium="image">
			<media:title type="html">pds5022s</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/owonbitmapsnapshot3.jpg?w=150" medium="image">
			<media:title type="html">owon bitmap using linux driver</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/owonbitmapsnapshot3.jpg" medium="image">
			<media:title type="html">owon bitmap using linux driver</media:title>
		</media:content>
	</item>
		<item>
		<title>Dodgy dongles</title>
		<link>http://ee07m060.wordpress.com/2009/06/20/dodgy-dongle/</link>
		<comments>http://ee07m060.wordpress.com/2009/06/20/dodgy-dongle/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 02:28:29 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ee07m060.wordpress.com/?p=17</guid>
		<description><![CDATA[I seem to be buying up all the dodgy Bluetooth dongles on ebay. The first batch have a chipset from Integrated System Solutions Corp, but share the same &#8216;unique&#8217;  48-bit Bluetooth hardware address of 00:00:00:00:00:00 !   They also take far too long to respond to USB descriptor requests which causes timeout errors. The second batch [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=17&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I seem to be buying up all the dodgy Bluetooth dongles on ebay.</p>
<p>The first batch have a chipset from <em>Integrated System Solutions Corp</em>, but share the same &#8216;unique&#8217;  48-bit Bluetooth hardware address of 00:00:00:00:00:00 !   They also take far too long to respond to USB descriptor requests which causes timeout errors.</p>
<p>The second batch of dongles have a CSR chipset and an external antenna for &#8220;enhanced data range&#8221;.   So far, so good. But then I noticed that one of the antennas had worked a bit loose and so I prised the dongle open to re-attach it firmly.</p>
<p>Imagine my dismay at finding that the antenna for &#8220;enhanced data range&#8221; actually serves no purpose since it is 100% plastic and not even connected to the board!   On the plus side, at least these dongles work properly.</p>
<p>Two more batches of dongle should be arriving soon.  So third or maybe fourth time lucky!</p>
<p>
<a href='http://ee07m060.wordpress.com/2009/06/20/dodgy-dongle/dscf1167_s/' title='dscf1167_s'><img data-attachment-id='18' data-orig-size='640,480' data-liked='0'width="150" height="112" src="http://ee07m060.files.wordpress.com/2009/06/dscf1167_s.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="more dodgy dongles - note the non-functional antenna" title="dscf1167_s" /></a>
<a href='http://ee07m060.wordpress.com/2009/06/20/dodgy-dongle/attachment/501150/' title='501150'><img data-attachment-id='20' data-orig-size='200,114' data-liked='0'width="150" height="85" src="http://ee07m060.files.wordpress.com/2009/06/501150.jpg?w=150&#038;h=85" class="attachment-thumbnail" alt="these dongles share the same &quot;unique&quot; bluetooth addresses" title="501150" /></a>
<a href='http://ee07m060.wordpress.com/2009/06/20/dodgy-dongle/dscf1172_s/' title='dscf1172_s'><img data-attachment-id='19' data-orig-size='640,480' data-liked='0'width="150" height="112" src="http://ee07m060.files.wordpress.com/2009/06/dscf1172_s.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Cambridge Silicon Radio (CSR) chipset" title="dscf1172_s" /></a>
<br />
/sbin/lsusb -v returns the following information&#8230;</p>
<blockquote><p><strong>Bus 004 Device 009: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter</strong><br />
Device Descriptor:<br />
bLength                18<br />
bDescriptorType         1<br />
bcdUSB               1.10<br />
bDeviceClass          224 Wireless<br />
bDeviceSubClass         1 Radio Frequency<br />
bDeviceProtocol         1 Bluetooth<br />
bMaxPacketSize0        16<br />
idVendor           0&#215;1131 Integrated System Solution Corp.<br />
idProduct          0&#215;1001 KY-BT100 Bluetooth Adapter<br />
bcdDevice            3.73<br />
iManufacturer           1<br />
iProduct                2<br />
iSerial                 0<br />
bNumConfigurations      1<br />
Configuration Descriptor:<br />
bLength                 9<br />
bDescriptorType         2<br />
wTotalLength          186<br />
bNumInterfaces          3<br />
bConfigurationValue     1<br />
iConfiguration          0<br />
bmAttributes         0xc0<br />
Self Powered<br />
MaxPower                0mA<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        0<br />
bAlternateSetting       0<br />
bNumEndpoints           3<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;81  EP 1 IN<br />
bmAttributes            3<br />
Transfer Type            Interrupt<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0010  1x 16 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;02  EP 2 OUT<br />
bmAttributes            2<br />
Transfer Type            Bulk<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0040  1x 64 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;82  EP 2 IN<br />
bmAttributes            2<br />
Transfer Type            Bulk<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0040  1x 64 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       0<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0000  1x 0 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0000  1x 0 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       1<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0009  1x 9 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0009  1x 9 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       2<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0011  1x 17 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0011  1x 17 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       3<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0019  1x 25 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0019  1x 25 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       4<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0021  1x 33 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0021  1x 33 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       5<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0031  1x 49 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0031  1x 49 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        2<br />
bAlternateSetting       0<br />
bNumEndpoints           0<br />
bInterfaceClass       254 Application Specific Interface<br />
bInterfaceSubClass      1 Device Firmware Update<br />
bInterfaceProtocol      0<br />
iInterface              0</p>
<p><strong>Bus 004 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)</strong><br />
Device Descriptor:<br />
bLength                18<br />
bDescriptorType         1<br />
bcdUSB               1.10<br />
bDeviceClass          224 Wireless<br />
bDeviceSubClass         1 Radio Frequency<br />
bDeviceProtocol         1 Bluetooth<br />
bMaxPacketSize0        16<br />
idVendor           0x0a12 Cambridge Silicon Radio, Ltd<br />
idProduct          0&#215;0001 Bluetooth Dongle (HCI mode)<br />
bcdDevice            1.34<br />
iManufacturer           1 Conwise Technology<br />
iProduct                2 CONWISE BT<br />
iSerial                 0<br />
bNumConfigurations      1<br />
Configuration Descriptor:<br />
bLength                 9<br />
bDescriptorType         2<br />
wTotalLength          108<br />
bNumInterfaces          2<br />
bConfigurationValue     1<br />
iConfiguration          0<br />
bmAttributes         0&#215;80<br />
MaxPower              100mA<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        0<br />
bAlternateSetting       0<br />
bNumEndpoints           3<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;81  EP 1 IN<br />
bmAttributes            3<br />
Transfer Type            Interrupt<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0010  1x 16 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;82  EP 2 IN<br />
bmAttributes            2<br />
Transfer Type            Bulk<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0040  1x 64 bytes<br />
bInterval               0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;02  EP 2 OUT<br />
bmAttributes            2<br />
Transfer Type            Bulk<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0040  1x 64 bytes<br />
bInterval               0<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       0<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0000  1x 0 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0000  1x 0 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       1<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0009  1x 9 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0009  1x 9 bytes<br />
bInterval               1<br />
Interface Descriptor:<br />
bLength                 9<br />
bDescriptorType         4<br />
bInterfaceNumber        1<br />
bAlternateSetting       2<br />
bNumEndpoints           2<br />
bInterfaceClass       224 Wireless<br />
bInterfaceSubClass      1 Radio Frequency<br />
bInterfaceProtocol      1 Bluetooth<br />
iInterface              0<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;83  EP 3 IN<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0011  1x 17 bytes<br />
bInterval               1<br />
Endpoint Descriptor:<br />
bLength                 7<br />
bDescriptorType         5<br />
bEndpointAddress     0&#215;03  EP 3 OUT<br />
bmAttributes            1<br />
Transfer Type            Isochronous<br />
Synch Type               None<br />
Usage Type               Data<br />
wMaxPacketSize     0&#215;0011  1x 17 bytes<br />
bInterval               1</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=17&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2009/06/20/dodgy-dongle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/dscf1167_s.jpg?w=150" medium="image">
			<media:title type="html">dscf1167_s</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/501150.jpg?w=150" medium="image">
			<media:title type="html">501150</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/dscf1172_s.jpg?w=150" medium="image">
			<media:title type="html">dscf1172_s</media:title>
		</media:content>
	</item>
		<item>
		<title>PICKit2 vs ICD2</title>
		<link>http://ee07m060.wordpress.com/2009/06/20/5/</link>
		<comments>http://ee07m060.wordpress.com/2009/06/20/5/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 01:23:28 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[pic]]></category>
		<category><![CDATA[icd2]]></category>
		<category><![CDATA[mplab ide]]></category>
		<category><![CDATA[pic programmers]]></category>
		<category><![CDATA[pic24]]></category>
		<category><![CDATA[pickit2]]></category>

		<guid isPermaLink="false">http://ee07m060.wordpress.com/?p=5</guid>
		<description><![CDATA[There are two types of programmer for the PIC series of 16 bit microcontroller. The original programmer is called the PICKIT2.  To encourage early adoption of the PIC architecture, Microchip placed the schematics, board artwork, and software of the PICKIT2 programmer into the public domain.  Anybody is free to sell clones of the PICKIT2 programmer. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=5&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are two types of programmer for the PIC series of 16 bit microcontroller.</p>
<p>The original programmer is called the PICKIT2.  To encourage early adoption of the PIC architecture, Microchip placed the schematics, board artwork, and software of the PICKIT2 programmer into the public domain.  Anybody is free to sell clones of the PICKIT2 programmer. Clones are available for around $20 on ebay.</p>
<p>Later, however, Microchip developed a more sophisticated programmer known as the ICD2.   ICD stands for In-Circuit Debugging.  Through the use of the debugger which is built-in to the MPLAB IDE, the internal state of the microcontroller can be examined with the ICD2.  Program execution can stepped through one instruction at a time and breakpoints can be set.   However, unlike the PICKIT2, the design of the ICD2 remains proprietary.</p>
<p>The relative merits of these two programmers are discussed regularly on Microchip Technical forums.   Xiofan Chen has constructed <a title="a helpful FAQ on the ICD2 and PICKIT2 programmers" href="http://www.microchip.com/forums/fb.aspx?m=296922">a helpful FAQ</a> on the subject:</p>
<p>Support for the PICKIT2 programmer in the MPLAB IDE has greatly improved in recent releases.  And now, like the ICD2, the PICKIT2 can also be used as a debugger. Some developers are reporting that there is now little to choose between the two models.</p>

<a href='http://ee07m060.wordpress.com/2009/06/20/5/pickit2/' title='pickit2'><img data-attachment-id='6' data-orig-size='490,222' data-liked='0'width="150" height="67" src="http://ee07m060.files.wordpress.com/2009/06/pickit2.jpg?w=150&#038;h=67" class="attachment-thumbnail" alt="the original pickit2 from microchip" title="pickit2" /></a>
<a href='http://ee07m060.wordpress.com/2009/06/20/5/kit2_2/' title='kit2_2'><img data-attachment-id='7' data-orig-size='308,308' data-liked='0'width="150" height="150" src="http://ee07m060.files.wordpress.com/2009/06/kit2_2.jpg?w=150&#038;h=150" class="attachment-thumbnail" alt="pickit2 clone" title="kit2_2" /></a>
<a href='http://ee07m060.wordpress.com/2009/06/20/5/mplab_icd2_programmer/' title='MPLAB_ICD2_Programmer'><img data-attachment-id='14' data-orig-size='700,522' data-liked='0'width="150" height="111" src="http://ee07m060.files.wordpress.com/2009/06/mplab_icd2_programmer.jpg?w=150&#038;h=111" class="attachment-thumbnail" alt="Microchip&#039;s proprietary ICD2 programmer/debugger" title="MPLAB_ICD2_Programmer" /></a>

<p>Wouter van Ooijen has written <a href="http://www.voti.nl/pickit2faq/index_1.html">a FAQ on the PICKit2</a> and Au Group Electronics provide some background to<a title="Understanding the Microchip PICkit 2 hardware" href="http://augroups.blogspot.com/2009/05/understanding-microchip-pickit-2-rev.html"> understanding the hardware of the PICKit2</a> and <a href="http://www.auelectronics.com/Q4.htm">guidance on calibrating the programmer</a>.  There is also a dedicated Google group for the <a title="google group pickit-devel" href="http://groups.google.com/group/pickit-devel/topics">&#8220;discussion of open-source development for Microchip&#8217;s PICKit series of programmers&#8221;</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=5&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2009/06/20/5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/pickit2.jpg?w=150" medium="image">
			<media:title type="html">pickit2</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/kit2_2.jpg?w=150" medium="image">
			<media:title type="html">kit2_2</media:title>
		</media:content>

		<media:content url="http://ee07m060.files.wordpress.com/2009/06/mplab_icd2_programmer.jpg?w=150" medium="image">
			<media:title type="html">MPLAB_ICD2_Programmer</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://ee07m060.wordpress.com/2009/06/17/hello-world/</link>
		<comments>http://ee07m060.wordpress.com/2009/06/17/hello-world/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 00:49:44 +0000</pubDate>
		<dc:creator>ee07m060</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=1&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ee07m060.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ee07m060.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ee07m060.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ee07m060.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ee07m060.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ee07m060.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ee07m060.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ee07m060.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ee07m060.wordpress.com&amp;blog=8206681&amp;post=1&amp;subd=ee07m060&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ee07m060.wordpress.com/2009/06/17/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/766759d1eada94c6c042f16fedc92c05?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ee07m060</media:title>
		</media:content>
	</item>
	</channel>
</rss>
