Thanks Oliver for your answer. In Bluesoleil I don’t have the wiimote connected. I know Uwe’s app is supposed to do it :(
Where can I get earlier versions of Widcomm? Because the one I download from the site just doesn’t run. When I run the install, immediatly it tells me it hasn’t found any bluetooth device and exit :(
Thanks again
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
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
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
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
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
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
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
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
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
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
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
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
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.
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…
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
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") thentell 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 tellend if
Uwe
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.
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?
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/
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
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
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
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.
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.
Changes: Added support for 2 Wiimotes (major code change) GUI changes New Icon Updated Help
Uwe
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
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.
Hi, please see this previous post about BlueSoleil. Also do not connect the Wiimote with the BlueSoleil software.
Uwe
Thank you Francisco for making those beautiful explanatory images, but especially for the new icon!
Uwe
Follow-up on this previous post: I talked it over with a Wacom employee and we came to the conclusion that it must indeed be a bug in Apple’s Java implementation. Hence, I filed a bug with Apple’s Bug Reporter (ID# 5926366). The bad news is there’s no workaround other than writing my own “Robot class” to manipulate the mouse cursor on Mac OS X. I don’t want to do this since it would force me to use platform-dependent code…
Uwe
Back in the days of my old Dell lappie, I had serious issues with my Bluetooth stack. I googled and found a way to hack the Widcomm stack and drivers to work with my BT adapter. You might want to check that out.
I tried out the new version this morning, and it looks great, especially the new icon. Even better, the Reset Wiimote button seems to be working now! It took a few tries to make it work, but work it did.
Hopefully I’ll have time today to try out the dual-wiimote setup.
I just downloaded the newest version of the software, and maybe I’m just lucky, but the calibration seems so much better! My mouse control was dead on. I am a teacher at a high school in Colorado, and because of the work that you and Johnny Lee (and my tech coordinator friend) have done in making this technology accessible to the masses, my students think that I have just become the smartest man in the world. I have repeatedly told them that I deserve no credit for what they are seeing, but since no one else here is using this technology they think I am a genius. I just wanted to thank you for your work, and you should know it is appreciated on many levels. Suddenly I’m not as boring as I used to be, go figure.
Hey everyone,
I’m working on an IR pen with a push-to-write tip (I see it was discussed above a bit back). I’ve bought one of these http://web1.automationdirect.com/adc/Shopping/Catalog/Pushbuttons_-z-Switches-z-Indicators/22mm_Metal/Illuminated_Pushbuttons_Flush-a-_Extended/LED/GCX1211-24L. It has a replaceable LED for the lighting, so hopefully I’ll be able to replace it with an IR LED and be able to make a simple, but nice looking pen… I’ll let you guys know how it goes.
Hi Eric,
and maybe I’m just lucky, but the calibration seems so much better!
What exactly is better now? The little icons? I didn’t expect much of a difference using a single Wiimote.
[…] my students think that I have just become the smartest man in the world.
Enjoy it as long as you can :)
Uwe
Cool, that’s another ingenious idea… Didn’t think of that one. I’ll post some pics of mine if it works out.
I don’t see how to connect 2 wiimotes. Is there something special I need to do? I start the program and it starts normally, but only one of the little boxes lights up. I tried this several times, and sometimes it would switch from one wiimote to the other.
OOPS! While writing this post, I decided to look in the preferences. The preferences had the answer. Duh.
Also, when I quit the program it tells me “The application WiimoteWhiteboard quit unexpectedly.” It gives me the option to report, but I never do, being used to Windows as I am.
Thanks for a great piece of software.
Hi Descalzo,
how does it work for you with 2 Wiimotes?
OOPS! While writing this post, I decided to look in the preferences. The preferences had the answer. Duh.
Yes, the program only supports one Wiimote with the default settings. You have to select the number of Wiimotes to use in the preferences. The reason for this is explained in the preferences window itself and the included help.
Also, when I quit the program it tells me “The application WiimoteWhiteboard quit unexpectedly.”
Does that always happen? If yes, please send me the “Problem Details”.
Uwe
With the previous software I had to learn where best to hit the little “cross-hairs” to get the best result when trying to “click” on things. With this latest version I just hit the center of the cross-hairs and my mouse pointer was exactly at the end of my IR pen. I guess I just assumed you improved the sensitivity with the update, but maybe that is a bad assumption. For some of the programs that I run in my class (Geometry Sketchpad, Geogebra, etc.) my pen needs to be very precise, and yesterday I was more accurate then I have ever been, and this was true every time that had to restart for each class. So I thought that was part of the upgrade, if not I have no idea why I was suddenly more accurate, but I’m not going to complain! Thanks again!!!
I made a video, showing some of the new features: http://www.youtube.com/watch?v=xmdLubEhTYw Watch it in high quality to see the details…
Uwe
Hi, I have a new ‘kind of DIY’…
Look at it here: Inside my IR Pen!
Francisco (waiting for a 2nd wiimote -of a fiend- to test…)
I have been using this software in my classroom, and it is working sweetly. I am using a simple led torch, with the led swapped out for an ir led.
But I’ve been reading a bit tonight about the whole multi touch possibilities, especially with flash, and am getting increasingly confused. Are there any easy to follow instructions about using this software / wii remote to connect to other programs via the TUIO data?
Cheers, Matt
Has anyone tried this on Windows with the Toshiba stack? Just wondering.
I have briefly tested on a Sony VAIO with Toshiba stack but failed.
Also, when I quit the program it tells me “The application WiimoteWhiteboard quit unexpectedly.”
This is due to a newer version of the BlueCove Bluetooth library, that I (accidently) included with version 0.9.6. The problem seems to occur only on Mac OS X Tiger (10.4.11 was tested). I changed the current version to again use the older library (and fixed a minor bug that most people won’t notice). Since I didn’t bump the version up, you won’t get an update notification. Please re-download the application if you’re experiencing this problem.
Uwe
Hi Matt,
I just got in contact with the multitouch and TUIO stuff when someone requested the feature. You should get an idea how it works by reading the posts starting here.
The flow goes something like this: WiimoteWhiteboard sends out cursor information according to the TUIO/OSC protocol (as UDP packets). The multitouch software needs to receive and process the TUIO/OSC messages. The Flash multitouch apps cannot directly receive UDP packets, hence a converter (Flosc) is required.
There are also other (not necessarily multitouch) apps that can process OSC messages.
Excerpt from the WiimoteWhiteboard Help:
Regarding Flash multitouch apps: I had some difficulties with the latest version of Flosc but I had success with the version of Flosc included here. Also make sure that you add the flash apps you want to run in the browser to the list of trustworthy locations.
Uwe
I redownloaded the new version, and it worked wonderfully! Thanks.