Wii Hacks, News, and Info. Find out about Wii Hacks and tricks such as: Converting video to Wii format. Running homebrew software and Games. Compile Wii Linux. Wii Home Control. Wii Web Browser. Wii WiFi Functionality
This app allows users to use their Wiimote to control iTunes, Winamp, Windows Media Player, and Napster. It offers many functions, such as Play/Pause, Next/Prev track, Volume Up/Down. Any function can be mapped to any button. Plus the motion sensing is used. Shake the Wiimote to the right to go to Next Track.
OK, ok, they've beat me. My wii-mote controlled smarthome is cool, but this wii-more controlled robot arm is freaking sick!
Two guys wrote some addon software for glovepie that allows them to record gestures. By performing those gestures with the wiimote, it activates their robotic arm to start a maneuver. They strapped a sword and a tennis racket to it's hand and took a video of it swinging the sword and hitting tennis balls. Check out the video:
Carl Kenner is the man when it comes to the Wii Mote. Not only was the he the first person to have a working application for Windows that could read the Wii-Mote, but he did all of the programing with no wii-mote to test with.
Ever since that day he has been the driving force behind many wii-mote hacks featured on this site. His software, GlovePIE is the heart and soul of making the Wii Remote work in Windows, and several sites have started to spring up to host scripts for using the Wii-Mote with various different types of applications. He was one of the first to add Nunchuck support to his app, and his GlovePIE software can also handle multiple Wii-motes.
One of the last pieces of the Wii-Mote to be discovered is it's speaker. Up until now, nobody has been able to successfully communicate with the speaker to produce sounds. Carl made a post today to the WiiLi forums including a script that will bring the Wii Mote's speaker to life. Much of the initial work to find the codes to send to the wii-mote was done by Marcan, so a good chunk of the credit for this discovery should go to him.
Here is the GlovePIE script you will need to test out the Wii-Mote's Speaker from Windows:
// Carl Kenner's Wiimote Speaker Test script! Version 2 // A = start sound, B = stop sound // Minus = decrease sample frequency // Plus = increase sample frequency // It takes a short time to start (due to delays built into Poke)
// Change the next line to set the rate at which sound data is sent // BUT it must be low enough for the wiimote to respond to the B button // it may depend on your PC speed. Must be at least 91 for freq 13. pie.FrameRate = 120 Hz
if not var.initialized then var.freq = 13 // Set sample rate = 3640 Hz (so computer can keep up) var.volume = 0x40 // volume = 40 ??? Seems to be about max debug = var.freq var.initialized = true end if
if var.On and (not Wiimote.One) and (not Wiimote.Two) then // Report 18, send 20 bytes, square wave, 1/4 sample rate freq WiimoteSend(1, 0x18, 20 shl 3, 0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33, 0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33) else if var.On and Wiimote.One then // Report 18, send 20 bytes, square wave, 1/2 sample rate freq WiimoteSend(1, 0x18, 20 shl 3, 0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3, 0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3) else if var.On and Wiimote.Two then // Report 18, send 20 bytes, square wave, 1/8 sample rate freq WiimoteSend(1, 0x18, 20 shl 3, 0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC, 0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33) end if
if pressed(Wiimote.B) then var.On = false Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble) // Mute Speaker Wiimote.Report14 = 0x00 | Int(Wiimote.Rumble) // Disable speaker end if
if pressed(Wiimote.Plus) then var.freq-- debug = var.freq // Mute Speaker Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble) // Write 0x01 to register 0xa20009 WiimotePoke(1, 0x04a20009, 0x01) // Write 0x08 to register 0xa20001 WiimotePoke(1, 0x04a20001, 0x08) // Write 7-byte configuration to registers 0xa20001-0xa20008 WiimotePoke(1, 0x04a20001, 0x00) WiimotePoke(1, 0x04a20002, 0x00) WiimotePoke(1, 0x04a20003, 0x00) WiimotePoke(1, 0x04a20004, var.freq) // max volume? WiimotePoke(1, 0x04a20005, var.volume) WiimotePoke(1, 0x04a20006, 0x00) WiimotePoke(1, 0x04a20007, 0x00) // Write 0x01 to register 0xa20008 WiimotePoke(1, 0x04a20008, 0x01) // Unmute speaker Wiimote.Report19 = 0x00 | Int(Wiimote.Rumble) end if
if pressed(Wiimote.Minus) then var.freq++ debug = var.freq // Mute Speaker Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble) // Write 0x01 to register 0xa20009 WiimotePoke(1, 0x04a20009, 0x01) // Write 0x08 to register 0xa20001 WiimotePoke(1, 0x04a20001, 0x08) // Write 7-byte configuration to registers 0xa20001-0xa20008 WiimotePoke(1, 0x04a20001, 0x00) WiimotePoke(1, 0x04a20002, 0x00) WiimotePoke(1, 0x04a20003, 0x00) WiimotePoke(1, 0x04a20004, var.freq) // max volume? WiimotePoke(1, 0x04a20005, var.volume) WiimotePoke(1, 0x04a20006, 0x00) WiimotePoke(1, 0x04a20007, 0x00) // Write 0x01 to register 0xa20008 WiimotePoke(1, 0x04a20008, 0x01) // Unmute speaker Wiimote.Report19 = 0x00 | Int(Wiimote.Rumble) end if
This is a huge accomplishment and you can bet that soon enough the hackers will be streaming all kinds crappy 4 bit sounds to their wii-motes. Let the fun begin!!! Once again Carl, great work!
Next up is integrating the Speaker functionality into the other Windows Wii-Mote apps, as well as the Linux and OSX wii-mote programs. Developers will want to check out the WiiLi wiki for information on how to initialize the wii-mote speaker and send sounds to it.
UPDATE: My apologies, it was actually marcan who did most of the discovery to get the Wii-Mote speaker working, I've updated the post above to give the proper credit. Thanks Perrpf for pointing out the mistake. Sorry for the mix up.
What's new: added Assign for Cursor Move,Execute. and some options
Also, I noticed there is now a Source Code link. If you are a Delphi programmer and looking to get into programming for the wii-mote for windows, this is a great way to get started.
--
I'm interested to see what can be done with the new 'execute' function. It looks like you can launch an external program. Something tells me that can be useful... but i'm not sure how yet.. anyone have any ideas?
SparkFun has ripped apart their wiimote and was able to dump the data on the EEPROM. Here is what they had to say:
We hot-aired off the EEPROM and soldered it down to our SSOP breakout board. We then hooked up the unit to an AVR micro that could handle the I2C communication and clocked out all the I2C data from the M24128 into the AVR and down the serial pipe to the computer and captured it. My bet was that the EEPROM contained all constants like Bluetooth ID, firmware revision, etc. And that all the fun Wii Remote functionality was burned into the Broadcom part. David's bet was that the Broadcom part was just the Bluetooth HID stack and protocol and that it pinged the EEPROM during boot up for actual Wii Controller firmware. We were both right!
Looking at the binary file, the fun thing to note is the word 'Nintendo' a couple thousand bytes into the file. Boy would that be fun to alter. The real kicker was that we found unencrypted 8051 code in the file. We don't know if it is checksumed or anything, but you should be able to hack away. This seems to indicate that the entire Wii Remote functionality is contained on this M24128 EEPROM. Nifty.
For more close up pics of the wii mote and an in depth description of all of it's chips and traces visit SparkFun
The final driver to complete Wii-Mote takeover on the computer has been posted for public consumption. e-Hernick has released python source code to use the Wii-Mote as a mouse in linux X.Org.
People are already playing half-life with their wii-motes, and making music. What can yours do? If you have a cool Wii related hack and would like to see it on this page drop me an email: liquidice629 at gmail.com
CarlKenner, has posted his wiimote application to the WiiLi forums. This is an amazing accomplishment on it's own, but to add even more to the coolness of this is the fact that Carl DOES NOT EVEN HAVE A WIIMOTE!
Kudos to Carl for writing this software, and having it work on the first try without the actual hardware. I am downloading the files now to test them out and I'll have a full report for you tomorrow on how it all works. Until then you can try it out for yourself by downloading the Windows wii-mote drivers here: http://www.wiili.org/forum/download-windows-driver-here-t294.html
Cliff has released an app for Mac OSX which will allow you to pair the Wiimote with your Mac to view and send commands. This is NOT a full blown driver, but now that the initial hooks have been made it will be much easier for other developers to get in on the action to start coding the other parts of the driver.
Marcan has posted a video showing his progress on WiiMote Development. He has a nifty little program that will allow you to see graphs of the data that comes from the remote as you wave it in the air. By using these measurements and calculations developers will eventually be able to predefine gentures and movements of the wii-mote in their software applications. http://youtube.com/watch?v=9iBaKsh5z_o Great work Marcan! When will we be able to get our hands on this demo app so we can see the pretty colors on our own screen?
Volsung, Wiilii, and others are busy documenting all of the math involved in the wii-mote over on the Wiili Wiki: http://www.wiili.org/Motion_analysis
Also Cliff in IRC Efnet #wiidev has made progress on a linux i/o driver for the wii-mote. Nothing to test yet, but when code is released you can be sure it will be posted here.
I figured out a little trick with the wii-mote last night. The wii-mote is paired with the Wii, so you usually will not see it when you do a bluetooth 'discover all devices' on the PC.
But, If you press buttons 1 and 2 at the same time on the bottom of the wiimote it puts it into a discovery mode where the lights on the bottom are blinking. Now if you try to discover nearby devices on your pc you should see the wii-mote and can attempt to pair it.
UPDATE 11/26/06 5PM: You can also put it into discovery mode by pressing the sync button under the battery cover. The remote doesn't actually have a passkey, however once it is connected, the 3 services it advertises are non standard bluetooth services. Until someone writes a wii-mote driver we can't do much with this hardware.
Progress has been made! some developers have made the initial connection to the bluetooth remote and can now control the LEDS and force feedback.
The developer has posted a patch for getting bluetooth communication working and even posted a little script that makes the lights on the remote dance.
Looks like it's time to break out the Math books, Andy on the Wiili forums has figured out how to log linear force data.
They have begun to write the algorithms which will be used to detect movement, speed and rotation of the wii-mote when it is connected to a pc or mac.
* Linear force data can be logged using a SET_REPORT HID request on Output channel 12. The first parameter is a force feedback parameter while the second must be 31. Some other 3X numbers work for the 2nd parameter and do different things, but I'm not sure what exactly. Logging can be turned back off using 30. (example to turn logging on: 52 12 02 31) When logging data data with 31 the last 3 bytes of data represent the forces with ~80 being 0 force. The 1st bit represents the side to side force, the 2nd is the lengthwise force and the 3rd is the up-down force.
I've been thinking about purchasing a WiiMote when they become available in order to start working on a linux mouse driver for it. Since it communicates using bluetooth this seems to be the most appropriate place to do development. Anyway, I've never done much with bluetooth or drivers before so I'm going at this as a bit of a learning project. If anyone else is interested let me know. I'll be reading though source code, but if anyone has any suggestions about where to start or what documentation to check out let me know that as well.
I would LOVE to see this happen. It is a great remote. It has a nice weight to it, and the buttons are easy to get to. To be able to use it as a pointer in linux would be fantastic!