Matthew Redding

NJIT and the Nintendo Wii

Wiis on the NJIT Campus receive the "Wrist Strap" message (see here or here) over and over again. (Update: Nintendo is sending a different message as of November 8, 2007, but the concept is still the same.) Through some packet sniffing (behind my wireless router, don't release the hounds, telecom) and some help from James (Ronald) Stump, I was able to figure out why. NJIT's proxy messes with the HTTP headers. In summary, the Wii sends an HTTP GET request for the broadcast file found here and requests that the server only send the file if it has been changed since last time. It appears NJIT's proxy blocks or changes this HTTP header.


What is Supposed to Happen

GET /announce/msg1_usa_en.bin.signed HTTP/1.1
Host: cfh.wapp.wii.com
If-Modified-Since: Wed, 07 Feb 2007 02:20:00 GMT
Connection: Close
X-Wii-Id: w4541581244760050
User-Agent: WiiConnect24/1.0FC4plus1 (build 061114161108)

HTTP/1.1 304 Not Modified
Content-Type: application/octet-stream
Last-Modified: Wed, 07 Feb 2007 02:19:19 GMT
Date: Mon, 26 Mar 2007 20:37:41 GMT
Connection: close

Connection closed by foreign host.

What Happens at NJIT

GET /announce/msg1_usa_en.bin.signed HTTP/1.1
Host: cfh.wapp.wii.com
If-Modified-Since: Wed, 07 Feb 2007 02:20:00 GMT
Connection: Close
X-Wii-Id: w4541581244760050
User-Agent: WiiConnect24/1.0FC4plus1 (build 061114161108)

HTTP/1.1 200 OK
Server: Apache
Last-Modified: Wed, 07 Feb 2007 02:19:19 GMT
Accept-Ranges: bytes
Content-Length: 1457
Content-Type: application/octet-stream
Date: Fri, 23 Mar 2007 17:18:11 GMT
Connection: Close

[Contents of http://cfh.wapp.wii.com/announce/msg1_usa_en.bin.signed here, obviously.]

Connection closed by foreign host.

Part of this is Nintendo's fault; the Wii should cross-check the last-modified date. I place most of the blame on NJIT, however, whose proxy server does more than it should.

"Quando Omni Flunkus Moritati."