Play your computer's sound on your phone — and use your phone as the computer's microphone.
Listen. Whatever your computer is playing — music, a video, a call — comes out of your phone, or another computer, on the same WiFi.
Call mode. Your phone's microphone goes back the other way, so the phone becomes a wireless headset for a call you take on the computer.
your computer your phone
┌──────────────────┐ ┌──────────────────┐
│ music, video, │ ───── sound ─────▶ │ speaker │
│ your call │ │ │
│ │ ◀── your voice ─── │ microphone │
└──────────────────┘ (call mode) └──────────────────┘
same WiFi
The computer captures what it is already playing and sends it to the phone. In call mode the phone sends its microphone back, and the computer offers that to your call app as an input device named ausha.
Nothing is published yet. There is no release, no AUR package and no F-Droid listing so far, so for the moment build from source — the commands below are what the first release will look like. See packaging/README.md and fdroid/README.md for where that stands.
Debian, Ubuntu or Mint:
sudo apt install ./ausha_0.1.0_amd64.debFedora, RHEL or openSUSE:
sudo dnf install ./ausha-0.1.0-1.x86_64.rpmArch, from the AUR:
paru -S aushaAny other distribution — a static build that needs no libraries:
tar xf ausha-0.1.0-x86_64-linux-musl.tar.gz
cd ausha-0.1.0-x86_64-linux-musl
sudo ./install.sh # or: prefix=$HOME/.local ./install.shThere is an AppImage too, if you would rather not install anything:
chmod +x ausha-0.1.0-x86_64.AppImage
./ausha-0.1.0-x86_64.AppImage # the sender
./ausha-0.1.0-x86_64.AppImage recv --help # the receiverDownloads are on the releases page. Either way you need ffmpeg built with libopus and pactl on the machine; the packages pull both in, the tarball and AppImage tell you if they are missing.
Build from source, which needs Rust and cmake, and is the only route today:
cargo build --releaseThat leaves the binaries in target/release/. To build the packages themselves,
see packaging/README.md.
The Android app is in android/. Build it as step 2
below describes.
To listen only:
aushaFor calls as well:
ausha --uplinkIt prints a pairing code and a QR code. Leave it running.
Needs Linux and ffmpeg built with
libopus. The Windows sender is written but has never been run.
Build it yourself:
- Open the
android/folder in Android Studio. - On the phone, turn on USB debugging, and plug it into the computer.
- Press Run.
Or from the command line, which needs the Android SDK, the NDK and
cargo-ndk:
cd android && ./gradlew :app:installDebugThe app is packaged for F-Droid but not yet submitted; see fdroid/README.md for where that stands.
Tap Scan QR in the app and point it at the code on your screen. Sound starts straight away.
For calls, also turn on Call mode in the app, then pick ausha as the microphone in Zoom, Discord, Meet — whatever you are calling from.
Use headphones on the phone for calls. Speakerphone echo cancellation has not been confirmed on real hardware yet, so without headphones the person you are talking to may hear themselves.
No app needed. Use the address and code the sender printed:
ausha-recv --host <ip> --token <code>On the computer, ausha:
| Flag | What it does |
|---|---|
--uplink |
Also take the phone's microphone. Needed for call mode |
--encrypt |
Encrypt the audio |
--token <code> |
Reuse a pairing code instead of a new one each start |
--bitrate <kbps> |
Audio quality. Default 128 |
--no-qr |
Do not print the QR code |
--help |
Everything else |
On another computer, ausha-recv:
| Flag | What it does |
|---|---|
--host <ip> and --token <code> |
Required. Both are on the sender's screen |
--latency low, balanced or stable |
Less delay, or more resilience on bad WiFi |
--help |
Everything else |
| What you see | What it is |
|---|---|
| It just times out | The firewall. Allow TCP 6996 and UDP 6997 |
It times out, but ping works |
Your WiFi blocks device-to-device traffic. Common on guest networks — use another one |
invalid pairing token |
The code changes every time the sender starts. Use the one on screen now, or pin it with --token |
| No senders listed in the app | Your router blocks mDNS. Scan the QR code instead |
Crackling, or underruns counting up |
The link is genuinely struggling. Try --bitrate 96, or --latency stable on the receiver |
| Call mode says no microphone | The sender was started without --uplink |
- arch.md — how it is built, and how to run it the awkward ways:
playing the stream in
ffplayor mpv, encrypting it, soaking several receivers at once. - plan.md — what is done and what is next.
- packaging/README.md — building the Linux packages, and what each format is for.
- fdroid/README.md — cutting a release of the Android app and publishing it on F-Droid.
- Tests:
cargo test.
