UXPLAY(1)

πŸ’– UXPLAY(1) β€” like, the manual page, bestie πŸ’–

User Commands Β· UxPlay 1.73.7 Β· AirPlay mirroring, but make it open source πŸ¦‹


✨ NAME ✨

uxplay β€” start the AirPlay server. That's it, that's the whole name section, short and iconic πŸ’…


🌸 SYNOPSIS 🌸

uxplay [-n name] [-s wxh] [-p [n]] [more OPTIONS ...]

πŸŽ€ DESCRIPTION πŸŽ€

So bestie. UxPlay 1.73.7 is an open-source AirPlay mirroring (+ audio streaming) server. Like, it turns your computer into the thing your iPhone wants to talk to. Obsessed. 🫢


πŸ‘‘ OPTIONS πŸ‘‘

Okay this is the long part. Deep breath. Every single one is here, no cap. πŸ’œ

  • -n name β€” Set the network name of the AirPlay server (UTF-8/ascii). Name it whatever you want, main character energy only.
  • -nh β€” Do NOT append "@hostname" at the end of the AirPlay server name. Rude, honestly, but fine.
  • -h265 β€” Support h265 (4K) video (with h265 versions of h264 plugins). 4K girlies rise. πŸ”₯
  • -mp4 [fn] β€” Record (non-HLS) audio/video to mp4 file "fn.[n].[format].mp4".
    • n=1,2,.. and format = H264/5, ALAC/AAC. Default fn="recording".
  • -hls [v] β€” Support HTTP Live Streaming (HLS), YouTube app video only:
    • v = 2 or 3 (default 3) optionally selects video player version.
  • -lang xx β€” HLS language preferences ("fr:es:..", overrides $LANGUAGE).
  • -lang (or -lang 0) β€” play undubbed HLS version (overrides $LANGUAGE).
  • -scrsv n β€” Screensaver override, n: 0=off, 1=on while displaying video, 2=always on.
  • -pin[xxxx] β€” Use a 4-digit pin code to control client access (default: no).
    • without the option, pin is random: optionally use fixed pin xxxx.
  • -reg [fn] β€” Keep a register in $HOME/.uxplay.register to verify returning client pin-registration; (option: use file "fn" for this).
  • -pw [pwd] β€” Require use of password "pwd" to control client access.
    • (with no pwd, pin entry is required at each connection.)
    • (option "-pw" after "-pin" overrides it, and vice versa.)
  • -vsync[x] β€” Mirror mode: sync audio to video using timestamps (default).
    • x is optional audio delay: millisecs, decimal, can be neg.
  • -vsync no β€” Switch off audio/(server)video timestamp synchronization.
  • -async[x] β€” Audio-Only mode: sync audio to client video (default: no).
  • -async no β€” Switch off audio/(client)video timestamp synchronization.
  • -db l[:h] β€” Set minumum volume attenuation to l dB (decibels, negative);
    • optional: set maximum to h dB (+ or -); default -30.0:0.0.
  • -taper β€” Use a "tapered" AirPlay volume-control profile. Fancy curve behavior ✨
  • -vol v β€” Set initial audio-streaming volume: range [mute=0.0:1.0=full].
  • -s wxh[@r] β€” Request to client for video display resolution [refresh_rate].
    • default 1920x1080[@60] (or 3840x2160[@60] with -h265 option).
  • -o β€” Set display "overscanned" mode on (not usually needed).
  • -fs β€” Full-screen (only with X11, Wayland, VAAPI, D3D11, kms).
  • -p β€” Use legacy ports UDP 6000:6001:7011 TCP 7000:7001:7100.
  • -p n β€” Use TCP and UDP ports n,n+1,n+2. range 1024-65535.
    • use "-p n1,n2,n3" to set each port, "n1,n2" for n3 = n2+1.
    • "-p tcp n" or "-p udp n" sets TCP or UDP ports separately.
  • -avdec β€” Force software h264 video decoding with libav decoder.
  • -vp prs β€” Choose GStreamer h264 parser; default "h264parse".
  • -vd dec β€” Choose GStreamer h264 decoder; default "decodebin".
    • choices: (software) avdec_h264; (hardware) v4l2h264dec, nvdec, nvh264dec, vaapih264dec, vtdec, ...
  • -vc cnv β€” Choose GStreamer videoconverter; default "videoconvert".
    • another choice when using v4l2h264dec: v4l2convert.
  • -vs sink β€” Choose the GStreamer videosink; default "autovideosink".
    • choices: ximagesink,xvimagesink,vaapisink,glimagesink,gtksink,waylandsink,kmssink,fbdevsink,osxvideosink,d3d11videosink,d3d12videosink ...
  • -vs 0 β€” Streamed audio only, with no video display window.
  • -vrtp pl β€” Use rtph26[4,5]pay to send decoded video elsewhere: "pl" is the remaining pipeline, starting with rtph26*pay options:
    • e.g. "config-interval=1 ! udpsink host=127.0.0.1 port=5000"
  • -artp pl β€” Use rtpL16pay to send decoded audio elsewhere: "pl" is the remaining pipeline, starting with rtpL16pay options:
    • e.g. "pt=96 ! udpsink host=127.0.0.1 port=5002"
  • -v4l2 β€” Use Video4Linux2 for GPU hardware h264 video decoding.
  • -bt709 β€” Sometimes needed for Raspberry Pi models using Video4Linux2.
  • -srgb β€” Display "Full range" [0-255] color, not "Limited Range" [16-235].
    • This is a workaround for a GStreamer problem, until it is fixed.
  • -srgb no β€” Disable srgb option (use when enabled by default: Linux, *BSD).
  • -as sink β€” Choose the GStreamer audiosink; default "autoaudiosink".
    • choices: pulsesink,alsasink,pipewiresink,osssink,oss4sink,jackaudiosink,osxaudiosink,wasapisink,directsoundsink,..
  • -as 0 β€” (or -a) Turn audio off, streamed video only. Silence era πŸ™ˆ
  • -al x β€” Audio latency in seconds (default 0.25) reported to client.
  • -ca β€” Display cover-art in AirPlay Audio (ALAC) mode.
  • -ca fn β€” In Airplay Audio (ALAC) mode, write cover-art to file fn.
  • -md fn β€” In Airplay Audio (ALAC) mode, write metadata text to file fn.
  • -reset n β€” Reset after n seconds client silence (default n=15, 0=never).
  • -nofreeze β€” Do NOT leave frozen screen in place after reset.
  • -nc β€” Do NOT close video window when client stops mirroring.
  • -nc no β€” Cancel the -nc option (DO close video window).
  • -nohold β€” Drop current connection when new client connects. Brutal but necessary πŸ’€
  • -restrict β€” Restrict clients to those specified by "-allow deviceID".
    • Uxplay displays deviceID when a client attempts to connect.
    • Use "-restrict no" for no client restrictions (default).
  • -allow id β€” Permit deviceID = id to connect if restrictions are imposed.
  • -block id β€” Always block connections from deviceID = id. Not on the list, bestie 🚫
  • -FPSdata β€” Show video-streaming performance reports sent by client.
  • -fps n β€” Set maximum allowed streaming framerate, default 30.
  • -f {H|V|I} β€” Horizontal|Vertical flip, or both=Inversion=rotate 180 deg.
  • -r {R|L} β€” Rotate 90 degrees Right (cw) or Left (ccw).
  • -m [mac] β€” Set MAC address (also Device ID); use for concurrent UxPlays.
    • if mac xx:xx:xx:xx:xx:xx is not given, a random MAC is used.
  • -key [fn] β€” Store private key in $HOME/.uxplay.pem (or in file "fn").
  • -dacp [fn] β€” Export client DACP information to file $HOME/.uxplay.dacp (option to use file "fn" instead); used for client remote.
  • -vdmp [n] β€” Dump h264 video output to "fn.h264"; fn="videodump", change with "-vdmp [n] filename". If [n] is given, file fn.x.h264 x=1,2,.. opens whenever a new SPS/PPS NAL arrives, and <=n NAL units are dumped.
  • -admp [n] β€” Dump audio output to "fn.x.fmt", fmt ={aac, alac, aud}, x=1,2,..; fn="audiodump"; change with "-admp [n] filename". x increases when audio format changes. If n is given, <= n audio packets are dumped. "aud"= unknown format.
  • -ble [fn] β€” For BluetoothLE beacon: write data to default file ~/.uxplay.ble.
    • optional: write to file "fn" ("fn" = "off" to cancel).
  • -d [n] β€” Enable debug logging; optional: n=1 to skip normal packet data.
  • -v β€” Displays version information.
  • -h β€” Displays help information.
  • -rc fn β€” Read startup options from file "fn" instead of ~/.uxplayrc, etc.

πŸ¦‹ FILES πŸ¦‹

Options in one of $UXPLAYRC, or ~/.uxplayrc, or ~/.config/uxplayrc are applied first (command-line options may modify them). πŸ’–

Format, and this part matters:

  • one option per line, no initial "-";
  • lines beginning with "#" ignored.

🌈 AUTHORS 🌈

Various, see website or distribution. (Yes, that's really all it says. Mysterious queen behavior πŸ‘‘)


Various, see website or distribution. License: GPL v3+:

GNU GPL version 3 or later. (some parts LGPL v.2.1+ or MIT).


⭐ SEE ALSO ⭐

Website: <https://github.com/FDH2/UxPlay>


okay that's the whole page, you ate it, go mirror something ✨

UxPlay 1.73.7 Β· 2026-09-04 Β· bye bestie, stream responsibly πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from