Wiimmfi Project

From Custom Mario Kart
Jump to: navigation, search

Nintendo has announced that the Nintendo Wi-Fi Connection service will be discontinued on May 20, 2014. This will impact all DS and Wii games with online features, including Mario Kart Wii. Wiimm had been analysing the Mario Kart Wii network traffic since November 2012 and had already written an helper tool named mkw-ana. And so he decided together with other people to create the Wiimmfi Project (formerly Wii-Server Project) to replace Nintendo's servers for Mario Kart Wii and perhaps for other games.


wiimmfi.de is the new domain that replaces nintendowifi.net. All games must be patched to use this new domain and to disable https requests (see below).

The domain wiimmfi.de was registered by Wiimm for this project. If Wiimm discontinue this service at any time in the future, he will give away the domain, the software and the data base content.

State of the Project

At May 10 2014, 10 days before Nintendo shut down his servers, Wiimm released the Wiimmfi-Patchers. Since that day, the Wiimmfi-Server are available for the public. At the first day, the server supported only Mario Kart Wii including the different Custom Track Distributions. And now many more games are available.

List of all Wiimmfi games (supported, test and disabled)

Known Game Issues

Mario Kart

  1. After registering a new friend, you see a general ◇Wiimmfi◇ Mii instead of the player's. Connecting to the player (friend room, WW, etc..) will make the real mii appear.
  2. Competitions do not work yet.
  3. Ghost data Up/Download is in beta testing, so it may sometimes work.


To be able to distribute competitions on Wiimmfi, we need to collect all the competition files. These are stored in the savegame, so we need as many savegames with competitions in it as possible! See here: Collecting competition data


  1. The spectator mode does not work.

Pokemon Platinum/HeartGold/SoulSilver

  1. The WiFi Plaza does not work as of yet.

Sonic & SEGA All-Stars Racing

  1. Only global races work. Friend events do not work.

Game Patcher

To play Wii games using the custom server, the games must be patched using the wiimmfi-Patcher. There are 2 patchers for USB-Loader, one for Mario Kart Wii and one for other games. For Riivolution users, MrBean35000vr is on the way to create a channel, that will patch the strings on the fly.

Wiimmfi Tutorial - Homebrew Channel


The wiimmfi-server is running in test mode. There is a second server for the active development. And so major updates must be done frequently.

The maintenance time is set between 16:30 and 17:30 UTC (17:30–18:30h CET) at every day. In this time the server may be stopped for updates and other things without further announcement. Don't be surprised if you are kicked or if login is not possible during this period. This time will also used to insert new retrieved friend codes.


Wiimm decided to implement the code in PHP as a fast solution and to find out the protocol details. From the beginning it was clear that it must be rewritten in C or C++ for performance reasons. While developing, there were some other issues. And now 2 servers are already implemented in C.


Server NASWII is the https based login server. NAS is an old NDS implementation for http. Both can be interchanged. On Wiimmfi, the server is implemented using APACHE2 and PHP5.

At the moment, only logins are accepted with old and new profiles. Complete new savegames send a request to get their unique console nickname from the server. This is not implemented yet.

Server GPCM

If entering the WFC, the Wii connects to the Server GPCM using TCP. The connection is closed, when leaving WFC. The server is used for general maintenance and for message exchange between the clients.

It is implemented as PHP script. The interprocess communication (transferring messages) is implemented with UNIX sockets.

Server GPSP

Server GPSP is used to retrieve information about friends. The Wii connects and disconnects frequently using TCP. We use Nintendos GPSP server to retrieve the profile_id and nick pairs.

On Wiimmfi, Server GPSP is fully implemented as PHP script.


Server MASTER listens at UDP port 27900. The clients (games) send frequently status records to the master. The master server stores them into a game specific table, where other clients can retrieve the information using the Server MS (see next point).

Server MASTER is now fully implemented in C for performance reasons.

Server MS

Server MS is connected by the clients to retrieve information about other online clients. The query looks like a SQL query with select, where and limit clauses. The reply is encrypted by a game specific secret.

Server MS is fully implemented as PHP script, but pipes the response through an encoder written in C.


Server NATNEG is used to establish a connection between two players both being behind NAT. The clients only communicate with this server when they try to connect to another player.

Server NATNEG is fully implemented in C. Because it was the first C tool, it has an open second port to send special UDP packets for Server MS with the faked sender address of Server MASTER.

Server SAKE

Server SAKE is used for data exchange — files or records can be uploaded to the sake server. This is used for friend Mii exchange in Mario Kart Wii.

Server SAKE is being adapted by Leseratte from the »DWC Network Server Emulator« by Nagato and will probably be reimplemented later for performance reasons. At the moment, there is a beta-SAKE which always returns a "Wiimmfi"-Mii.

Server RACE

Server RACE is used for downloading the rankings in Mario Kart Wii.

Server RACE is being implemented by Leseratte and will probably be reimplemented later for performance reasons.


Server GAMESTATS is for game statistics. Ciapa tries to implement rudimentary functions of the server.

Server DLS1

Server DLS1 is a server for game updates. It is implemented as APACHE2/PHP script. At the moment, it just returns that no update is available. The base system allows different DLS1 server for different games. PokemonAcer runs both a Wii one (dls1.pokeacer.tk) and a NDS one (dls2.pokeacer.tk)

Using old profiles

For each profile, there exists a profile id and nick name pair. Only the Wii of the user and the server database knows both of them. At login the Wii sends the nick name and the server answers with the related profile id. If the profile id is wrong, the game aborts the login.

There are 3 ways to use your old profiles with Wiimmfi:

  • At the beginning of the project, when the old gamespy servers were available (shut down on July 25th, 2014), Wiimm retrieved 2.9 millions pairs. With a little bit of luck, your profile was also retrieved.
  • If you have an account at Wiimmfi with assigned consoles, try to connect your profile with Wiimmfi. At the status page you will see a list with profiles and the unknown profile is marked as inactive. Press the button [set FC] and follow the instructions.
  • You can download the app here. Simply start it and all profiles from supported games will get transmitted to our server. You can find a list of all supported games here.


Project forum at Wii-Homebrew.com
Other forums