This program allows you to use the Wii Remote (Wiimote) to turn any surface into a Low-Cost Interactive Whiteboard. It is based on Johnny Lee’s original WiimoteWhiteboard program that is written in C# and available for Windows only. My program uses Java to allow for (some) platform-independence. I also provide a Mac-only version since I’m a Mac user and this is, up to my knowledge, currently the only such program for the Mac. For Windows only, Boon Jin has enhanced Johnny’s software and created the shareware program Smoothboard. There is also a SourceForge project that provides other implementations, but it is not getting much attention.
Check out the video and the other cool projects at Johnny Lee’s page if you have no idea what I’m talking about
.
Features in a nutshell
- Open source
- Runs on Mac OS X, Windows, and Linux
- Simple User Interface available in English, Estonian, French, German, Indonesian, Italian, Polish, Portuguese, Russian, Slovene, and Spanish
- Camera Monitor and Calibration Details for better Wiimote placement
- Auto-connects up to 2 Wiimotes
- Right-click support, double-click assistance
- Mouse cursor smoothing

- Screen selection
- Touchpad Mode
- Update notification
- TUIO/OSC support for multitouch applications
More details in the Wiki.
Download (1.0.3)
Some example videos
Documentation & Support
You can post your comments, bug reports, feature requests, etc. at the bottom of this page. The latest documentation is available in the Wiki. You can also find out how you can help.
The wiimoteproject.com forums are a great resource for everything Wiimote. You may use this subforum to discuss everything related to my software. The Smoothboard Wiki also contains useful information for setting up your interactive whiteboard.
Infrared pens
You need a source of infrared (IR) light to use the software. Many people build their own IR pens for that purpose, usually by retrofitting some sort of marker. You’ll find all you need to know here. I started with a simple IR pen made from a battery clip.
There are also IR pens for sale if you don’t want to build one yourself. Several vendors sell different models, the IR Pen marketplace is a good place to get an overview.
You can use the coupon code uwe if you buy from IRPensOnline.com. This will give you a discount of $2 and I’ll get $1.
Compatibility
I only heard of few problems on Mac OS X, using the built-in stack. I also got reports from users who got the program running on Windows using either the Widcomm or BlueSoleil stack. It seems like Widcomm works better, see this post about BlueSoleil. You need to use the BlueZ stack on Linux, see the Wiki or this post for further instructions.
Issue on PowerPC Macs (excerpt from the WiiRemoteJ-README):
Note for Mac OS X PowerPC (PPC) users: you will have to delete the Wii Remote from your previous devices list in System Preferences->Bluetooth->Devices after each connection (every time you connect a given Wii Remote). Even then, the outgoing connection will still fail every other time. There is some sort of bug relating to HCI devices and Apple’s library. Luckily, it was fixed for the Intel Macs.
Further details can be found in the Wiki or the help files bundled with the application.
Subscribe

Hi,
Thanks, I appreciate that
You make a good point.
Uwe
Hi Uwe!
Here is my setup I am trying to get to work:
My laptop does not have in-built bluetooth so I bought one that connects via usb, and uses the software Bluesoleil. I tried it out, and everything is working super with Johnny Lee’s c# based program, as there I connect the Wiimote before using the program.
However with your application, I am stuck at the ‘Searching’ phase, therefore I cannot try it out, however I am really interested…
I’m pressing 1-2, but nothing happens, regardless of I connect/run Bluesoleil or not. I saw in previous posts that Bluesoleil should not run while your program is trying to connect the Wiimote, but it does net help. Should I get some new bluetooth driver installed, or simply the usb-bluetooth device is out of sight? Do you have any idea, what can be the problem? By the way your program does not give any errors, simply searches and nothing happens.
Hope you can help me somehow, i checked the previous posts but did not find anything useful
Greetings
Gabor
I am having the same problem with this error message coming up when I try to open Wiimote Whiteboard. I am running Mac OS X 10.5.7. Any suggestions?
Hi Gabor,
please see this post regarding BlueSoleil. In theory, my program shouldn’t work with it.
That’s odd. Could you please try this?
Uwe
Hi Matt,
have you tried this? Also read this.
Uwe
Hi, When i try to run the program it says “bluetooth failed to initialize. there is probably a problem with your local bluetooth stack or API.” Any help would be greatly appreciated.
Thanks
Hi,
have you tried this? Also read this.
Uwe
Hi Uwe,
I tryed out what you supposed, and saved the log to a txt file. Here is a link to it:
(Dunno how long it is there, write to me in private if you cant dl)
http://www.turboupload.com/ztvdxwdahnq4/javaoutput.txt.html
I tried it 3 different ways.
1- Bluesoleil not running, but usb device plugged in. (Pressing 1-2 on Wii as I supposed to)
2- Bluesoleil running, but wii is not connected as HID
3- Bluseoleil running and Wii is connected as HID
The result seem to be the same for me, therefore I attached only the 1.st version.
Hope this helps both of us, I see you complained earlier that noone made these tests. Hope this log helps a bit
Gabor
Just to let everyone else know, Gabor and I discussed this via email and the problem ended up in the familiar “Not supported on bluesoleil” error.
Uwe
Changes
* Added Localizations: Slovene, Italian, Estonian
* Using Bluecove 2.1.0
* Forcing 32-Bit Mode on Mac OS X (c.f. http://code.google.com/p/bluecove/issues/detail?id=35, no need to do this anymore: http://www.uweschmidt.org/comment/751)
Uwe
I first got the Wiimote, the IR pen, and the software set up yesterday, and things worked fine at first. I felt satisfied I would be able to use the system to add functionality to PowerPoint in lectures. Then today something screwy started happening. When I press buttons 1 and 2 on the Wiimote, the four blue LEDs start flashing, and at the moment the system seems to be engaged, but before I have had an opportunity to calibrate, the mouse cursor starts flitting around the screen, blinking, opening folders, opening programs in the Dock, and generally being impossible to control. If I manage to get the cursor on the WiimoteWhiteboard app window and click it in time, then I can get the thing to stop, but then the calibration doesn’t work. Usually I can’t even get this far and I have to power down the Wiimote. I’m using a MacBook Pro2,2 (15in), with Leopard (10.5.7). Any idea what is going on?
Fred
Hi Fred,
my initial guess from your description would be that other sources of infrared light, such as sunlight or light bulbs, can be “seen” by the Wiimote. That would explain the out of control behavior. The Wiimote can only track up to 4 distinct sources of infrared light and hence would be switching “targets” all the time.
Uwe
Hello!
Is this possible to integrate the Interactive white board software and wiimote presenter into single using two wiimotes.
If possible help me how to solve this?
Thanks & Regards,
Karumanchi
is this possible to use this code using multiple wiimotes atleast two so that i can use this both as white board and power point presenter
Hi Karumanchi,
while it certainly is possible to combine the two functionalities into a single application, I haven’t done it. It’s on my list of features I might add in the future. But don’t hold your breath, it’ll take a couple of months or may never happen…
In the meantime, why don’t you use two separate applications to get the job done?
Uwe
Hi Uwe:
I was thinking that it was a Bluetooth problem. It happens even when the Wiimote is under the table aiming away from any IR sources, and before I have made any attempt at calibration. I can’t even get to the calibration screen most of the time. The only way I can get back the control of the cursor is to turn off the power of the Wiimote.
It happens on another computer too…a new iMac that is also running Leopard.
I think it might be a problem with the Wiimote itself. Incidentally, I had trouble getting started in the first place. The first AA batteries that I put in wouldn’t work at all, even though I had taken them from a small flashlight that was shining very brightly. No LEDs lighted at all. When I put brand in new batteries, then I got it to work. That was the first night, when I tested out everything, and it all seemed to work well. This latest problem with the crazy cursor isn’t cured by putting in brand new batteries.
Thanks agaion.
Fred
I’m having the same problem with 10.5.7. Any fixes?
Same problem on 10.5.7
When trying to connect, I press 1+2 button. I get this
(WiiRemote.java:223) (BluetoothL2CAPClientConnection.java:36)
INFO 19:48:11 Calibration Event: SCREEN_CHANGED
FINE 19:48:16 WiiRemoteJ: Found Nintendo RVL-CNT-01 (00191D5197FB)
FINE 19:48:16 WiiRemoteJ: Nintendo RVL-CNT-01 is a Wii Remote.
INFO 19:48:17 WiiRemoteJ: btl2cap://00191D5197FB
BlueCove version 2.1.0 on bluez
5-ago-2009 19.48.57 wiiremotej.WiiDeviceDiscoverer getDevice
GRAVE: Error getting device!
java.io.IOException: WiiRemote failed to connect!
at wiiremotej.WiiRemote.construct(WiiRemote.java:321)
at wiiremotej.WiiRemote.
at wiiremotej.WiiDeviceDiscoverer.getDevice(WiiDeviceDiscoverer.java:121)
at wiiremotej.WiiRemoteJ.findDeviceInternal(WiiRemoteJ.java:342)
at wiiremotej.WiiRemoteJ.access$100(WiiRemoteJ.java:24)
at wiiremotej.WiiRemoteJ$1.run(WiiRemoteJ.java:426)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: Failed to connect. [115] Operazione ora in corso
at com.intel.bluetooth.BluetoothStackBlueZ.l2OpenClientConnectionImpl(Native Method)
at com.intel.bluetooth.BluetoothStackBlueZ.l2OpenClientConnection(BluetoothStackBlueZ.java:665)
at com.intel.bluetooth.BluetoothL2CAPClientConnection.
at com.intel.bluetooth.MicroeditionConnector.openImpl(MicroeditionConnector.java:395)
at com.intel.bluetooth.MicroeditionConnector.open(MicroeditionConnector.java:513)
at javax.microedition.io.Connector.open(Connector.java:97)
at wiiremotej.WiiRemote.construct(WiiRemote.java:313)
... 6 more
I am running it on Ubuntu Linux 9.04 2.6.28-14-generic.
Bluetooth packages installed from debian (4.42-2 version).
Added to your jar latest version of bluecove (2.1.0).
I can see the device on the bluetooth manager but I am NOT able to pair cause it is requesting a passkey.
I can connect by using
sudo hidd --scan
Note: “Operazione ora in corso” means “In progress…”
Hi John and M.,
do you have this problem running the latest version (1.0.0) of my software?
If so, you can download the cross-platform version and start the program with enabled debug-mode for BlueCove:
java -Dbluecove.debug=true -jar WiimoteWhiteboard.jar
That will cause BlueCove to print out lots of debug messages on the command line, which will help me understand the problem.
Sorry for the late reply,
Uwe
Hi Luca,
I guess you mean that you added bluecove-gpl-2.1.0.jar to my jar-file?
If you added bluecove-2.1.0.jar instead, that’s the problem.
There’s no need to pair the Wiimote.
Sorry for the late reply,
Uwe
Hi, I am a school teacher and I regularly use the wiimote whiteboard app. (It is superb!). I teach a little bit of physics so I also use the wiimote logger application to measure things such as centripital acceleration (I put the wiimote on a string and spin it around my head). I have a third feature that would be very useful in a physics classroom. In the IR Camera Monitor window you can see the multiple sources of IR light. Would it be possible to log the (x,y) co-ordinates of each of these points to a file?
This would allow me to place a source of infra red light on two carts and make them collide, and have data on their position at all points in time (it would demonstrate conservation of momentum). As well as this, a source of IR could be thrown acrose the room to analyse projectile motion.
An ideal system for me would be a single application that registed all the wii-motes available, and allowed you to specify what tasks you would like to perform with each (eg use wiimote 1 as a whitboard, log the data from the accelerometers in wiimote 2, and log the position of ir light from wiimote 3).
First of all: Thank you for making this amazing application available to us!
I have a question in regards to the format of the calibration file. I use the Wiimote Whiteboard to generate TUIO messages for a stage performance application. To maximize the avialble date I have created a calibration file with the maximum area settings:
001AE924122E
0.000000 0.999999 102 77
0.999999 0.999999 922 77
0.999999 0.000000 922 691
0.000000 0.000000 102 691
I think I understand the first pair of numbers to set the corners of my active tracking area. What are the second set of numbers for?
102 77
922 77
922 691
102 691
Also is there a way to start up Wiimote Whiteboard without mouse emulation?
Hi Cameron,
I’m glad you find my apps useful in your classroom.
It’s obviously possible to do that in general, it’s just takes time to actually do it.
I unfortunately don’t have much time right now, but I may add this feature to the Wiimote Logger application in a future release.
While this would be a nice feature for “power users” like you, it’ll probably be confusing for people who just wanna do a single thing. I have think about it.
Making it easier to connect to specific Wiimotes is a feature already on my TODO list.
Uwe
Hi,
You’re welcome.
The gist of what my program is doing, is mapping from Wiimote camera coordinates to computer screen coordinates. To “learn” this warping function, also called a perspective transform, you need to do a 4 point calibration. Then you can warp from any point in one coordinate system to the other.
Hence, the calibration file contains the mapping from Wiimotes camera coordinates (first two numbers, range 0 to 1) to your screen coordinates (last two numbers, range depends on screen resolution) for the 4 calibration points.
Using your calibration file and assuming your screen has a resolution of 1024×768, you can do a direct mapping from one coordinate system to the other by using this:
I’m not sure why you want to do this, but it can’t hurt to also read this.
Not right now, but it would be a very simple modification to the source code. Send me an email and I tell you how or I could even send you a modified version of the app if you want.
Uwe
Hi Uwe-
First off, thanks for the software, it’s pretty rocking. We got the Native Mac OS X version 0.9.9 working using Get-Info to turn on 32-bit mode (v. 1.0.0 still blows up our bluetooth stack).
We seem to have a problem where the wiimote doesn’t pick up the pen very well, often cutting out or responding really slowly. In watching a lot of the videos on youtube, it seems like the Windows version has greater resolution and response time.
We’ve tried many different wiimote placements, new batteries, and have the pens from Penteractive. Is there something we’re missing with our setup, or is the mac version a bit more pokey or something?
Any help from the community would be appreciated.
Best!
j
tell your students to turn off their cellphones. haha, well it’s probably because your school network uses bluetooth communication. you can’t stop your bluetooth from finding them but you can control which to connect to.
Hi Jason,
That’s odd, version 1.0.0 is supposed to force running in 32-bit mode without having to do the “Get-Info” fix.
I don’t know since I don’t actually use the software in a “normal” way. Your best bet is probably to ask the community over at the wiimoteproject.com forums.
Uwe
Hello, thank you for building a version for MAC. I have tested it on my macbook pro and iMAC and both worked beautifully. I am testing this for use at work with Webex webconf which has a built-in whiteboarding in addition to using it in our telepresence rooms where you are required to be sitting down. I’m looking forward to testing it further with all the extra equipment for an ideal setup. This is groundbreaking as this solves an issue in the business world.
Nothing to do… I get stuck here.
INFO 19:48:17 WiiRemoteJ: btl2cap://00191D5197FB
And fails the connection.
I tried Smoothboard and it connects successfully.
Is there something hardcoded like device name or something similar that can WiiMote Whiteboard not reach the completion of connection process?
Some controllers have different names, on the pattern of RVL-CNT-xx…
I’ll try to check your code in next days.