dswifi: Wifi for DS Homebrew Development

Stephen's Home | Stephen's Blog! | Official DS Wifi Forum | DS Wireless Documentation! | Latest DS Wifi Lib Test | DS Wifi Bounty [sc.tri-bit.com/dswfb]

(not quite so) Up to date status and progress on my current projects.

November 23, 2008: Actually linking new example locations :)

Ok! I should have done this a long time ago. Changes to libnds around devkitARM r19 or r20 broke the examples that are listed below. The ancient examples no longer work. While we have actually reworked these examples to work with newer versions, they never got officially linked anywhere :)
So here are some of the examples, that work with recent libnds. Soon, these too will be outdated! But when they are, there will be examples included with libnds! So, once that happens again these will be useless! but for now, people still want them, so here they are:
Ok! so there you have it. If you're developing wifi applications for the current version of libnds, this is where to start. Hopefully soon this will be out of date, the changes to libnds are going to be very good :) And then there will be actual official sanctioned examples included with it!

July 27, 2007: This page is really quite outdated!

You really want to go elsewhere to get your dswifi fix, now... Note that the latest dswifi lib is included in devkitpro now, so use the devkitpro updater to get the latest devkitarm, libnds, and dswifi - convenient!
If you still must get the lib on your own, there's always the DSWifi library on Sourceforge. (which is a subproject of devkitpro)
If you have questions, please visit us on IRC, on irc.blitzed.org channel #dswifi (or #dsdev, if we're away, or ignoring you)
Or, possibly, email me at: sgstair [AT] akkit [dot] org

July 31, 2006: Version 0.3a lib/source release! (4 am)

Yet another version of wifi goodness is done and fit for human consumption!
This time it only comes in one package, but that should be more than enough. For the pure lib, or the source package, please refer to The DSWifi library on Sourceforge.
dswifi_lib_v0.3a_full.zip (440k) - Package including a compiled version of the lib, and 2 example projects (wifi_lib_test and the new and improved wifi_example1)

Yet more improvements have been made to the lib since last release, and the result is a much more stable, much easier to use, and much faster library. If you're working on a wifi app, please visit us at #dswifi on EFnet, or stop by the Official DS Wifi Forum, or visit Stephen's Blog for ongoing progress updates and more!
The next release after 0.3a is going to be version 0.5, which will feature a rewritten 802.11 engine, with the goals of being more portable and more flexible, so stay tuned for information as it develops.

April 24, 2006: Version 0.3 lib/source release! (4 pm)

Finally, at long last the much awaited version 0.3 is released! Please see the release notes for more information about all that was added, but it's a lot!
dswifi_lib_v0.3_lib.zip (181k) - Minimal package includes debug and release libraries and include files
dswifi_lib_v0.3_source.zip (188k) - Full Library source release, does not include any examples
dswifi_lib_v0.3_examples.zip (243k) - Examples release, does not include library - includes wifi_lib_test and a minimal demonstration example

Lots and lots of improvements have been made, the library includes now contain rather comprehensive documentation for everything but the berkley sockets. Of course, if you'd like to hang out and talk, or just have a question, feel free to come to #dswifi on EFnet. Please read the readme file included with the library before trying to do too much with it, it makes note of some important things and suggests an easy way to "install" the library.
Overall, happy devving, and if you find any bugs with the lib, let me know :)
Stephen's Blog
(Side note: I've trimmed down the page a bit, I may add an archive later of what I've taken out.)

March 15, 2006: Progress! and a new blog! (10 am)

Well, some of you already know, I've started up a blog at blog.akkit.org - So far I've been posting updates about my progress towards the new version of the lib (0.3), which is looking VERY good - At present DNS is complete and working smoothly, and an outgoing TCP connection test exists in the test app! Mind you this isn't the "official" test app, it's the "unofficial" one, with the underscore at the end (see the blog for the binary!). I've also been updating the forums with my progress, so unfortunately this site is starting to become obsolete (Wordpress is SO much easier than raw-editing html :)
I'll still be posting the *major* updates here, like when libs are released, but you can bet that info will make it to the forums and the blog (with RSS!) at the same time.

March 6, 2006: That'll teach *ME* to set deadlines :) (5 am)

Ok, well - In case you hadn't noticed I haven't released an updated lib yet. As it stands, I spent too much time doing other things, and am pretty well booked for the next few days as well. I have made a lot of progress, but I'm not ready to release it yet, so well, hang around and it'll be ready before long (next weekend perhaps? Agh! I'm setting deadlines again -_-)
[If you wanna follow along with my progress, I'll be occasionally releasing updates to the test app at the nonstandard location of wifi_test_lib_.nds - this *presently* includes WEP support (of 64 and 128 bits), and a lot of half-done stuff. (many menu items don't work at the moment, but will be completed and enabled before release.)]

March 2, 2006: Update! Update! (11 pm)

Ha-HA! With some help from a friend I've finally discovered why WEP wasn't working in my lib! Needless to say, WEP will be correctly working in the next release. Speaking of next releases, I'm nearly complete with DNS and TCP, so I'm going to try to release something in 2 days (that's Saturday) with DNS, TCP, WEP, and maybe even DHCP (depends on how little time I waste being lazy). There are some other more subtle improvements coming in this release too, I'm sure you'll all appreciate it :)
Also, since this friend has been working on reverse engineering the wifi chipset further than I have, I'll be integrating a number of his findings into my documentation soon, which will give some insight into some of the presently undocumented hardware and will clarify a number of areas that are presently somewhat documented. Keep watching for updates, though, idling in #dswifi on EFnet is a better way to know instantly when I have actually released something ;)

January 25, 2006: Continuing to make progress. (4am)

The next release is still being worked on - it'll contain TCP, DHCP, DNS, and ICMP for sure... WEP is being worked on but it's unclear why it's not working at the moment. I'm still busy with other projects besides this one so it is still going slowly, but progress is being made.

January 18, 2006: It's been a while.... (3am)

Well um, I should probably let people know how things are going again - so nobody gets the crazy idea that I'm abandoning the project or something like that. Anyway, the lib test app has been updated recently ( [wifi_lib_test.nds] ) - ICMP has been implemented to the point that you can ping the DS. Granted that's not entirely useful, but... whatever.... I'm continuing to work on bashing the other bits into shape, and I'm hoping to have a new release soon. The new release will be a bit different than the current release, a lot is changing, and it'll be much nicer for release 0.3. So, I've not given up yet... still working on it.
Also, to clarify, Yes, I have completed the requirements for the remainder of the bounty, and have received the payment. Many thanks to all who contributed towards making this a reality!

December 24, 2005: Merry Christmas, DS Dev! (10pm)

Okay, I've decided to go ahead and release the source to my lib. So, here it is. We are now at version 0.2b, which has some usability improvements (fewer crashes and comms lockups) - more will be coming when I have time to write it ;)
Presently still not done are: WEP/TCP/DNS/DHCP/ICMP... so, it's still not perfect, but it's more usable. I have less time now than I have had in the past to work on this, but progress will continue, as this is something I want to do regardless of whether the community wants it ;)
Without further delay, the releases:
Lib test app, version 0.2b [wifi_lib_test.nds]
Lib Source release, version 0.2b [dswifi_lib_v0.2b_source.zip]
Lib "Debug" Binary release, version 0.2b [dswifi_lib_v0.2b_debug.zip]
Lib "Release" Binary release, version 0.2b [dswifi_lib_v0.2b_release.zip]
The test project source is included in the source release, but not in any of the other packages. The only real difference between the "Debug" and "Release" versions is whether they require the debug print hook, and use it. Reading the source will make this obvious.
Any questions or general discussion should be directed to a (somewhat) new channel on IRC - please join #dswifi on EFnet for general discussion and specific questions :)
Have fun, and have a good Christmas/holiday/whatever you want to call it.

December 17, 2005: (Another) Small lib update. (5pm)

For those of you who have already downloaded the new lib version, please re-download it... the arm9-arm7 initial sync code has been redone in the test app so it will no longer crash (Evidently under certain circumstances this would cause the code to whitescreen) You may want to adopt this modification into your applications.
Additionally, I've updated the lib test binary with the new modification (version 0.2a [wifi_lib_test.nds]) - doesn't get a new release number though, cause no features were added.

December 17, 2005: Small lib update. (3pm)

As it's been a while, and people are starting to make apps with the lib prerelease, I've decided to release an updated lib - which includes the nifty new features in version 0.2a of the test app. Those of you who have the lib can probably guess how to get it... If you would like to play with the lib or just want the new version, send me a beleivable email about why you need it... Don't try to lie to me, cause I'll know... my spies are everywhere ;)
Anyway, for lib updates, or to get a copy to play with - email me. I'm scheduling in some time to work on the lib soon, so expect 0.3 before too long :) (and 0.3 is the big one, for sure.)

December 11, 2005: Small update, but important. (1pm)

Ok, an update for those of you who were stuck on ASSOCSTATUS_ASSOCIATING for the longest time... (version 0.2a [wifi_lib_test.nds]) Firstly, the new build spoofs it's rate set (pretends to support things it can't) in order to properly associate to APs that don't have a low enough base rate set. Also, there have been a few other bugfixes (fixed a crash bug, on ARP timeout) What this means for you? People stuck on ASSOCSTATUS_ASSOCIATING will probably be able to connect now!, and in the case you can't associate, it'll tell you much sooner. Also, a note (this wasn't gone over before) - WEP does not work in this version (also, wep has nothing to do with association, so you'll be able to associate, just not do anything) - I'm working on it and trying to figure out what's wrong though... More to come, whenever.

December 11, 2005: Stuff! (4am)

Again a binary update (version 0.2 [wifi_lib_test.nds]) (Additionally, you can download a program to test UDP with, [udp_Test.zip] - program listens on port 8888 and responds to incoming datagrams.) (Additionally, source for the udp_test program that should be able to be compiled on linux/unix/macosx systems is available here too: [udp_test.c])
I will now privately release a compiled version of the lib, and the source of the test project to people who can use them. Reason for the private release is that not everything is done yet.
Things that are done and working nicely are: AP listing, association, and UDP...
Things that are not complete and are still being worked on are: IP fragmentation, TCP, DNS, and DHCP
If you *still* want a copy of the lib binary and test project source, let me know on IRC, or send me an email. This is NOT for everyone, and I will not be providing tech support on this release. The test project is very much geared towards development, you will have to modify bits of the makefile to make it work on your machine (paths & lib inclusion mainly). So, use at your own risk of misunderstanding. I think it's pretty clear, but that's just me.
And yes, progress is moving pretty slowly at the moment... This is due to several factors, not the least of which is that I have a real job now (AC:WW is also in that list tho..).