<?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</description><title>Project: Camphor</title><generator>Tumblr (3.0; @projectcamphor)</generator><link>http://projectcamphor.mercurysquad.com/</link><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><item><title>Marathon coding: get set go</title><description>&lt;p&gt;Quick note to say that I have the 3945 laptop for 1 week now, and marathon coding for next 6 days has started. By next Sunday 18 Oct, the driver will either work, or it will not work.&lt;/p&gt;

&lt;p&gt;Please use &lt;a href="http://www.facebook.com/pages/mercurysquad/130654692121"&gt;this page&lt;/a&gt; for up-to-minute information.&lt;/p&gt;

&lt;h2&gt;Update 18 Oct 2009:&lt;/h2&gt;

&lt;p&gt;From the facebook page I hope people are aware that 65-70% of the driver is finished. However, there are issues with system freeze on repeated power on/off, and scanning for networks currently has some bugs according to the firmware. In other words, the driver is not functional by the deadline we had.&lt;/p&gt;

&lt;p&gt;Thankfully though, I still have access to the laptop for 4-5 days further. So I shall continue working on the driver and see how far we get. I’m hoping at least unsecured connection is working by then! As usual, more up-to-the-minute updates are posted on the FB page linked above. Cheers!&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/209157364</link><guid>http://projectcamphor.mercurysquad.com/post/209157364</guid><pubDate>Sat, 10 Oct 2009 15:23:00 +0530</pubDate><category>marathon</category><category>3945</category></item><item><title>3945 HAL updates &amp; comparison with 2200</title><description>&lt;p&gt;It’s about time I consolidated the previous status updates into a blog entry of its own for those not following the &lt;a href="http://www.facebook.com/pages/mercurysquad/130654692121"&gt;facebook page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Around 20% of the HAL is coded by now. Lots of support functions were first written, followed by code for uploading firmware and microcode to the card. A particularly nasty bug with &lt;code&gt;VoodooWireless&lt;/code&gt; was also tracked down and fixed which was causing kernel panics on scans yielding no results.&lt;/p&gt;

&lt;p&gt;What’s left now for completion of Stage 1 (i.e. firmware stage) is to finish implementing the allocation and initialization of Rx, Tx and command rings. Once this is done, the driver will be able to turn the card on or off, load the firmware and make it ready or action. Those following the project for 2200BG driver will remember that this was a major part of the work for that driver — once this was completed and working, the rest was simply a matter of time.&lt;/p&gt;

&lt;h2&gt;Comparison between 3945 and 2200&lt;/h2&gt;

&lt;p&gt;It’s interesting to compare the two cards to see what will be different for 3945 HAL compared to the experience of writing driver for 2200.&lt;/p&gt;

&lt;p&gt;The 3945 is actually a 100% Intel-designed wireless card (partly to avoid licensing issues), so it differs in many ways from the 2200BG. Incidentally, although the Stage 1 code for 3945 is simpler than 2200, most of the things following that are more complicated. They moved a lot of work out of the hardware and put it into software - for example, to scan for networks, in 2200 you just prepared the scan parameters and channel list and sent the scan command to the hardware. In 3945 from what I can see so far, you have to manually create the actual probe request that is sent, then switch the channels manually to scan for each.&lt;/p&gt;

&lt;p&gt;There are also some other changes - in 2200, the firmware automatically chose the best transmit rate so the driver didn’t have to do anything other than send the packet out. In 3945, the firmware doesn’t do this and the driver has to actually configure the tx data rates itself, mostly based on the adapter’s temperature checked every minute.&lt;/p&gt;

&lt;p&gt;So all in all, the amount of code reduced in Stage 1 (firmware stage) is basically balanced (actually exceeded by a small amount) by the increase in code in Stage 2.&lt;/p&gt;

&lt;h2&gt;ETA&lt;/h2&gt;

&lt;p&gt;Currently we have clocked about 11 hours for the 3945 HAL. My expectation is that it will take around 40 to 50 hours to finish, which leaves at least around 30 more hours of work before it can go into beta.&lt;/p&gt;

&lt;h2&gt;Testing&lt;/h2&gt;

