<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Airport compatible Mac OS X drivers for Intel® wireless adaptors



var sc_project=4370627; 
var sc_invisible=1; 
var sc_security="383ffe07"; 


</description><title>Project: Camphor</title><generator>Tumblr (3.0; @projectcamphor)</generator><link>http://projectcamphor.mercurysquad.com/</link><item><title>Had a small breakthrough today</title><description>&lt;p&gt;More like a realization followed by revelation.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
$ kextfind . -dsym _ieee80211_ifattach&lt;br/&gt;
IO80211Family.kext/Contents/PlugIns/AirPortAtheros.kext&lt;br/&gt;
IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext&lt;br/&gt;&lt;br/&gt;
$ kextfind . -dsym _m_get&lt;br/&gt;
System.kext/PlugIns/Private.kext&lt;br/&gt;
System.kext/PlugIns/Unsupported.kext
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In other words, these symbols are accessible from any kext if we add a dependency on the kexts that “kextfind” command found.&lt;/p&gt;

&lt;p&gt;There are two things happening here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Since Apple and Atheros already ported FreeBSD net80211 to OS X, why should we duplicate the effort? It looks like we can actually ride on the Atheros driver’s back and call the functions from that kext.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If instead I decide to go ahead with our own port, the legacy BSD &lt;code&gt;mbuf&lt;/code&gt; functions &lt;em&gt;are&lt;/em&gt; available from the Private and Unsupported kexts! Which means I can do away with a lot of manual code changes!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is cool. Let’s see what other info I dig up to make my job easier.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/803196755</link><guid>http://projectcamphor.mercurysquad.com/post/803196755</guid><pubDate>Tue, 13 Jul 2010 01:26:31 +0530</pubDate><category>net80211</category><category>unsupported</category><category>kext</category><category>symbol</category><category>link</category></item><item><title>Technical discussion on the net80211 port</title><description>&lt;p&gt;As I have mentioned previously, I’m working to port OpenBSD’s &lt;code&gt;net80211&lt;/code&gt; layer, which is an &lt;code&gt;IEEE 802.11-2007&lt;/code&gt; WiFi stack, to Mac OS X.&lt;/p&gt;

&lt;p&gt;Haiku, an open-source operating system, &lt;a href="http://www.osnews.com/story/21822/Haiku_WiFi_Stack_Prototype_Connects_Surfs_Downloads"&gt;managed to do this last year&lt;/a&gt; for their own kernel. So why is it taking us so long to do a similar thing for OS X?&lt;/p&gt;

&lt;p&gt;To start off, although it appears that the OS X kernel being partly based on BSD should make things easier, it actually makes it more complicated to attempt a port such as this. Since almost half of the OS X kernel consists of FreeBSD code, there are lots of symbols predefined, like &lt;code&gt;ifnet&lt;/code&gt; and &lt;code&gt;mbuf&lt;/code&gt;. Apple’s own “Kernel Programming Interface” (&lt;code&gt;KPI&lt;/code&gt;s) provide access to these data structures and functions through a slightly different API which is designed to prevent direct access. Unfortunately, most of the code from other BSD kernels heavily relies on direct access (most notable being the &lt;code&gt;mbuf&lt;/code&gt; handling routines). To top it off, several of these data structures have been slightly modified in the XNU kernel compared to their BSD counterparts, making their usage very risky.&lt;/p&gt;

&lt;p&gt;Hence, simply including the source code for &lt;code&gt;net80211&lt;/code&gt; and some compatibility glue code (like Haiku does) would result in massive naming collisions between predefined structures and functions in the kernel vs. those redefined in the compatibility layer.&lt;/p&gt;

&lt;p&gt;Apple already includes a port of the &lt;code&gt;net80211&lt;/code&gt; stack for their drivers for the &lt;em&gt;Atheros&lt;/em&gt; wireless adapters. Without access to that source code, it is difficult to figure out (at least for me) what approach they have taken. My approach has been to convert the entire &lt;code&gt;net80211&lt;/code&gt; source code to C++ and wrap them in a namespace. This will automatically cause all symbols to be prefixed with the namespace, hopefully avoiding collisions with their kernel counterparts.&lt;/p&gt;

&lt;p&gt;This sounds easy enough, but for some things it just doesn’t work. The &lt;code&gt;mbuf&lt;/code&gt; handling routines in &lt;code&gt;net80211&lt;/code&gt; make heavy use of direct access to the &lt;code&gt;mbuf&lt;/code&gt; structure. This is not possible in OS X (or not easily possible). OS X drivers use the &lt;code&gt;mbuf_t&lt;/code&gt; structure and the &lt;code&gt;mbuf KPI&lt;/code&gt; to manipulate mbufs. Now, mbufs are used to store all network data coming in and going out of the system. Thus, it is used &lt;em&gt;extremely frequently&lt;/em&gt;. The two ways to deal with this were to either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Re-implement BSD’s &lt;code&gt;mbuf&lt;/code&gt; API and structures in our compatibility layer. Bad option in my opinion because of the naming collisions, and more importantly, from a performance point of view, and being badly integrated with OS X’s networking tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wade through the hundreds of thousands of instances where &lt;code&gt;mbuf&lt;/code&gt;s have been used in &lt;code&gt;net80211&lt;/code&gt; source code, and convert them to their &lt;code&gt;mbuf_t KPI&lt;/code&gt; equivalents.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I chose the 2nd option as that was the only one which made sense, despite being extremely lengthy. I was actually recommended this by Apple kernel engineers on the &lt;code&gt;darwin-drivers&lt;/code&gt; mailing list.&lt;/p&gt;

