Wii Hacks

        

Showing posts with label wii-mote. Show all posts
Showing posts with label wii-mote. Show all posts

Sunday, December 30, 2007

Head Tracking - VR using Wiimote

Johnny Chung Lee demo's his Head Tracking Virtual Reality system using the Wiimote.

Watch the video:

Friday, August 24, 2007

Control music on your PC with the Wiimote


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.

Take a look and download the application here



Thanks Mike!

Saturday, January 27, 2007

Wii Bot - a sword-wielding, tennis-playing, WiiMote-controlled robot

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:





Read more at their website: usmechatronics.com

Wednesday, January 24, 2007

Wiimote Laser Tag


Carl Kenner, inspired by another member's idea on the WiiLi forums has posted the first version of a Laser Tag script for Glovepie.

A bluetooth enabled XP computer, 2 wii motes, and a wearable sensor allow you to play 'laser tag' with a friend using wii motes as your guns.

Get the code here

Monday, January 01, 2007

Wii Remote Speaker Communication Cracked

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.A) then
// Enable Speaker
Wiimote.Report14 = 0x04 | Int(Wiimote.Rumble)
// 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)
WiimotePoke(1, 0x04a20005, var.volume) // 40
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)
var.On = true
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.

Source: WiiLi.org

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.

Monday, December 25, 2006

New Version of WiinRemote posted



The latest version of WiinRemote can be downloaded from:
http://onakasuita.org/wii/index-e.html

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?

Wednesday, December 20, 2006

Wii-Mote Firmware Dumped

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

Tuesday, December 19, 2006

Wii-Mote Control Car






Check out this video of a remote control car being driven with the Wii-Mote.

Thursday, December 07, 2006

Linux Wii-Mote Driver

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.

This completes the Wii-Mote's tour of each Operating System. There is now wii-mote driver for osx, wii-mote driver for linux, and wii-mote driver for windows. Needless to say, if you don't already have a wii-mote what are you waiting for?

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

Saturday, December 02, 2006

Download the Windows WiiMote Driver

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

Thursday, November 30, 2006

Wiimote Driver for OSX - RVL-CNT-01


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.

You can download RVL Enabler for OSX from Cliff's site:
http://windower.net/RVLEnabler.zip

Source Code is here:
http://windower.net/RVLEnablerSource.zip

UPDATE: A new OSX application for controlling the wiimote has bee posted here.

Wednesday, November 29, 2006

Wii Mode Driver Development Update

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.

Sunday, November 26, 2006

More Wii-Mote Hacking

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.

For specifics on the Wii's Bluetooth check out
WiiLii Wii Bluetooth Wiki Entry
and
WiiLi Wimote Driver Wiki

UPDATE 11/26/06 3AM:

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.

If you want to help you can join in on the conversation here on the Wiili forum.

UPDATE 11/26/06 11AM

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.

Wednesday, November 22, 2006

Wii Mote Drivers for Linux

http://article.gmane.org/gmane.linux.bluez.devel/9659

From: Andy Spencer
Subject: WiiMote driver
Newsgroups: gmane.linux.bluez.devel
Date: 2006-11-16 07:39:00 GMT

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!

Subscribe to the Nintendo Wii Hacks Blog RSS Feed

Also see:
PSP Hacks
PS3 Hacks
Zune Hacks
iPhone Hacks
Apple TV Hacks