&lt;p&gt;In other news, &lt;code&gt;fassl&lt;/code&gt; from Voodoo Labs, who worked on much of the Chameleon GUI, has offered to help his expertise in alpha-and-beta testing of the 3945 HAL. Since I am well aware of his expertise and prefer to keep things in-house, at least until stage 1 is done, I plan to work with him exclusively for testing. Afterwards we’ll use the loooong beta testers list I’ve compiled from your emails.&lt;/p&gt;

&lt;p&gt;That’s all the updates for now. It is likely that Stage 1 will be completed in the next couple of days. News will be provided as and when it happens. Thanks for staying with me patiently.&lt;/p&gt;

&lt;h2&gt;Misc&lt;/h2&gt;

&lt;p&gt;The donation link is gone until 3945 HAL is finished. What would you guys’ opinion be on putting Google Ads on the blog?&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/187393719</link><guid>http://projectcamphor.mercurysquad.com/post/187393719</guid><pubDate>Mon, 14 Sep 2009 08:17:00 +0530</pubDate><category>3945</category><category>updates</category><category>firmware</category><category>rings</category></item><item><title>Facebook page and smaller updates!</title><description>&lt;p&gt;Many people asked me to create twitter account so they could follow up-to-the-minute progress. So I created a facebook page instead because my twitter account is for personal use &lt;code&gt;:P&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The FB page offers more features like photo albums and discussion in addition to twitter-like short updates. Feel free to subscribe to it. This blog will contain only more major updates.&lt;/p&gt;

&lt;p&gt;&lt;script type="text/javascript" src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;FB.init("64340bcc08b0a2038bb131ec593a17b8");&lt;/script&gt;&lt;fan profile_id="130654692121" stream="1" connections="" width="300"&gt;&lt;/fan&gt;&lt;/p&gt;

&lt;div style="font-size:8px; padding-left:10px"&gt;
&lt;a href="http://www.facebook.com/pages/mercurysquad/130654692121"&gt;mercurysquad&lt;/a&gt; on Facebook&lt;/div&gt;

&lt;p&gt;As for progress: firmware upload is still being worked upon, should be done today.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/180382996</link><guid>http://projectcamphor.mercurysquad.com/post/180382996</guid><pubDate>Sat, 05 Sep 2009 19:13:09 +0530</pubDate><category>facebook</category><category>updates</category><category>twitter</category></item><item><title>Hell hath begun</title><description>&lt;p&gt;Just got done with creating the 3945 HAL template based on VoodooWireless. There is barely any hardware-specific code in it right now, but the kext project and the subclassed functions are there with a few basic (&lt;code&gt;getHardwareInfo()&lt;/code&gt; etc.) functions implemented. Firmware is converted. From here on, it’s a lot of mechanical work with a little bit of careful thinking and added technique, to finish implementing the remaining 10 or so hardware-specific functions.&lt;/p&gt;