&lt;p&gt;So, the end result was to use Xcode’s “Find” feature to find every single &lt;code&gt;mbuf&lt;/code&gt; instance, and replace it with their &lt;code&gt;mbuf_t&lt;/code&gt; equivalent, &lt;em&gt;after understanding its context&lt;/em&gt;. This was frustrating. But thankfully it’s done. Here’s an example snippet: 
&lt;img src="http://media.tumblr.com/tumblr_l5f3foWkOW1qzt6o3.png" alt="mbuf code converted to mbuf_t"/&gt;&lt;/p&gt;

&lt;p&gt;And here’s the list of files which needed to be manually reviewed line by line (compiler errors are not always useful) to make sure every instance was properly converted:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l5f3l1SHzY1qzt6o3.png" alt="List of files in net80211"/&gt;&lt;/p&gt;

&lt;p&gt;The other issue was that a lot of functionality from OpenBSD (e.g. kernel cryptography) is not present in OS X (it probably &lt;em&gt;is&lt;/em&gt; present, but inaccessible from the &lt;code&gt;KPI&lt;/code&gt;s). So I included all of those. There were also &lt;em&gt;several&lt;/em&gt; undefined symbols which I defined as equivalents. All in all, there is a compatibility layer &lt;em&gt;for&lt;/em&gt; the compatibility layer:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_l5f3jvbZTT1qzt6o3.png" alt="List of compatibility files for net80211"/&gt;&lt;/p&gt;

&lt;p&gt;For what it’s worth, there probably &lt;em&gt;is&lt;/em&gt; a &lt;em&gt;much&lt;/em&gt; better and more elegant way to do this. But sadly I am not knowledgeable enough to figure out &lt;em&gt;how&lt;/em&gt; Apple/Atheros developers did it. How I wish I could at least get a glimpse of their source code! &lt;em&gt;Ralink&lt;/em&gt; probably also uses the &lt;code&gt;net80211&lt;/code&gt; stack (or something similar) in the OS X drivers for their USB wifi adapter range. A few days ago I tried to contact Ralink to get access to their source code (in return for making their drivers Airport compatible), but have not received any reply yet.&lt;/p&gt;

&lt;p&gt;Anyway, with most of this mechanical porting done, what remains is to write code to glue the &lt;code&gt;net80211&lt;/code&gt; information/function calls to IOKit’s “Airport” interface, which is referred to as &lt;code&gt;apple80211&lt;/code&gt; in &lt;code&gt;Kernel.framework&lt;/code&gt; from Leopard and older. Incidentally, Apple stopped supplying this particular set of header files from Snow Leopard onwards. Recreating the proper headers for Snow Leopard was a challenge which deserves a post of its own. Maybe later.&lt;/p&gt;

&lt;p&gt;So that’s a survey of the process and the difficulties so far. This week I’ll be working to finish off the “compatibility layer” for &lt;code&gt;net80211&lt;/code&gt; based drivers to access the hardware, and finally hooking it all up to parts of VoodooWireless so it can talk to Airport. Hopefully this approach will work. As is evident, I have not tested even a single line of all this code yet - simply because there are millions of nuts and bolts that all must fit in together before the whole thing will fly. This month I’m hoping it’ll all start to take shape. If not, well tough luck to us.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Postscript&lt;/em&gt;: I mainly wrote this post so that future developers who might want to pick up on this project after I leave, can get an idea of what work is being done and how it’s intended to work. Feel free to write to me at &lt;a href="mailto:voodoo@mercurysquad.com"&gt;voodoo@mercurysquad.com&lt;/a&gt; if you have more technical questions (don’t write to ask “how much longer” or “it doesn’t work”, though).&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/799667120</link><guid>http://projectcamphor.mercurysquad.com/post/799667120</guid><pubDate>Mon, 12 Jul 2010 05:28:00 +0530</pubDate><category>net80211</category></item><item><title>waiting for intel 5100 agn drive for mac os thx</title><description>&lt;p&gt;The 4965 driver, when finished, should work with 5100 and higher cards.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/799538524</link><guid>http://projectcamphor.mercurysquad.com/post/799538524</guid><pubDate>Mon, 12 Jul 2010 04:47:50 +0530</pubDate></item><item><title>Hi,&lt;br /&gt;&#13;
&lt;br /&gt;&#13;
i just would like to ask if there is anything (Except Donations) that WE ( the People who were waiting for a working kext ) can do to help you with the Projekt? Coffee, Tea, Intel 5100 Cards,....&lt;br /&gt;&#13;
&lt;br /&gt;&#13;
Just let us know  :)</title><description>&lt;p&gt;I already have an Intel 4965 thanks to a generous donator. I don’t need 5100 or other cards because the 4965 driver will work with them also. Thanks for asking, though!&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/799537935</link><guid>http://projectcamphor.mercurysquad.com/post/799537935</guid><pubDate>Mon, 12 Jul 2010 04:47:40 +0530</pubDate></item><item><title>hi i just want to know y the intel2200 kext doesn't work for me( i have a intel 2200 bg wireless card on 10.6.4) but when i install the voodoowireless and voodoowireless clipher and intel 3945 kexts the airport shows but i can't connect to any wifi with wep (they just tell me that you cannot connect just after i press the connect button)</title><description>&lt;p&gt;The Intel 2200 driver beta6 does not support WEP (beta5 does). It has also not been tested on Snow Leopard.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/799537516</link><guid>http://projectcamphor.mercurysquad.com/post/799537516</guid><pubDate>Mon, 12 Jul 2010 04:47:32 +0530</pubDate></item><item><title>Hi,&lt;br /&gt;&#13;
there is a date when the beta of the driver for 4965 is released?&lt;br /&gt;&#13;
Thanks you</title><description>&lt;p&gt;Before the end of the month, or never. Hopefully the former.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/799535061</link><guid>http://projectcamphor.mercurysquad.com/post/799535061</guid><pubDate>Mon, 12 Jul 2010 04:46:49 +0530</pubDate></item><item><title>Hello i have a intel 3945bg wireless card and i can't connect to me home's wifi cause its protected with wep and i installed the right kexts for that. My question is: Are you working on making the Wep and Wpa work? And if so, when will it be released</title><description>&lt;p&gt;Yes, WEP and WPA have already been ported. What remains is to hook them up to Airport’s GUI. It will be released before the end of this month (or never).&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/799533792</link><guid>http://projectcamphor.mercurysquad.com/post/799533792</guid><pubDate>Mon, 12 Jul 2010 04:46:25 +0530</pubDate></item><item><title>Is it possible to help you port the net80211 or the drivers? If so, how much coding experience is necessary?</title><description>&lt;p&gt;So far I’ve been working on it by myself, but I’m considering going fully open source. A blog entry will be posted when I’ve cleaned up and uploaded the source code.&lt;/p&gt;

&lt;p&gt;You should have strong &lt;code&gt;C++&lt;/code&gt; skills for writing IOKit drivers, and extremely strong &lt;code&gt;C&lt;/code&gt; skills for helping to port &lt;code&gt;net80211&lt;/code&gt; to OS X. Apart from that, you need to know the &lt;code&gt;IEEE 802.11-2007&lt;/code&gt; specification (the document is available free of cost), and have sound knowledge of networking. You also need to be at least familiar with &lt;code&gt;IOKit&lt;/code&gt; (the OS X driver model), ideally be an expert in it — because we need to figure out how to hook up a driver from a totally different operating system into Mac OS X — and figuring out the best way to do it is important.&lt;/p&gt;

&lt;p&gt;And finally, the most important skill is: writing &lt;em&gt;correct&lt;/em&gt; code that &lt;em&gt;works&lt;/em&gt;. Debugging in kernel space is not easy (specially without a spare OS X machine), so it is important that the code you write is well thought out and intended to work at the first try (or with minor modifications).&lt;/p&gt;

&lt;p&gt;Knowledge about the &lt;code&gt;FreeBSD/OpenBSD&lt;/code&gt; kernel (specially &lt;code&gt;net80211&lt;/code&gt; itself) will also be very valuable — but not required, as long as you are good at reading other people’s code and understanding how it works. Beware that the &lt;code&gt;net80211&lt;/code&gt; codebase is pretty huge. Being able to connect the dots is crucial.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/749713327</link><guid>http://projectcamphor.mercurysquad.com/post/749713327</guid><pubDate>Tue, 29 Jun 2010 19:32:41 +0530</pubDate></item><item><title>Here's the deal</title><description>&lt;p&gt;I’m &lt;em&gt;really&lt;/em&gt; not able to find time to work on project:camphor these days, though I think all it requires is around a week of hacking. So much has already been done (as I said the porting part is 90% done, hooking it to OSX hasn’t even been started yet).&lt;/p&gt;

&lt;p&gt;Also, my friend Vaibhav Bajpai will be joining in the porting effort soon. That should speed it up.&lt;/p&gt;

&lt;p&gt;I would just like to add that the project is NOT abandoned.&lt;/p&gt;

&lt;p&gt;Many people seem to think so because of lack of progress. This is not the case. As for donations, thanks to all who have donated so far but I request people to hold off on donating for now because I don’t want to hear constant complains that the delay is to amass more donations.&lt;/p&gt;

&lt;p&gt;And for the constant barrage of emails and comments on the blog (now disabled) that I keep getting saying “it’s been over a year, this will never get done” — by all means buy a USB wifi dongle or replace your Intel wifi card with a Broadcom. Both options cost very little.&lt;/p&gt;

&lt;p&gt;My honest opinion is that saving 10 bucks is not worth waiting over a year for the drivers. This is a fun and challenging project which when done right has the potential to breathe life into a lot of laptops which cannot upgrade (eg. BIOS locked) or for those who don’t want to carry around extra equipment.&lt;/p&gt;

