emulnk
The DS experience, for every emulator.
Show live game data on your second screen, or on top of the game.
EmuLnk connects to emulators over UDP, reads game memory in real time, and renders it as themed HTML pages. It supports three modes: full-screen dashboards on a second screen, floating overlay widgets on top of the game, or both at once (bundle). Themes are HTML/CSS/JS WebViews driven by live data from JSON profiles. Themes can also write back to game memory, run macros, play sounds, and trigger haptic feedback.
Screenshots coming soon
Supported Emulators
| Emulator | Systems | Fork |
|---|---|---|
| RetroArch | SNES, Genesis, NES, GB, GBC, GBA, PS1, N64 | retroarch-lnk |
| Dolphin | GameCube, Wii | dolphin-lnk |
| PPSSPP | PSP | ppsspp-lnk |
| melonDS | NDS, DSi | melonds-lnk |
| Azahar | 3DS | azahar-lnk |
[!NOTE] Each emulator fork adds the EmuLnk binary UDP protocol. Install the fork alongside EmuLnk to use it.
How It Works
flowchart TB
subgraph S1["Screen 1"]
EMU["Emulator + Overlay Widgets"]
end
subgraph BG[" "]
APP["EmuLnk App"]
end
subgraph S2["Screen 2"]
THEME["Theme Dashboard"]
end
EMU -- "identity · UDP" --> APP
APP -- "memory read · UDP" --> EMU
APP -- "live data · JS Bridge" --> THEME
style S1 fill:#1a1730,stroke:#B47CFF,color:#B47CFF
style S2 fill:#1a1730,stroke:#00E5FF,color:#00E5FF
style BG fill:none,stroke:none
style EMU fill:#252142,stroke:#B47CFF,color:#e0e0e0
style APP fill:#252142,stroke:#B47CFF,color:#e0e0e0
style THEME fill:#252142,stroke:#00E5FF,color:#e0e0e0
- Detect: Sends an EMLKV2 handshake over UDP; emulator responds with JSON containing
game_id,game_hash, andplatform - Match: Hash resolves to an exact profile, or serial falls back to a compatible one
- Poll: Data points are read from emulator memory at a configurable rate (default 5 Hz)
- Render: Live data is pushed to the theme WebView (full-screen dashboard or floating overlay widgets) via JavaScript bridge
Installation
Download the latest APK from Releases or import the full EmuLnk suite into Obtainium:
[!TIP]
obtainium.json: Includes EmuLnk app + all emulator forks + repo tracking, grouped under one category. If you imported EmuLnk before the package IDs were corrected, delete the affected RetroArch, Dolphin, or PPSSPP entries from Obtainium and re-import this file.
Building from Source
git clone https://github.com/EmuLnk/emulnk.git
cd emulnk
./gradlew assembleDebug
Requires Android SDK 35 and JDK 11.
Creating Themes
Themes are self-contained folders with HTML, CSS, JS, and a theme.json manifest. See the full documentation:
| Resource | Description |
|---|---|
| Getting Started | First theme walkthrough |
| Theme Format | Manifest and file structure |
| Theme API | Data contract and updateData() |
| Bridge Methods | JavaScript bridge reference (emulink.*) |
| Profile Format | Data point definitions |
| Platform Quirks | System-specific memory notes |
Browse community themes and profiles in emulnk-repo.
Project Repos
| Repo | Description |
|---|---|
emulnk |
Android companion app |
emulnk-repo |
Themes, profiles, and system configs |
retroarch-lnk |
RetroArch fork with UDP protocol |
dolphin-lnk |
Dolphin fork with UDP protocol |
ppsspp-lnk |
PPSSPP fork with UDP protocol |
melonds-lnk |
melonDS fork with UDP protocol |
azahar-lnk |
Azahar fork with UDP protocol |