&lt;p&gt;This is gonna be one hell of a ride because I can’t test anything until I finish coding &lt;em&gt;all&lt;/em&gt; of it, and even then it’ll be external testers. Exciting! &lt;code&gt;:-D&lt;/code&gt;  Expecting to finish it in a few days (depending on any difficulties encountered during the course, and how busy I am), and then beta testing can begin. (Alert: beta testers who sent me an email, you &lt;em&gt;might&lt;/em&gt; receive a beta driver from me this week.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: For the umpteenth time, please do NOT send me ANY MORE emails asking to be a beta tester. Every day I get a few emails, and right now I must have like 60-70 people on the list, maybe more. Out of those I have chosen only 3 or 4 who will participate in the test initially, based on their credentials. As the hardware is going to be the &lt;em&gt;same&lt;/em&gt; for all, I don’t need 200 testers during this phase. So the rest of the list is “reserve.”&lt;/p&gt;

&lt;p&gt;Updates will continue during the next few days of heavy-weight coding, of course.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/177325504</link><guid>http://projectcamphor.mercurysquad.com/post/177325504</guid><pubDate>Wed, 02 Sep 2009 01:33:06 +0530</pubDate><category>3945</category><category>HAL</category><category>beta test</category><category>voodoowireless</category></item><item><title>Updates on VoodooWireless bugfix</title><description>&lt;p&gt;As everyone probably knows, VoodooWireless is the major component which allows a hardware abstraction layer for a card to talk with OS X. This layer implements a nano-sized 802.11 (Wifi) stack and handles all Airport-related stuff. Few weeks ago I posted that this part was completed, and I’m trying to fix some bugs in it.&lt;/p&gt;

&lt;p&gt;Today the bug with packet transmission was fixed (it was an incorrectly copied BSSID address in the wifi header - Apple’s association requests typically zero out the BSSID and the driver must scan for that on its own). Once that was fixed, the 2200 HAL was able to get an IP address and small packets were flowing.&lt;/p&gt;

&lt;p&gt;But larger packets weren’t, and so web surfing or any non-trivial network activity wasn’t working. Further testing showed a very peculiar behaviour : Packets up to length 168 were being transmitted fine, but those from length 169 onwards were not. Turns out to be a problem in Apple networking stack (I think so), where the larger packets are not coalesced into one &lt;code&gt;mbuf&lt;/code&gt; before being sent to VoodooWireless.&lt;/p&gt;

&lt;p&gt;So those are the updates for now - currently trying to fix the problem with un-coalesced packets. After this, there is one little To-Do left with the scan results handling part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt; &lt;em&gt;(40min later)&lt;/em&gt;: OK, the large-packet coalesce bug is fixed. Had to manually coalesce the mbuf chain, but it works. I’m now online via the totally rewritten VoodooWireless + 2200BG HAL architecture! &lt;code&gt;:-)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So &lt;em&gt;now&lt;/em&gt; I’ll make the small scan-handling change and then 3945 is probably only a few days away.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/171789911</link><guid>http://projectcamphor.mercurysquad.com/post/171789911</guid><pubDate>Fri, 28 Aug 2009 22:32:00 +0530</pubDate><category>tx</category><category>voodoowirelss</category><category>progress</category><category>large packet</category><category>mbuf</category><category>coalesce</category></item><item><title>Out of town again</title><description>&lt;p&gt;Hey guys, sorry for the lack of activity recently. I’m out of town these days. Progress update will come when there’s something worthwhile to report. 3945 target is still within this month I hope.&lt;/p&gt;

&lt;p&gt;And two reminders —&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I am &lt;em&gt;not&lt;/em&gt; looking for any more beta testers!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I am not looking for a 3945 card because it is incompatible with my laptop!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Oh and one more thing: All the early donators deserve another big thank you — my laptop screen’s hinge got broken a few days ago and it’s literally just hanging on one hinge. But thanks to the donations I was able to immediately order a replacement set which should arrive by the time I get home [this weekend] so no interruption in coding :) Thank you all.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/166432101</link><guid>http://projectcamphor.mercurysquad.com/post/166432101</guid><pubDate>Wed, 19 Aug 2009 16:41:00 +0530</pubDate><category>out of town</category></item><item><title>Thanks to all those who emailed</title><description>&lt;p&gt;I now have enough interested testers. Even if you didn’t get a reply directly, if you’ve emailed me, you are added to the pool of testers. There are some who I have contacted directly, who are first in line to get any beta versions when required. If they disappear or are otherwise unable to test, others from the pool will be contacted.&lt;/p&gt;

&lt;h2&gt;Progress&lt;/h2&gt;

&lt;p&gt;As a test case I’ve ported the 2200BG driver to VoodooWireless — the hardware-specific driver code is now a paltry 1550 lines of code! This is the smallest out of all existing drivers for this wireless adapter — less than half of the size of the FreeBSD driver, and 10% the size of the Linux driver! Adding support for Ad-Hoc mode should take no more than 200 lines of code in the HAL (and some more in VoodooWireless). WEP and WPA support can theoretically be added without modifying the HAL at all.&lt;/p&gt;

&lt;p&gt;Unfortunately there &lt;em&gt;are&lt;/em&gt; some bugs remaining in VoodooWireless. The scanning part is working well but there is some bug with transmission of packets. I’m currently trying to debug those.&lt;/p&gt;

