8BitDo Ultimate 2C Wireless Controller
Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.
Every diagnosis on this page is traced to a real issue or commit across horizon-rust/horizon, starling-client/starling, and Rayan-XOO/horizon. Match your exact error message, GPU family, or operating system below before wiping worlds or reinstalling.

Cross-referenced against starling-client/starling and Rayan-XOO/horizon issue trackers.
| Symptom or Error Text | Affected Target | Root Cause & Verified Fix |
|---|---|---|
No derived pack: put horizon-derived.zip in the app folder | Rayan-XOO/horizon | Build ~4 MB horizon-derived.zip on PC via horizon-prepare (full guide) and select via 0.4.5+ file picker, or switch to Starling v0.8.0 (zero PC). |
underlying handle is not available on app resume / task switch | Mali-G57 / Helio G99 on Starling v0.8.0 | Vulkan swapchain surface lost when backgrounded (starling #394/#397). Fixed in starling-preview-0.8.1-test2-arm64-v8a.apk (test-0.8.1-2). |
| Instant crash on launch on Samsung Galaxy S24 FE, A55, or A57 | Samsung Exynos Xclipse 920 / 940 | Vulkan pipeline creation bug on RDNA mobile drivers (Rayan-XOO #17/#18). Update to horizon-0.4.6.apk or horizon-0.4.7.apk. |
| Crash or black terrain on budget PowerVR GE8320 / BXM phones | PowerVR Rogue / BXM GPUs | Exceeds hardware bound-sampler/shader slot limit. Use Starling test-0.8.1-2 (reduces BXM shader bindings) or GoyDevv v1.0.1 32-bit GL fallback. |
| Black screen after toggling experimental renderer or heavy shader | Rayan-XOO & Starling | In Rayan-XOO 0.4.6+, create empty safe-mode.txt in files/ to boot cleanly and re-pick Vulkan. In Starling, move the broken zip out of /storage/emulated/0/Starling/shaderpacks/. |
| World closes silently 5-20 seconds after spawning on 3 GB / 4 GB phone | Android Low-Memory Killer (lmkd) | Active heap reaches ~2.2 GB. Upgrade to horizon-0.4.7.apk (fixes post-world-load spike), set Render Distance to 4-6 chunks, and disable shaders. |
| Rubber-banding or setback flags on multiplayer servers running GrimAC | Starling / Mobile Touch Input | Unconstrained 360-degree thumbstick vectors fail vanilla 8-direction WASD checks. In Starling Touch Settings, switch movement mode to D-pad or Free Direction. |
| On-screen keyboard pops up randomly while looking around | Rayan-XOO 0.4.5/0.4.6 | Fixed in horizon-0.4.7.apk (2026-11-14): soft keyboard now opens strictly when tapping a text input field, alongside smoothed swipe camera look. |
Solutions for Windows x64/ARM64, Linux / Steam Deck, and macOS Apple Silicon / Intel.
| Symptom or Error Text | Affected Target | Root Cause & Verified Fix |
|---|---|---|
Running horizon-windows-x64.zip directly crashes or exits immediately | Windows / Linux / macOS nightly archives | Client nightly archives are engine payloads managed by Horizon Launcher, not standalone apps. Install launcher@0.2.66 so assets and mod allocators are staged. |
| Microsoft OAuth login spins indefinitely or times out | Desktop Launcher prior to 0.2.62 | Broken ISP IPv6 routes to Microsoft auth endpoints. Update to launcher@0.2.66, which includes automatic IPv4 sign-in fallback. |
| Windows staging error when creating directory junctions | Windows 10/11 with custom cmd.exe AutoRun | Custom registry Command Processor\AutoRun banners polluted junction command output. Fixed in launcher@0.2.65 and 0.2.66. |
| AppImage does not open when double-clicked on Ubuntu 24.04 / Arch | horizon-launcher-linux-x86_64.AppImage | Run chmod +x horizon-launcher-linux-x86_64.AppImage and install FUSE2 (sudo apt install libfuse2t64) or extract the .tar.gz build instead. |
| macOS reports 'Horizon Launcher cannot be opened' or damaged | macOS Sequoia / Sonoma Gatekeeper | Verify the SHA-256 hash first, drag the app to /Applications, then strip the browser download quarantine flag: xattr -dr com.apple.quarantine "/Applications/Horizon Launcher.app". |
| Micro-stutter at extreme chunk view distances (256-1,024 chunks) | Desktop 8 GB VRAM GPUs | Run /profiler in chat to export a .hzperf trace. Usually VRAM eviction kicks in above 8 GB; step view distance down to 64-128 chunks. |
Set Diagnostic Task to Fix black screen, crash or low RAM to copy the exact recovery commands for your fork and GPU.
# Verified Android Target Profile
Port & Package: dev.horizonlab.horizon (Rayan-XOO/horizon 0.4.7)
Active Folder: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/
Saves Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/saves/
Mods Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/mods/
Shaders Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/shaderpacks/
Mod Formats: .hnmod (prebuilt aarch64 cdylib) + .hmod
# Recommended GPU Settings
Renderer Mode: Vulkan + Fast Opaque Pass (ON)
Render Scale: 100% (or Auto shader profile in Starling)
Chunk Distance: 12-16 chunks (Adreno 650-830) / 8 chunks (Adreno 610)
# 1. On PC (JDK 25 + Rust): generate horizon-derived.zip once from 26.3 server.jar
git clone -b android-port https://github.com/Rayan-XOO/horizon.git
cd horizon
cargo run --release -p horizon-prepare -- --prepare --server-jar ~/Downloads/server.jar
bash packaging/android/make_derived_pack.sh
# 2. Push horizon-derived.zip (~4 MB) to phone after launching app once
adb push target/android/horizon-derived.zip /sdcard/Android/data/dev.horizonlab.horizon/files/
Fixes 'No derived pack: put horizon-derived.zip in the app folder'. Rayan-XOO downloads ~525 MB in-app over Wi-Fi, then merges your 4 MB derived pack.
Horizon desktop, Starling v0.8.0, and Rayan-XOO 0.3.7+ support Bluetooth and USB X-Input/D-Input controllers, automatically hiding touch buttons while you play.
Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.
Drift-free Hall sensors, swappable ABXY layout, and quiet face buttons tested across Windows, Linux, and Android.
Symmetrical dual-stick layout with X-Input, D-Input, and Android modes plus programmable rear hotbar paddles.
TMR electromagnetic sticks and 1000 Hz polling rate for high-refresh chunk exploration on desktop and mobile.
Affiliate disclosure: As an Amazon Associate, horizonrust.wiki earns from qualifying purchases at no added cost to you.
Log collection, package signature conflicts, 32-bit phones, and save safety.
In Starling v0.8.0, open the launcher screen and tap Options -> Diagnostics to export a sanitized diagnostic .zip. On Rayan-XOO or GoyDevv with a PC attached, run adb logcat -d | grep -iE 'horizon|vulkan|panic' > horizon-crash.txt right after the crash.
You are installing an APK signed with a different maintainer key over an existing install with the same package ID (for example switching from a CI build to a release APK). Back up your saves/ folder first, uninstall the old app, and install the verified GitHub Release APK.
Your phone runs a 32-bit Android OS even if the CPU chip has 64-bit cores, so arm64-v8a APKs cannot install. Download starling-0.8.0-armeabi-v7a.apk (29,980,044 B) or Horizon-Android-v1.0.1-armeabi-v7a.apk (34,179,786 B).
Touch scroll events could accidentally drag horizontal value sliders in v0.8.0 (Starling issue #398). That UI bug is fixed in Starling Preview test-0.8.1-2.
Clearing Cache in Android Settings is safe, whereas tapping Clear Data / Clear Storage deletes everything inside /Android/data/
Report desktop simulation, protocol, or Horizon Launcher issues at github.com/horizon-rust/horizon/issues. Report Starling shader/touch/Android issues at github.com/starling-client/starling/issues, and Rayan-XOO ViaHorizon/Android issues at github.com/Rayan-XOO/horizon/issues.