Wii Bluetooth Network

From gc-linux

Jump to: navigation, search

This document explains how to connect to the Internet using the internal Bluetooth dongle of the Nintendo Wii video game console.

It is possible to use an IP level connection with IP forwarding, a pseudo-LAN connection with Proxy-ARP or a full bridged connection with support for DHCP, IPv6 and other gimmicks.

The network connection is horribly slow (10KByte/s, 3s SSH latency when downloading stuff).

This page is based on the generic Bluetooth networking HOWTO.

Contents

Requirements

  • A Wii with Linux installed
  • A BNEP-enabled Linux kernel (e.g. http://op-co.de/wii/boot-2.6.27-bnep-ipv6.elf)
  • A second computer with Linux, a Bluetooth device and BNEP-enabled kernel
  • For the Bridging connection, the PC has to be connected via Ethernet. No WLAN!

Bridged Connection

Here the Wii will be integrated into your home LAN, with all protocols enabled. This requires the PC to be connected via wired Ethernet.

PC Setup

Warning don't do this remotely (ssh) as it will lose connection on step 1

You have to create a bridge deice on your PC, for this you need the bridge-utils package and 802.3q support in your kernel.

The networking on the PC has to be reconfigured from using the Ethernet directly (eth0) to the bridge device (br0):

ifconfig eth0 0.0.0.0 up
brctl addbr br0
brctl setfd br0 0
brctl stp br0 0
brctl addif br0 eth0
ifconfig br0 <your regular ethernet ip here>
# alternatively: dhclient br0

You will also need a script to add the bnep0 device to the bridge, store it e.g. as /etc/bluetooth/bnep-bridge:

#!/bin/sh
ifconfig bnep0 0.0.0.0 up
brctl addif br0 bnep0

Do not forget to run "chmod +x /etc/bluetooth/bnep-bridge"

You can start the bluetooth network daemon (pand) with the following command line:

pand --role NAP --listen --nodetach --devup /etc/bluetooth/bnep-bridge

Remove the "--nodetach" parameter when you have finished debugging or when adding it to /etc/default/bluetooth on Debian.

Wii Setup

Just add bnep0 as a network device to your config (/etc/network/interfaces), you can use the same settings as you would with a direct LAN connection.

On the Wii you too have to create a startup script /etc/bluetooth/bnep-up:

#!/bin/sh
ifup --force bnep0

Again, "chmod +x /etc/bluetooth/bnep-up" and you are ready to start pand:

pand --search --persist --nodetach --role=PANU --devup /etc/bluetooth/bnep-up

And again you can remove "--nodetach" and store the rest of the line in /etc/default/bluetooth to auto-start it on boot.

Notes

In this scenario, the PC runs the listening pan server, and the Wii connects to it. If you want it the other way around (when you leave the Wii running and only boot the PC ocassionally), it is possible to exchange "--listen" and "--search --persistent" in the two PAN configs.

Update2: IPv6 does not work properly. The router advertisement messages are swallowed by my Bluetooth stack/dongle/wherever, without finding their way to the Wii :( --Ge0rG 20:21, 12 Jan 2009 (UTC) IPv6 works on a kernel with BT_BNEP_MC_FILTER=y --Ge0rG 22:12, 12 Jan 2009 (UTC)

IP Level Config

TODO

Proxy ARP Config

TODO

Personal tools