Investigating RPiPlay — Apple Airplay on Fedora Linux
As a graduate student during COVID-19 some of my classes were online. I found it difficult to share my iPad screen over web conferences. At that time, I did not want to install Zoom because of the numerous security vulnerabilities. Furthermore, the feature of casting my iPad screen was exclusive to Zoom. If I wanted to share my screen in other applications such as Microsoft Teams or Google Meet — I needed an alternative. Over the course of a couple months, I researched and tested multiple methods to cast my iPad screen. This blog post is the fruits of my labor.
Table of Contents
- 1 Investigating RPiPlay — Apple Airplay on Fedora Linux
- 2 Steps To Installing RPiPlay
- 3 Demonstration
- 4 Why RPiPlay? Doesn't Zoom Have iPad Screen Sharing?
- 5 How I Found RPiPlay
Steps To Installing RPiPlay
The following Fedora instructions are adapted from the github page. For instructions on Ubuntu, please check their page
Install all dependencies cmake, libraries, and gstreamer
sudo dnf install cmake avahi-compat-libdns_sd-devel libplist-devel openssl-devel \
gstreamer1-plugins-base-devel gstreamer1-libav gstreamer1-vaapi \ gstreamer1-plugins-bad-free
Download the zip file from github or use git clone to the directory
git clone https://github.com/FD-/RPiPlay.git
Navigate to the directory you want to the app in
Within directory run following commands
Make a folder called build
mkdir build
Navigate to build folder
cd build
Have cmake prepare the application
cmake ..
Make
the application
make
Bonus, make it possible to run RPiPlay anywhere
sudo make install
Additional Notes
If you close the window make sure you end it in the task manager/system monitor/terminal, otherwise if you try sharing your screen the window won’t reopen. This is best demonstrated in the demonstration section
Why RPiPlay? Doesn't Zoom Have iPad Screen Sharing?
Zoom does indeed have screen casting, however, this requires installing the Zoom application. My preference is to run everything in a browser due to the nature browsers sandboxing everything, and I would not need to add an additional repository for updates.
Furthermore, screen casting is an exclusive Zoom feature, RPiPlay opens the screencast as a window. Since Microsoft Teams, Google Meet, or Open Broadcaster Studio allows for window capture, I have more choices to share my iPad screen
How I Found RPiPlay
Initial Searches
I started by searching for "airplay from ipad to linux". One of the first results was from Jonathansblog, who suggested using gnome videos (totem) with a totem plugin by phuang. I was able to install totem, but I ran into issues preparing the dependencies other than totem.
Reddit Solutions
After no luck with the totem plugin, I tried a different search "mirror ipad to linux". The first result was a reddit post on the iPad subreddit.
Open-Airplay, Slave in the Magic Mirror
The top rated response suggested looking into solutions from the open-airplay library github page. Having no luck with the totem plugin, I decided to look into the Slave in the Magic Mirror. I ran into issues preparing the dependencies in particular with the pip packages. After trying solutions to fixing the dependency issues from multiple web searches, I decided cut my losses try another reddit solution.
Ambystome Gstreamer Plugin
The second top rated response was from ambystome, there were multiple responses from people who got it working. A response to the solution had instructions for Ubuntu, there was a follow up response for instructions with Fedora. I had issues with getting the libgstairplay.so
working, and with little documentation for Fedora, I kept looking through the suggested solutions
UxPlay
The fourth top rated response suggested using UxPlay. The readme was made for Ubuntu, but browsing the pull requests had a guide for building on Fedora. After following the Fedora instructions, I had finally found my solution. Initially I had written a draft using UxPlay, intending to publish it within a couple days, but I wanted a fix to the two issues I encountered. The first issue is the same bug with RPiPlay, where a closed screen share window would not reopen upon re-pairing. The second issue is that to close UxPlay, you would need to find it in the system monitor and kill it from there. The third issue is that to launch UxPlay, you would need to go to the build directory and open the executable. After looking around for ways to make a shortcut, I couldn't find a good shortcut solution. Looking at the comments to the UxPlay response and the readme on Github, I realized I could try RPiPlay.
RPiPlay
I decided to try RPiPlay to see if the upstream version had a better shortcut solution. There was an additional command that made it globally installed, allowing me to run and close the application in a terminal partially solving the first issue. Running the application in the terminal solves the second issue.
sudo make install