&lt;p&gt;3945 HAL is currently blocked on this, as the bug with packet Tx could be either in VoodooWireless or the 2200 HAL.&lt;/p&gt;

&lt;p&gt;In any case, I’m moving towards having a working 3945 driver this month&lt;code&gt;:)&lt;/code&gt;&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/158607319</link><guid>http://projectcamphor.mercurysquad.com/post/158607319</guid><pubDate>Sat, 08 Aug 2009 21:30:00 +0530</pubDate><category>beta</category><category>test</category><category>3945</category><category>progress</category></item><item><title>VoodooWireless is now completed</title><description>&lt;p&gt;Testing still remains, but the coding part is done.&lt;/p&gt;

&lt;p&gt;Some statistics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lines of Code — Total: &lt;strong&gt;2736&lt;/strong&gt;, &lt;code&gt;VoodooWireless&lt;/code&gt; only: &lt;strong&gt;2200&lt;/strong&gt;, VoodooWireless Ciphers only: &lt;strong&gt;536&lt;/strong&gt; (WEP encryption only right now, decryption and WPA to be added later)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Time taken: &lt;strong&gt;58 hr 45 min&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lines of code / hour = about 46&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The API is basically finalized and I don’t envision any changes immediately, except of course when new features like WPA, hardware crypto, .11n or Ad-Hoc mode are added. For a first version I decided to only implement .11b/g (.11a will come soon) connections with WEP in Infrastructure mode. This should cover a lot of users already.&lt;/p&gt;

&lt;p&gt;A clipping of the eight (8) hardware-specific functions that HAL writers will need to implement —&lt;/p&gt;

&lt;p&gt;&lt;img src="http://img80.imageshack.us/img80/7412/picture4gqb.png"/&gt;&lt;/p&gt;

&lt;p&gt;Next in line are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Port over the existing 2200BG driver to &lt;code&gt;VoodooWireless&lt;/code&gt; and make sure no bugs remain in it. Now I know people will be up in arms about this, but there is no other way to test that the &lt;code&gt;VoodooWireless&lt;/code&gt; code actually works. This might take a day or two.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When I’m convinced the code works, I’ll port over the FreeBSD &lt;code&gt;wpi&lt;/code&gt; driver for the 3945ABG card. This will probably take 4 or 5 days.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Looking for 3945 testers&lt;/h2&gt;

&lt;p&gt;Now, something important. The inevitable has happened and I no longer have access to the 3945 card anymore. That means I’ll need to code it blind and rely on external testers. Coding part shouldn’t be &lt;em&gt;that&lt;/em&gt; difficult anymore (I hope), but the testing probably will be so.&lt;/p&gt;

&lt;p&gt;I’m looking for 2 or 3 experienced testers for 3945. The criterion is that you should have a good understanding of how OS X works, how wireless networks work, and how to debug driver issues (e.g. I will not tell you how to load the test drivers, or what to do when you get a kernel panic, or how to change your router settings). The second criterion is that you must be available and able to respond to emails and send test results &lt;em&gt;fast&lt;/em&gt;. I’m talking 10 test versions of the driver a day, or something in its vicinity. I usually test drivers 20 times a day! If I rely on external testers, I don’t want to be waiting all day for a test report.&lt;/p&gt;

&lt;p&gt;If you think you fit the criteria, and want to help with testing, write me an email at &lt;a href="mailto:voodoo@mercurysquad.com"&gt;voodoo@mercurysquad.com&lt;/a&gt;. I am expecting a &lt;em&gt;lot&lt;/em&gt; of messages; so to help me pick, please include any past testing/coding experience or similar information.&lt;/p&gt;

&lt;p&gt;NOTE: Just to stay clear, &lt;em&gt;there is NO alpha or beta driver for 3945 yet!&lt;/em&gt; The coding/testing will run in parallel all this week.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/154439220</link><guid>http://projectcamphor.mercurysquad.com/post/154439220</guid><pubDate>Mon, 03 Aug 2009 02:50:46 +0530</pubDate><category>voodoowireless</category><category>progress</category><category>design</category><category>preview</category></item><item><title>VoodooWireless is nearing completion</title><description>&lt;p&gt;Just a quick update.&lt;/p&gt;

