<?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>VT6656 Linux Driver</title>
	<atom:link href="http://vt6656.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vt6656.wordpress.com</link>
	<description>Developing a Linux Driver for VIA&#039;s VT6656 USB WiFi Adapter</description>
	<lastBuildDate>Mon, 21 Sep 2009 16:04:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='vt6656.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>VT6656 Linux Driver</title>
		<link>http://vt6656.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://vt6656.wordpress.com/osd.xml" title="VT6656 Linux Driver" />
	<atom:link rel='hub' href='http://vt6656.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The work after the course: the next goals.</title>
		<link>http://vt6656.wordpress.com/2009/09/21/the-work-after-the-course-the-next-goals/</link>
		<comments>http://vt6656.wordpress.com/2009/09/21/the-work-after-the-course-the-next-goals/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 16:02:44 +0000</pubDate>
		<dc:creator>rodolk</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[802.11]]></category>
		<category><![CDATA[vt6656]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/2009/09/21/the-work-after-the-course-the-next-goals/</guid>
		<description><![CDATA[Although the course has finished, the work on the device driver continues. We&#8217;ve learnt a lot so far but there is more to do. The activity has decreased and I took two weeks to rest and catch up withy my every-day work :). However, now I&#8217;m beginning again and the objective is to depurate the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=122&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Although the course has finished, the work on the device driver continues. We&#8217;ve learnt a lot so far but there is more to do. The activity has decreased and I took two weeks to rest and catch up withy my every-day work :). However, now I&#8217;m beginning again and the objective is to depurate the driver, port it to the latest kernel version and being able to navigate with a browser without errors. I hope all the group is still willing to contribute because it was a great group with smart people.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=122&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/09/21/the-work-after-the-course-the-next-goals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dfaea85d43fbd846f01601121b721e2b?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">rodolk</media:title>
		</media:content>
	</item>
		<item>
		<title>Ping with the new device driver for vt6656</title>
		<link>http://vt6656.wordpress.com/2009/09/08/ping-with-the-new-device-driver-for-vt6656/</link>
		<comments>http://vt6656.wordpress.com/2009/09/08/ping-with-the-new-device-driver-for-vt6656/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 05:38:08 +0000</pubDate>
		<dc:creator>rodolk</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[802.11]]></category>
		<category><![CDATA[vt6656]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/2009/09/08/ping-with-the-new-device-driver-for-vt6656/</guid>
		<description><![CDATA[Finally, today I was able to execute a ping with the new device driver on our 802.11/USB vt6656. This with 802.11b. There is much work to do yet but now that we can send and receive we will be able to progress steadily. I think we are arriving at a point where we are going [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=117&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Finally, today I was able to execute a ping with the new device driver on our 802.11/USB vt6656. This with 802.11b.<br />
There is much work to do yet but now that we can send and receive we will be able to progress steadily.<br />
I think we are arriving at a point where we are going to need the registers specifications from VIA Technologies, so that our work is not that hard. The main problem we had to transmit, is that it took us much time to find out the registers to configure.<br />
Now we can associate to an AP and ping another IP address. This is great progress.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=117&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/09/08/ping-with-the-new-device-driver-for-vt6656/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dfaea85d43fbd846f01601121b721e2b?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">rodolk</media:title>
		</media:content>
	</item>
		<item>
		<title>¿Quién escribe Linux?</title>
		<link>http://vt6656.wordpress.com/2009/08/24/quien-escribe-linux/</link>
		<comments>http://vt6656.wordpress.com/2009/08/24/quien-escribe-linux/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 16:56:33 +0000</pubDate>
		<dc:creator>Nicolás Wolovick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/?p=112</guid>
		<description><![CDATA[Hace pocos días la Linux Foundation lanzó: Linux Kernel Development How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It: An August 2009 Update Greg Kroah-Hartman, SuSE Labs / Novell Inc. Jonathan Corbet, LWN.net Amanda McPherson, The Linux Foundation Dentro del documento se puede ver porqué todo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=112&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hace <a href="http://www.linuxfoundation.org/news-media/announcements/2009/08/linux-foundation-updates-study-linux-development-statistics-who-wri">pocos días</a> la <a href="http://www.linuxfoundation.org">Linux Foundation</a> lanzó:</p>
<p><a href="http://www.linuxfoundation.org/publications/whowriteslinux.pdf">Linux Kernel Development How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It</a>: An August 2009 Update<br />
Greg Kroah-Hartman, SuSE Labs / Novell Inc.<br />
Jonathan Corbet, LWN.net<br />
Amanda McPherson, The Linux Foundation</p>
<p>Dentro del documento se puede ver porqué todo está funcionando sobre rieles en nuestro curso :)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=112&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/24/quien-escribe-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2dcf130286ff935d0e5519da04a251ef?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nwolovick</media:title>
		</media:content>
	</item>
		<item>
		<title>¡Le podemos conectar una antena externa!</title>
		<link>http://vt6656.wordpress.com/2009/08/21/%c2%a1le-podemos-conectar-una-antena-externa/</link>
		<comments>http://vt6656.wordpress.com/2009/08/21/%c2%a1le-podemos-conectar-una-antena-externa/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 13:37:54 +0000</pubDate>
		<dc:creator>Federico Heinz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/?p=103</guid>
		<description><![CDATA[Cuando mostré las fotos de la placa desnuda, noté que parecía haber “un trimmer de función desconocida” entre la radio y la antena. Poco después, alguien llamado “ExoUY” (los uruguayos suelen tener nombres raros, ¡pero esto ya es exagerado!) me corrigió, señalando que eso no es un trimmer, sino un conector para antena externa. Eso [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=103&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Cuando <a href="http://vt6656.wordpress.com/2009/08/14/electropornografia/">mostré las fotos de la placa desnuda</a>, noté que parecía haber “un trimmer de función desconocida” entre la radio y la antena. Poco después, alguien llamado “ExoUY” (los uruguayos suelen tener nombres raros, ¡pero esto ya es exagerado!) me corrigió, <a href="http://vt6656.wordpress.com/2009/08/14/electropornografia#comment-5">señalando que eso no es un trimmer, sino un conector para antena externa</a>. Eso está mucho mejor que un trimmer, porque quiere decir que podemos conectar una antena de alta ganancia y, una vez que esté funcionando el modo AP, construir nodos inalámbricos de largo alcance.</p>
<p>Disculpas por mi despiste al sugerir que eso era un trimmer. Las excusas que se me ocurren son una más vergonzosa que la otra:<br />
<span id="more-103"></span>
<ul>
<li>pese a que tenía el aparato abierto sobre la mesa, al post lo escribí mirando la foto, en la que el conector no está bien iluminado,</li>
<li>ese día no había traído los lentes, y es chiquitiiiito,</li>
<li>sencillamente, no es buena idea dejar que un programador escriba acerca de hardware.</li>
</ul>
<p>En todo caso, ¡gracias por la corrección, ExoUY!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=103&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/21/%c2%a1le-podemos-conectar-una-antena-externa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b24ecbcf56828b3a5e87378223fdb2a8?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">fheinz</media:title>
		</media:content>
	</item>
		<item>
		<title>NMI and ehci-hcd died in Lenovo Thinkpad T60</title>
		<link>http://vt6656.wordpress.com/2009/08/19/nmi-and-ehci-hcd-died-in-lenovo-thinkpad-t60/</link>
		<comments>http://vt6656.wordpress.com/2009/08/19/nmi-and-ehci-hcd-died-in-lenovo-thinkpad-t60/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:47:09 +0000</pubDate>
		<dc:creator>rodolk</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/2009/08/19/nmi-and-ehci-hcd-died-in-lenovo-thinkpad-t60/</guid>
		<description><![CDATA[While developing my device driver, I stumbled on a problem that was very difficult to solve. When I plugged the USB 802.11 card, in my notebook, the EHCI HCD died and I got the following debug message: [ 351.781090] Uhhuh. NMI received for unknown reason b1 on CPU 0. [ 351.781090] You have some hardware [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=98&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While developing my device driver, I stumbled on a problem that was very difficult to solve. When I plugged the USB 802.11 card, in my notebook, the EHCI HCD died and I got the following debug message:</p>
<blockquote><p><code>[ 351.781090] Uhhuh. NMI received for unknown reason b1 on CPU 0.<br />
[ 351.781090] You have some hardware problem, likely on the PCI bus.<br />
[ 351.781090] Dazed and confused, but trying to continue<br />
[ 351.781165] ehci_hcd 0000:00:1d.7: fatal error<br />
[ 351.785054] ehci_hcd 0000:00:1d.7: HC died; cleaning up<br />
[ 351.785108] usb 1-2: MESSAGE_REQUEST_BBREG failed, error -108.<br />
[ 351.785139] vt6656: probe of 1-2:1.0 failed with error -108<br />
[ 351.785158] usb 1-2: USB disconnect, address 4<br />
[ 352.096076] usb 2-2: new full speed USB device using uhci_hcd and address 2<br />
[ 352.295147] usb 2-2: not running at top speed; connect to a high speed hub<br />
[ 352.326289] usb 2-2: configuration #1 chosen from 1 choice<br />
[ 352.331143] usb 2-2: current firmware found.<br />
[ 352.331204] uhci_hcd 0000:00:1d.0: host system error, PCI problems?<br />
[ 352.331211] uhci_hcd 0000:00:1d.0: host controller halted, very bad!<br />
[ 352.331236] uhci_hcd 0000:00:1d.0: HC died; cleaning up<br />
[ 352.832036] usb 2-2: MESSAGE_REQUEST_BBREG failed, error -110.<br />
[ 352.832071] vt6656: probe of 2-2:1.0 failed with error -110<br />
[ 352.832380] usb 2-2: USB disconnect, address 2</code><code></code></p></blockquote>
<p>I was the only one in the class having this problem with exactly the same device driver code and the same kernel.</p>
<p>I spent the long weekend looking for the root cause of the problem.<br />
On Monday at 4am after having traced the whole kernel&#8217;s USB communication stack and having read chapter 13 of the book Linux Device Drivers for the 3rd time, I found the root cause of the problem.<br />
<span id="more-98"></span><br />
Basically, the problem is that eventually we call function <code>usb_control_msg()</code> to send a message through a control endpoint to the USB device and when we call this function we pass a pointer to a table declared as static. <code>usb_control_msg()</code> internally, at some point calls <code>usb_fill_control_urb()</code> to fill a newly allocated urb that is to be asynchornously sent to the USB device. Then, the table ptr is directly assigned to <code>urb-&gt;transfer_buffer</code>.</p>
<p>Later down in the stack <code>urb-&gt;transfer_buffer</code> is used for streaming DMA mapping to pass the data to the USB device through the PCI controller.</p>
<p>On Monday at 4 am I read again the URB fields in the book Linux Device Driver and I realized that you cannot pass data declared as static or in the stack through DMA. We were passing a pointer to a static array to <code>usb_control_msg()</code>. You need to dynamically allocate a bounce buffer (with <code>kmalloc()</code>) to be passed to a controller for DMA transfer.</p>
<p>Some PCI controllers fail (mine) and some not (all others). I have a Lenovo Thinkpad T60, I don’t know the PCI controller.</p>
<p>From what I read in Google many people with Lenovo had a similar problem and I could not find a clear solution to the problem.</p>
<p>An interesting point regarding <code>usb_control_msg()</code> is that it is supposed to make life easier for device driver developers and you should not have to know that internally DMA transfer occurs. We should check that <code>usb_bulk_msg()</code> does not have the same problem (at least for Lenovo users).<br />
Finally I’ve developed the patch for solving this problem. Now we dynamically allocate a bounce buffer, copy the table content to this bounce buffer and the ptr is passed to <code>usb_control_msg()</code>.<br />
I hope this solution is useful for others as well.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=98&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/19/nmi-and-ehci-hcd-died-in-lenovo-thinkpad-t60/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dfaea85d43fbd846f01601121b721e2b?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">rodolk</media:title>
		</media:content>
	</item>
		<item>
		<title>Tercer encuentro</title>
		<link>http://vt6656.wordpress.com/2009/08/19/tercer-encuentro/</link>
		<comments>http://vt6656.wordpress.com/2009/08/19/tercer-encuentro/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 02:56:45 +0000</pubDate>
		<dc:creator>Federico Heinz</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/?p=91</guid>
		<description><![CDATA[Una vez que ya tenemos funcionando la lógica y la infraestructura para que el kernel sepa que nuestro driver es el que se ocupa de este dispositivo cada vez que alguien lo enchufa al bus USB, ahora nos toca cumplir la promesa, y efectivamente ocuparnos de él. Durante este encuentro, nos dedicamos esencialmente a cargar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=91&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Una vez que ya tenemos funcionando la lógica y la infraestructura para que el kernel sepa que nuestro driver es el que se ocupa de este dispositivo cada vez que alguien lo enchufa al bus USB, ahora nos toca cumplir la promesa, y efectivamente ocuparnos de él.</p>
<p>Durante este encuentro, nos dedicamos esencialmente a cargar el firmware en la placa, de modo que pueda efectivamente funcionar. Para eso, Christoph nos provee del archivo <code>vt6656.fw</code>, un montón de código binario que no sabemos qué hace (¡GRRR!), pero que debemos enviar al dongle en sucesivos mensajes de control. Para que <code>request_firmware()</code> pueda proveernos este firmware cuando inicializamos el driver, tenemos que poner el archivo en el directorio <code>/lib/firmware</code>.</p>
<p>Una vez que cargamos el firmware con éxito en la tarjeta, por fin podemos bootearla con otro mensaje de control, y tenemos ya una placa de red funcional. Ahora podemos preguntarle cosas como la versión de firmware, o la dirección MAC, o el contenido de la memoria EEPROM del dispositivo (en la que guarda datos persistentes) ¡y nos contesta! De hecho, podemos incluso escribir en la memoria EEPROM, y de esa manera cambiar la dirección MAC de la tarjeta de forma permanente.</p>
<p>Todavía nos falta inicializarla correctamente, configurarla y aprender a enviar y recibir datos antes de que podamos conectarnos a la red, y para que todo eso funcione tenemos que construir las estructuras de datos necesarias para poder pasar información de ida vuelta entre la pila <code>mac80211</code> y el protocolo USB del firmware.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=91&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/19/tercer-encuentro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b24ecbcf56828b3a5e87378223fdb2a8?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">fheinz</media:title>
		</media:content>
	</item>
		<item>
		<title>Una gran oportunidad! A great opportunity!</title>
		<link>http://vt6656.wordpress.com/2009/08/18/una-gran-oportunidad/</link>
		<comments>http://vt6656.wordpress.com/2009/08/18/una-gran-oportunidad/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:50:39 +0000</pubDate>
		<dc:creator>rodolk</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/2009/08/18/una-gran-oportunidad/</guid>
		<description><![CDATA[Participating in this group is an incredible experience. This is a great opportunity we can’t let go. I began digging into Linux Kernel, alone, nine years ago in order to learn the low level details of the TCP/IP stack implementation. Then from 2002 to 2005 I worked solving bugs in an open source MIPv6 (Mobile [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=83&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Participating in this group is an incredible experience. This is a great opportunity we can’t let go. I began digging into Linux Kernel, alone, nine years ago in order to learn the low level details of the TCP/IP stack implementation. Then from 2002 to 2005 I worked solving bugs in an open source MIPv6 (Mobile IPv6) stack called LIVSIX, developed by Motorola Labs and I ported it to uClinux in Coldfire processors with big-endian architecture. I did some tweaks in Wind River Linux Kernel’s the sockets API for specific projects. However, I’ve never had an opportunity like this in which we can develop, in Argentina, an 802.11 Linux device driver from scratch and being led by somebody (Christoph) experienced in contributing to the kernel tree. The group is amazing: eager to learn and produce a high-quality product. We are progressing really fast and I’m confident by the end of the month we will be able to connect to an AP and send/receive data. Organizing this course was a great idea! Good for us and good for the technology in our country. Thanks to Federico, Nicolas, and Daniel. And to Christoph, of course.<br />
&#8212;&#8211; Español &#8212;&#8211;<br />
Participar en este grupo es una experiencia increíble. Es una oportunidad que no podemos dejar pasar. Empecé a meterme en el kernel de Linux, solo, nueve años atrás para aprender los detalles de bajo nivel de la implementación del stack TCP/IP. Desde 2002 a 2005 trabajé resolviendo bugs en un stack de MIPv6 (Mobile IPv6) llamado LIVSIX y desarrollado por Motorola Labs. También porté el stack a uClinux sobre procesadores Coldfire con arquitectura big-endian. También hice tweaks en la API de sockets de kernel de Wind River para proyectos específicos. Sin embargo, nunca tuve la oportunidad de desarrollar, en Argentina, un device driver para 802.11 desde cero y ser guiado por alguien como Christoph, con experiencia contribuyendo al kernel tree. El grupo es asombroso: todos ansiosos por aprender y sacar un producto de alta calidad. Estamos progresando muy rápido y seguramente a fin de mes vamos a poder conectarnos a un AP y comunicarnos. Organizar este curso fue una gran idea. Buena para nosotros y buena para el progreso de la tecnología en nuestro país. Gracias a Federico, Nicolás y Daniel. Y a Christoph, of course.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=83&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/18/una-gran-oportunidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dfaea85d43fbd846f01601121b721e2b?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">rodolk</media:title>
		</media:content>
	</item>
		<item>
		<title>No sólo de código vive el hacker</title>
		<link>http://vt6656.wordpress.com/2009/08/18/no-solo-de-codigo-vive-el-hacker/</link>
		<comments>http://vt6656.wordpress.com/2009/08/18/no-solo-de-codigo-vive-el-hacker/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 01:03:09 +0000</pubDate>
		<dc:creator>Federico Heinz</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/?p=80</guid>
		<description><![CDATA[El desafío técnico de participar en un proyecto de software libre es importante, y eso es parte de lo que lo hace tan divertido. Pero no basta con ser un gran programador: además de saber escribir código, hace falta saber interactuar con la comunidad de ese proyecto. Esto puede ser todo un desafío en sí: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=80&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El desafío técnico de participar en un proyecto de software libre es importante, y eso es parte de lo que lo hace tan divertido. Pero no basta con ser un gran programador: además de saber escribir código, hace falta saber interactuar con la comunidad de ese proyecto. Esto puede ser todo un desafío en sí: en un proyecto grande, con decenas de desarrolladores que no se conocen personalmente, y que interactúan esencialmente a través de listas de correo electrónico, la comunicación debe respetar ciertas reglas, porque de lo contrario sería muy difícil encauzar toda esa actividad de modo que sea productiva.</p>
<p>A menudo, una de esas reglas es que la comunicación debe ser en Inglés. Independientemente de que nos guste o no, el Inglés es la <em>lingua franca</em> de la informática, así como el Francés lo es de las ciencias sociales. De hecho, la comunicación entre el docente y los estudiantes de este taller sería imposible sin capacidad de entender Inglés, y al menos expresarse rudimentariamente en ese idioma. Así, teniendo en cuenta que nuestro objetivo es lograr que el módulo sea incorporado en un proyecto en el que contribuyen cientos de programadores de todo el mundo, parte del contenido del curso es aprender a comportarse como un buen desarrollador en una lista de correo electrónico.<br />
<span id="more-80"></span><br />
A través de la interacción que se está dando en <a href="http://mx.grulic.org.ar/lurker/list/kernel-hackathon.en.html">la lista de correos del proyecto</a> intentamos aprender a través de la experiencia, en un ambiente en el que todos sabemos que estamos aprendiendo. Esto es importante, porque las reglas de “buena educación” en algunos proyectos de software libre pueden ser bastante diferentes de las del mundo real. Por ejemplo, si bien es importante tratar de ser cordial y respetuoso de los demás, probablemente sea más importante el desarrollar la capacidad de no ofenderse cuando otros no lo son: en listas muy técnicas, como las del kernel, es bastante común que algunas personas se comporten de manera descortés, y sobre todo que critiquen el trabajo de otros de manera muy agresiva. Lo peor que uno puede hacer en estos casos es ofenderse y responder a la agresión, lo mejor es tomárselo con calma, quizás incluso tomarse un día entero para calmarse, y recién después contestar a los puntos técnicos, dejando de lado la potencial ofensa personal.</p>
<p> Mientras tanto, vamos aprendiendo otras reglas del arte de la comunicación en grandes proyectos. Por ejemplo: nunca “relatar” cómo cambiaría uno el código, lo mejor es sencillamente cambiarlo y enviar un parche para que otros puedan verlo. El parche es la unidad elemental de intercambio de código entre desarrolladores, y hay una serie de reglas para enviarlos. Algunas de las reglas que vamos aprendiendo:</p>
<ol>
<li>Un parche debe ser la solución completa a <b>un</b> problema. No es bueno que en un parche se solucione más de un error o se introduzca más que una unidad funcional, ni que hagan flata varios parches para solucionar un único problema.</li>
<li>
</li>
<li>No se debe enviar más de un parche por mail. Es muy probable que haya una discusión del parche, y si tenemos varios en un mail, es muy fácil perder el hilo de la discusión, y que se mezclen los comentarios.</li>
<li>Los mails que contienen parches deben tener una línea de asunto que permita identificarlo como tal, y darse una idea de para qué sirve el parche. La costumbre dicta que esa línea debe tener la forma comenzar con la etiqueta “[PATCH]”, y seguir con una descripción breve del problema que el patch soluciona.</li>
<li>En el caso del kernel, los parches que son contribuidos al proyecto deben contener una linea <a href="http://kerneltrap.org/node/3180">Signed-off-by:</a>, que esencialmente es una declaración por parte del desarrollador de que el código es de su autoría, y por lo tanto tiene el poder de decisión de contribuirlo. Esto es para evitar que luego un tercero se queje de que hay código de él en el kernel, sin que él diera permiso.</li>
<li>Antes de enviar un patch, pasalo primero por <code>scripts/checkpatch.pl</code>, para asegurarte de que respeta las convenciones de codificación del kernel.</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=80&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/18/no-solo-de-codigo-vive-el-hacker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b24ecbcf56828b3a5e87378223fdb2a8?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">fheinz</media:title>
		</media:content>
	</item>
		<item>
		<title>Electropornografía</title>
		<link>http://vt6656.wordpress.com/2009/08/14/electropornografia/</link>
		<comments>http://vt6656.wordpress.com/2009/08/14/electropornografia/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 23:02:45 +0000</pubDate>
		<dc:creator>Federico Heinz</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/?p=71</guid>
		<description><![CDATA[Viendo que el gabinete de plástico en el que contiene el dongle se mantiene cerrado con dos tornillos en miniatura, no pudimos resistirnos a “desvestirlo” para poder admirar la electrónica en toda su gloria. En la cara que queda para arriba cuando se enchufa el dongle en una máquina pueden verse el VT6656 y la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=71&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Viendo que el gabinete de plástico en el que contiene el dongle se mantiene cerrado con dos tornillos en miniatura, no pudimos resistirnos a “desvestirlo” para poder admirar la electrónica en toda su gloria.</p>
<p>En la cara que queda para arriba cuando se enchufa el dongle en una máquina pueden verse el <a href="http://www.via.com.tw/en/products/networking/wireless/vt6656/">VT6656</a> y la antena. El aparato de radio está, pero no se ve porque está debajo del blindaje. Entre el blindaje y la antena hay un trimmer de función desconocida.</p>
<p><div id="attachment_73" class="wp-caption aligncenter" style="width: 310px"><a href="http://vt6656.files.wordpress.com/2009/08/1-00002.jpg"><img src="http://vt6656.files.wordpress.com/2009/08/1-00002.jpg?w=300&#038;h=225" alt="La cara “de arriba” de la placa" title="1.00002" width="300" height="225" class="size-medium wp-image-73" /></a><p class="wp-caption-text">La cara “de arriba” de la placa</p></div><br />
En la cara que queda abajo podemos distinguir un cristal, un chip EEPROM serial <a href="http://atmel.com/dyn/products/product_card.asp?part_id=3775">ATMEL AT24C02B</a> y varios componentes pasivos</p>
<div id="attachment_72" class="wp-caption aligncenter" style="width: 310px"><a href="http://vt6656.files.wordpress.com/2009/08/2-00001.jpg"><img src="http://vt6656.files.wordpress.com/2009/08/2-00001.jpg?w=300&#038;h=225" alt="La cara “de abajo” de la placa" title="2.00001" width="300" height="225" class="size-medium wp-image-72" /></a><p class="wp-caption-text">La cara “de abajo” de la placa</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=71&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/14/electropornografia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b24ecbcf56828b3a5e87378223fdb2a8?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">fheinz</media:title>
		</media:content>

		<media:content url="http://vt6656.files.wordpress.com/2009/08/1-00002.jpg?w=300" medium="image">
			<media:title type="html">1.00002</media:title>
		</media:content>

		<media:content url="http://vt6656.files.wordpress.com/2009/08/2-00001.jpg?w=300" medium="image">
			<media:title type="html">2.00001</media:title>
		</media:content>
	</item>
		<item>
		<title>Segundo encuentro</title>
		<link>http://vt6656.wordpress.com/2009/08/14/segundo-encuentro/</link>
		<comments>http://vt6656.wordpress.com/2009/08/14/segundo-encuentro/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 20:40:30 +0000</pubDate>
		<dc:creator>Federico Heinz</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://vt6656.wordpress.com/?p=58</guid>
		<description><![CDATA[En el segundo encuentro comenzamos a hacer algo de código específico para nuestro proyecto. Estamos programando un driver para un dispositivo USB, de modo que usaremos la pila USB del kernel para comunicarnos con el dongle. Como además se trata de un dispositivo de red, la función esencial de nuestro driver será proveer los servicios [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=58&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_60" class="wp-caption alignright" style="width: 222px"><a href="http://vt6656.files.wordpress.com/2009/08/udestaaqui1.png"><img src="http://vt6656.files.wordpress.com/2009/08/udestaaqui1.png?w=212&#038;h=300" alt="Ubicación de nuestro driver en el kernel" title="UdEstaAqui" width="212" height="300" class="size-medium wp-image-60" /></a><p class="wp-caption-text">Ubicación de nuestro driver en el kernel</p></div>En el segundo encuentro comenzamos a hacer algo de código específico para nuestro proyecto.</p>
<p>Estamos programando un driver para un dispositivo USB, de modo que usaremos la pila USB del kernel para comunicarnos con el dongle. Como además se trata de un dispositivo de red, la función esencial de nuestro driver será proveer los servicios necesarios para que la pila <a href="http://linuxwireless.org/en/developers/Documentation/mac80211"><code>mac80211</code></a> del kernel, que se encarga de implementar el protocolo 802.11 independientemente del hardware, pueda utiliza el dongle como interfaz de red.</p>
<p>Pero todavía estamos muy lejos de poder ofrecer tanto: hoy nos damos por contentos con bastante menos: queremos que el kernel se dé cuenta, cuando alguien enchufe uno de nuestros dongles, de que nuestro driver es el que se ocupa de ese dispositivo, y lo invoque para inicializarlo. También queremos que invoque a nuestro driver para eliminar el dispositivo cuando el usuario lo quita del bus USB, y durante el tiempo al medio estaría bueno si pudiéramos al menos leer algo (un parámetro, cualquier cosa) desde el dongle. En otras palabras: el trabajo durante el encuentro se concentra en la interfaz entre nuestro driver y la pila USB.<br />
<span id="more-58"></span><br />
La creación y eliminación del dispositivo cuando el usuario enchufa/desenchufa funciona sin mayores dificultades, según podemos ver en el <code>syslog</code> gracias a sentencias <code>printk()</code> que respectivamente nos dan la bienvenida o se despiden de nosotros conforme enchufamos o desenchufamos.</p>
<p>Nuestro intento de leer algún parámetro falla, “inexplicablemente”, hasta que nos damos cuenta de algo fundamental: la placa no nos va a contestar a nada que le preguntemos si no le cargamos antes el <em>firmware</em>. Esto es algo bastante común en los dispositivos USB modernos: son pequeñas computadoras en sí, y como tales necesitan software. En vez de poner ese software en ROM, lo que lo haría probablemente más caro y dificultaría el upgrade, los fabricantes los diseñan de tal manera que, cuando uno los enciende, apenas si saben encenderse y esperar a que les enviemos el software que necesitan a través de la misma conexión USB.</p>
<p>Como preparación para cargar el firmware en el próximo encuentro, experimentamos con la función del kernel <code>request_firmware()</code>, que se encarga de cargar el firmware desde un archivo en el disco a un lugar en memoria desde el que se lo podemos pasar al dispositivo.</p>
<p>Como tarea queda estudiar nuestra interfaz “hacia arriba” e implementar una interfaz de red trucha que no haga nada, pero que sea visible para <code>mac82011</code> y reporte una dirección MAC inventada.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vt6656.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vt6656.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vt6656.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vt6656.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vt6656.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vt6656.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vt6656.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vt6656.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vt6656.wordpress.com&amp;blog=8923250&amp;post=58&amp;subd=vt6656&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vt6656.wordpress.com/2009/08/14/segundo-encuentro/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b24ecbcf56828b3a5e87378223fdb2a8?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">fheinz</media:title>
		</media:content>

		<media:content url="http://vt6656.files.wordpress.com/2009/08/udestaaqui1.png?w=212" medium="image">
			<media:title type="html">UdEstaAqui</media:title>
		</media:content>
	</item>
	</channel>
</rss>
