DSWifi GenInfo
From wiki.akkit.org
(Return to the DSWifi Documentation Main Page)
Wifi Hardware Overview/Capability
The Wifi hardware interface is likely on-die with much of the other hardware. It is very likely attached to the ARM7 cpu via a 16-bit only memory interface.
The hardware is entirely custom probably for a few reasons, one of which is the official nintendo "wired" wireless system, additionally there appears to be built-in support for a 16-way custom-protocol communication system in hardware.
There is an RF daughterboard on the DS, with a BaseBand chip and an RF generation chip - these two are referred to extensively as BB and RF chips in this documentation. They are communicated with by a few sets of registers in the hardware, and the hardware also talks to them via other methods.
The hardware is initialized almost entirely from data stored in the firmware flash of the NDS, which allows two things: for one, they could possibly change the RF chipset in the future and still maintain compatibility. Additionally, and more apparent, is that Nintendo's "wired" system that emulates wireless is indeed quite different from regular DS wifi. Having the options in flash can allow software to easily work with either system.
Many people have tried to identify the RF and BB chips on the daughterboard on the NDS, but nothing has turned up, it's very likely they are either next-gen parts or merely different revisions of current parts (either custom for Nintendo, or possibly Nintendo has "laid claim" to a new revision and the documentation has not been released to the public yet.)
The hardware unfortunately does not appear to be capable of transmitting or receiving at speeds greater than 2.0Mbps. This does of course complicate the use of various kinds of access points, but overall is not a terrible drawback.
Overall, the hardware seems very capable, and easy to use for the most part (besides init).
Quick rundown of the wifi memory map:
Address | Section
---------|--------------------
04800000 | Main wifi register section
to | read/write normal
04800FFF |____________________
04801000 | Wifi Register section mirror
to | read to "action" registers does not produce action (like read fifo 0x04800060)
04801FFF |____________________
04802000 | Wifi Register section mirror
to | read to "action" registers does not produce action (like read fifo 0x04800060)
04802FFF |____________________
04803000 | Wifi Register section mirror
to | read to "action" registers does not produce action (like read fifo 0x04800060)
04803FFF |____________________
04804000 | MAC Memory section
to | tx data, rx data, wep keys kept here
| general sram, read/write 16bit
|
|
04805FFF |____________________
04806000 | Wifi Register section mirror
to | read to "action" registers does not produce action (like read fifo 0x04800060)
04806FFF |____________________
04807000 | Wifi Register section mirror
to | read to "action" registers does not produce action (like read fifo 0x04800060)
04807FFF |____________________
This memory map then repeats/wraps around in the 0x04800000-0x04ffffff memory space.
Scope of this documentation
This documentation reflects most of the current homebrew knowledge about the DS's wifi hardware. It was assembled for the purpose of enabling homebrew developers to build wifi-enabled applications for the DS. This documentation carries no guarantee of accuracy, and the authors cannot be held responsible for any damages that result from using the information in this document (standard legal prattle)
