uweschmidt.org

nothing too important

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

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.

850 Responses

  1. Anonymous says:
    Thanks Uwe!
    I finally

    Thanks Uwe!

    I finally figured out that although I am getting the message, I can still calibrate and successfully move forward with my experiment.

    I got the whole thing to work last night and I am delighted. My next problem has nothing to do with your mac software, but I will pose it non-the-less in case you have any wisdom…After arduously moving my wii remote into a position that would calibrate on my white board, someone crashed into my tripod and now I cannot seem to find the correct height/angle to successfully calibrate. Can anyone articulate the best way to place a remote so that is it is appropriately angled for the whiteboard? I have watched Johnny Lee’s YouTube video, but it did not provide me with enough clues to determine what I am doing wrong.

  2. Uwe says:
    Catching up

    Hey guys!

    P.S….will a higher output IR LED allow for the wiiremote to be placed further away from the board? I currently can only have it about 1.5 meters away. Anything further than that and it doesn’t work.

    I suggest you have a look at the wiimoteproject.com forums, this post is especially good. The Wiimote can also apparently “see” some wavelengths better from further away. I’m be no means an expert on that. I just remember having read it somewhere.

    I still only can see IR sources if I run the application via the command line using “java -jar …”. Running the application (on the mac) or double clicking the jar starts the program, but I can’t seem to detect the IR pen.

    That’s odd. You mean the program starts up fine and successfully connects but no IR dots are detected? Did you do that like ten times in a row and always the same behavior?

    … with your software I am back to the situation I had with less bright LEDs…jagged and broken lines when drawing and loosing windows when I move them. Using Johnny Lees app eliminates these problems totally.

    Johnny’s app doesn’t really do any magic :) It could have something to do with his Wiimote library. It’s unlikely but I haven’t looked at the code. But here comes a general thing:

    The communication with the Wii Remote is undocumented and not fully understood. All that is known has been found out by members of the community through reverse engineering.

    Just consider this quote from Wiibrew:

    After these steps, the Wii Remote will be in one of 3 states: IR camera on but not taking data, IR camera on and taking data and half sensitivity, IR camera on and taking data at full sensitivity. Which state you end up in appears to be pretty much random. Repeat the steps until you’re in the desired state.

    So far I’m not aware of a way to query the IR camera’s state. That’s the reason why the program behaves differently sometimes. A future version of the software will have some “Reset Camera” function that re-initializes the IR camera.
    So please test several times before thinking it always works like on first try.

    … Other than that it is great software !!! – but I´m back to the long startup with Bluetooth connecting …

    The current version (0.9.1) always does a bluetooth device discovery and will connect to the first Wiimote that is found. I’m planning to include the option of connecting to a specific Wiimote by using its Bluetooth address. It is much quicker and has the advantage that nobody else can interfere with another Wiimote (like in a classroom) and beeing connected first.

    … and imouse or Dmouse as free rightclick apps running too.

    Why aren’t you using the built-in right click function? If it’s because it doesn’t work well in Windows, that will be fixed in the next version (already implemented, see Julien’s post).

    I finally figured out that although I am getting the message, I can still calibrate and successfully move forward with my experiment.

    Which message? And are you using the latest version?

    Can anyone articulate the best way to place a remote so that is it is appropriately angled for the whiteboard?

    I certainly can not, but try the wiimoteproject.com forums. One help with calibration are the Visible IR dots in the GUI. Point at each corner of the screen while moving the Wiimote around so that it can just see the light.

    Uwe

  3. Mindscapes says:
    Java 1.5 or later…

    Hi all,
    I have a PowerBookG4 running OS X version 10.3.9 , PPC 1.33GHz .
    When I try install Wiimote Whiteboard … I get error message:
    ” Could not launch application because it requires a version of Java that is not installed” … I have – according to the message – Java 1.4.2 and 1.3.1 not 1.5 and so far it appears that Apple only offers Java 1.5 for OS X 10.4 and later.
    What should I do? Please help.

    Thank you for all your work!
    P

  4. Uwe says:
    Java 1.5+ required

    Hi,

    Java 1.5 is indeed required and there’s no way around it, sorry. It seems like you have to upgrade to Tiger or Leopard in order to use Java 1.5 on your Mac. And this blog post makes clear why you shouldn’t try installing it on Panther.

    Uwe

  5. Julie says:
    Clarifying

    Original text:

    ‘I finally figured out that although I am getting the message, I can still calibrate and successfully move forward with my experiment. ‘

    Uwe’s question:
    Which message? And are you using the latest version?

    ________________________________________________________________________
    Julie’s response
    Sorry…I was referring to the ‘Error Sending Data’ message. I still often get that message or the dump of code that others referred to, but I figured out that I can still move forward and calibrate. Now if I could just postion that wiimote correctly…….

    Yes, I am using the latest version of your code (thanks for doing all this!)

    Julie

  6. Uwe says:
    Error Sending Data again

    Hi Julie,

    Sorry…I was referring to the ‘Error Sending Data’ message. I still often get that message or the dump of code that others referred to …

    How do you get that message? Are you looking at the Log or does an actual error message pop up? Could you please send a screenshot of this to me? You can get my email address on the contact page.

    Uwe

  7. Uwe says:
    Version 0.9.2 released

    Changes:
    * Added mouse move threshold option
    * Changed right click implementation, now better usable in Windows
    * Added button to reset the Wiimote’s IR camera in case of sensitivity problems
    * Added tooltips to buttons and labels
    * Minor bug fixes

    Further explanation in the accompanied help files.

    Enjoy,
    Uwe

  8. Chris says:
    About sensitivity

    Hello,
    I’m using a Windows XP PC and i have tried your last version of wiimote whiteboard (0.9.2) with a video projector. My wiimote is 1,5 m from the wall.
    When i compared Johnny Lee’s version to your’s, i noticed that the jar version was less sensitive : when drawing a curve, the line was slightly irregular.

    Otherwise, with your soft the bluetooth recognition of wiimote is faster and more confortable, and the right-click option goes well. I appreciate too the large amount of informations that your soft gives and, of course, his platform-independence.
    So thank you for this very nice job, and i hope you will overcome this problem of sensitivity.
    Chris, from France.

  9. Anonymous says:
    Whiteboard

    Very nice ! I am looking forward to getting this and Kindlelab running here real soon!

    -

  10. Carlington says:
    Wiimote Placement / Calibration Issues

    Can anyone articulate the best way to place a remote so that is it is appropriately angled for the whiteboard?

    The reason lines are sometimes jaggy and drawing is difficult is because the area on the Wiimote IR-camera that covers the screen (or drawing-area) is not optimized correctly.
    Also even the slightest movement of the Wiimote will cause an effect which magnitude is a function of the distance between the Wiimote and the drawing-surface (the larger the distance the greater an effect a vibration will cause).

    The optimum position would of course be through a see-through display where the camera would be perpendicular to the surface that it’s pointed at. This however is rarely possible and depends on the available equipment.

    In order to optimize the position of the camera relative to the drawing-surface (your monitor for instance) it’s helpful to get a view of the actual pixels that the IR-camera sees. DarwiinRemote utility contains this tool (although it might be a bit difficult to find at first).

    A tripod is suggested for the final placement of the Wiimote, make sure that any movement cause minimal disturbance/vibration to the Wiimote.

    The optimization-process could be done for instance like so:
    1. Connect to your Wiimote with DarwiinRemote
    2. Activate only the IR-sensor
    3. Show the IR-realtime data window from the “Window”-menu.
    4. By moving your IR-pen along the edges of your monitor make sure that the IR-camera covers as big an are as possible. Move the position of your Wiimote in order to make this area as big as possible, it might require you to place yourself as much to either side of you monitor as possible.
    5. After you’ve found the optimized position using DarwiinRemote it’s time to start using Uwe’s excellent “Wiimote Whiteboard”.

    You can find DarwiinRemote (current version is 0.6) at
    http://sourceforge.net/projects/darwiin-remote/

    Uwe, thanks for your excellent effort in bringing this to us OS X users as well!

    If I may place a few future suggestments:
    1. A window such as described above which would show exactly what the IR-camera sees (this would help the placement effort)
    2. A mouse-movement smoothing option, essentially this would interpolate between the actual locations and not move to any given mouse-location directly. This would help to create more flow in Illustration applications.

    Thanks,
    Carlington

  11. Julien HORS says:
    Sensitivity + Right click

    Hi Uwe,

    Nice job for the right click, It works exactly as I want !

    I still have a sensitivity problem compared to johnny’s soft (same hardware configuration and position)… Probably because of the library…

    I hope next versions will fix the problem ;-)

    Thanks a lot !

    Julien

  12. George says:
    Wiimote LOG file

    I have been having a particular issue. There are times, when I turn on the wiimote and instead of detection, I have the wiimotewhiteboard LOG file appear….sometimes I can restart and it goes away, other times I have to trash the program and re-instal. It’ll work once and then bang…the next time I load it up the log file reappears. Is anyone else having this problem? I’m running the latest version and I think it is a new phenomena with the release of 0.9.2.

    Any info would be helpful.

    Is the log file stored anywhere? If so, where and how do I delete it?

    OSX 10.5.2

  13. George says:
    0.9.1

    Is there a way i can download version 0.9.1 ? I find 0.9.2 requires the wiimote being less than a metre away from the screen. Meaning it will only work if i use my laptop as the screen. With a projector, I can’t get this to work effectively. I’m not sure what happened with 0.9.2, but I prefer 0.9.1 I deleted it after I installed 9.2. I find the latest version buggy… its skips a lot, moving windows around is difficult…if i drag an icon it will move for a bit and then stop following the cursor. When I draw, instead of getting lines I get dots.

  14. Descalzo says:
    0.9.1-0.9.2

    George,
    Have you tried the Reset Wiimote button?

  15. Uwe says:
    Current Issues

    Thanks for all the feedback.

    I can’t add much to what I already said about sensitivity. It just doesn’t always behave the same way. I guess there might be a slight difference in the IR camera initialization sequence between the Wimote library I use and the one Johnny uses in his program.
    The good news is that I talked to the guy who found out a lot of the stuff we currently know about the Wiimote’s camera. He told me (two days ago) to expect “huge developments in this area in the next week or two”. Let’s hope for that :)

    The problems George is having are probably related to sensitivity and Bluetooth issues.
    I sometimes get connection errors as well. Java in combination with Bluetooth isn’t very mature and reliable either. That’s something we unfortunately have to live with for now but I expect improvement in the future as well.
    I’ll gladly send you version 0.9.1 although I don’t think it will solve any of your problems.

    Concerning the Log:
    * shows some information of what’s going in the background
    * error messages are shown as well
    * made visible on demand or automatically when SEVERE errors occur
    * not stored on disk
    * no change in 0.9.2

    Uwe

  16. Uwe says:
    Improvements

    Thank you for your suggestions, Carlington.

    A window such as described above which would show exactly what the IR-camera sees (this would help the placement effort)

    Done, will be included in the next release.

    A mouse-movement smoothing option, essentially this would interpolate between the actual locations and not move to any given mouse-location directly. This would help to create more flow in Illustration applications.

    This is a good idea but I don’t think there is a single best way to do it though. I’ll add this feature with the option to select a “mouse smoothing strategy”. The user may thus be able to choose among various “strategies” (where “no smoothing” will be one of them) which can be extended in the future.

    A tripod is suggested for the final placement of the Wiimote, make sure that any movement cause minimal disturbance/vibration to the Wiimote.

    I actually own a kind of small flexible tripod called Gorillapod. This in combination with the Wiimote could be a cheaper and more flexible alternative to a big and heavy tripod.
    I just see they have the model Go-Go that can be used with a suction-cup clip or high-bond adhesive clip to attach the Wiimote. This is just an idea which I haven’t tested.

    Uwe

  17. Uwe says:
    Version 0.9.3 released

    Changes:
    * Added IR camera monitor to assist positioning the Wiimote
    * Added mouse movement smoothing (currently only simple moving average using last 7 points). Works pretty well and is enabled by default.
    * Minor GUI adjustments

    Uwe

  18. fbocquet says:
    Does the java version work on Linux ?

    Thanks for your work and this new update.

    :-)

  19. Uwe says:
    Linux compatibility

    The Java version will not work on Linux in its current state for two reasons:
    * The current binary release of BlueCove (2.0.2) is bundled with the program. Linux BlueZ support was added in BlueCove version 2.0.3 as additional GPL licensed module.
    * I can’t distribute the GPL module with my software for legal reason (as far as I understand).

    So you basically need to install a recent BlueCove 2.0.3 snapshot and the additional GPL’d Linux module. Then try to run the program like this:

    java -cp bluecove-2.0.3-SNAPSHOT.jar:bluecove-gpl-2.0.3-SNAPSHOT.jar -jar WiimoteWhiteboard.jar

    I guess it won’t work though since BlueCove 2.0.2 is already bundled with my program and will thus be conflicting with the snapshot of 2.0.3. You could also compile the source code yourself and use it with the replaced BlueCove libraries if you know how to do that.

    I’ll be away snowboarding for a couple of days and get back to you when I return.

    Uwe

  20. Zoom says:
    Suggestion

    First off, thank you for porting this to osx. I use this to turn my monitors into touch screen monitors. Instead of a pen, I have made a glove with an IR led on the top of the index finger and a momentary switch on the tip. So when i touch the screen the led turns on. This works out great, but I do have a suggestion. I have a dual monitor set up and it would be great if i could do this across both monitors. When I would calibrate I would ideally like it to give me 2 points on the left side of the left screen and 2 points on the right side of the right screen. Also, if I were to use this with multi-touch capable software would a second touch register? Wasn’t sure if being able to see how many visable ir dots there were and the ir camera also meant that this was possible.

  21. Schwin97 says:
    Compile problem

    Not sure why, but I keep getting issues with jaiI18n not being able to be resolved. Figure I am missing something in my project setup within eclipse 3.3? Any ideas that could get me pointed in the right direction please?

    Thanks

  22. bug888 says:
    Suggestion

    is it possible to have a single click to control the mouse and a double click to activate the mouse click. like on the track pad? i also wanted to say thank you for porting this over to the mac it really is an amazing program.

  23. Tibo says:
    Amazing

    Hi, I’m the first one who tried with the Apple Remote, I made a IR pen for maybe one week And I just downloaded the very last version and the differences between the two versions are amazing. It is much smoother, and I still can’t believe the drawing I made with photoshop. The new setting are PERFECT, it is exactly what needed to be done. There is no word to express how happy I’m to use this whiteboard.
    Maybe the last point that must be done is using two IR led at the same time, the first one (always lighten) just to move but not click the mouse and the second one to left click.
    I’m french so I hope I was enough clear in my comment !!!

    bye

    tibo

  24. Descalzo says:
    2 LEDs

    Tibo, the problem most people have found with 2 LEDs is that if they are close enough the wiimote can only see one blob.

  25. Uwe says:
    Re: Compile problem

    I didn’t notice until now that the class PerspectiveTransform uses JaiI18N in case of errors since I have Java Advanced Imaging (and hence JaiI18N) installed on my system. JaiI18N is actually only required to compile the software since errors in PerspectiveTransform shouldn’t occur in the way I use it. Hope that explains things a bit.
    The easiest way to fix the problem for you is to install Java Advanced Imaging as well.

    Uwe

  26. Uwe says:
    Suggestions

    Multi-screen support: It’s possible and I was already considering this when I added the screen selection. I’m still thinking about the right way to do it though. It will be included in a future release with high probability.

    Multi-touch support: Not planned since the software is all about controlling the mouse cursor of the operating system (which doesn’t support multiple mice). They only thing I could do is to output the available position data of all 4 IR dots in a format that a multi-touch capable program understands.

    Trackpad-like mouse control: This could be done but may I ask why you want to do this? Doing right-clicks won’t work either.

    Two-LED support: Doesn’t work that well (Descalzo already pointed out one reason). The Wiimote frequently sees two IR dots in my setup here at home. One from the IR LED and one from its reflection on the screen (when I hold the IR pen at some distance).

    Please participate in the poll about the hosting situation.

    Uwe

  27. Josh says:
    multi-touch

    Uwe,
    Yes, outputting the position of all 4 IR dots would be *wonderful*. You have my vote. Thanks for all your work!

    Josh

  28. simon says:
    multi-touch

    I am of the same opinion as the previos poster, Josh. I would be very happy to see a multi-touch integration. Maybe you could implement TUIO-messages. As far as I know, there are several flash-applications that uses these messages to implement multi-touch.

    Thanks for your wonderful work!

    Simon

  29. Uwe says:
    Multitouch TUIO

    I actually already implemented the TUIO protocol and successfully tested it on Windows with this Multitouch Flash Puzzle. I couldn’t get any multitouch Flash apps to work on Mac OS X though. I’m also not quite sure about the “best” format of the TUIO messages to make it compatible with most multitouch apps. But the next release will definitively have the capability to send out TUIO messages.

    Information on multitouch in general and especially help to get multitouch apps to work on Mac OS X is highly appreciated and will speed up development of that feature in the Whiteboard program.

    Uwe

  30. Simon says:
    I have already tried to

    I have already tried to combine the wiimote software with flash-multi-touch applications on my own. There is an windows software comparable to johnny lees ones that sends TUIO messages to a server and port. (http://code.google.com/p/wiimotetuio/).
    I tried to get the Multimedia Application from multigesture.net to work (http://www.multigesture.net/2007/09/17/multitouch-media-application-v2-release/) but I needed an software that “translate” TUIO messages to flash. That’s what I think Flosc does (http://code.google.com/p/flosc/). For me the setup worked under windows to control the multimedia application with 2 ir-pens.

    I hope that will help you a little bit.

Leave a Reply