---
name: "uxplay"
section: "1"
platform: "linux"
package: "uxplay"
version: "1.71.1-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/uxplay"
---

# uxplay(1)

start AirPlay server

## NAME

uxplay - start AirPlay server

## SYNOPSIS

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

## DESCRIPTION

UxPlay 1.71: An open-source AirPlay mirroring (+ audio streaming) server:

## OPTIONS

- **-n name Specify the network name of the AirPlay server**

  - **-nh** Do **NOT** append "@*hostname*" at end of AirPlay server name

  - **-h265** Support h265 (4K) video (with h265 versions of h264 plugins)

  - **-hls** Support HTTP Live Streaming (currently YouTube video only)

  - **-pin***\[xxxx\]*Use a 4-digit pin code to control client access (default: no)

  -

     without 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)

- **-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.

  - **-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 works with X11, Wayland, VAAPI, D3D11)

  - **-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,osxvideosink,kmssink,d3d11videosink,...

- **-vs** 0 Streamed audio only, with no video display window.

  - **-v4l2** Use Video4Linux2 for GPU hardware h264 video decoding.

  - **-bt709** Sometimes needed for Raspberry Pi models using Video4Linux2.

  - **-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.

  - **-al** x Audio latency in seconds (default 0.25) reported to client.

  - **-ca** *fn* In Airplay Audio (ALAC) mode, write cover-art to file fn.

  - **-reset** n Reset after 3n seconds client silence (default 5, 0=never).

  - **-nofreeze** Do NOT leave frozen screen in place after reset.

  - **-nc** Do NOT close video window when client stops mirroring

  - **-nohold** Drop current connection when new client connects.

  - **-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.

  - **-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.

- **-d** Enable debug logging

  - **-v** Displays version information

  - **-h** Displays help information

  ## FILES

Options in one of $UXPLAYRC, or ~/.uxplayrc, or  ~/.config/uxplayrc

- are applied first (command-line options may modify them). Format:

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

  ## AUTHORS

- Various, see website or distribution.

  ## COPYRIGHT

- 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\>
