# Emufii: six-character netplay for emulators on Android

> Emufii is an Android app that puts your emulator and your friends' emulators on a private network for the length of a session, using Android's VPN feature so that local wireless multiplayer works over the internet. It runs no games itself, includes no ROMs, and needs a matching emulator build and game on every player's device.

**jojodogm-ctrl/emufii** — One code, and you're in the same room. Remote multiplayer between Android emulators: 3DS, Switch, PSP, PS2, DS and WII.

- Repository: https://github.com/jojodogm-ctrl/emufii
- Website: https://discord.gg/tvWcb28vBZ
- Stars: 817 · Forks: 20
- Language: Kotlin
- License: AGPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/jojodogm-ctrl-emufii

## What the app does during a session

Emufii connects your emulators to your friends' emulators over the internet, and the emulators think everyone is on the same Wi-Fi, so their own local multiplayer just works. The tagline is that one code gets you in the same room, and the point of it is that no ports are opened and no IP address has to be shared.

The README is unusually clear about what the app is not, and that list is worth reading before anything else. It is not an emulator, because every game runs in the emulator you already use and Emufii does not run any game itself. It is not a frontend, because the game library exists to start multiplayer sessions and it does not replace your usual launcher. It is not a downloader, because it does not include, download or install games, BIOS files, keys or emulators, and you install the emulators and use your own dumps. It is not streaming, because each player runs their own copy of the game on their own device. And it is not a way back to official servers, because it never connects to Nintendo's or Sony's servers, so games that needed them do not work online, with DS games through the Kaeru WFC revival server being the exception.

What it does do is described in the same table. It connects the players, with a private network between them for the length of a session, through Android's VPN feature, and only game traffic goes through it. It sets up the emulator, opening it on its multiplayer screen and filling in the connection details. It shows your games, from your own ROM folder, with covers and a compatibility badge, so you can start a session from the list. And it brings your friends, so you add them with a code, see who is online and what they are playing, and join their sessions.

The flow is four steps. You host, picking a game and sharing the six-character code. Friends join, entering the code or picking a public session. Emufii connects, opening the emulator and filling in the address. Then you play.

## The supported consoles and the version constraints

The compatibility table is the most operationally important part of the README, because it lists not just the emulators but the exact multiplayer mode and the version needed.

For Switch, the emulator is Eden and the mode is local wireless, with any recent version needed. For 3DS it is Azahar, also local wireless, needing the pre-release 2126.0-rc or newer. For Wii and GameCube it is Dolphin with netplay, and the README specifies the Android build 2606a. For PSP it is PPSSPP in ad hoc mode with any recent version. For PS2 it is ARMSX2 with System Link or LAN, also any recent version.

DS has two rows, and the difference matters. One is WatermelonDS Emufii Edition in local wireless mode at version 0.8.0.rc2-emufii, and that is a fork of WatermelonDS that adds the netplay support Emufii needs. The other is melonDS or WatermelonDS playing online through the Kaeru WFC service with any recent version.

The important note under the table is that every player needs the same emulator version and the same copy of the game. That is a hard requirement rather than a recommendation, because the local wireless protocols exchange state between instances and a mismatch shows up as a desynchronised game rather than an error.

The list of games that work is narrow by design. Games that had local multiplayer on the original console, and for the DS online mode, games that used Nintendo Wi-Fi Connection. The full list is in a separate COMPATIBLE-GAMES.md file in the repository, and the game library inside the app carries a compatibility badge so you can see before you start.

## The WatermelonDS fork and what the DS support actually requires

The DS local wireless support is called out in a prominent notice at the top of the README, because it arrived with version 2.0 and it comes with a condition.

DS local wireless games can be played online starting with Emufii 2.0, but this only works with WatermelonDS Emufii Edition, a fork of WatermelonDS that adds the netplay this needs. The fork installs next to the official WatermelonDS, so you keep your saves and settings, and once the official WatermelonDS includes the netplay the fork will not be needed anymore.

That last clause is a design decision stated plainly. The project is willing to maintain a fork of another emulator for as long as the upstream does not have the feature, and the migration path is the upstream gaining the same capability. Online play through Kaeru WFC still works with any melonDS or WatermelonDS, so the fork is only needed for the local wireless path.

The repository has a separate top-level directory for the emulator automation. ARMSX2-AUTOCONFIG.md and PPSSPP-AUTOCONFIG.md sit at the root, which is the sign that Emufii can configure those emulators automatically rather than making you type the address by hand, and the app/ contains the Android application, with the tools/ directory holding the tooling.

The work of connecting is distributed. The app sets up the network and fills in the address, and the emulator has to be configured to use it, which is where those autoconfig documents come in.

## Installing the APK, the accessibility grant and signature checks

The install is a three-step process. You install the emulators you want to use. You download the latest APK from the releases page and install it. Then you open Emufii and follow the setup.

The APK comes from the GitHub releases page rather than a store, which brings the first problem. Android blocks the autofill option for apps installed outside a store, and the fix is in the settings: go to App info, then the three-dot menu, then Allow restricted settings, and turn Emufii on in Settings, Accessibility. That grant is what lets the app read and fill in the emulator's connection fields, and without it the autofill option stays greyed out.

Updating is straightforward. You download the new APK from the releases page and install it over the old one, and your settings are kept.

