Re: Wii WIFI support ideas

Maarten ter Huurne <[email protected]> Sat, 12 Jul 2008 23:18:14 +0200
Newsgroups gmane.linux.ports.game-cube.devel
Message-ID <[email protected]>
On Saturday 12 July 2008, Malcolm wrote:

> 1) Use IOS sockets to implement a network driver
> - How?
>
> 2) Use IOS sockets from userspace
> - Only works with modified programs
>
> 3) Write a driver that can send and receive UDP packets using IOS
> sockets. Implement IP over UDP using TUN/TAP in a similar way to IP over
> DNS. http://thomer.com/howtos/nstx.html
> - Requires another computer on the network to act as a proxy
> + Could work

A combination of TUN and exposing IOS sockets to user space would allow all 
three options:
1) Figure out from the IP packets what socket calls the Linux program was 
making and replay that using the IOS sockets.
2) Ignore TUN and only use the IOS sockets.
3) Traffic from the TUN device is tunneled over IOS sockets.

Also, debugging is a lot easier in user space, so even if option 1 in kernel 
space is your long-term goal, implementing it in user space first is 
probably a good idea.

> 4) Hope that the IOS interface for sending DS demos is low level
> enough to do normal wifi.
> - Requires reverse engineering work
> - May not be possible

How does the demo sending work? Does the Wii act like an access point to the 
DS? Or are the Wii and the DS just two normal hosts connected to a normal 
access point?

The device nodes "/dev/net/ip/bottom" and "/dev/wl0" haven't been reverse 
engineered yet (at least, no public documentation seems to be available), 
maybe one of these allow lower level access?

> 5) Replace IOS
> - Requires lots of reverse engineering work
> - Risky

Patching the IOS to add ioctls that allow you to send and receive raw IP 
packets would be sufficient. Still not an easy task, but not as hard as 
replacing IOS entirely.

> 6) Give up and use a USB wifi adaptor

It would be a shame to ignore the hardware that every Wii has built in.


Possibly another option:

7) Use ptrace() from an external process to intercept socket system calls 
from a process and perform IOS socket calls instead.
- Not a transparent solution
+ Works with existing binaries

Bye,
		Maarten

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08

_______________________________________________
Gc-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gc-linux-devel
signature.asc (application/pgp-signature, 194 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4-svn0 (GNU/Linux)

iD8DBQBIeR+fvd8ks9mF64IRAqFBAJ9496jtU3haJQCISqiNmLRRrR4nhQCfUXBW
R4LjNSwSocjjCVSQap/FbWY=
=L51V
-----END PGP SIGNATURE-----