Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
April 1, 2017 13:57
April 1, 2017 13:57
June 26, 2017 18:38

Managed Library for Nintendo's Wiimote v1.7.0.0

by Brian Peek

A library for using a Nintendo Wii Remote (Wiimote) from .NET.

This project started life as an article for Microsoft's Coding4Fun website. A full set of API docs can be found in the release package.



o Writing registers is now properly waiting for the Wiimote to reply
  before continuing...this removes all of the Thread.Sleep() calls and
  should *greatly* improve performance when setting LEDs and rumble
  (Serial Nightmare &
o Guitar Hero: World Tour Guitar and Drums now properly recognized and
  used (, tested by Tyler Tolley and Mauro Milazzo)
o Guitar whammy bar is now a 5-bit value instead of 4 (
o Position of 4 IRs now properly reported in Basic reporting mode
  (Dan Carter)
o Found1/2 now properly reported in MSRS (reported by akka243)
o MSRS project updated to Microsoft Robotics Developer Studio 2008


o Added "center of gravity" calculation to the Wii Fit Balance Board
  (thanks to Steven Battersby)
o Structs are now marked [Serializable] (suggested by Caio)
o Battery property is now a float containing the calculated percentage
  of battery remaining
o BatteryRaw is the byte value that used to be stored in the Battery
o WiimoteTest app now reads extensions properly when inserted at startup
o Exposed HID device path in new HIDDevicePath property on Wiimote object
o Changed the time delay on writes to 50ms from 100ms...this should
  improve responsiveness of setting LEDs and rumble


o Ok, Balance Board support is *really* fixed this time
  (thanks to Manuel Schroeder, Eduard Kujit and Alex Wilkinson for testing)
o LED checkboxes are properly set on the WiimoteTest tabs


o Oops...a last minute change broke the one thing I was adding:  Balance
  Board support.  Should be working now...(identified by Manuel Schroeder)


o Wii Fit Balance Board support
o The GetStatus() method now waits for a response from the Wiimote before
o Bug fix for ButtonsExtension report type (0x34)


o Multiple Wiimotes supported!
o Slight change to ExtensionType enum for better extension detection
o Decided I didn't like the dependency on System.Drawing for the 2D point
  so am now using my own Point structs.  Sorry...
o WiimoteTest app updated to show multiple Wiimotes working


o SetReportType contains an overload taking a new IRSensitivity parameter
  which will set the IR camera sensitivity when using an IR report type
o Created new WiimoteException type which is now thrown by the library
o Moved InputReport enum to namespace level
o Events now using the generic EventHandler class instead of custom
o Refactored the state structures to use Point/PointF and my own
o Refactored IR sensors to be an array
o Added support for the Guitar Hero controller
  (tested by Matthias Shapiro, Evan Jacovier)
o Test app will run without Wiimote connected (Andrea Leganza)
o ReadData now returns the proper amount of data for requests of more than
  16 bytes (reported by David Hawley)
o Test application updated with above changes
o Lots of breaking changes, but the survey on my site said most didn't care
  about backwards compatibility...  :)


o Added support for IR 3 and 4 (Johnny Lee)


o Moved to CodePlex! (
o New license!  Please read the included license.txt/copyright.txt for more
  info.  This likely doesn't change anything for anyone, but at least now
  it's official.
o AltWriteMethod deprecated.  Connect will now determine which write method
  to use at runtime.  It remains in case someone needs to override the
  write method for some reason. (gl.tter)
o WiimoteState.LEDState is now filled with proper values.
  (identified by gl.tter/Leif902)
o Extensions that are attached at startup are now recognized properly.
  (identified by Will Pressly)
o "Partially inserted" extensions now handled properly (Michael Dorman)
o SetRumble method now does this via the SetLEDs method instead of using the
  status report to avoid a needless response from the Wiimote. (Michael Dorman)
o IRState now contains RawMidX/Y and MidX/Y containing the value of the
  midpoint between the IR points.
o Async reads now begin after the data parsing and event has been raised.
  This should lead to non-overlapping events.
o Updated the test application with the above changes and cleaned up the UI
  updates by using delegates a bit more effeciently.

Breaking Changes (may not be a complete list)
o LEDs renamed to LEDState
o GetBatteryLevel renamed to GetStatus
o OnWiimoteChanged renamed to WiimoteChanged
o OnWiimoteExtensionChanged renamed to WiimoteExtensionChanged
o CalibrationInfo renamed to AccelCalibrationInfo
o Event handlers renamed to WiimoteChangedEventHandler and


o Support for XP and Vista x64 (Paul Miller)
o VB fix in ParseExtension (Evan Merz)
o New "AltWriteMethod" property which will try a secondary approach to writing
  to the Wiimote.  If you get an error when connecting, set this property and
  try again to see if it fixes the issue.
o Microsoft Robotics Studio project
  Open the WiimoteMSRS directory and start the Wiimote.sln solution to take a
  look! (David Lee)


o Calibration copy/paste error (James Darpinian)


A library for using a Nintendo Wii Remote (Wiimote) from .NET.








No packages published