Turn your phone into a Linux microphone
Updated July 12, 2026 · 6 min read
The microphone in your phone is probably the best one you own, and on Linux, using it as a mic is simpler than anywhere else. There's no driver: Micstream is a small service that registers a virtual microphone directly with PipeWire, the audio system on every current distribution. PulseAudio, JACK, and ALSA applications all see it through PipeWire's compatibility layers.
You need three things:
- A distribution with PipeWire — the default on Ubuntu 22.10+, Fedora 36+, Debian 12+, and Arch
- An Android phone — iOS is planned for summer 2026
- Both devices on the same network
Setup
- 1
Install the Linux client
On Debian, Ubuntu, or Mint:
sudo apt install ./micstream-amd64.debOn Fedora:
sudo dnf install ./micstream-x86_64.rpmOn Arch and anything else, the tarball contains an
install.shthat installs to your home directory — no root needed. Arch splits PipeWire's audio plugins into a separate package, so make sure it's present:sudo pacman -S --needed pipewire-audio. All downloads are at the bottom of this page. - 2
Start the service
One command, once — it also starts automatically on every login afterwards:
systemctl --user enable --now micstream(The tarball's
install.shalready did this for you.) - 3
Install the Android app
It's on Google Play. No account, no sign-up. Audio travels directly from the phone to your machine on the local network and never touches a server.
- 4
Connect the phone
Open the app — it finds your machine automatically, as long as both devices are on the same network. Android asks for microphone permission on the first connect.
- 5
Pick Micstream as the input
Select Micstream in the microphone settings of the app you're using, or set it system-wide — GNOME: Settings → Sound → Input; KDE: System Settings → Sound. It's a normal input device, so everything from Zoom to OBS treats it like hardware.
Discord and OBS have their own device pickers that override the system default, so select Micstream there directly — there are short guides for Discord and OBS.
Noise cancellation
Every package ships DeepFilterNet, the same noise-cancellation engine the Windows client uses. It's off by default; one command turns it on:
micstream set noise-suppression=on It applies immediately — no restart, even mid-call — and stays on across reboots. The suppression is adaptive: it works harder the noisier the signal gets, up to 15 dB. If a fan or keyboard clatter still comes through, raise the ceiling while you're talking and listen for the sweet spot:
micstream set attenuation-limit=20 Everything runs on your computer, not on the phone, so it costs no phone battery.
Configuration
Behind micstream set sits one file: ~/.config/micstream/micstream.conf — one KEY=value per line, # starts a comment. set writes it for you; editing it by hand works
just as well and takes effect on systemctl --user restart micstream.
| Key | Default | What it does |
|---|---|---|
noise-suppression | off | DeepFilterNet noise cancellation, on or off. |
attenuation-limit | 15 | How many dB of noise the suppression may remove at most (10–25). |
noise-model | standard | low-latency switches to a faster model, which isn't bundled: put DeepFilterNet3_ll_onnx.tar.gz into ~/.local/share/micstream. |
update-check | on | Checks once a day for a new release and shows a notification. Nothing installs itself. |
telemetry | on | Reliability statistics under a random install id — packet counters, never audio. off disables it. |
noise-suppression and attenuation-limit apply live through micstream set; the other three take effect after the restart.
Everyday use
There's no window and no tray icon — by design. The client is a background service, and the one command worth remembering is:
micstream status micstream 1.0.0
phone: connected (192.168.0.42)
virtual mic: live — an app is capturing
noise: active (standard model, limit 15 dB)
buffer: 61 ms buffered, 0 underruns, 0 trims
session: 84210 packets, 3 late, 2 concealed, 0 decode errors It shows whether a phone is connected, whether an app is currently recording from the virtual
mic, and what noise cancellation is doing. When the phone connects or disconnects, you also get
a regular desktop notification. That — plus set from the sections above, --version, and --help — is the entire command line.
The service
The client is a plain systemd user service, so the usual commands apply:
# restart (needed after hand-editing the config file)
systemctl --user restart micstream
# stop, or stop and keep it off after reboots
systemctl --user stop micstream
systemctl --user disable --now micstream
# follow the logs
journalctl --user -u micstream -f Updates
The client never replaces itself. When a new version is released, you get a desktop
notification; download the new package from the links below and install it exactly like the
first time — sudo apt install ./micstream-amd64.deb (or the rpm equivalent)
upgrades in place, then systemctl --user restart micstream switches to the new
binary. The tarball's install.sh restarts the service for you.
Troubleshooting
Micstream isn't in the input device list
Check that the service is running: systemctl --user status micstream. If it
reports that PipeWire is unreachable, your distribution is likely still on plain PulseAudio
— Micstream needs PipeWire (default since Ubuntu 22.10, Fedora 36, Debian 12). If the log
shows pw_stream_connect failed, your system is missing PipeWire's audio plugins
— on Arch install the pipewire-audio package. If the device exists but an app keeps
using another mic, select Micstream in that app and restart it — many apps only scan for devices
at startup.
The app can't find your computer
Check the boring thing first: the phone has to be on the same network as the computer, not
on mobile data. Guest networks often enable AP isolation, which stops devices from seeing
each other — switch both to your main network. If you run a firewall, allow UDP ports
37718–37720: with ufw that's sudo ufw allow 37718:37720/udp, with firewalld add
the ports to your active zone.
Audio is choppy or delayed
That's the network, not the mic. Move closer to the router, or put the desktop on wired Ethernet — the phone side rarely is the bottleneck. The client keeps latency bounded on its own: short outages are concealed, and any backlog a congested network leaves behind is trimmed away automatically.
Common questions
Is it free?
The free tier is ad-supported: watching a rewarded ad grants streaming time. A Pro subscription removes the ads and limits.
Which distributions are supported?
Anything with PipeWire and systemd: Ubuntu, Debian, Fedora, Mint, Arch, and derivatives. The package is x86-64; the phone app talks the same protocol to Windows, macOS, and Linux clients, so nothing else changes.
What's the actual audio quality?
48 kHz stereo end to end, delivered into PipeWire as 32-bit float. Packet loss on the network is concealed by the codec's built-in error correction instead of turning into clicks.
Does it have noise suppression?
Yes — DeepFilterNet, off by default, one command to enable (no restart needed). See Noise cancellation above.
Can I use the phone while it's streaming?
Yes. The app runs in the background.
Downloads
- micstream-amd64.deb — Debian, Ubuntu, Mint
- micstream-x86_64.rpm — Fedora
- micstream-linux-x64.tar.gz — any distro, installs to your home directory
- SHA-256 checksums
And the app: