MKWii Network Protocol/Server/

From Custom Mario Kart
Jump to: navigation, search


Client and server communicate using the PARAM-STRING protocol. The server is listening at TCP port 29901. This server translates profile ids into user nicks.


Here is a list of found parameters for further analysis: param-of-server-gpsp.list (35 KB text file)

Protocol Parameters
Name Sender Param
final both empty Last parameter of a parameter list. One or more parameter lists may follow.
gamename client string For MKWii it's always "mariokartwii"
namespaceid client integer Only value 16 seen yet.
numopids client integer Number of profile ids in parameter opids. (usually 0 – 32).
o server profile id The following uniquenick is the translated nick of this player. The series is sorted by this profile id.
oldone server empty Abbreviation for »others list done«. It marks the end of the o and uniquenick sequence.
opids client profile id profile ids separated by an "|". Generally all profile ids of the friends list are send. If there is no entry in the list, opids contains a single "0".
otherslist both empty Header of the otherslist list.
profileid client profile id profile id of the questioner.
sesskey client integer Session-ID
uniquenick server user nick This is the translated nick based on the profile id of the previous o parameter.

Parameter Lists

Only one parameter list has been found yet. The name of the first parameter is used as caption. See PARAM-STRING for the protocol and the naming convention.


The client sends a list with profile ids to the server to translate them into user nicks:

      otherslist =
         sesskey = 210997796
       profileid = 302594991
        numopids = 3
           opids = 469604577|447214276|354860031
     namespaceid = 16
        gamename = mariokartwii
           final /

The parameters sesskey and numopids are ignored by the server.

The server answers with a sequence of o+uniquenick pairs; one pair for each requested id of opids. The usage of the nick names is not clear yet. The list is sorted by the profile ids of the parameter o. Parameter oldone terminates the sequence.

      otherslist =
               o = 354860031
      uniquenick = 4anbjhi1jRMCJ23ioucc
               o = 447214276
      uniquenick = 7dkt0p6gtRMCJ2ljh72h
               o = 469604577
      uniquenick = 7hl05oif6RMCJ142q65e
          oldone =
           final /

Server Tests

Here are some notes after direct tests with the server:

  • The server ignores the parameters sesskey and numopids and just replies one nick for each profile id in opids .
  • Server answers only contain nicks for friends of profileid (clients profile id). So the server must know the friend lists of all players.
  • The returned nick list is sorted by the o parameters. Numerical sort is used (pid 20 is before pid 100).
  • After opening the connection, only one query is possible. To get more nicks, the connection must be closed and re-opened again.

Other Servers

Nintendo's Servers for Mario Kart Wii
DNS Name IP Address Port Protocol Description 29920 N/A These are looked up, but never used. N/A TCP These are looked up, but never used. 29900 TCP This connection is used to manage friends and to inform about one's status. 29901 TCP The server exchanges profile ids into user nicks. 27900 UDP See pages 28910 TCP This server handles database requests for online matchmaking. 27901 UDP NAT NEGotiation is a way to bypass NAT and firewalls. 27901 UDP NAT NEGotiation is a way to bypass NAT and firewalls. 27901 UDP NAT NEGotiation is a way to bypass NAT and firewalls. 443 TCP/HTTP(S) This server handles Mii exchange and Ghost up/downloads
443 TCP/HTTP(S) The authority DNS server delivers randomly both IP addresses with a TTL (time to live) of 30s to support a kind of load balancing. 443 TCP/HTTP(S) This server is used for time trial / competition leaderboards and the actual competition distribution.

Related Topics