Turn your phone into a Linux microphone

Updated July 21, 2026 · 6 min read

Micstream is a small service that registers a virtual microphone directly with PipeWire, the audio system on every current distribution.

You need three things:

  • A distribution with PipeWire (Ubuntu 22.10+/Fedora 36+/Debian 12+/Arch)
  • An Android phone (iOS is planned for summer 2026)
  • Both devices on the same Wi-Fi network

Setup

  1. 1

    Download Micstream

    Grab the package for your distribution:

  2. 2

    Install the Linux client

    Debian/Ubuntu/Mint:

    sudo apt install ~/Downloads/micstream-amd64.deb

    Fedora:

    sudo dnf install ~/Downloads/micstream-x86_64.rpm

    On Arch and anything else, the downloaded tarball contains an install.sh that 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
  3. 3

    Start the service

    Enable and start the service. It will also start automatically on every login:

    systemctl --user enable --now micstream

    If you installed from the tarball, install.sh has already done this.

  4. 4

    Install the Android app

    Install it from Google Play. No account is required.

  5. 5

    Connect the phone

    Open the app. It should find your PC automatically as long as both devices are on the same network.

  6. 6

    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 appears as a normal input device to every application.

Discord and OBS have their own device pickers that override the system default, so select Micstream there directly. There are separate guides for Discord and OBS.

Noise cancellation

The Micstream client comes with DeepFilterNet, a state-of-the-art noise-cancellation engine.

It is enabled by default. To turn it off:

micstream set noise-suppression=off

The setting applies immediately, without a restart, and persists across reboots. The noisier the signal, the more the suppression removes — up to 15 dB by default. If noise still comes through, raise the limit:

micstream set attenuation-limit=20

Processing runs on the computer, not on the phone, so it does not affect the phone's battery.

Configuration

The settings file is: ~/.config/micstream/micstream.conf.
Each line is one KEY=value pair, everything after a # is a comment.

Manual edits of the file take effect after:

systemctl --user restart micstream

Only noise-suppression and attenuation-limit apply live through micstream set, all other settings need a restart to take effect.

KeyDefaultWhat it does
noise-suppressiononDeepFilterNet noise cancellation, on or off.
attenuation-limit15How many dB of noise the suppression may remove at most (10–25).
noise-modelstandardlow-latency switches to a faster model, which isn't bundled: put DeepFilterNet3_ll_onnx.tar.gz into ~/.local/share/micstream.
update-checkonChecks once a day for a new release and shows a notification. Updates are never installed automatically.
telemetryonReliability statistics under a random install id. Only sends packet counters, not audio - off disables it.

Everyday use

The client has no window and no tray icon; it runs entirely as a background service. To check its state:

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

The output shows whether a phone is connected, whether an app is currently recording from the virtual mic, and what noise cancellation is doing. A desktop notification appears when the phone connects or disconnects. Besides status and set, the only other commands are --version and --help.

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 does not update itself. When a new version is released, you get a desktop notification. Download the new package from the links below and install it the same way as the first time: sudo apt install ~/Downloads/micstream-amd64.deb (or the rpm equivalent) upgrades in place, and systemctl --user restart micstream switches to the new binary. The tarball's install.sh restarts the service itself.

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

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 is sudo ufw allow 37718:37720/udp; with firewalld, add the ports to your active zone.

Audio is choppy or delayed

This is almost always a network problem, not a microphone problem. Move closer to the router, or put the desktop on wired Ethernet. The client keeps latency bounded on its own: short outages are concealed, and any backlog left by a congested network is trimmed 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 is the 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.

Does it have noise suppression?

Yes. DeepFilterNet is included in every package and on by default. See Noise cancellation above.

Can I use the phone while it's streaming?

Yes. The app runs in the background.

Downloads

And the app: