Broadband Adapter

From Dolphin Emulator Wiki
Jump to navigation Jump to search
Broadband Adapter
BBA.png
Developer Nintendo
Type Video game console add-on

The Nintendo GameCube Broadband Adapter (BBA) and the Nintendo GameCube Modem Adapter are a network adapter and 56k dial-up modem, respectively, for the Nintendo GameCube. They were produced by Conexant and made in the Philippines. The adapters fit flush into "Serial Port 1" on the underside of the GameCube and add an Ethernet port or telephone port to the side of the console, allowing the console to communicate with other consoles through a network.

As of 3.0-732, Dolphin's main branch has BBA emulation support. However, in older builds it requires a Virtual Private Network (VPN) in order to function. BBA emulation is supported on OS X since 4.0-1390. Dolphin also supports BBA tunneling in 5.0-12233 or newer through the XLink Kai setting. This allows for playing LAN games online, but requires extremely low latency between the players.

In 5.0-16838 and newer, a HLE implementation exists that no longer requires a TAP adapter. Because it does not require a TAP adapter, it also works on Android devices (implemented in 5.0-16967) and is cross compatible between Desktop and Mobile builds.

Games with BBA/Modem Support

Title Online/LAN Play
Homeland Online
Phantasy Star Online Episode I & IITrial Edition (Modem Only) Online
Phantasy Star Online Episode I & II Plus Online
Phantasy Star Online Episode III: C.A.R.D. RevolutionTrial Edition Online
Mario Kart: Double Dash‼ LAN
1080° Avalanche LAN
Kirby Air Ride LAN


How to use the BroadBand Adapter

"Tap-less" Built In BBA

Unlike the other BBA options which require a TAP or third party programs, the Built In BBA option's configuration is the same on all operating systems, including Android.

Configuring LAN

The Built In BBA option skips a lot of the more difficult and involved steps that were needed in order to use BBA emulation. The trade-off is that, by forwarding everything to the local network, you can only run one BBA instance per device when running LAN games. The only thing you need to do is enable the device under Config > GameCube > SP1, select Broadband Adapter (Built In)

If two or more devices are on the same network and using the Built-in BBA setting for LAN, the method to connecting is simple.

  • Startup the game on all devices.
  • Navigate to the LAN/BBA option.
  • Simply wait for the games to connect.

If two devices can't see each other, it's possible that you may need to reset the DNS for unknown reasons. Currently, Kirby Air Ride is not supported on Built-in BBA due to a bug.

Configuring Phantasy Star Online I+II

The Built-in BBA can also be used with Phantasy Star Online I + II and I + II+. The default setting for the DNS points to the schthack server. For more information on how to register, please check out their website.

With OpenVPN/TunTap

Windows

There is a problem with the TAP adapters created by OpenVPN 2.5. You'll want to get the latest 2.4 version (2.4.11).

  • Install OpenVPN TAP Adapter V9, included in the OpenVPN installer: OpenVPN download page
  • Go to start menu. Click TAP-Windows and then click Utilities. Right click Add a new TAP virtual ethernet adapter and run it as administrator. It will complete in a few seconds.
  • In Control Panel\Network and Sharing Center\Change adapter settings, select the TAP device and the adapter you use to connect to the internet.
  • Right-click and select Bridge Connections.
  • You can add as many TAP Virtual Ethernet Adapters as necessary to run multiple instances of Dolphin with BBA enabled at once.

Note that TAP adapters on Windows are slower than on Linux, resulting in lag and performance issues in games. This can be combatted by increasing the emulated CPU clock, which has the games send the BBA faster and gives the networking a little extra time to handle things.

Linux

Install OpenVPN from your distribution package manager, then run the following commands (as root) to create the virtual interface and bridge it to your physical Ethernet adapter:

openvpn --mktun --dev Dolphin0 --dev-type tap --user john --group doe  # john:doe will be running the emulator
brctl addbr br0
brctl addif br0 Dolphin0
brctl addif br0 eth0    # or whatever your network interface is
ip l set Dolphin0 up
ip l set br0 up
ip l set Dolphin promisc on

Dolphin supports multiple bridge interfaces so you'll be able to bridge multiple Dolphin instances together on the same system. Dolphin on Linux currently supports up to 32 bridges and will attempt to connect to bridges labelled from Dolphin0 to Dolphin31 sequentially until one succeeds or they all fail to connect to. Be careful with this, since if you attempt to use multiple Dolphin instances using the same broadband MAC address then games will encounter issues. For an example of how to bridge two Dolphin instances together and have two games like Mario Kart: Double Dash play with each other.

openvpn --mktun --dev Dolphin0 --dev-type tap --user john --group doe  # john:doe will be running the emulator
openvpn --mktun --dev Dolphin1 --dev-type tap --user john --group doe
brctl addbr br0
brctl addif br0 Dolphin0
brctl addif br0 Dolphin1
ip l set Dolphin0 up
ip l set Dolphin1 up
ip l set br0 up
ip l set Dolphin promisc on

You'll also need to change your network settings to configure IP/gateway on br0 instead of the real adapter. The IP address of the real adapter must be set to 0.0.0.0. Linux doesn't support adding a wireless interface to a bridge as of July 2012 so you need a wired NIC for that to work.

In case you still want to use a Wi-Fi network for connecting, there is the option to create another tunnel-interface over a UDP connection across the Wi-Fi network:

openvpn --dev tap-dolphin --port 2626 --remote otherIP --local thisIP --ping 10 --ping-exit 60 --daemon
ifconfig tap-dolphin 0.0.0.0

The created interface tap-dolphin can then be used to add to the br0 bridge instead of eth0. This only works if the bridge br0 interface is set to promiscuous. The game expects a DHCP server to provide a suitable IP address on one of the participating machines, like:

dhcpd br0

NOTE: There is no encryption for the tunnel. Read the OpenVPN manpage for setting up the tunnel with encryption and/or authentication.

Linux NetworkManager

This will create a permanent bridge with your Dolphin tun and Ethernet devices. Replace eth0 with your actual network interface.

nmcli connection add ifname br0 type bridge con-name br0
nmcli connection add type tun ifname Dolphin0 con-name Dolphin0 slave-type bridge master br0 mode tap owner `id -u` group `id -g` 802-3-ethernet.accept-all-mac-addresses true
nmcli connection add type bridge-slave ifname eth0 master br0
nmcli connection up br0  # will not activate if eth0 is currently used

Now deactivate the active connection (usually something called "Wired connection 1") and the bridge will complete.

Adding a wireless interface is possible but it's done slightly different. Replace 'ssidname' and 'password' with the actual values for your wireless network. The single quotes around password are important so make sure to keep them.

nmcli connection add type 802-11-wireless con-name ssidname ssid ssidname 802-11-wireless-security.key-mgmt wpa-psk 802-11-wireless-security.psk 'password' master br0

macOS

Install the TUN/TAP kext files, then install OpenVPN from your distribution package manager. Run this command to move the OpenVPN alias:

mv /usr/local/sbin/openvpn /usr/local/bin

Since Dolphin and OpenVPN needs access to /dev/tap0 and /dev/tap1, it must be owned by the current user:

sudo chown -R $(whoami) /dev/tap0; sudo chown -R $(whoami) /dev/tap1

NOTE: In the kext file for tap and tun, it will automatically make /dev/tap0 and /dev/tap1 owned by the root when the computer restarts.

Dolphin and the OpenVPN network cannot communicate with each other until there is a network bridge created:

sudo ifconfig bridge1 create

Start OpenVPN network:

openvpn --dev tap1 --port 2626 --remote otherIP --local thisIP --ping 10 --ping-exit 60 --daemon

Once both computers are connected, add tap1 to the network bridge.

sudo ifconfig bridge1 addm tap1

After launching the game in Dolphin, make sure the log is on and the log type is set to SP1. When the log shows: "BBA Initialized," add tap0 to the bridge.

sudo ifconfig bridge1 addm tap0

NOTE: There is no encryption for the tunnel. Read the OpenVPN manpage for setting up the tunnel with encryption and/or authentication.

With XLink Kai

As of 5.0-12233, Dolphin supports BBA tunneling through XLink Kai. Up to date instructions can be found on XLink Kai's Wiki Page.

Configure Dolphin

Enabling or disabling the BBA can be done at Config > GameCube > SP1, select Broadband Adapter (TAP) or Broadband Adapter (XLink Kai).

By clicking on "...", you can either change the MAC Address (TAP) or the IP Address (XLink Kai).

Now you may play any games which use the BBA.