UxPlay: AirPlay-Mirror and AirPlay-Audio server

Airplay is very useful when we have an Apple device… except when we want to mirror to a screen without an Apple TV or without using an HDMI cable.

This is a working solution and open source, tested recently with:

  • Device to mirror: MacBook Pro 13″ Intel – macOS 12.5 (21G72)
  • UxPlay on RHEL 9 using Wayland and SELinux enforced

Building UxPlay

UxPlay doesn’t provide RPM package or RPM spec, I’ll do a PR to add one.

You need RPM Fusion repositories before continuing

  1. Install requirements: sudo dnf install -y openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-free
  2. Get source: git clone https://github.com/FDH2/UxPlay && cd UxPlay
  3. Compile: cmake . && make
  4. Install: sudo make install
  5. Repair SELinux: sudo restorecon -Rv /usr/local/

Firewalld

It’s time to authorize UxPlay

Create the service file: /etc/firewalld/services/uxplay.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
    <description>An open-source AirPlay mirroring server based on RPiPlay</description>
    <port port="6000-6001" protocol="udp"/>
    <port port="7011" protocol="udp"/>
    <port port="7000-7001" protocol="tcp"/>
    <port port="7100" protocol="tcp"/>
</service>

Enable uxplay: sudo firewall-cmd --zone=public --add-service=uxplay --permanent && sudo firewall-cmd --reload
Depending of your setup, you may need to change the zone to the right one.

Running UxPlay

You don’t need to be root, or special SELinux tuning…

Just running: /usr/local/bin/uxplay -p -vs waylandsink

Tags: