Wifiboot allows to upload executables to nintendo handhelds (nds/dsi files to
nds/dsi, and firm files to 3ds), this is most useful for developers, allowing
to test their code on hardware without flashcarts.
Download here: wifiboot (binary and source code)
WPA2 is still working with only 2 of 3 tested access points. When testing it, please let me know if it's working, or not working with your access point(s).
When uploading the Eragon demo, I am reaching 60-110Kbyte/s with NDS-wifi, and 400-600Kbytes/s with DSi-Wifi (depending on the used access point and daytime/noise in the neighborhood).
The speed isn't perfect yet, but at least the new DSi-Wifi support is ways faster than NDS-Wifi (even if NDS would ever reach full 2MBit/s). Some things that helped to improve the speed were using NDMA (for SDIO-to-memory), and DMA for (for memory-to-memory), and WRAM (for the packet buffer), and, especially: setting the ARM7_RUNNING flag (else SDIO was handled only on vblank IRQs, not on SDIO IRQs, which had frustatingly caused more packets to get 'lost' (which did then cause slowdown whenever trying to speedup things)). Next thing to try would be running ARM7 code in WRAM or VRAM instead of slow Main RAM, maybe that will boost the transfer speed a bit more.
How to use
Now that WPA/WPA2 are working (including manually handling the EAPOL messages), there's no good reason not to implement WPA for NDS-Wifi, too. The main issue might be making a GUI for entering WPA passwords on NDS, apart from that it should only require some extra tweaking on manually adding the Extended IV and MIC to the WPA packets. The DSi would benefit from a GUI, too (system settings are prompting to re-enter the password anytime when switching between WPA and WPA2, which is a bit uncomfortable for testing). Well, and I hope I'll get the transfer a bit faster, and fix the isssue with the non-working access point.
Copy the .zip contents to no$gba's "stuff" subfolder, then use Utility --> Assemble File --> wifiboot.a22 in no$gba. For use with other assemblers you would probably need to change hex numbers from 1234h to something like 0x1234 or #0x1234. I am wondering if anybody will be able or willing to do such things ; ) if you want to: maybe better wait a while and check back if there are newer updates/bugfixes before porting to source code to other formats. Changes to the old NDS-Wifi code are marked "with_nds_wifi" and "with_dsi_wifi" (in wificore.a22). The new DSi-Wifi code is currently mostly located in wifiboot.a22 and wifisdio.a22 (I'll move that to wificore.a22 in future versions).
Thanks to Stephen Stair for making the original NDS-Wifi library (dswifi) and to wintermute for the original wifi uploader (dslink).
forum thread (related to rev-engineering dsi-wifi hardware)