&lt;p&gt;The hardware-independent part of VoodooWireless framework is almost completed. What remains is handling of scan results, and handling the various &lt;code&gt;apple80211Request()&lt;/code&gt; function calls and mapping relevant ones to hardware-dependent functions.&lt;/p&gt;

&lt;p&gt;Out of these the first part is somewhat complicated as a lot of decisions need to be taken on which results to store, for how long, when to renew them, which ones to send to Airport, which ones to choose while associating, and so on. The second part is more mechanical work, as there are something like 25-30 message types to respond to (or map to hardware-dependent function calls).&lt;/p&gt;

&lt;p&gt;Once these are done, the hardware-dependent parts of the HAL (for 3945) will be written. I’ve gone through the FreeBSD &lt;code&gt;wpi&lt;/code&gt; driver already during my trip last week, and have a somewhat clear idea of how this card works. It is different than 2200BG in many respects, but also similar in many other respects. Some things that the 2200BG firmware handled for us, need to be handled in software for the 3945 (like manually creating probe request frames for scanning). But other things are more streamlined that 2200BG.&lt;/p&gt;

&lt;p&gt;All in all, it should be an interesting experience. Let’s see how long it takes to complete.&lt;/p&gt;

&lt;p&gt;Total time logged so far is 336 hours, out of which 46 hours have been spent working on the “new” architecture.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/152231157</link><guid>http://projectcamphor.mercurysquad.com/post/152231157</guid><pubDate>Thu, 30 Jul 2009 18:02:31 +0530</pubDate><category>3945</category><category>VoodooWireless</category><category>updates</category><category>design</category><category>roadmap</category></item><item><title>Preview of VoodooWireless API</title><description>&lt;p&gt;I’m publishing here an early preview of the API used to create wireless device HALs for VoodooWireless.&lt;/p&gt;

&lt;p&gt;There have been many big changes from the initial API that I designed. The most important change is that the HALs will no longer be a provider nub for the VoodooAirportBridge client — that design got way too complicated, for both development and testing, from the client’s as well as the provider’s points of view.&lt;/p&gt;

&lt;p&gt;The simplified design is a ‘superclass’ which derives from &lt;code&gt;IO80211Controller&lt;/code&gt;. HALs will need to derive from this subclass and implement some hardware-specific functions. HALs will need to call some functions provided by the superclass when events happen (like card is turned off, scanning is completed, or data is received).&lt;/p&gt;

&lt;p&gt;Most of the hard work will be handled by the &lt;code&gt;VoodooWirelessDevice&lt;/code&gt; superclass, and HALs will typically only need to implement hardware-specific code. For example, driver writers will not need to worry about parsing probe responses to get scan results and network information — they simply pass the incoming packets up to the superclass which will take care of the rest.&lt;/p&gt;

&lt;p&gt;Given below is source code of most header files that will be used during development of HALs. Hope this is useful to those who are planning to help write HALs for cards like 4965 or 5100.&lt;/p&gt;

&lt;p&gt;IMPORTANT: All this source code is made available for preview/academic purpose only and the copyright remains with me (the author).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pastie.org/561775"&gt;Click to view the source code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that it is not always possible to finalize the APIs before starting to use it. So, big and small changes are expected. To repeat myself: this is only a preview designed to give prospective developers an idea of how the final API might look like.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/150897206</link><guid>http://projectcamphor.mercurysquad.com/post/150897206</guid><pubDate>Tue, 28 Jul 2009 20:48:25 +0530</pubDate><category>VoodooWireless</category><category>API</category><category>preview</category><category>sourcecode</category></item><item><title>Back</title><description>&lt;p&gt;I am back now and work on 3945 has started.&lt;/p&gt;

&lt;p&gt;No other updates currently, it’s still in very early stages.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/149922429</link><guid>http://projectcamphor.mercurysquad.com/post/149922429</guid><pubDate>Mon, 27 Jul 2009 10:54:34 +0530</pubDate><category>3945</category></item><item><title>Beta v05 of 2200BG driver and goodbye for a few days</title><description>&lt;p&gt;A slightly updated and bug-fixed version of the 2200BG® driver is available from the Download page now.&lt;/p&gt;