&lt;p&gt;But for the rest, there is an easier, faster and more reliable option. Please avail of it instead of complaining. Angry emails/comments does not help anyone.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/718989578</link><guid>http://projectcamphor.mercurysquad.com/post/718989578</guid><pubDate>Sun, 20 Jun 2010 23:30:12 +0530</pubDate><category>rants</category><category>donation</category><category>progress</category></item><item><title>So much better!!!!!... but.. a little color would be nicer... i could make a theme for the blog.... ;)</title><description>&lt;p&gt;Thanks, please feel free to create a theme. This blog uses &lt;a href="http://www.tumblr.com"&gt;tumblr&lt;/a&gt;, so you might want to look up the tags.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/714711981</link><guid>http://projectcamphor.mercurysquad.com/post/714711981</guid><pubDate>Sat, 19 Jun 2010 17:15:56 +0530</pubDate></item><item><title>Comment feature removed (and theme update)</title><description>&lt;p&gt;I have removed the ability to comment on posts, since it was no longer serving a useful purpose.&lt;/p&gt;

&lt;p&gt;People can still use the “Ask questions” link on the left side to ask questions which will be publicly answered if needed.&lt;/p&gt;

&lt;p&gt;The blog theme has also been updated to be easier on the eyes.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/703747246</link><guid>http://projectcamphor.mercurysquad.com/post/703747246</guid><pubDate>Wed, 16 Jun 2010 12:42:06 +0530</pubDate><category>comments</category><category>theme</category><category>blog</category></item><item><title>Updates on the project</title><description>&lt;p&gt;Since not everyone follows the &lt;a href="http://www.facebook.com/pages/mercurysquad/130654692121"&gt;Facebook page&lt;/a&gt; I thought I’ll summarize what has been happening with this project since I posted the last blog entry.&lt;/p&gt;

&lt;p&gt;As far as VoodooWireless and the HAL architecture is concerned, although it’s nicely designed, we have hit a dead end with regard to functionality and reliability. Unless an entire 802.11 stack is implemented (right now only the bare minimum is implemented), we won’t be having good stable support for most drivers.&lt;/p&gt;

&lt;p&gt;To work around that, I started porting OpenBSD’s &lt;code&gt;net80211&lt;/code&gt; stack to Mac OS X a few months ago. The effort so far has been very mechanical, mostly centered on re-implementing missing functions and reducing the number of errors. Nothing has been tested. This is akin to building an entire aircraft on the ground and hoping it flies when you turn it on. But since this was the technique I used for VoodooWireless and 3945 HAL, which worked, I’m quite positive the &lt;code&gt;net80211&lt;/code&gt; port will also work with a little effort.&lt;/p&gt;

&lt;p&gt;There is no time estimate yet since I have way lesser time than I did earlier. But as of today, only around &lt;em&gt;25 compiler errors remain&lt;/em&gt; - which means the first stage is almost done. The 2nd stage involves plugging this (hopefully compilable) code into OS X’s &lt;code&gt;IO80211&lt;/code&gt; framework. Since the first stage took around a month, I expect the 2nd stage to take about the same time.&lt;/p&gt;

&lt;p&gt;So what I’m saying is that around the end of June we should have a fully functional port of &lt;code&gt;net80211&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As for the features, it supports &lt;strong&gt;everything&lt;/strong&gt; - including WEP,WPA1,WPA2 (Personal only, no Enterprise yet, but I’m sure there should be a way to use Apple’s own RSN supplicant for this), adaptive rate control, automatic roaming etc etc. The real deal. Most of this &lt;em&gt;has already been ported&lt;/em&gt; and what remains is plugging it in to OS X’s Airport interface.&lt;/p&gt;

&lt;p&gt;After that we also need to port the actual drivers from OpenBSD. This should not be as much work because most &lt;code&gt;net80211&lt;/code&gt; functions will be accessible by the OpenBSD already. Some tweaks might be needed, and we’ll need to convert this to proper IOKit drivers. Let’s see how long that takes, but I’d say no more than a week if I have time.&lt;/p&gt;

&lt;h2&gt;What about old VoodooWireless and the HALs?&lt;/h2&gt;

&lt;p&gt;Those will be released as open source code (BSD licensed) shortly, so that others can fix bugs or improve it, as a stopgap, while I continue working on porting &lt;code&gt;net80211&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Will this port support 4965? 5100? etc.&lt;/h2&gt;

&lt;p&gt;Yes this port will &lt;em&gt;support all Intel cards&lt;/em&gt; 3945 and up. Maybe I’ll port Intel 2200 also if I have time.&lt;/p&gt;

&lt;p&gt;That’s all the updates for now.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/650357186</link><guid>http://projectcamphor.mercurysquad.com/post/650357186</guid><pubDate>Mon, 31 May 2010 21:55:58 +0530</pubDate><category>net80211</category><category>updates</category></item><item><title>VoodooWireless for Snow Leopard (and Intel 3945 beta)</title><description>&lt;p&gt;Those of you who’ve been following the Facebook updates know about this already&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VoodooWireless&lt;/strong&gt; was successfully updated to be Snow Leopard compatible!**&lt;/p&gt;

&lt;p&gt;This is a big success as I never expected to be able to successfully decipher the changes Apple made to the IO80211 classes, and update the header files accordingly. But a &lt;em&gt;lot&lt;/em&gt; of reading about C++ ABI and vtables later, I was able to do just that.&lt;/p&gt;

&lt;p&gt;So VoodooWireless won’t need any separate GUI and will continue to be fully Airport-compatible — conforming to our goals since the beginning.&lt;/p&gt;

&lt;p&gt;Next up, I have made important changes to the Intel 3945 driver. I added support for dynamic transmit rate selection (based on connection quality), recalibration of transmit power based on HW temperature, and a few other important fixes.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.mercurysquad.com/projectcamphor/VoodooIntel3945-05.zip"&gt;Download Beta v05 here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These kexts are &lt;strong&gt;only for OS X 10.6.2&lt;/strong&gt; or higher. You might be able to get it to work on 10.6.0 or 10.6.1 if you modify the Info.plist in the kexts and replace the version numbers of all bundles under OSBundleLibraries section with proper versions of your own kexts (use &lt;code&gt;kextstat&lt;/code&gt; command in the Terminal to find proper versions).&lt;/p&gt;

&lt;p&gt;Currently the only two limitations of this beta are that 11g mode is not stable at all, and that WEP/WPA/WPA2 are not yet supported. Which basically means only unsecure 11b networks will work with any reliability. Your mileage may vary. However, the previously fixed tx speed of 11mbps has been removed and the card will now adapt the speed as it sees fit based on line condition. The algorithm has been ported from FreeBSD’s Adaptive multirate retry.&lt;/p&gt;

&lt;p&gt;In other news, I’ve stopped counting the number of hours I spend on this project, because I no longer think it serves any useful purpose now that releases of the driver are free from any dependence on donation.&lt;/p&gt;

&lt;h2&gt;FAQ&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;When will drivers for 4965, 5100, 5300, 6000 or 1000 be available?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have not yet started working on those, but plan to start soon.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What about Leopard versions?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My primary development machine is now Snow-Leopard based, so that is what I am developing for right now. Since this is a work in progress, I’m not bothering with compiling several versions for SL, Leo, Tiger etc. However I plan to make versions for each one of them in the near future.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What are you working on now?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fixing bugs in 3945 driver to allow stable and fast connections for full-speed 11g and 11a networks.&lt;/p&gt;

&lt;p&gt;I am also currently looking for ways to port the entire BSD &lt;code&gt;net80211&lt;/code&gt; stack to OS X. That should give us the ability to use the robust BSD wireless drivers with minimal source code modifications, in addition to giving rock solid 802.11 performance and feature set (yes, even WPA/WPA2).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Any time frame for that?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next several months. This is a big project, essentially ProjectCamphor v2.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is 2200BG forgotten?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No, but I don’t have much time to work on too many things at once, so it will be updated whenever I have time. My primary machine has a 3945 wireless card so I’m focusing efforts on that.&lt;/p&gt;

&lt;p&gt;For any other questions, feel free to post a comment.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/448151067</link><guid>http://projectcamphor.mercurysquad.com/post/448151067</guid><pubDate>Mon, 15 Mar 2010 00:34:07 +0530</pubDate><category>voodoowireless</category><category>snowleopard</category><category>3945</category><category>download</category></item><item><title>Updates and future of Project:Camphor</title><description>&lt;p&gt;After a long break, I’m back to provide updates on the current status and future of this project. We have hit some more roadblocks. In December, planned development was abruptly stopped because the laptop on which I was relying for 3945 testing went dead. It has since been resurrected by capable hands (just tonight), but it’s no longer with me. Anyhow, we’ll go back to the old model of alpha-releases followed by community testing.&lt;/p&gt;

&lt;h2&gt;Current status of 3945 HAL&lt;/h2&gt;

&lt;p&gt;I have much less time to spare this year than last, so I must prioritize. In the coming few days, I’ll work on fixing bugs in the 3945 driver (slow speed, heating issues, connection failures). There will be no work on WEP or WPA. The API for writing ciphers was released some months ago as part of VoodooWireless, so if anyone wants to start writing WEP, TKIP or CCMP ciphers meanwhile, it’ll be much appreciated. I’m always available via e-mail if any help is needed. The FreeBSD &lt;code&gt;net80211&lt;/code&gt; architecture already implements these software ciphers. I have mostly based the cipher API on &lt;code&gt;net80211&lt;/code&gt;, so it should be a simple port with minor changes. I will only start with WEP/WPA once the majority of bugs in 3945 HAL are fixed so that most people can use unsecured connections stably.&lt;/p&gt;

&lt;h2&gt;Snow Leopard compatibility&lt;/h2&gt;

&lt;p&gt;While I was away I got to fiddle with a Macbook with Snow Leopard and Xcode installed. Airport compatibility on Snow Leopard seems to be a distant dream. The SDK no longer includes the crucial &lt;code&gt;apple80211&lt;/code&gt; headers against which VoodooWireless is linked. If it is made available by Apple in the future, all is well and dandy. If not, then the community will have to develop our own GUI for managing the wireless driver. I have no experience with userland graphical tools on OS X, so I will not attempt this myself, but I’m sure there are tons of talented programmers among us who will be able to do it.&lt;/p&gt;

&lt;h2&gt;About donations&lt;/h2&gt;

&lt;p&gt;First of all, a big thank you to everyone who has donated in the past and to those who plan to donate in the future. I have updated the current donation figures (around ~€550 in total). Given that donations have dried up (likely due to lack of progress since December), a majority of the effort has been put in, and that I am less likely to have as much time to spend on Project:Camphor this year as I did in 2009, I would like to announce that the release of any drivers or source code will be independent of how much donation I receive from now on. In other words, &lt;em&gt;the bounty system is no more&lt;/em&gt;, and we’ll move to regular open-source Voodoo-kernel-like development model. As soon as I have updated drivers, they will be offered for download/testing.&lt;/p&gt;

&lt;p&gt;With that said, I would still like to encourage everyone to donate if/when they can. It keeps me motivated and I highly appreciate it.&lt;/p&gt;

&lt;h2&gt;Source code release&lt;/h2&gt;

&lt;p&gt;I have decided to gradually release all the source code I have written for this project so far. I began by releasing 2200BG HAL and VoodooWireless SDK. Next, 3945 HAL will be released. If compiling VoodooWireless for Snow Leopard proves difficult for me, its source code will be released so the community can pick up on it.&lt;/p&gt;

&lt;h2&gt;About 4965/5-series/6-series/1-series Intel WiFi cards&lt;/h2&gt;

&lt;p&gt;Yes, there will be drivers for all of those. I will begin writing a unified 4965/5xxx driver in the next few days. How long it takes to get it usable remains to be seen. I expect around a month at least.&lt;/p&gt;

&lt;p&gt;Those are all the updates for now. Please keep an eye on the &lt;a href="http://www.facebook.com/pages/mercurysquad/130654692121"&gt;Facebook page&lt;/a&gt; for shorter blurbs.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/382400965</link><guid>http://projectcamphor.mercurysquad.com/post/382400965</guid><pubDate>Thu, 11 Feb 2010 02:44:00 +0530</pubDate><category>updates</category><category>hal</category><category>snowleopard</category><category>4965</category><category>donations</category></item><item><title>VoodooWireless SDK and Intel 2200 HAL source code release</title><description>&lt;a href="http://opensource.mercurysquad.com/"&gt;VoodooWireless SDK and Intel 2200 HAL source code release&lt;/a&gt;: &lt;p&gt;I have released the current version of the &lt;code&gt;VoodooWireless&lt;/code&gt; SDK (headers) and the complete source code of the Intel 2200 driver’s HAL.&lt;/p&gt;

&lt;p&gt;Click the title of this post to access the Mercurial repository, which can be found at -&lt;/p&gt;

&lt;p&gt;&lt;a href="http://opensource.mercurysquad.com/"&gt;http://opensource.mercurysquad.com/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;voodoo-wireless-sdk&lt;/code&gt; contains the framework you will need to compile and link all HALs based on VoodooWireless. You must put the folder &lt;code&gt;VoodooWireless.framework&lt;/code&gt; in your &lt;code&gt;/Library/Frameworks&lt;/code&gt; folder. Go through the header files to get an idea of what the API looks like. Your wireless driver will subclass &lt;code&gt;VoodooWirelessDevice&lt;/code&gt; class. Also included are headers for writing WEP/WPA ciphers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;voodoo-wireless-hal-intel2200&lt;/code&gt; is the source code for the Intel® 2200BG driver beta 7 (newer than the ones released in kext form on this website). It provides an example driver which you can use to study how VoodooWireless HALs can be written. Feel free to send me improvements as Mercurial changeset bundles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To develop or use any driver made using VoodooWireless, &lt;em&gt;you need to install the binary kexts&lt;/em&gt; &lt;code&gt;VoodooWireless.kext&lt;/code&gt; and &lt;code&gt;VoodooWirelessCipher.kext&lt;/code&gt;. Currently these can be found in the &lt;a href="http://www.mercurysquad.com/projectcamphor/Voodoo3945Test.zip"&gt;zip file for the Intel 3945 driver&lt;/a&gt;. Source code for these is not released at the moment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Licensing&lt;/h2&gt;

&lt;p&gt;This is important.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Intel 2200BG source code is currently released under Creative Commons BY-NC-SA license. Which means you can use or modify it for personal projects, and distribute it, provided that you attribute the original work to the author (i.e. me), and do not use it for any commercial purposes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The VoodooWireless SDK is released with all rights reserved, with some relaxation. It will be relicensed under a more specific license soon, as there will be some major changes to the API in the near future. Currently you are allowed to download the SDK and use it to develop drivers for private use. You may distribute your drivers in binary or source forms. &lt;em&gt;You may not use the SDK for any commercial purpose and you may not modify or redistribute the SDK.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hope this helps with Intel 2200BG and other wireless driver development. More detailed documentation will be made available in the future.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/267692461</link><guid>http://projectcamphor.mercurysquad.com/post/267692461</guid><pubDate>Thu, 03 Dec 2009 19:32:00 +0530</pubDate><category>voodoowireless</category><category>sdk</category><category>source code</category><category>sourcecode</category><category>2200</category><category>hal</category></item><item><title>For those who got kernel panics with the previous kext</title><description>&lt;a href="http://www.sendspace.com/file/p9ragy"&gt;For those who got kernel panics with the previous kext&lt;/a&gt;: &lt;p&gt;Click the title of this post to download a fixed version of the kext.&lt;/p&gt;

&lt;p&gt;Remove the old kext, install this kext (along with &lt;code&gt;VoodooWireless.kext&lt;/code&gt; and &lt;code&gt;VoodooWirelessCipher.kext&lt;/code&gt; from the previous package). Then try again.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If it doesn’t work&lt;/em&gt;, send me the log via email or &lt;a href="http://pastebin.ca"&gt;pastebin&lt;/a&gt; - get the command from the previous blog post.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If Airport turns off while trying to connect, turn it back on a few times until it stays connected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you cannot connect at all, try to change your router’s setting &lt;code&gt;.11b-only&lt;/code&gt; mode (max 11mbps).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not email me asking for help on how to install or load the kext, or for troubleshooting dependency problems. Use Google or other forums.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the log file is too large, cut out the part from today’s log entries - I am getting 100+ MB log files from people, and find that it contains log entries starting from 1 week ago. I don’t need to see your 7 day old log entries, I need the log entries from the time you tried the new kext.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://projectcamphor.mercurysquad.com/post/249957603</link><guid>http://projectcamphor.mercurysquad.com/post/249957603</guid><pubDate>Fri, 20 Nov 2009 02:15:00 +0530</pubDate><category>KP</category><category>kernel panic</category><category>alpha</category><category>download</category></item><item><title>Voodoo Intel 3945: pre-alpha download</title><description>&lt;a href="http://www.mercurysquad.com/projectcamphor/Voodoo3945Test.zip"&gt;Voodoo Intel 3945: pre-alpha download&lt;/a&gt;: &lt;p&gt;Since people are eager to test anything that’s available, I’m uploading a &lt;strong&gt;pre-alpha&lt;/strong&gt; version for the Intel 3945 driver. Click this post’s title to download.&lt;/p&gt;

&lt;p&gt;You need to install &lt;em&gt;all three kexts&lt;/em&gt; for it to work. Rebooting is generally not necessary.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leopard only (no Snow Leopard yet)&lt;/li&gt;
&lt;li&gt;Open networks only (no WEP, no WPA, no shared authentication)&lt;/li&gt;
&lt;li&gt;.11b/g networks only (no .11a)&lt;/li&gt;
&lt;li&gt;Transmit rate is fixed at 11Mbps&lt;/li&gt;
&lt;li&gt;Transmit power is not temperature calibrated&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that I got this working only a &lt;em&gt;few hours&lt;/em&gt; ago, and &lt;em&gt;I am not the one who tested it&lt;/em&gt; - so there is absolutely no support. I cannot help if it doesn’t work for you. I need more time to test it better before I claim it as beta-level.&lt;/p&gt;

&lt;p&gt;If you want to send me your logs, type this in Terminal:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cat /var/log/system.log | grep Voodoo &gt; ~/Desktop/Intel3945Log.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then right click, Compress, and send it to me &lt;a href="mailto:voodoo@mercurysquad.com"&gt;by email&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you get a kernel panic&lt;/strong&gt;, reboot using bootflags:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;keepsyms=1 debug=0x146
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;then try again and send me a photo of the kernel panic screen. Keep the file size under 500 KB please (no need for ultra high resolution, it should just be readable).&lt;/p&gt;

&lt;h2&gt;Hints&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Those who cannot see any new Airport device after installing, make sure you are using 10.5.8 or have the latest IO80211Family kext from 10.5.8. &lt;a href="http://www.mediafire.com/?9widdksfewe"&gt;You can get it from here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Those who are getting kernel panics - it’s a bug in the kext during scan, which I will fix soon.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If your wireless card is not turning on, try flicking the WiFi on-off switch (it might have been off)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://projectcamphor.mercurysquad.com/post/243132745</link><guid>http://projectcamphor.mercurysquad.com/post/243132745</guid><pubDate>Sat, 14 Nov 2009 07:32:00 +0530</pubDate><category>download</category><category>3945</category><category>kext</category><category>alpha</category></item><item><title>Preparing to land: Intel 3945 for OS X is here!</title><description>&lt;p&gt;Stephen H worked with me to test a couple versions of the driver today and we are reporting success.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_kt2h6pGFME1qzt6o3.png" alt="First IP address received by 3945"/&gt;&lt;/p&gt;

&lt;p&gt;Association works. Data transfer works. Surfing works, chatting works. Almost a year’s work seems to have paid off. You can follow the development on the &lt;a href="http://www.facebook.com/pages/mercurysquad/130654692121"&gt;Facebook page&lt;/a&gt; as usual, there are a couple more screenshots there.&lt;/p&gt;

&lt;h2&gt;What exactly works&lt;/h2&gt;

&lt;p&gt;To be more specific about what works so far (and keep in mind we need more data points soon):&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The 3945 driver can scan for all .11b/g networks, connect to open (unsecured) wireless networks, receive data from the access point at any speed and transmit data to the access point at a fixed 11Mbps rate, allowing normal internet access.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As you can see the current “held-together-by-duct-tape” version of the driver is somewhat limited. The reasons are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I don’t have a .11a router and have never used it, so the support for .11a mode is sketchy at best, and the 3945 HAL ignores it.&lt;/li&gt;
&lt;li&gt;The WEP cipher is implemented but has some bugs preventing it from working properly.&lt;/li&gt;
&lt;li&gt;The WPA cipher does not yet exist.&lt;/li&gt;
&lt;li&gt;The rate is fixed at 11mbps because I have not yet implemented the dynamic rate scaling algorithm based on transmission characteristics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What’s left to do&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WEP and WPA&lt;/li&gt;
&lt;li&gt;Dynamic rate scaler to allow use of all transmission speeds from 1Mbps to 54Mbps (packets can be received at any rate)&lt;/li&gt;
&lt;li&gt;Dynamic transmit power scaling based on hardware temperature&lt;/li&gt;
&lt;li&gt;Bug fixing, Ad-hoc mode etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Out of these, I will implement the 2nd and 3rd features before uploading a beta version. WEP is next, and then WPA will probably be a whole project of its own.&lt;/p&gt;