The README also documents how to check the APK signature, which is sensible practice for an app distributed outside a store. The expected certificate fingerprint is given, and you verify it with apksigner.

```bash
21:EF:2D:D6:11:E0:96:5A:70:8F:61:F6:00:77:DE:97:D4:0D:59:FD:56:2F:1D:C5:F6:EF:6C:87:77:5E:81:D5
```

```sh
apksigner verify --print-certs Emufii-2.0.apk
```

The release history shows the pace of development. v2.0.3, v2.0.2 and v2.0.1 all landed on 2026-10-08, each labelled a hotfix, and the repository's last push was on 2026-10-09. A project shipping three hotfixes on the same day is one that is being tested in the field, which is also the warning the install section gives.

## The privacy model and the risk of a public session

The privacy table is where the project is most careful, and it is a per-item list of what goes where.

The session code, nickname and game are on the server for the length of the session and deleted when it ends. The profile picture is on the server, seen by your friends and the players in your sessions, and removing it in the app deletes it. Online status and last game are seen by anyone who has your friend code. The friend code itself is never shown to the other players of a session. Network traffic only game traffic goes through the Emufii network. And games, BIOS and keys are never included, with the instruction to use your own dumps.

The caution at the end is the important operational point. In a public session, other players' devices can reach yours, like on shared Wi-Fi. If you are playing with friends, keep the session private.

That is a real exposure and the README states it plainly. A public session is a shared network with strangers, which is the same trust model as a hotel Wi-Fi network, and the difference is that a game console with a private network open to it is a more attractive target than a laptop. The project does not soften this, it just tells you to use a private session with friends, which is the arrangement the six-character code was designed for in the first place.

The licence section is the other disclosure worth reading. The app is AGPL-3.0, and the README notes that the app's source code is in this repository but the session server and relay are private. So the client is auditable and the infrastructure that brokers the sessions is not, which is a meaningful distinction for anyone thinking about the trust model.

## Where Emufii is the wrong choice

The first limitation is that it is a network tool, and a network tool is only as good as the emulators on both ends. Every player needs the same emulator version and the same copy of the game, and the README says so. A session where one player has a different build of Dolphin is a desync, and diagnosing that means the emulator, not the app.

The second is the platform. It is built for Android handhelds, works on Android 13, 14 and 15, and there is no desktop client. Two people who both want to play have to both have Android devices, or at least one of them does.

The third is that it does not reach the official servers, and it says so. Games that required Nintendo's or Sony's online services simply do not work online, apart from DS through Kaeru WFC. That is a limitation of the approach rather than a bug, since the whole design is to fake a local network, and the official services are not a local network.

The fourth is the beta status. The install section warns that it works on Android 13, 14 and 15, to expect bugs, and to report them on Discord. With three hotfix releases on a single day in the history, the rate of change is high, and the AGPL licence plus a private server means you cannot self-host the broker to work around an outage.

The fifth is the accessibility grant. The app needs the restricted settings permission to read and fill the emulator's connection fields, and on Android that means the user has to dig into app info and enable a setting that looks like a security compromise. It is a legitimate system design choice, and it is also a barrier that many users will not find, and that the README covers in a collapsed troubleshooting section rather than in the main flow.

## Conclusion

Emufii suits Android handheld owners who play the same game with friends and cannot be in the same room, since a six-character code replaces port forwarding and IP sharing. It does not suit anyone hoping for one app to run games, since the emulators are yours to install and the app only wires the network. Check the compatibility list and the required emulator versions first, because every player needs the same emulator version and the same copy of the game, and the DS local wireless mode needs the specific WatermelonDS fork.

## FAQ

### What is Emufii and how does it work?

It is an Android app that connects your emulator to your friends' emulators over the internet for the length of a session, through Android's VPN feature, so the emulators behave as if everyone were on the same Wi-Fi. Only game traffic goes through it, and no ports need to be opened.

### Does Emufii include games or emulators?

No. The README is explicit that Emufii does not include, download or install games, BIOS files, keys or emulators. You install the emulators yourself and use your own dumps, and the game library is only there to start multiplayer sessions.

### Which emulators does Emufii support?

Eden for Switch, Azahar for 3DS, Dolphin for Wii and GameCube, PPSSPP for PSP, ARMSX2 for PS2, and for DS either WatermelonDS Emufii Edition for local wireless or melonDS and WatermelonDS through Kaeru WFC. The README lists the required version for each, and every player needs the same emulator version and the same copy of the game.

### Why is the autofill option greyed out in Emufii?

Android blocks it for apps installed outside a store. Go to App info, then the three-dot menu, then Allow restricted settings, and turn Emufii on in Settings, Accessibility. That grant is what lets the app fill in the emulator's connection details.

## Sources

- [jojodogm-ctrl/emufii on GitHub](https://github.com/jojodogm-ctrl/emufii)
- [License: AGPL-3.0](https://github.com/jojodogm-ctrl/emufii/blob/main/LICENSE)
- [Project website](https://discord.gg/tvWcb28vBZ)
- [README](https://github.com/jojodogm-ctrl/emufii/blob/main/README.md)
- [Releases](https://github.com/jojodogm-ctrl/emufii/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/jojodogm-ctrl-emufii
