Skip to content

Repository files navigation

Manafish Android App

Android control application for the Manafish ROV built with Tauri, SolidJS, and Rust. It is an Android-focused adaptation of the desktop app in ../app: it speaks the exact same WebSocket protocol to the ROV firmware and renders the same HUD and settings, but replaces keyboard/gamepad input with on-screen touch controls (virtual joysticks and sliders).

Differences from the desktop app

  • Touch controls replace the keyboard/gamepad tabs: two virtual joysticks (left = surge/sway, right = pitch/yaw) with sliders above them for heave and roll, rendered over the camera feed. They can be toggled in Settings → Touch Controls.
  • HUD touch buttons for functions that are keybind-only on desktop: record, desired-depth stepping, auxiliary action axes, and custom actions.
  • No updater, SD-card flashing, or window chrome — these are desktop-only features.
  • Recording saves the MediaRecorder output directly (no FFmpeg remux).

Connecting to the ROV

Use an ethernet-to-USB-C adapter. The ROV firmware runs a DHCP server on its ethernet port, so the phone gets an address automatically; the app then connects to the same ws://10.10.10.10:9000 and WebRTC endpoints as the desktop app.

Prerequisites

  • Bun
  • Rust with the Android targets (rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android)
  • Android SDK + NDK, with ANDROID_HOME and NDK_HOME set
  • JDK 17+

Setup

bun install
bun run tauri android init

Development

bun run tauri android dev

Build

bun run tauri android build

Note

On Windows, Tauri links the built Rust library into the Gradle project with a symbolic link, which requires Developer Mode (or SeCreateSymbolicLinkPrivilege). Without it the build fails after the Rust compile step. Either enable Developer Mode, or copy the built library manually and finish with Gradle:

Copy-Item src-tauri\target\aarch64-linux-android\debug\libmanafish_lib.so `
src-tauri\gen\android\app\src\main\jniLibs\arm64-v8a\
cd src-tauri\gen\android
.\gradlew.bat assembleArm64Debug -x rustBuildArm64Debug

Scripts

ScriptDescription
bun run devStart Vite dev server
bun run buildBuild frontend
bun run testRun frontend tests (vitest)
bun run lintLint TypeScript
bun run lint:fixLint and auto-fix TypeScript
bun run fmtFormat TypeScript
bun run fmt:checkCheck TypeScript formatting
bun run lint:rsLint Rust
bun run lint:rs:fixLint and auto-fix Rust
bun run fmt:rsFormat Rust
bun run fmt:rs:checkCheck Rust formatting

Rust tests: cargo test --manifest-path src-tauri/Cargo.toml.

License

This project is licensed under the GNU Affero General Public License v3.0 or later - see the LICENSE file for details.

About

Android app for controlling Manafish.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages