Wii Hacks

        

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

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

Wii Remote C++ Communication API for Windows

Wiim ("whim" or "wheem", if you prefer) is a simple set of C++ classes that allow you to connect to your Wii remote through Windows' HID interface to send and receive commands. Right now you can receive button presses and motion data as well as set rumble and LED status. There's no support for IR or any extension devices yet. Miis are another possibility, but they're already well supported elsewhere.

Check it out at:
http://digitalretrograde.com/projects/wiim/

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?

Friday, December 15, 2006

Newbie's Guide to the Wii Remote on Windows

So you just got your greasy hands on a wii-mote. What can you do with it? You may have heard about people doing crazy things like playing the drums with it, and you may have seen videos on youtube of nerds using it to control their PC mouse. Despite all of the comments you may read below the videos on youtube, most of the videos are not fake. There are really people playing electronic instruments, playing half-life, controlling emulators, navigating google earth, and even more stuff I promised not to show you yet...

This post is all about Wii-Motes and Mii's. If you still have not gotten your Wii-Mote connected to your computer now is the time to get a known working wii compatible bluetooth adapter and join in on all the fun. Once your bluetooth adapter is connected, follow these simple instructions to connect the wiimote to your bluetooth adapter.

Once you have a driver installed and your wiimote's HID device is connected, you are ready to download some apps.

Wii-Mote Apps for Windows
For Windows you will definitely want to check out GlovePIE along with a host of other scripts.
These scripts will allow you to control all kinds of applications. GlovePIE is really a great program because it allows you to map buttons and values on the wii-mote to trigger keypresses in other applications.

Another great program for Windows Mii-Mote users is BigRedPimp's Wii-Mote App






Not to be left out:
OSX users should check out DarwiinRemote or learn how to use the WiiMote with FrontRow
And, For Linux wii-mote adventures WMD by e-Hernick is the way to go.

Transferring Mii's
A new version of MiiTransfer has been released. MiiTransfer 0.9.1 (released 12/13) should work with most, if not all, BT stacks.. The original version only supported the Microsoft Bluetooth stack. Download the latest bins and source code here:
http://sourceforge.net/projects/wdml/

Even better, one of the visitors to this site has created a GUI to make using MiiTransfer even easier. SWiitPii was so kind as to give me all the credit, but the truth is, I did not write a line of code for this program. In any case you can download the MiiTransfer Gui Kit here. I have tried it myself and I was able to easily transfer about 20 Celebrity Mii's from WiiModWii Transfer Station to my Wii in a few minutes. It is basically the .0.9.1 version of the MiiTransfer binaries from sourceforge along with another .NET program that runs the correct command line parameters for you. It works great, thanks for the software SWiitPii! If you need help with this app there is a support forum here

MiiPlaza.net is now hosting Mii's. They have a large community of people, and I see good things coming from their site real soon. If you can't wait and just want to download as many Mii's as possible, then head on over to WiiModWii's Mii Transfer Station to download the latest celebrity mii's and other user submitted Mii's. Otherwise if your picky of what Mii's go into your Wii, and you need to see pictures of them before you download, goto MiiPlaza.

You can not break your wii by uploading Mii's from the internet. Any corrupted bits in the .mii file and the Wii won't even display it. Have fun!

Wednesday, December 13, 2006

Wii-mote 'driver' for linux updated

WMD is a python script for linux that will allow you to comminucate with the wiimote and fully supports motion data, IR pointer functionality and button presses. e-Hernick, the WMD author can explain it better:

actually there is a lot more..
It has advanced, multi-mode, adaptive, distance-dependent, predictive, smoothed pointer control.
It has advanced, fully scriptable graphing capabilities for accelerometer data
As well as primitive motion analysis
The ability to map any Wiimote button to any key, key combination or mouse button.
The ability to configure all the parameters that tweak every algorithm

Also from the website:

-WMD is a Linux Driver for the Nintendo Wii Remote
-WMD lets you use the Wiimote as a mouse
-WMD lets you use the Wiimote as a keyboard
-WMD lets you use the Wiimote as a vibrator
-WMD is dangerous and experimental
-WMD could make your Wii explode!
WMD has been greatly improved over the last few days, with live graphing and gesture graphing support! Get it now at http://www.ForTheWiiN.org

Sounds great! Thanks for all of your hard work e-Hernick!


Friday, December 08, 2006

UPDATE: Windows Wii-Mote Scripting

vkapadia has posed several scripts for GlovePIE, a Windows program which lets you use the Wii-Mote as your mouse, or to control games on your PC. You will need to successfully connect the WiiMote to your PC using a compatible bluetooth adapter first. There are detailed instructions posted here. Once you have GlovePIE and the wii-mote successfully connected, download one of the following scripts (right click and save-as) and then load it into GlovePIE.

Scripts for using the Wiimote in Windows with GlovePIE:

WiiMouse IR
Point with your Wiimote and click! REQUIRES SENSOR BAR
Chances are, this is the one you want.

WiiMouse Accel
Tilt and rotate the Wiimote to control the mouse.

WiiMouse IR Relative
Moves the mouse based on the Wiimote's position relative to the center of the screen.

Two WiiMice
Connect two Wiimotes to control two mice. REQUIRES SENSOR BAR

WiiMouse IR Odd Bar
Before version .24, some sensor bars were not functioning properly. REQUIRES SENSOR BAR

Generic Joystick Driver
This uses the tilt/rotate as two axes, and all 11 buttons to emulate a joystick. REQUIRES PPJOY

Nintendo 64 Emulator - Ocarina of Time
A little awkward, but not too bad.

Nintendo 64 Emulator - Goldeneye (basic)
All buttons are digital in this script.

Nintendo 64 Emulator - Goldeneye (advanced)
In this, there is analog control support.

Nintendo Entertainment System Emulator
Basic controls for an NES emulator. Turn the Wiimote sideways for this one.

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

Tuesday, December 05, 2006

New Wii Mote Applications for OSX and Windows

It's good to see the Japanese have started to hack their Wii's already! Well, wii-motes anyway...


Hirolog posted this Wii-Mote Application for OSX which allows you to control and monitor several features of the Wii-Mote using OSX. There is also a mouse mode, but the calibration of my wii-mote must be different because my mouse pointer keeps going to the bottom left corner of the screen when it's active.

More Info From Hirolog:

  • DarwiinRemote is a tiny software which reads data from and sends data to Nintendo Wii Remote
    • Inputs
      • 3-axis acceleration sensors
      • all buttons except power button on/off
    • Output
      • 4 LEDs
      • Force Feedback
  • DarwiinRemote makes us control other applications by using Wii Remote
    • but now only supports "AppleRemote" mode...
Download the software here:
http://blog.hiroaki.jp/2006/12/000433.html

UPDATE: 12/10/06 - DarwiinRemote 0.3 is released!! This version supports IR sensor and motion sensor calibration. Enjoy!

New Project Page:
http://sourceforge.net/projects/darwiin-remote/





Also, from our new Japanese friends, here is another Japanese Wii Hacking Website which has similar software for Windows called WiinRemote.

Get it here:
http://onakasuita.org/wii/index-e.html

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

Subscribe to the Nintendo Wii Hacks Blog RSS Feed

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