Skip to content

v0.9.10 — microphone redirection

Choose a tag to compare

@github-actions github-actions released this 30 Sep 03:12
· 25 commits to main since this release

A feature release: the client's microphone presents as a real macOS input device. Opt-in and EXPERIMENTAL; nothing changes unless you turn it on.

  • New: microphone redirection (#191). --enable-microphone-redirection (config ENABLE_MICROPHONE_REDIRECTION=1, or the menu-bar controller's Settings → Redirection → Microphone) feeds the client's mic into "macrdp Microphone" — a Core Audio device that shows up in System Settings → Sound → Input, Zoom, Teams, FaceTime and QuickTime. The client opts in too (mstsc: Local Resources → Remote audio → Settings → Record from this computer).
    • Install the driver once: it ships inside macrdp.app; install it from the controller (Install macrdp Microphone… — one admin prompt, and Core Audio restarts, briefly interrupting sound) or with macrdp.app/Contents/Resources/install-audio-plugin.sh. No entitlement needed.
    • Format: 16-bit PCM at 44.1 kHz only (no resampler yet). mstsc offers it; a client that can't gets no mic, and macrdp logs why.
    • Privacy caveat: the audio reaches the driver through a shared-memory segment that other local accounts on the Mac can read while a session is streaming (they can't write to it). On a Mac shared with other people, treat an active redirected mic as audible to them. Details in docs/macos-gotchas.md.
    • Upstream: the protocol layer is a vendored copy; upstream IronRDP's new ironrdp-rdpeai replaces it at the next dependency bump.
  • Fix: --lock-on-disconnect no longer locks underneath a client that's reconnecting (#190). A client that came back 12–22 s after leaving could be locked mid-handshake, stranding a remote user without --auto-unlock. A pending lock now holds for a recent authenticated reconnect (or briefly for a just-accepted connection), capped at 30 s so an unauthenticated peer can only delay the lock, never prevent it.

Verified: live on Windows 11 mstsc with the entitled build — the client's voice came through (−10.6 dB peak); on the final build the log confirms the 44.1 kHz format, a minute of streaming, and the shared segment wiped and released on disconnect. Controller install/remove verified. Not live-tested on FreeRDP's /microphone.

Pre-tag gates: cargo fmt --check clean on stable and nightly, cargo clippy --all-targets -- -D warnings clean, 259 tests passing.

Full history: docs/release-history.md

Artifacts

  • macrdp-v0.9.10-aarch64-apple-darwin-app.zip / .tar.gz — the standard CI build (ad-hoc signed, server only).
  • macrdp-0.9.10-usb.dmg — entitled build with both apps (server + menu-bar controller), notarized and stapled. The only build in which --enable-usb-redirection works, and the one the microphone was verified on.

All three are covered by SHA256SUMS.

Full Changelog: v0.9.9...v0.9.10