&lt;h2&gt;Bounty pot&lt;/h2&gt;

&lt;p&gt;Since the driver finally works, it’s time to start filling the bounty pot. The time spent so far including everything is 434 hours. That comes to around €8680. I’m thinking of releasing the beta as soon as donations reach €2500, and then working through the remaining features/bug fixes until it reaches whatever the total for that time is. I hope this is a reasonable condition.&lt;/p&gt;

&lt;p&gt;Feel free to voice your concerns in the comments.&lt;/p&gt;

&lt;h2&gt;Source code release&lt;/h2&gt;

&lt;p&gt;I am planning to release the VoodooWireless SDK, the Intel 2200BG driver HAL source code, and an empty template project for developing HALs. This will probably be some time in the next 10 days (I need to write some documentation and clean up the code a bit). The 3945 HAL will also be released in due time.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/242915573</link><guid>http://projectcamphor.mercurysquad.com/post/242915573</guid><pubDate>Sat, 14 Nov 2009 03:19:00 +0530</pubDate><category>success</category><category>3945</category><category>association</category><category>rate</category></item><item><title>Donation link is back</title><description>&lt;p&gt;By popular request, I’ve put the &lt;code&gt;Donate&lt;/code&gt; link back! I will appreciate your generous monetary contributions to this effort.&lt;/p&gt;

&lt;p&gt;(Please note that although 90-95% of the driver is finished, it is still not usable because it cannot - yet - connect to networks. I’m working on it, but I think we have achieved enough progress to warrant putting the link back).&lt;/p&gt;

&lt;p&gt;Some stats are mentioned below. Thanks everyone :)&lt;/p&gt;

&lt;h2&gt;Time logs&lt;/h2&gt;

&lt;p&gt;Time spent on each subproject so far, rounded up to the hour, are as follows -&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Intel 2200BG original driver (beta5) : 290 hr&lt;/li&gt;
&lt;li&gt;VoodooWireless : 67 hr&lt;/li&gt;
&lt;li&gt;Intel 2200BG HAL port: 11 hr&lt;/li&gt;
&lt;li&gt;Intel 3945 HAL: 57 hr&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Total time spent: &lt;strong&gt;425 hr&lt;/strong&gt;&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/221857222</link><guid>http://projectcamphor.mercurysquad.com/post/221857222</guid><pubDate>Sat, 24 Oct 2009 20:38:00 +0530</pubDate><category>donate</category><category>donation</category><category>time log</category><category>crash</category></item><item><title>Updates on 3945 driver HAL</title><description>&lt;p&gt;Time for a status update!&lt;/p&gt;

&lt;p&gt;If you’ve been following the newsfeed, yesterday I managed to finish a majority of the driver for 3945. We’ve got scanning for networks, reception and transmission of packets working.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_ks0x7qQxlF1qzt6o3.png" alt="Scanning for networks works"/&gt;&lt;/p&gt;

&lt;p&gt;The biggest difficulty was to get the card to actually connect to an existing network. Unlike the 2200, for the 3945, it appears that the driver needs to send authentication and association requests via raw 802.11 management frames. Since transmission seems to be working, I played around with this idea and came up with an ad-hoc (no pun intended!) “plan” to get this working quickly. I finished implementing all the 6-7 steps, completing the goal I had in mind. Eventually this whole process is going to be moved out into VoodooWireless (similar to BSDs’ &lt;code&gt;net80211&lt;/code&gt;), because the entire Intel wireless range from 3945 onwards seems to need this.&lt;/p&gt;

&lt;p&gt;Now the not-so-good news: Steps up to 3rd (authentication response) are working well. The card shows up as ‘authenticated’ on my WiFi router’s information page. However, from here on, the actual association doesn’t work yet. Most of the work now is to debug steps 4 to 7 (specifically step 4 - sending the association request), so that a successful connection can be established. Everything else is in place already, so once this crucial step works, our work is mostly done.&lt;/p&gt;

&lt;p&gt;I didn’t have enough time or energy to debug this further as I was going out of town that evening. I suspect that given the time, 2-3 days is the maximum this will take. But note that apparently &lt;code&gt;iwidarwin&lt;/code&gt; is also stuck at this same stage. So we could well be in for a blocker. Again, I can’t say if this actually &lt;em&gt;is&lt;/em&gt; the case as I’ve not had enough time to investigate this properly.&lt;/p&gt;

&lt;p&gt;I don’t have easy access to the 3945 laptop anymore, but I suppose I can still procure it if needed since I’m in the same town for next 2 weeks. We’ll see how that goes; if it doesn’t work out, I still have the long list of interested beta testers, some of whom might receive test versions in the near future.&lt;/p&gt;

&lt;p&gt;That said, next few are busy days for me so expect few, if any, updates. Have a good weekend, everyone.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/221850819</link><guid>http://projectcamphor.mercurysquad.com/post/221850819</guid><pubDate>Sat, 24 Oct 2009 20:28:00 +0530</pubDate><category>3945</category><category>hal</category><category>updates</category><category>progress</category><category>scanning</category><category>rxtx</category><category>association</category><category>bug</category></item></channel></rss>
