Skip to content

About

P2P remote volume control for Windows and Android powered by iroh

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Remote Volume Controller

Control Windows volume from Android over a secure peer-to-peer connection

Windows 11 Android Rust iroh Release

Download · Project plan · Report an issue

English · Русский

Important

The project is in early testing. The current v0.2.1 prerelease fixes smooth Windows-to-Android slider interaction and excessive Android background CPU/network use; owner confirmation of both corrections remains for Stage 2 acceptance. The Windows executable is not production-signed, and the Android APK is debug-signed.

Features

  • Control the Windows master media volume from Android.
  • Enable or disable Windows mute.
  • Display the actual volume, mute state, and active audio output.
  • Control Android media volume from Windows and display the confirmed Android volume step.
  • Receive Android hardware-button volume changes in the Windows application.
  • Run Android command reception only after explicit opt-in, with a persistent notification and Stop action.
  • Pair a phone by scanning a short-lived, one-time QR code.
  • Operate over a local network or the internet without a project-owned central backend.
  • Use direct QUIC connectivity, NAT traversal, and encrypted relay fallback through iroh.
  • Keep the Windows application running in the system tray when minimized or closed.
  • Restore the window or terminate the process from the tray menu.
  • Persist the trusted phone after a successful pairing.

How it works

flowchart LR
    A[Android / Poco F5] -->|Scan QR| Q[One-time pairing ticket]
    Q --> I[Secure iroh identity]
    A <-->|QUIC: direct or relay| W[Windows 11 tray app]
    W --> C[Windows Core Audio]
    C --> V[Windows master volume and mute]
    A --> M[Android AudioManager media volume]
Loading

The applications exchange Protocol Buffers messages over a dedicated iroh ALPN protocol. Each device owns a persistent cryptographic identity. A pairing ticket expires, can be consumed only once, and binds commands to a trusted peer.

Install the test build

Both platform artifacts are attached to the unified v0.2.1 prerelease.

Windows 11

  1. Download RemoteVolumeController-Windows-v0.2.1-debug.exe from the release.
  2. Verify the SHA-256 digest shown in the release notes.
  3. Run the executable. If Windows SmartScreen warns about an unknown publisher, use the verified digest before choosing to run this unsigned test build.
  4. Allow network access if Windows Firewall prompts you.
  5. Select Создать QR-код to create a pairing QR code.
  6. Use Выход in the tray menu to terminate the application completely.

Android

  1. On an Android 8.0+ arm64-v8a device, download RemoteVolumeController-Android-v0.2.1-debug.apk from the same release.
  2. Allow installations from the selected browser or file manager.
  3. Install the APK and grant camera and notification access.
  4. Select Сканировать QR-код and scan the QR code displayed by the Windows app.
  5. Enable Принимать команды для телефона; optionally enable start after reboot separately.
  6. In HyperOS battery settings, allow the background behavior required for the 30-minute acceptance test.
  7. Use the phone controls in Windows; each result is the actual Android media-volume step.

Verify tray behavior

  1. Press Minimize. The window should disappear while the process remains in the tray.
  2. Open the Remote Volume Controller tray menu and select Открыть.
  3. Close the window. It should return to the tray instead of terminating.
  4. Change the Windows volume from the phone while the desktop window is hidden.
  5. Select Выход in the tray menu to terminate the process.

Architecture

RemoteVolumeController/
├── apps/
│   ├── android/             # Kotlin, Jetpack Compose, CameraX, ML Kit
│   └── windows/             # Tauri 2, React, TypeScript
├── crates/
│   ├── p2p-core/            # iroh endpoint, pairing, trust, transport
│   ├── protocol/            # protobuf envelopes and framing
│   └── windows-audio/       # Windows Core Audio adapter
├── proto/                   # shared protocol contract
├── PLAN.md                  # ordered stages and acceptance criteria
└── Cargo.toml               # Rust workspace

Technology

  • Rust 2024 and Tokio.
  • iroh for QUIC, public-key addressing, hole punching, and relay fallback.
  • Protocol Buffers for the shared wire protocol.
  • Windows Core Audio API for master volume and mute.
  • Tauri 2, React, TypeScript, and Vite for the Windows UI.
  • Kotlin, Jetpack Compose, CameraX, and ML Kit for Android.
  • The official computer.iroh:iroh-android AAR for the Android runtime.

Build from source

Requirements

  • Rust 1.94.
  • Node.js and npm.
  • JDK 17 or newer.
  • Android SDK 35 and an Android NDK installation.
  • Windows 11 to build and run the Windows audio backend.

Rust and Windows

cargo test --workspace --all-targets --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
cd apps/windows/ui
npm ci
npm run build
cd ../../..
cargo build -p remote-volume-windows

Android

cd apps/android
gradlew.bat :app:check :app:assembleDebug

The debug APK is written to apps/android/app/build/outputs/apk/debug/app-debug.apk.

Project status

Stage 1 is DONE. Stage 2 functionality is implemented and accepted on a real Poco F5, including Windows-to-Android media-volume control, actual-state responses, hardware-button updates, and foreground receiving. Version v0.2.1 awaits owner confirmation of the slider and battery-use corrections before Stage 2 can become DONE.

Later planned stages are:

  • Harden background operation, peer revocation, and network recovery.
  • Produce signed installers and complete final acceptance.

See PLAN.md for the ordered implementation contract.

Security

  • The repository and releases exclude private identities, pairing secrets, trust stores, signing keys, and user data.
  • A QR ticket has an expiry and a one-time secret.
  • Commands are accepted only from a trusted peer.
  • Relay traffic remains encrypted; a relay does not receive device-control keys.

License

The workspace metadata declares dual licensing under MIT OR Apache-2.0.

Built for a simple moment: the phone is nearby, the computer is not, and the volume should change without leaving the bed.

About

P2P remote volume control for Windows and Android powered by iroh

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages