UxPlay Control lets you mirror your iPhone's screen on Linux.

  • UxPlay and its graphical extension UxPlay Control allow you to mirror your screen and stream audio from Apple devices to Linux efficiently and for free.
  • Installation is straightforward on most distros, all you need is the right GStreamer plugins and some attention to small network configuration and permissions details.
  • It's not just for screen mirroring; it offers advanced customization (security, resolution, ports) and HLS streaming support, ideal for educational, professional, or home environments.
  • Its main advantage over alternatives is its native integration with AirPlay, the absence of proprietary limitations, and its adaptability to all types of hardware, from PCs to Raspberry Pi.

UxPlay Control

Integrating Apple devices like the iPhone, iPad, or Mac into Linux environments has historically been a complex task for the average user. This challenge has been primarily due to the lack of native support for Apple's proprietary technologies, such as AirPlay, on operating systems other than macOS. However, thanks to open source projects like UxPlay and its graphical extension, UxPlay Control For GNOME, enjoying screen mirroring and audio streaming from Apple devices on Linux is now much more accessible.

If you have the concern of share your iPhone or iPad screen on your computer running Ubuntu or any Linux-based distribution, you've come to the right place. In this article, you'll learn in-depth how UxPlay works, what real possibilities it offers in the Linux ecosystem, how to install and configure the entire environment, its limitations, and what alternatives you can consider. All of this, without neglecting the security, performance, and multiple customization options that the project offers, both in the terminal and in its graphical user interface versions.

What is UxPlay and what is its main function?

UxPlay is an unofficial, open source AirPlay server designed for Unix systems. Its main objective is to emulate the operation of an Apple TV, allowing iOS, iPadOS, and macOS devices to share their screen and stream audio or video to a computer running Linux, macOS, or even Windows. Compatible with AirPlay Mirror and AirPlay Audio, supports both real-time screen mirroring and high-quality audio transmission using the ALAC (Apple Lossless) protocol.

This tool eliminates the need for proprietary hardware and opens the door for any user to turn their PC or Raspberry Pi into a functional AirPlay receiver, ideal for presentations, streaming, screen recording, or simply enjoying multimedia content on a larger screen.

UxPlay Control: The graphical layer that simplifies the experience

One of the major barriers to UxPlay in its early days was its exclusive use via the command line. This limited the tool to users accustomed to the terminal and advanced configuration of technical parameters. In response to this shortcoming, UxPlay Control emerged, an extension for GNOME Shell that adds a graphical applet to the top panel of your favorite Linux desktop environment.

  • Visual management of server status: From the dashboard, you can start or stop UxPlay, see if it's active (status icons), and quickly access settings.
  • Intuitive configuration interface: It allows you to customize the device name, activate PINs or passwords, adjust video resolution, network ports, latency, or initial volume, among other key options.
  • Friendly experience for all levels: Thanks to UxPlay Control, commands are no longer required, democratizing AirPlay functionality on Linux for non-technical users.

This extension is especially useful in collaborative work environments, education, or any situation where you need to quickly share the screen of an Apple device on a Linux computer.

Compatibility and Requirements: Where and How Does UxPlay Work?

UxPlay is very versatile and Its development is geared towards current Linux systems and Raspberry Pi, although it is also compatible with macOS and Windows. To ensure maximum compatibility and performance, it is important to consider the following aspects:

  • GNOME Versions: The UxPlay Control extension requires GNOME 41 or higher.
  • Supported distributions: It runs on Ubuntu, Debian, Fedora, Arch, Manjaro, openSUSE, Rocky Linux, Mageia and derivatives, as well as Raspberry Pi OS and variants.
  • Required Components: It is essential to have the GStreamer plugins installed for audio and video decoding (packages such as gstreamer1.0-plugins-bad, gstreamer1.0-libav, among others depending on the distro), in addition to UxPlay itself.
  • Network requirement: All devices must be on the same local network for mDNS/Bonjour discovery to work properly.
  • Apple Devices: Compatible with iPhone, iPad, and Mac, even older models (iOS 9.3.5 and later).

On Windows and macOS systems, there are also specific versions and builds of UxPlay, facilitating cross-platform interoperability. Additionally, UxPlay can be installed and configured from pre-compiled packages on most distributions, or compiled from source to ensure you have the latest and most stable version.

Step-by-step installation of UxPlay on Ubuntu and derivatives

Installing UxPlay on Ubuntu is a simple process that only requires a few commands in the terminal. Here are the recommended steps:

  1. Install UxPlay: Run the installation command in the terminal, which on Debian-based systems would be: sudo apt install uxplay
  2. Install the GStreamer plugins: It is essential to have at least gstreamer1.0-plugins-bad y gstreamer1.0-libav. You can do it with: sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav
  3. Launch the UxPlay server: Just write uxplay in the terminal and leave the console open while using AirPlay.
  4. On your Apple device: Open Control Center, select Screen Mirroring, and choose 'UxPlay' from the list of receivers.
  5. End the session: When you're done, just close the UxPlay window or press Ctrl+C In the terminal.

This method will allow you to instantly view your iPhone or iPad screen on the Ubuntu desktop, with excellent video quality thanks to hardware-accelerated decoding if your computer supports it.

Advanced Installation: Compiling UxPlay from Source Code

For those who want the latest version, or require compatibility with other distributions, compiling UxPlay from source is a powerful option.

  1. Download the code: You can clone the official repository using git clone https://github.com/FDH2/UxPlay or download the ZIP package from the 'Releases' section.
  2. Prepare the environment: Make sure you have the build packages installed: sudo apt install build-essential cmake pkg-config libssl-dev libplist-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
  3. Compile the program: Inside the directory, run:
    • mkdir build && cd build
    • cmake ..
    • make
    • sudo make install
  4. Install the GStreamer plugins: Just like the standard method, make sure you have the packages mentioned above installed.

Compiling is especially recommended for advanced users who want to take advantage of all the new features of UxPlay or adapt the program to custom environments or unusual hardware.

Installing and using the UxPlay Control graphical extension in GNOME

The UxPlay Control extension is the perfect complement for those who prefer visual management from the GNOME desktop itself. To install it, follow these steps:

  1. Go to the official GNOME Shell Extensions site: Go to his Official Site
  2. Log in and activate the extension: You'll need to log in to install it. Click the corresponding switch.
  3. Configure UxPlay Control: Access the options from the top panel and adjust the necessary parameters (device name, ports, passwords, resolution, etc.).

Remember that to use the extension you must have previously installed UxPlay and the GStreamer plugins. The advantage is that, from this point on, almost all tasks can be performed from the graphical interface, saving time and facilitating management even in multi-user scenarios.

Advanced configuration options: absolute customization

UxPlay and its graphical extension offer many more options than they appear at first glance. Key possibilities include:

  • Custom Name and Host: Choose how your device appears in the AirPlay playlist on Apple devices.
  • Access control: Activate PIN or password security systems to prevent unauthorized access, ideal for public or open environments.
  • Video resolution and quality: Adjust the maximum resolution, enable automatic full screen mode, and configure latency to minimize delay between devices.
  • Custom Network Ports: Useful if your network has restrictions, or you use advanced firewalls.
  • Configuration via file: It is possible to define default parameters from files such as ~/.uxplayrc, facilitating the reuse of settings.

These options are especially relevant for demanding users, professionals, and those who want to automate the AirPlay experience on their network or work environment.

Technical details: How UxPlay achieves AirPlay integration

UxPlay leverages GStreamer as its audio and video engine, achieving cross-platform compatibility and hardware acceleration. The program acts as an AirPlay server that advertises itself on the network using Bonjour (DNS-SD/mDNS), and is automatically detected by Apple devices connected to the same local network.

  • In mirror mode: Receives the display signal from the Apple device and displays it in a floating window on the desktop, with synchronized audio.
  • In audio mode: Allows you to receive quality audio, compatible with Apple Lossless (ALAC), ideal for adding music to a room or connecting your Linux computer to advanced sound systems.
  • HLS Mode (HTTP Live Streaming): Supports direct streaming (e.g., from the YouTube app) via AirPlay HLS, delivering the video to the Linux server without going through the client.
  • Recovering metadata and covers: Displays song information and cover art on the server, useful in music playback systems or for displaying information on screen.

Using GStreamer allows you to adapt the experience to all types of hardware, from powerful PCs to low-end Raspberry Pis, using hardware decoding when available or software decoding if necessary.

Advantages of UxPlay over other screen mirroring alternatives

Although there are other solutions such as AirDroid Cast, TeamViewer, or Anydesk, UxPlay stands out especially for being free, efficient, and not requiring the installation of apps on Apple devices. The main advantages over other methods are:

  • No jailbreak, hacks, or cables required: UxPlay leverages AirPlay, native to iOS and macOS.
  • Free and open source: Completely transparent, without limitations or advertising.
  • Simplicity and speed of installation: Present in most official repositories of popular Linux distributions.
  • Optimization for various hardware: From desktop systems to Raspberry Pi, with support for advanced hardware/software decoders.

These advantages make UxPlay an ideal choice for home users, educational, business, and maker environments looking for a reliable and flexible solution for screen and audio sharing between Apple and Linux devices.

Limitations and aspects to take into account

While UxPlay is extremely useful, it has certain restrictions inherent to the AirPlay protocol and the technical limits of an open source solution.

  • Does not allow interaction with the Apple device: UxPlay only mirrors the screen; you can't control your phone or tablet using a mouse or keyboard on the receiving computer.
  • Does not work with DRM-protected content: Series, movies, and apps like Apple TV, Amazon Prime, and Netflix cannot be viewed due to legal and technical limitations.
  • Local network dependency and mDNS: All devices must be properly connected, and network ports open in case of firewalls.
  • Resource management: On older computers or Raspberry Pis, it is recommended to adjust the resolution and decoding modes to avoid bottlenecks.

These limitations are especially important for those looking for a complete replacement for proprietary solutions like AirServer or hardware like Apple TV. For most standard uses (presentations, photo sharing, demos, or personal videos), UxPlay more than meets expectations.

Cross-platform support and compatible hardware

UxPlay is a project designed to be universal and adaptable. Some key points about their compatibility:

  • Linux: Native support for major distributions and desktop environments (GNOME, KDE, XFCE, etc.)
  • Raspberry Pi: Optimized for both recent (Pi 4, Pi 5) and older (Zero 2W, 3B+) models. Leverages the Broadcom GPU for h264/h265 decoding.
  • Windows: There is uxplay-windows, with tray icon integration and simple visual management.
  • macOS: It works as an alternative to the native AirPlay Server, especially useful on computers not supported by Monterey or with older hardware.

Using GStreamer makes it easy to exploit accelerated hardware (Intel VAAPI, AMD, Nvidia, V4L2 on Raspberry Pi), and allows you to choose between hardware/software decoding depending on the context.

Use cases and practical scenarios

UxPlay and UxPlay Control can be used in a multitude of contexts. Some practical examples are:

  • Professional presentations: View your slides from your iPhone in a meeting room with a Linux PC connected to a projector.
  • Teaching work: Show examples or content from a tablet in in-person classes or educational recordings.
  • Recording and streaming: Use the floating window created by UxPlay to share your mobile screen through OBS Studio, Discord, or other video conferencing apps.
  • Home Entertainment: Enjoy photos, videos, or music from your Apple devices on your PC or Raspberry Pi connected to your TV.

In all cases, the only requirement is that the devices are on the same local network and configured correctly.

Comparison with other alternatives for screen sharing in Linux

In the screen mirroring and remote control landscape, there are several competing apps against UxPlay, each with its own advantages and disadvantages.

AirDroid Cast

AirDroid Cast allows you to share your iPhone screen on Ubuntu (or Windows/Mac), even with remote control if used outside of Linux. It offers a web version to manage it without installing additional apps, but it usually requires creating an account and the integration with AirPlay is less direct than in UxPlay.

TeamViewer

TeamViewer is known for remote support, file transfers, and multi-user management. You can mirror your iPhone screen in Ubuntu, but its primary focus is on remote access and interaction is limited.

Anydesk

AnyDesk stands out for its speed and simplicity. It allows you to mirror your screen with a unique code system, useful for quick and easy connections, but the user experience is not as integrated with AirPlay as it is with UxPlay.

While these alternatives are viable, UxPlay excels when the priority is to take advantage of AirPlay's native features on Linux, without relying on external servers or proprietary accounts.

Raspberry Pi-specific options

The Raspberry Pi is one of the devices where UxPlay shines thanks to its optimization and use of graphics hardware. To get the most out of it:

  • Hardware h264/h265 decoding: Recent models like the Pi 4 and Pi 5 support high-resolution video, although the Pi 5 does not have a hardware h264 decoder and software decoding must be used (sufficient given the extra power of the model).
  • Custom settings: It is recommended to adjust the memory dedicated to the GPU (on Pi OS, using 'raspi-config' or modifying /boot/config.txt).
  • No monitor required: UxPlay can operate in headless mode, audio-only mode, or as a media receiver.

The flexibility of Raspberry Pi allows you to create everything from home multimedia systems to digital signage environments or interactive kiosks controlled by AirPlay from Apple devices.

Security and access control

UxPlay integrates multiple layers of security to prevent unwanted connections. It is possible to establish:

  • PIN Authentication: Generates a random code that only the user who sees it on the terminal can enter into the Apple device.
  • Fixed password (via -pw): Forces only those who know the key to initiate an AirPlay session.
  • Registering “trusted” devices: Optionally, you can keep a record of the devices that have successfully authenticated by PIN so you don't have to ask for it every time you log in.
  • Restriction by DeviceID: Allows you to create white or black lists of devices allowed or blocked by their unique identifier (MAC).

These options are ideal for open networks, public spaces, or collaborative environments where some control over who views or streams content on the screen is required.

Video and audio stream customization options

UxPlay's GStreamer engine enables complete control over streaming quality. Among the most advanced configurations are:

  • Custom video and audio sinks: Manually select the most suitable GStreamer plugin for your hardware, such as vaapisink for Intel, glimagesink for OpenGL, or alsasink/pipewiresink/pulsesink for audio.
  • Resolution and frame rate: Adjust the size and maximum refresh rate (30fps, 60fps…) to optimize performance and latency.
  • Timing and latency: Choose between timestamp-based synchronization (default is in mirror mode to keep audio and video aligned) or live streaming mode to prioritize fluidity on powerful connections.
  • Volume and gain control: Decibel rescaling to adapt sound output to the environment.

These features make UxPlay a professional tool for content creators, musicians, or anyone seeking the highest quality multimedia experience.

Updates and development: future-proofing

UxPlay is a dynamic project with an active community. Some of the recent improvements and new features include:

  • Support for HLS Live Streaming (YouTube and other services): Allowed from version 1.71 and later.
  • Improved 4K (h265) support: Since version 1.70, ideal for high-definition content on powerful devices.
  • Advanced user management, security and customization: New whitelist/blacklist options, per-file configuration, improved logging system, and improved error messages.
  • Improvements in systemd integration: It is possible to manage UxPlay as a user service (daemon) to automatically start and stop on demand.

The project receives constant updates that fix bugs, improve compatibility, and add new features, ensuring the tool remains competitive with proprietary solutions.

Troubleshooting common problems

Like all advanced software, occasional issues may arise in the configuration of UxPlay. Here are some solutions to common problems:

  • Apple device does not see UxPlay server: Check that all computers are on the same network, that the avahi-daemon service is active, and that no firewalls are blocking UDP ports 5353 and TCP/UDP ports 7000, 7001, 7011, etc.
  • Missing GStreamer plugins: Install or reinstall the corresponding packages (e.g., gstreamer1.0-plugins-bad, gstreamer1.0-libav, or gst-plugins-good/bad/libav on Arch/Manjaro).
  • Latency issues or audio/video dropouts: Adjust the resolution, framerate, and try different video sinks (example: glimagesink, ximagesink, vaapisink).
  • Audio missing in mirror mode: Some systems require installing additional plugins for AAC decoding (avdec_aac).
  • Errors on Raspberry Pi: Check that the bcm2835-codec module is available and/or use software decoding (-avdec).

The gst-inspect-1.0 and avahi-browse tools are useful for diagnosing plugin and service installations respectively.

History and community behind UxPlay

UxPlay is the result of extensive collaboration within the open source ecosystem. Its development has evolved based on previous projects such as RPiPlay, ShairPlay or PlayFair, incorporating technical improvements, optimization for ARM architectures and improved support for graphics via GStreamer.

The community keeps the project alive through ongoing updates, documentation on GitHub, patches for new GStreamer versions, and a receptive attitude toward bugs, suggestions, and external contributions.

This ensures that UxPlay continues to adapt to changes in the AirPlay protocol and the requirements of increasingly demanding users.

Legality and licenses

UxPlay is distributed under the GPLv3 license, allowing its free use, modification and distribution. However, when implementing proprietary protocols like AirPlay, there are legal nuances regarding the distribution of binaries linked with certain libraries (e.g., OpenSSL) in some distributions.

The project uses only public information and resources available online, and is intended for educational and personal use. The responsibility for compliance with local legislation lies with the end user.

This makes it an ethical and safe alternative to the many closed, commercial AirPlay receivers on the market.

Summary of best practices and final tips

If you want to get the most out of UxPlay and its UxPlay Control extension, remember:

  • Always update to the latest possible version and keep your operating system up to date with all security patches.
  • Try different combinations of settings to tailor the experience to your hardware and needs.
  • Use authentication and allowed device lists if you use UxPlay in public environments.
  • Please consult the official documentation and contact the community if any specific issues arise.

With a little patience and experimentation, you'll discover UxPlay's full potential to break down the barriers between the Apple ecosystem and open source software, enjoying a seamless, professional, and customizable integration that's perfect for any commercial solution.