Line 3:
Line 3:
[[File:Wii-Remote-Top-surface.jpg|200px|thumb|right|Wii remote circuit board, top surface]][[File:Wii Remote uncovered.jpg|200px|thumb|right|Wii remote circuit board, bottom surface]]{{selfref|This article is a technical guide to the Wii Remote. For a high-level overview of the Wii Remote, see the [http://en.wikipedia.org/wiki/Wii_Remote Wikipedia entry].}}
[[File:Wii-Remote-Top-surface.jpg|200px|thumb|right|Wii remote circuit board, top surface]][[File:Wii Remote uncovered.jpg|200px|thumb|right|Wii remote circuit board, bottom surface]]{{selfref|This article is a technical guide to the Wii Remote. For a high-level overview of the Wii Remote, see the [http://en.wikipedia.org/wiki/Wii_Remote Wikipedia entry].}}
−
−
*[[Wiimote/Firmware|Disassembled Firmware]]
−
*[[Wiimote/Extension Controllers|Extension Controllers]]
−
*[[Wiimote/Motion analysis|Motion analysis]]
−
*[[Wiimote/Pointing|Pointing]]
−
*[[Wiimote/Library|Library]]
−
*[[Wiimote/Mii Data|Mii Data]]
[[File:Wii Remote Broadcom.jpg|200px|thumb|right|Broadcom BCM2042 in a Wii remote]]The '''Wii Remote''' (informally known as the '''Wiimote''') is the Wii's main input device. It is a wireless device, using standard Bluetooth technology to communicate with the Wii. It is built around a [http://www.broadcom.com/products/Bluetooth/Bluetooth-RF-Silicon-and-Software-Solutions/BCM2042 Broadcom BCM2042] bluetooth System-on-a-chip, and contains multiple peripherals that provide data to it, as well as an expansion port for external add-ons. The Wii Remote uses (and, at times, abuses) the standard Bluetooth HID protocol to communicate with the host, which is directly based upon the [http://en.wikipedia.org/wiki/USB_human_interface_device_class USB HID] standard. As such, it will appear as a standard input device to any Bluetooth host. However, the Wii Remote does not make use of the standard data types and HID descriptor, and only describes its report format length, leaving the actual contents undefined, which makes it useless with standard HID drivers (but some [[Wiimote Driver]]s exist). The Wii Remote actually uses a fairly complex set of operations, transmitted through HID Output reports, and returns a number of different data packets through its Input reports, which contain the data from its peripherals.
[[File:Wii Remote Broadcom.jpg|200px|thumb|right|Broadcom BCM2042 in a Wii remote]]The '''Wii Remote''' (informally known as the '''Wiimote''') is the Wii's main input device. It is a wireless device, using standard Bluetooth technology to communicate with the Wii. It is built around a [http://www.broadcom.com/products/Bluetooth/Bluetooth-RF-Silicon-and-Software-Solutions/BCM2042 Broadcom BCM2042] bluetooth System-on-a-chip, and contains multiple peripherals that provide data to it, as well as an expansion port for external add-ons. The Wii Remote uses (and, at times, abuses) the standard Bluetooth HID protocol to communicate with the host, which is directly based upon the [http://en.wikipedia.org/wiki/USB_human_interface_device_class USB HID] standard. As such, it will appear as a standard input device to any Bluetooth host. However, the Wii Remote does not make use of the standard data types and HID descriptor, and only describes its report format length, leaving the actual contents undefined, which makes it useless with standard HID drivers (but some [[Wiimote Driver]]s exist). The Wii Remote actually uses a fairly complex set of operations, transmitted through HID Output reports, and returns a number of different data packets through its Input reports, which contain the data from its peripherals.
Line 1,236:
Line 1,229:
After the identification is read, the encryption can be set up if required. This is done by enabling encryption by writing 0xAA to extension register 0xF0, and then writing the 16-byte key to register 0x40. The key is written in 3 blocks of 6, 6, and 4 bytes. (Writing a single encryption byte to register 0x40 will work on genuine Nintendo controllers, but not on others). After this the extension can be operated in full encryption mode.
After the identification is read, the encryption can be set up if required. This is done by enabling encryption by writing 0xAA to extension register 0xF0, and then writing the 16-byte key to register 0x40. The key is written in 3 blocks of 6, 6, and 4 bytes. (Writing a single encryption byte to register 0x40 will work on genuine Nintendo controllers, but not on others). After this the extension can be operated in full encryption mode.
−
= Acknowledgements =
+
= Notes =
+
+
== See Also ==
+
* [[Wiimote/Firmware|Disassembled Firmware]] shows raw firmware dumps from several wiimotes.
+
* [[Wiimote/Extension Controllers|Extension Controllers]] explains the protocol used by the wiimote extensions.
+
* [[Wiimote/Motion analysis|Motion analysis]] gives hints how to implement accelerometer parsers.
+
* [[Wiimote/Pointing|Pointing]] shows how to create a pointing device with IR data.
+
* [[Wiimote/Library|Library]] lists several wiimote library implementations.
+
* [[Wiimote/Mii Data|Mii Data]] shows raw wiimote data dumps.
+
+
== Acknowledgements ==
''Some of the information here is based on the documentation at Wiili''
''Some of the information here is based on the documentation at Wiili''
[[Category:Hardware]]
[[Category:Hardware]]