Nintendo DS development


This page is quite outdated now, the basic overview is that I am able to connect to the DS intermittently, but the connection is lost after a few hundred packets (this is unforunately very quick, the DS sends a lot of packets). So I am not to the point where I’m sending over a binary yet. However I’ve figured out the protocol I believe, so it appears to just be a matter of getting the timing under control. This may involve porting substantial parts of the connection software into the driver to get better response times, which is somewhat unfortunate.

– An atheros chipset based wireless card, I’m using the linksys WMP55AG.
– Linux 2.6+.

Old news

Basic overview: I have modified the driver for the Atheros chipset on the Linux platform, and have managed to fool the DS into believing that it is talking to another DS for about 2 seconds. After that there appears to be some handshaking happening that we do not yet understand. This is thanks to the efforts of numerous people as well, such as Darkain and crazyc, without whom we’d still be in the stone ages :).

We are now able to handshake with the DS, soon we will be sending the multiboot image over :).

Update #2: Thanks to crazyc from the gbadev forums, we can now modify the broadcast packets text to make the DS think a different game is available. The poorly named crccalc.c will replay the mario beacons.

Update: managed to get the DS to think Mario 64 is available for wireless download – can’t send it yet, and can’t modify the replayed packets because there appears to be some sort of CRC check. Try out replay.c on a libpcap capture of mario 64 sending out beacon frames, you’ll need at least 4-5 seconds of capture.

Very good news, I put my DS into Pictochat and managed to get to start the 802.11b authentication process. This means it will at least be possible to research communication with the DS (multiboot, tunnelling). The source to the neccesary programs is here. BE WARNED, this is highly developmental software, it’s quite possible it will crash your kernel, etc. Secondly, there is really no functionality here, it’s a proof of concept, I’m releasing the source to help spur the development onwards.

Pictochat decoding

I made some new dumps of pictochat sending messages, the dumps are in the airopeek txt format. I’m posting the entire dump because there might still be some packets that my program misses (there were before, but I think I’ve finally got them all). I’m pretty sure the messages have been mostly decoded at this point, there are no remaining graphical issues, even with multi-line packets. Yay :).
Source (77k).

Back to Main