uweschmidt.org

42 / π ≈ 13.37 

Wiimote Whiteboard

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.

1,066 Responses

  1. Uwe says: in reply to Anonymous
    Re: Nicely done

    Hi,

    First, great app Uwe. You’re definitely making things easy for people to adapt this tech and give it a whirl.

    Thanks, I appreciate that :)

    Make sure it’s copied to your drive and not just in the .DMG image before you set the “32-bit mode” flag like Uwe mentioned earlier.

    You make a good point.

    Uwe

  2. Gabor says:
    your project vs Bluesoleil

    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

  3. Matt says:
    Problem

    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?

  4. Uwe says: in reply to Gabor
    Re: your project vs Bluesoleil

    Hi Gabor,

    please see this post regarding BlueSoleil. In theory, my program shouldn’t work with it.

    By the way your program does not give any errors, simply searches and nothing happens.

    That’s odd. Could you please try this?

    Uwe

  5. Uwe says: in reply to Matt
    Re: Problem

    Hi Matt,

    have you tried this? Also read this.

    Uwe

  6. Anonymous says:
    Problems running program on macbook pro

    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

  7. Uwe says: in reply to Anonymous
    Re: Problems running program on macbook pro

    Hi,

    have you tried this? Also read this.

    Uwe

  8. Gabor says: in reply to Uwe
    Re: your project vs Bluesoleil

    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

  9. Uwe says: in reply to Gabor
    Re: your project vs Bluesoleil

    Hope this helps both of us, I see you complained earlier that noone made these tests. Hope this log helps a bit

    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

  10. Uwe says:
    Version 1.0.0 released

    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

  11. Fred says:
    I don’t have an easy description of this problem

    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

  12. Uwe says: in reply to Fred
    Re: I don’t have an easy description of this problem

    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

  13. karumanchi says:
    combining projects

    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

  14. karumanchi says:
    nice job

    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

  15. Uwe says: in reply to karumanchi
    Re: combining projects

    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

  16. Fred says: in reply to Uwe
    Re: I don’t have an easy description of this problem

    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

  17. John Stoner says: in reply to SDRAMBLER
    Re: Software problem

    I’m having the same problem with 10.5.7. Any fixes?

  18. M. Brady says: in reply to John Stoner
    Re: Software problem

    Same problem on 10.5.7

  19. Luca says:
    Interested on developing but… A bug on testing!

    When trying to connect, I press 1+2 button. I get this

    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.(WiiRemote.java:223)
    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.
    (BluetoothL2CAPClientConnection.java:36)
    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…”

  20. Uwe says: in reply to M. Brady
    Re: Software problem

    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

  21. Uwe says: in reply to Luca
    Re: Interested on developing but… A bug on testing!

    Hi Luca,

    Added to your jar latest version of bluecove (2.1.0).

    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.

    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

    There’s no need to pair the Wiimote.

    Sorry for the late reply,
    Uwe

  22. Cameron Rogers says:
    a Classroom Wiimote app?

    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).

  23. Calibration File Format

    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?

  24. Uwe says: in reply to Cameron Rogers
    Re: a Classroom Wiimote app?

    Hi Cameron,

    I’m glad you find my apps useful in your 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?

    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.

    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

    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

  25. Uwe says: in reply to Virtual Magician
    Re: Calibration File Format

    Hi,

    First of all: Thank you for making this amazing application available to us!

    You’re welcome.

    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?

    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:

    001AE924122E
    0 1 0 0
    1 1 1023 0
    1 0 1023 767
    0 0 0 767
    

    I’m not sure why you want to do this, but it can’t hurt to also read this.

    Also is there a way to start up Wiimote Whiteboard without mouse emulation?

    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

  26. Jason Kunesh says:
    bad resolution/good wiimote placement?

    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

  27. Anonymous says: in reply to Anonymous
    Re: Error connecting remote

    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.

  28. Uwe says: in reply to Jason Kunesh
    Re: bad resolution/good wiimote placement?

    Hi Jason,

    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).

    That’s odd, version 1.0.0 is supposed to force running in 32-bit mode without having to do the “Get-Info” fix.

    [...] it seems like the Windows version has greater resolution and response time. [...] Is there something we’re missing with our setup, or is the mac version a bit more pokey or something?

    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

  29. Carina says:
    Thank you

    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.

  30. Luca says: in reply to Uwe
    Re: Interested on developing but… A bug on testing!

    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.

Leave a Reply