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,023 Responses

  1. Oliver says:
    Widcomm

    I saw the reference to earlier Widcomm drivers on this page: http://www.dev-toast.com/2007/01/05/uncrippling-bluetooth-in-vista-rtm

    It’s about Vista but I guess it applies to XP as well.

    Oliver

  2. Thanks for Mac Support!

    Hi Uwe,
    I’ve got to say your are a real trooper for getting this going – being a mac user, I’m used to missing out on all this fun stuff! I’ll be getting this going on my Powerbook G4 over the next week – I can’t wait to impress, well, anyone who’ll listen!
    Keep up the good (groundbreaking) work.
    Cheers from Australia, Kearon

  3. Uwe says: in reply to Efex
    BlueSoleil

    Hi Efex,

    WIDCOMM only works with some (licensed?) USB Bluetooth adapters as far as I know.
    Here’s the story about BlueSoleil:

    Flow: WiimoteWhiteboard » WiiRemoteJ » JSR-082 (BlueCove) » OS » Bluetooth Stack (e.g. WIDCOMM) » Bluetooth Controller (e.g. USB dongle)

    I started requests for evidence about the successful combination of BlueCove, BlueSoleil and my software/WiiRemoteJ here and here. Nobody cared. I’m honestly a little confused about this…

    Uwe

  4. Uwe says: in reply to Oliver
    Re: Multiple wiimotes: Case 4

    What you outlined may work. It would still require some careful positioning of the Wiimote though. I’ll think about this feature once cases 1 and 2 are working well…

    Uwe

  5. Uwe says: in reply to Anonymous
    Re: Multi Point

    With the included TUIO support, you can use up to 4 pens and have their positions send to other applications. My software will only use the first pen’s position to control the mouse cursor.

    Uwe

  6. Uwe says: in reply to Pascal L
    Linux

    Hi Pascal,

    I already said some words about Linux compatibility in a previous post. My software now uses a BlueCove 2.0.3 snapshot, but you still need to download the BlueCove GPL module that supports BlueZ on Linux.

    One user did all this but didn’t succeed. I’m unable to test it due to the lack of a Linux system and time.
    There is one alternative worth exploring if you know how to compile my software: Download the source code and use the Avetana bluetooth library instead ob BlueCove.

    Uwe

  7. MacTipper says:
    Do you really need a wiimote?

    Okay, the subject probably sounds stupid, but, if we’re running this on intel macs, why do we need a wiimote? There’s a IR sensor built right in!

    I don’t know how hard this would be, but wouldn’t it be possible to use the IR sensor in my Macbook Pro?

    Oliver

  8. toco says: in reply to MacTipper
    Yes you need a wiimote.

    You really need a wiimote, because in the MacBook Pro is just a IR sensor and not an IR cam.
    With the sensor you can determine whether the IR LED is turned on or of, but with the IR cam in the Wiimote you can determine the position of the IR LED.

    toco

  9. Saleem says:
    IR lasers

    Hi all,

    Great work on this project, Uwe!

    My apologies if this is a silly question, but….
    Does the wiimote pick up light directly from the tip of the pen, or is it picking up the light when it is reflected on the whiteboard? If the latter, wouldn’t one of these: http://www.bhphotovideo.com/c/product/443847-REG/Morovision_ITTA_271952_IR_Laser_Stick_.html be perfect as a pen, and even work from a long distance, say in the back of a room?

    Saleem

  10. Uwe says: in reply to Saleem
    Re: IR lasers

    Hi Saleem,

    this is not a silly question and other people are also talking about it.
    Have a look at this thread about IR lasers and the Wiimote.
    The Wiimote is picking up the 4 brightest IR dots it can see, which can be reflections. But that’s not whole story. The Wiimote actually includes a normal camera with an IR filter in front of it to block non-IR light. People have removed the IR filter and used regular laser pointers with it. Have a look at this video and this recent thread.

    Uwe

  11. johannes says:
    Errors with JDK 1.6 on Mac OS X

    Hi Uwe,
    I tried to compile and run WiiWhiteboard with eclipse on Mac OS X but failed at first. The problem is that the bundled BlueCove jar does obviously not work with the “new” 1.6 of Apple. I ran the Ant script of BlueCove to make a new jar but it still failed. So I chose 1.5 as JDK and it all worked.

    Somehow strange…

    Anyway, I want to try to enhance/reuse the app in order to enable a face tracking scenario with the Wiimote and a goggle with IR LEDs on both sides (just like in the Johnny Cung Lee head tracking video).

    Cheers
    johannes

  12. Uwe says: in reply to johannes
    Re: Errors with JDK 1.6 on Mac OS X

    Hi Johannes,

    I tried to compile and run WiiWhiteboard with eclipse on Mac OS X but failed at first. The problem is that the bundled BlueCove jar does obviously not work with the “new” 1.6 of Apple. I ran the Ant script of BlueCove to make a new jar but it still failed. So I chose 1.5 as JDK and it all worked.

    You could post this at the BlueCove Users Group. The lead developer usually replies very quickly.
    I have a first generation Macbook (32-bit CPU) and hence can’t use the new Java 1.6 (thanks Apple!).

    Anyway, I want to try to enhance/reuse the app in order to enable a face tracking scenario with the Wiimote and a goggle with IR LEDs on both sides (just like in the Johnny Cung Lee head tracking video).

    This is great news! Don’t hesitate to ask if you need help understanding my (mostly undocumented) code. I’m pretty sure there are many users eagerly waiting for head-tracking on their Macs.

    It would be great if you could separate the head-tracking logic from the “3D graphics display”. Other applications would be able to reuse your implementation…

    Uwe

  13. Descalzo says:
    Yours vs. Johnny’s version

    I finally up and tried the cross-platform Java version in Windows. I decided I could use the many extra features your version provides. But it just doesn’t work as well as Johnny’s. It’s the sensitivity still. I can’t imagine why it would have this problem. If I reset the WiiMote many, many times I might get decent sensitivity, but it always works perfectly with Johnny’s version the first time. I know you’re working on improvements even as I write this, but I thought I’d point it out. I can’t wait to be able to use your version all the time! I’m working on different placement for the WiiMote, and we’ll see what happens. Maybe it will work better once you get the 2-WiiMote implementation done.

  14. Johannes says: in reply to Uwe
    Head-tracking for mac

    I’m still wondering whether it makes sense to implement the head-tracking in Java. In my opinion this depends on the scenario in which the head-tracking will be used. Mostly it will be a 3D scenario in which every bit of GPU and CPU power is needed.

    However, my context would be a Quartz Composer (QC) channel that is used to set the virtual camera of a rapidly composed 3D scene. As I’m not keen to spend hours on tweaking the Darwiin Remote implementation (as I’m more into Java to be honest…) I’m considering to use a Java channel in QC (if this is possible at all) with your implementation as a foundation. A result could be some kind of interface, which yields angle and distance of a head. That would keep things very basic…

    Anyway do you know a programmatic way to remove a Bluetooth device from Mac OS X’s Bluetooth devices list by just pushing a button in a Java GUI? I still have the same problems with WiimoteWhiteboard as in DarwiinRemote. Before I can connect to my Wiimote I must remove it from the Bluetooth devices list. Would be nice if this could be put in a button (or in the according fetched Exception in the source code). Maybe this could be achieved with an AppleScript, which is triggered by the Java app…

  15. Uwe says: in reply to Descalzo
    Re: Yours vs. Johnny’s version

    Hi Descalzo,

    But it just doesn’t work as well as Johnny’s. It’s the sensitivity still. I can’t imagine why it would have this problem. If I reset the WiiMote many, many times I might get decent sensitivity, but it always works perfectly with Johnny’s version the first time.

    I also don’t know why this is the case…

    I know you’re working on improvements even as I write this, but I thought I’d point it out. I can’t wait to be able to use your version all the time! I’m working on different placement for the WiiMote, and we’ll see what happens. Maybe it will work better once you get the 2-WiiMote implementation done.

    I actually haven’t changed the code for about two weeks now. Support for 2 Wiimotes is basically implemented, but there is an issue with WiiRemoteJ that prevents the release of a new version. A Bluetooth exception is thrown every 20 seconds if only one Wiimote is connected (due to the ongoing Bluetooth discovery in the background). The developer of WiiRemoteJ told me he wanted to have it fixed it two weeks ago, but it seems he’s either busy or it’s hard to fix. Have a look at these threads (1, 2) for more information.

    Uwe

  16. Uwe says: in reply to Johannes
    Re: Head-tracking for mac

    Hi Johannes,

    Anyway do you know a programmatic way to remove a Bluetooth device from Mac OS X’s Bluetooth devices list by just pushing a button in a Java GUI? I still have the same problems with WiimoteWhiteboard as in DarwiinRemote. Before I can connect to my Wiimote I must remove it from the Bluetooth devices list. Would be nice if this could be put in a button (or in the according fetched Exception in the source code). Maybe this could be achieved with an AppleScript, which is triggered by the Java app…

    Are you using a PowerPC Mac? If so, this is a known issue. If not, let me say that I don’t have that problem on my first-gen MacBook.

    The funny thing is that a while ago I actually tried to write an AppleScript to delete the Wiimote from the Bluetooth list of known devices (for PowerPC users). I only succeeded in detecting the Wiimote in that list, I wasn’t able to delete it. I assume it can’t be done with an AppleScript (I like to be proven wrong). And I also just tried the script and it doesn’t work on Leopard…

    AppleScript that detects if a Wiimote is in the list of Bluetooth devices (only tested on Mac OS X Tiger):

    if (CPU type of (system info) starts with "PowerPC") then
    
    	tell application "System Preferences"
    		activate
    		set the current pane to pane id "com.apple.preferences.Bluetooth"
    	end tell
    
    	tell application "System Events"
    		tell application process "System Preferences"
    			set frontmost to true
    			delay 0.2
    			tell window "Bluetooth"
    				tell tab group 1
    					click radio button "Devices"
    					delay 0.2
    					set WiimoteExists to exists static text "Nintendo RVL-CNT-01" of list 1 of scroll area 1 of scroll area 1 of browser 1 of splitter group 1
    				end tell
    			end tell
    		end tell
    	end tell
    
    	tell application "System Preferences"
    		if WiimoteExists then
    			display dialog "\"Nintendo RVL-CNT-01\" (Wiimote) already exists in the \"Bluetooth Devices\" list. You have to delete it from there to be able to connect from the WiimoteWhiteboard application. Unfortunately this has to be done after each successful connection (on a PowerPC Mac)." with title "Warning" buttons "OK"
    		else
    			quit
    		end if
    	end tell
    
    end if
    

    Uwe

  17. Descalzo says:
    Curiouser and curiouser

    I tried it again. I booted into Tiger and used only the internal (poopy) BT module. I went and uninstalled your program and reinstalled it. It’s working. I had to quit and reconnect, then it worked. I don’t know what changed. Planetary alignment, maybe?

    I thought you might like to know.

  18. Johan says:
    Mouse drags not recognized by Rita

    I’m trying to use the nice Mac drawing application Rita to draw using the Wiimote Mac driver version 0.9.5, but Rita only recognizes mouse clicks from the pen so it’s not possible to draw a line. Dragging the pen while “clicked” only results in a dot at the beginning of the drag.

    On the other hand Skitch works great for drawing, but I prefer some of Rita’s drawing tools.

    According to Rita’s developer it uses standard Cocoa events for mouse and pen so it should work with all mouse input devices.

    Any ideas why Wiimote Whiteboard doesn’t work with an application like Rita, while it works with another drawing application like Skitch?

  19. Thanks

    Just built a IR pen today and got your mac version of writeboard software working on my G4 powerbook OS 10.4.10. I’m a student studying Post Grad Digital Media Arts at University of Brighton, UK and this is gonna be extremely useful for my work there. Keep up the good work.
    http://www.renderghost.co.uk/

  20. Uwe says: in reply to Johan
    Re: Mouse drags not recognized by Rita

    Hi Johan,

    I downloaded Rita and could reproduce your problem. Strange enough, if you for instance use the line tool it will actually draw a very thin line. But this thin line is somehow “not real” and disappears when the canvas is repainted (in that area). Maybe you understand what I mean.

    Anyway, I don’t know why this happens since the program somehow recognizes the mouse (even if not properly). I can just tell you that I use the class java.awt.Robot to have access to the OS’ mouse. On Mac OS X, this class uses another class apple.awt.CRobot by Apple to actually control the mouse (via JNI I guess). I neither have access to the source code of the latter class nor do I know which native function is called by it. I’m not really into native Mac programming, maybe someone else can shed light on this.

    It seems odd after all that it doesn’t work in such a “standard cocoa app”. I even found a YouTube video of someone playing Warcraft III with my software on a Mac.

    Uwe

  21. Johan says:
    Re: Mouse drags not recognized by Rita

    Uwe,

    I’ve asked Rita’s developer about this and he thinks that Wiimote sends mouse events with pressure=0, while a mouse sends pressure=1 and a drawing tablet sends whatever pressure is applied to the pen. In other words, any pressure aware application probably shows this problem with Wiimote.

    /Johan

  22. Uwe says: in reply to Johan
    Re: Mouse drags not recognized by Rita

    Hi Johan,

    that explanation makes perfect sense to me. Just for clarification, the Wiimote itself doesn’t send any mouse events, my software does by using java.awt.Robot which in turn uses apple.awt.CRobot on the Mac.

    In fact, I could verify it by using the CocoaTigerTablets.zip sample code from Wacom’s Mac Downloads. Now if there was a way to change or reinsert those events with pressure set to 1. Any Mac/Cocoa developers around?

    Uwe

  23. Descalzo says:
    Reset Wiimote

    I did some more experimentation with the Reset Wiimote button last night on my Mac. I noticed that pressing the Reset Wiimote button doesn’t seem to do anything that I could tell, but closing then reopening the application DID work. I am going to do some more checking on this later, but I wanted to see what other people have noticed.

  24. uv8b49cd says: in reply to Descalzo
    In Windows I have made

    In Windows I have made similar observations – but sometimes the reset button actually works. I find that it is most important to close the app proberly before shutting down my computer – and also waiting for all other programs in the startup group to initialize before activating Uwes application. I seldom have problems with the sensitivity when observing these rules – but still it would be nice to quit worrying about it all together (the problem almost allways pop up when I want to demonstrate the board to other teachers)

    Thank you Uwe for a great app – the rightclick is perfect …and the ability to draw straight lines is way better than in Johnnys original software.

  25. Uwe says:
    Version 0.9.6 released

    Changes:
    * Added support for 2 Wiimotes (major code change)
    * GUI changes
    * New Icon
    * Updated Help

    Uwe

  26. Francisco says:
    Self-explained images

    The version 0.9.6 works great for me! (tested with 1 wiimote)

    I made 3 pages about Wiimote Whiteboard:

    the main
    http://www.clinik.net/wiimote/

    the info
    http://www.clinik.net/wiimote/wiimote_info.php

    the working
    http://www.clinik.net/wiimote/wiimote_info_working.php

    I hope it help people like me (not so expert in this hi-tech things :) to understand the Wiimote Whiteboard functioning and, therefore, to try it!
    The images are self-explained, attractive and simple!
    Please, feel free to use those links above…

    Good work Uwe!!!
    Francisco

  27. wolih @ WiiMote Project Forum says:
    My version doesn’t work!

    Hi. I previously used the C# version and it worked fine. I see that your version is much better, so I wanted to use it. When I run the program, it returns an error saying:

    Wiimote failed to connect
    Not supported on bluesoleil

    I tried to use it with the device already detected by bluesoleil, and when not detected.
    Both give me the error.

  28. Descalzo says:
    WOW

    Fransisco,
    That’s a beautiful page you have. I am truly amazed.

  29. Re: My version doesn’t work!

    Hi, please see this previous post about BlueSoleil. Also do not connect the Wiimote with the BlueSoleil software.

    Uwe

  30. Uwe says: in reply to Francisco
    Re: Self-explained images

    Thank you Francisco for making those beautiful explanatory images, but especially for the new icon!

    Uwe

Leave a Reply