&lt;p&gt;It has many small and big fixes which I don’t have time to describe in detail now, but in brief:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Fixed bug in setting antenna sensitivity to large dBm values. Connections should be more stable now. Also changed antenna to “auto” (firmware selects best antenna) instead of “slow diversity” - should provide better reception in weak signal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed some transmit queue related problems: freeing mbufs and transmitting mbufs is now more robust in laggy connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now using just the first Tx queue instead of all four: to try to get rid of firmware resets during heavy transfer while using WEP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changes in background scan watchdog, but it doesn’t work well yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Misc fixes..&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Estimate time of availability for 3945 driver and WPA support&lt;/h2&gt;

&lt;p&gt;ETA for 3945: this is a blind guess but I’m hoping to get it working with WEP by the end of the month.&lt;/p&gt;

&lt;p&gt;ETA for WPA: this will take more time that I had thought, so it’s postponed until 3945+WEP is working. (Note: WPA support will be common to all drivers so it only needs to be written once).&lt;/p&gt;

&lt;h2&gt;Getting debug logs&lt;/h2&gt;

&lt;p&gt;If you want to investigate any problems with the 2200bg kext, you can get extended debug logs in your Console by setting a sysctl key as follows (in Terminal):&lt;/p&gt;

&lt;pre&gt;
sudo sysctl -w debug.voodoowireless=xx
&lt;/pre&gt;

&lt;p&gt;Replace &lt;code&gt;xx&lt;/code&gt; with any sum of the following values to selectively display debug messages:&lt;/p&gt;

&lt;pre&gt;
    dbgUnused   = 1,        // (currently unused)
    dbgFatal    = 2,        // Fatal/abort errors
    dbgWarning  = 4,        // Warning messages
    dbgInfo     = 8,        // General informational messages
    dbgIoctl    = 16,       // apple80211request messages
    dbgRxTx     = 32,       // Rx/tx of packets
    dbgBeacons  = 64,       // incoming beacons
    dbgEntryExit    = 128,      // Function entry and exit logs
    dbgDump     = 256,      // rx/tx packet dumps
    dbgEverything   = 0xFFFFFFFF    // All levels of debugging
&lt;/pre&gt;

&lt;p&gt;The most useful value is &lt;code&gt;14&lt;/code&gt; (ie. display Fatal errors, warnings and useful information).&lt;/p&gt;

&lt;p&gt;That said, I won’t be available for the next few days, so no updates or responses to comments. Have a good week everyone.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/141283302</link><guid>http://projectcamphor.mercurysquad.com/post/141283302</guid><pubDate>Tue, 14 Jul 2009 11:49:00 +0530</pubDate><category>2200</category><category>beta</category><category>v05</category><category>eta</category><category>3945</category><category>wpa</category><category>wep</category></item><item><title>Just one last update to the 'old' 2200BG driver</title><description>&lt;p&gt;I have uploaded beta version 04 of the driver for 2200BG. Everyone is advised to update.&lt;/p&gt;

&lt;p&gt;This version fixes a very important bug in previous versions which was preventing the card from connecting in 11g and working at full speeds.&lt;/p&gt;

&lt;p&gt;It is available from the Downloads page.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://img244.imageshack.us/img244/5637/picture1oqc.png" alt="High speed transfer in 11g mode"/&gt;&lt;/p&gt;

&lt;p&gt;Note that in WEP networks during long transfers at high speeds, I have experienced frequent firmware errors resulting in the driver shutting down the card. If this happens with you, either lower the maximum connection speed in your access point’s configuration, or use the &lt;code&gt;debug.wirelessmode&lt;/code&gt; sysctl key to force the driver to always connect at 11b speeds only.&lt;/p&gt;

&lt;p&gt;By default the driver prefers 11g mode if available.&lt;/p&gt;</description><link>http://projectcamphor.mercurysquad.com/post/138443996</link><guid>http://projectcamphor.mercurysquad.com/post/138443996</guid><pubDate>Thu, 09 Jul 2009 21:09:00 +0530</pubDate><category>2200</category><category>update</category><category>throughput</category><category>11g</category></item></channel></rss>
