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 uwe, here are the screenshotz showing the problem of multiple screens, where mouse arrow stuck on the border after succesfull calibration. thx in advance
http://initi.sweb.cz/screens.jpg
it’s really cool!! Did you guys have a vc++ version ,I am
leaning the vc++ program language ,so if you guys have the vc++ version ,could you guys send one to me ,thanks !!!
I have set this up on a Windows Vista and a Mac OS X 10.5 computer at my school. This is how to do it………………
1. Position the Wiimote (Wii Remote) so it can fully see the image of your desktop. The image is usually projected by an image projector.
2. Download the executable Jar file.
3. Configure the Jar file with the on-screen details. (This took me several tries, so be patient………..)
4. Buy or make IR pens for the Wiimote to detect.
By the time you have finished this, you will have a working interactive whiteboard!!!!!!!!!!!!!
es fantastico
I must say that all these Wii hacking is pushing innovation really fast. The ideas that everyone has contributed and applied in their different situations are so exciting. I’m getting addicted even before I get my own Wii.
Keep up the good work!
Hi,
Actulaly I´m looking for a source code of a software like smoothboard written in C sharp,is that available ?
thank you,
mirna
Hello, I’ve been trying the wiimote project and everything is ok until I want to draw or write on the board. I just can’t do it. When I calibrate it, the tracking is 29 or 30%. What can I do?
Nope.
Uwe
Hi Mirna,
I don’t know. Why don’t you ask the author of Smoothboard?
I highly doubt that he’ll give you his source code, since he’s selling his software…
Uwe
Hi Edgar,
there’s no way of helping you with so little information…
Tracking utilization of about 30% should be fine.
Uwe
Changes
* Fixed “stuck mouse cursor”-bug when not using the primary screen
* Changed TUIO (message order, added “source” message, speed & acceleration added to “set” message)
* Switched to WiiRemoteJ v1.6a
* Added runtime option to use “dragging” right click behavior (see documentation)
Uwe
I’m having very hard time to connect the wiimote with my computer since my computer doesn’t have any bluetooth capability and operates on vista. The Bluetooth device I purchased a week ago didn’t support connection with the wiimote…Please, is there anyone that can provide more details about wiimote and computer connection. Thx a lot!!
Hello,
I am trying to connect my Wii remote to the software and am getting the message “WiiRemote failed to connect! Not supported on winsock.” I would love some help to resolve this problem.
Thanks
Hi Adrien,
see this post about Windows Vista.
Other than that I can only recommend the wiimoteproject.com forums.
Uwe
Hi Amanda,
please see this post.
Uwe
hello,(WiiRemoteJ.java:74)
Same problem here… used your instruction – no success
using xubuntu on an eee pc 901
bluetooth stack working normally, but running wiimotewhiteboard fails with:
JarClassLoader: Warning: Unable to load native library: java.lang.NullPointerException
Native Library bluecove not available
java.lang.IllegalStateException: Bluetooth failed to initialize. There is probably a problem with your local Bluetooth stack or API.
at wiiremotej.WiiRemoteJ.
…
though I integrated bluecove as shown here…
any suggestions appreciated
sincerely, thomas
Hi thoschi,
which version of my software are you running and which version of bluecove-gpl did you add to the WiimoteWhiteboard.jar?
Please do a unzip -l WiimoteWhiteboard.jar to get a listing of all files inside the JAR and either post it here or send it to me.
Uwe
Hello Uwe,
(WiiRemoteJ.java:74)(WiimoteDataHandler.java:84)(WiiRemoteJ.java:67)
I have exactly the same problem with Ubuntu 8.10
On WindowsXP (same System) Your program runs without any problems.
The version of your Software: 0.96-rc5-20070916-1932
eugen@junge:~/Desktop/Wii/WiimoteWhiteboard$ java -jar WiimoteWhiteboard.jar
JarClassLoader: Warning: Unable to load native library: java.lang.NullPointerException
Native Library bluecove not available
java.lang.IllegalStateException: Bluetooth failed to initialize. There is probably a problem with your local Bluetooth stack or API.
at wiiremotej.WiiRemoteJ.
at org.uweschmidt.wiimote.whiteboard.WiimoteConnector.connect(WiimoteConnector.java:48)
at org.uweschmidt.wiimote.whiteboard.WiimoteDataHandler.
at org.uweschmidt.wiimote.whiteboard.WiimoteWhiteboard.startup(WiimoteWhiteboard.java:98)
at org.jdesktop.application.Application$1.run(Application.java:171)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: javax.bluetooth.BluetoothStateException: BlueCove library bluecove not available
at com.intel.bluetooth.BlueCoveImpl.loadNativeLibraries(BlueCoveImpl.java:384)
at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:432)
at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:69)
at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1025)
at java.security.AccessController.doPrivileged(Native Method)
at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1023)
at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1016)
at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:77)
at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:97)
at wiiremotej.WiiRemoteJ.
... 12 more
Here are the files inside my WiimoteWhiteboard.jar
Archive: WiimoteWhiteboard.jar
Length Date Time Name
-------- ---- ---- ----
22 09-16-07 19:33 .version
1046 09-16-07 19:32 OneJar.class
1710 09-16-07 19:32 com/simontuffs/onejar/Boot$1.class
1915 09-16-07 19:32 com/simontuffs/onejar/Boot$2.class
1418 09-16-07 19:32 com/simontuffs/onejar/Boot$3.class
16249 09-16-07 19:32 com/simontuffs/onejar/Boot.class
1454 09-16-07 19:32 com/simontuffs/onejar/Handler$1.class
863 09-16-07 19:32 com/simontuffs/onejar/Handler.class
259 09-16-07 19:32 com/simontuffs/onejar/IProperties.class
868 09-16-07 19:32 com/simontuffs/onejar/JarClassLoader$1.class
974 09-16-07 19:32 com/simontuffs/onejar/JarClassLoader$ByteCode.class
25169 09-16-07 19:32 com/simontuffs/onejar/JarClassLoader.class
0 03-14-09 17:29 META-INF/
210 03-14-09 17:29 META-INF/MANIFEST.MF
0 03-14-09 14:46 lib/
318595 02-16-08 03:40 lib/AppFramework.jar
47160 03-07-08 23:16 lib/NetUtil.jar
91091 03-12-09 17:00 lib/WiiRemoteJ.jar
491638 10-11-08 23:05 lib/bluecove-2.0.3.jar
70787 01-06-08 14:54 lib/miglayout15-swing.jar
11103 09-20-07 18:29 lib/swing-worker.jar
1748 02-22-08 00:44 one-jar-license.txt
0 03-14-09 17:29 main/
208811 03-14-09 17:29 main/WiimoteWhiteboard.jar
59687 03-24-09 20:50 lib/bluecove-gpl-2.0.3-20080612.174321-73.jar
-------- -------
1352777 25 files
Can you help me?
Hi Eugen,
that’s not the version number of my software. Anyway, make sure you have the latest release.
You added the library correctly. Did you try using the final 2.0.3 release instead of a 2.0.3 snapshot? ? bluecove-gpl-2.0.3.jar
Have you checked that you fulfill all the requirements?
There also seems to be an alternative to bluecove-gpl, namely bluecove-bluez (BlueCove Linux D-Bus module). I haven’t tried it though.
Uwe
1. Attempts to ‘calibrate’ only reveals one calibration point towards the top left quadrant of the screen rather than 4 points near the corners. Attempted calibration on the point provided with 2 different LED pens with no results.
2. IR Camera Monitor sees blank screen.
Status:
Mac OS 10.5.6
Per previous post: Every successive session requires deleting the WiiMote device in the Bluetooth listing then restarting UWE SW. This successfully creates and connects the WiiMote as a bluetooth device and then software sees it.
WiiMote is connected in Bluetooth but not paired.
Quitting then rebooting the UWE SW does not see the previously connected device. Attempted adding a Bluetooth device via Bluetooth Prefs with same results.
Will continue trouble shooting and searching for resolutions.
Read earlier post regarding use/non-use of using Bluetooth setup and understand.
Where can I see or download the video?
Uwe:
I’m a mac user and have been for many years. In other words I can follow step by step instructions on how to do anything on a mac, but I’m not a technical person so I don’t know how to set up, connect and get the whole thing running. I need instructions for dummies you might say.
Do you have step by step set up from beginning to end instructions on how to get the withe board running, including hardware needed, and so on you know, for dummies?.
I’ll appreciate your help, I’ll even make a donation as a token of appreciation.
Thanks
Hi. I’m just an average user, and barely a Mac user, but I have a Mac at school and am having difficulty getting this to run on the Mac. I downloaded the program and added the Wiimote to the bluetooth devices list; however, after it connects, I lose the connection shortly after. I never get to the point where the program comes up to calibrate or anything. Is the problem the built-in stack? (whatever that is… I assume it’s the Bluetooth capability that’s built in to the system)
Right now, the only solution I see is to take my laptop into the classroom and run the PC version from it.
Is there something else I can try?
Thanks.
Hi Feeda,
are you talking to me or to yourself?
In other words, did you figure it out? If not, you might want to take a look at How To Use and Troubleshooting.
Uwe
Hi siervo,
If you have a Wiimote, an IR pen, and your Mac has built-in Bluetooth, you just need to follow these instructions.
Many more details can be found at this HOWTO for schools.
Which video? My videos are on YouTube.
Uwe
Hi Lauri,
You mustn’t pair the Wii Remote to Mac OS X, otherwise my program cannot properly access it.
This could be the problem here, try deleting the Wii Remote from the list of Bluetooth devices and start my program again.
Uwe
Hi uwe!
mann, mann- jetzt bin ich aber am ende! ich wühle mich seit ner ewigkeit durch das forum, in der hoffnung etwas zu finden oder weil ich vielleicht etwas übersehen haben könne. das forum ist mir aber gelinde gesagt zu technisch, ich kann nichts kompilieren oder umschreiben- und überhaupt verstehe ich programmiertechnisches nur begrenzt.
auf meinem anderen system (xp 32bit) lief alles einwandfrei, einfach bluetooth (von windows) aktiviert und dann lief johnny’s software oder eben das softboard. super tracking, selbst mit abstand von 15cm, hat nur den “reflektionspunkt” erkannt, toll.
jetzt habe ich vista buisness 64bit und alles ist anders..
1. johnny’s whiteboard: funktioniert, aber nur bis NACH der kalibrierung, dann lässt sich der cursor nicht bewegen.
– angezeigt werden übr. 1/2 ir-dots
2. softboard funktioniert, hat aber ne grottig schlechte abtastung, krakelt nur rum und erkennt wohl auch plötzlich mehr als einen ir-dot- bzw. ist sehr ungenau- ist also auch nicht so toll.
3. dann habe ich deine weiterentwicklung von johnny’s weissbrett ersurft und war erstmal happy über das “nutshell”
-> mit viel hin und her, bluesoleil rauf und runter, bluecove in zig versionen erst hier und dort hin, dann endlich ins java extension-folder (hab keine readme gefunden) usw.. eine step-by-step-anleitung wäre toll- es sei denn, es sollte mehr oder weniger automatisch funktionieren, dann bräuchte ich die nicht
am besten ein komplettes package- ich bin zwar des englischen mächtig, aber im technischen bereich dann doch etwas begrenzt.
lange rede kurzer sinn, es läuft nicht. da gibt im forum es zig möglichkeiten, was es sein könnte und ungefähr genauso viele lösungsvorschläge, die leider schwer umzusetzten sind oder nicht ausreichend helfen, oder nur vermutungen sind.
deshalb mal in der muttersprache hier, einfach mal das log, vllt kannst du ja etwas licht ins dunkel bringen..:
INFO 11:58:26 Calibration Event: SCREEN_CHANGED(WiiRemote.java:223)
FINE 11:58:38 WiiRemoteJ: Found Ef-PC (001BFC126936)
FINE 11:58:38 WiiRemoteJ: Ef-PC is NOT a known device.
FINE 11:58:38 WiiRemoteJ: Found Nintendo RVL-CNT-01 (002147F31F1D)
FINE 11:58:38 WiiRemoteJ: Nintendo RVL-CNT-01 is a Wii Remote.
INFO 11:58:38 WiiRemoteJ: btl2cap://002147F31F1D
WARNING 11:58:38 WiiRemoteJ: Error finding devices.
java.lang.IllegalArgumentException: PCM values restricted by JAR82 to minimum 4097
at com.intel.bluetooth.MicroeditionConnector.validateL2CAPPSM(MicroeditionConnector.java:434)
at com.intel.bluetooth.MicroeditionConnector.openImpl(MicroeditionConnector.java:336)
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)
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(Unknown Source)
-
-
-
“java.lang.IllegalArgumentException: PCM values restricted by JAR82 to minimum 4097″ ist natürlich wohl das problem, aber ich hab echt keine ahnung, was ich da wo und wie implemetieren soll- und schätze, wenn ich das geschafft hätte, kommt das nächste problem (war in einem thread so).
fällt dir was ein?
hoffnungsvoll,
harnstein
Hoping for an ‘aha’ response, but appreciate the links to provide guidance and support.
Still have the calibration issues and will use resources to debug.
Hi Uwe,
I´m having a problem compiling your java version on windows.
Could you please tell me what to do?
Thanks in advance,
Mirna