{"id":49166,"date":"2025-06-22T17:05:47","date_gmt":"2025-06-22T17:05:47","guid":{"rendered":"https:\/\/ubuntuhandbook.org\/?p=49166"},"modified":"2026-03-12T13:40:09","modified_gmt":"2026-03-12T13:40:09","slug":"mirror-iphone-ipad-screen-ubuntu","status":"publish","type":"post","link":"https:\/\/ubuntuhandbook.org\/index.php\/2025\/06\/mirror-iphone-ipad-screen-ubuntu\/","title":{"rendered":"How to Mirror iPhone\/iPad Screen on Ubuntu Desktop"},"content":{"rendered":"<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-49167\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon-250x250.webp\" alt=\"\" width=\"250\" height=\"250\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon-250x250.webp 250w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon-300x300.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon-700x700.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon-768x768.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/iphone-icon.webp 1200w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n<p><b>This is a step by step guide shows how to mirror your iOS or iPadOS screen onto Ubuntu computer desktop through Apple AirPlay.<\/b><\/p>\n<p>AirPlay is a protocol allowing to stream or share content from Apple Devices to Apple TV. Thanks to free open-source software (FOSS), it&#8217;s also easy to setup AirPlay server on Windows and Linux PC to receive content from Apple devices.<\/p>\n<div id=\"attachment_49168\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu.webp\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-49168\" class=\"size-large wp-image-49168\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu-700x394.webp\" alt=\"\" width=\"610\" height=\"343\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu-700x394.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu-300x169.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu-768x432.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu-1536x864.webp 1536w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu-1320x743.webp 1320w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-ubuntu.webp 1920w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><p id=\"caption-attachment-49168\" class=\"wp-caption-text\">my iPhone screen on Ubuntu 24.04 desktop<\/p><\/div>\n<p><!--more--><\/p>\n<p>There&#8217;s a popular Scrcpy tool to <a href=\"https:\/\/ubuntuhandbook.org\/index.php\/2023\/03\/scrcpy-2-0-install-android-remote-control\/\" target=\"_blank\" rel=\"noopener\">mirror &amp; control Android screen<\/a> on Ubuntu Desktop.<\/p>\n<p>For iOS, there&#8217;s a similar tool <b>UxPlay<\/b> can do the job mirroring iOS screen and forwarding sound, but <b>without ability to control<\/b> from computer.<\/p>\n<h3>Install UxPlay<\/h3>\n<p>UxPlay is available in all current Ubuntu and most other Linux system repositories.<\/p>\n<p>To install it in Ubuntu, press <code>Ctrl+Alt+T<\/code> on keyboard to open terminal and run command:<\/p>\n<pre>sudo apt install uxplay<\/pre>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/apt-uxplay.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49169\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/apt-uxplay-700x457.webp\" alt=\"\" width=\"610\" height=\"398\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/apt-uxplay-700x457.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/apt-uxplay-300x196.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/apt-uxplay.webp 706w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>The package in Ubuntu repository is always a bit outdated. For the latest version, you may follow the guide in <a href=\"https:\/\/github.com\/FDH2\/UxPlay\" target=\"_blank\" rel=\"noopener\">Github project page<\/a> to build from the source tarball.<\/p>\n<h3>Start UxPlay and Mirror Your iOS Screen<\/h3>\n<p>After installed the application, just start it by running the command below in terminal:<\/p>\n<pre>uxplay<\/pre>\n<p>The app has many CLI options, including:<\/p>\n<ul>\n<li><code>-pin xxxx<\/code> &#8211; 4 digit pin code for authentication purpose.<\/li>\n<li><code>-async 1<\/code> &#8211; audio only mode without screen mirroring. Number 1 is audio delay in millisecs.<\/li>\n<li><code>-fps 120<\/code> &#8211; max allowed streaming framerate (default 30).<\/li>\n<li><code>-fs<\/code> &#8211; full screen mode.<\/li>\n<li><code>-s 1920x1080@120<\/code> &#8211; set screen resolution and refresh rate.<\/li>\n<\/ul>\n<p>For example, run the command below to start mirroring in full-screen mode, with 120 max fps, and iOS need to type 1234 to authenticate.<\/p>\n<pre>uxplay -fs -fps 120 -pin 1234<\/pre>\n<p><b>NOTE: don&#8217;t know why, but some options are just NOT working properly in my case.<\/b><\/p>\n<p>After started uxplay in computer, swipe down from top-right in iOS screen, tap &#8220;Screen Mirroring&#8221; (the two square icon) and choose &#8220;UxPlay@Hostname&#8221; to start mirroring your screen.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-screensharing.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-49170\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-screensharing.webp\" alt=\"\" width=\"277\" height=\"600\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-screensharing.webp 277w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/ios-screensharing-139x300.webp 139w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/><\/a><\/p>\n<h3>Run UxPlay as background service<\/h3>\n<p>If you want to mirror your screen regularly, then you may run uxplay as a systemd service silently in the backend.<\/p>\n<p>Firstly, open (Ctrl+Alt+T) and run command to copy&#8217;n&#8217;paste service file into <code>\/etc\/system\/user<\/code> directory.<\/p>\n<pre>sudo cp \/usr\/share\/doc\/uxplay\/systemd\/uxplay.service \/etc\/systemd\/user\/<\/pre>\n<p>Next, enable and start the service as current user:<\/p>\n<pre>systemctl enable --now --user uxplay.service<\/pre>\n<p>You may then run <code>systemctl status --user uxplay<\/code> to check the service status. Or, replace <code>status<\/code> with <code>start | stop | restart<\/code> for other operations.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-service.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49171\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-service-700x413.webp\" alt=\"\" width=\"610\" height=\"360\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-service-700x413.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-service-300x177.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-service.webp 754w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>UxPlay also reads configuration from <code>.config\/uxplayrc<\/code> file. Create the file if not exist, and write the cli options (without &#8211; at beginning) one per line.<\/p>\n<p>Then try starting uxplay from command line, it should output that &#8220;<i>reading configuration from \/home\/USER\/.config\/uxplayrc<\/i>.&#8221;<\/p>\n<div id=\"attachment_49172\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-conf.webp\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-49172\" class=\"size-large wp-image-49172\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-conf-700x434.webp\" alt=\"\" width=\"610\" height=\"378\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-conf-700x434.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-conf-300x186.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-conf-768x476.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-conf.webp 868w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><p id=\"caption-attachment-49172\" class=\"wp-caption-text\">uxplay configuration file, one option per line<\/p><\/div>\n<h3>Add Indicator icon to start\/stop UxPlay (GNOME only)<\/h3>\n<p>For the default gnome desktop, there&#8217;s an extension that adds an indicator applet in system tray, allowing to turn on\/off and configure the AirPlay server quickly with few clicks.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-indicator.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-49173\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-indicator.webp\" alt=\"\" width=\"534\" height=\"300\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-indicator.webp 534w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-indicator-300x169.webp 300w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/a><\/p>\n<p>The extension so far supports <b>GNOME 45 ~ 49<\/b>, meaning for Ubuntu 24.04 and higher, and Fedora 40+.<\/p>\n<p>Ubuntu user may first search and install <b>Extension Manager<\/b> from App Center (filter by Debian package). Then, use the tool to search &amp; install the &#8220;UXPlay Control&#8221; extension.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-em.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-49174\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-em-700x500.webp\" alt=\"\" width=\"610\" height=\"436\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-em-700x500.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-em-300x214.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-em-768x548.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/06\/uxplay-em.webp 892w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>While other Linux may visit the <a href=\"https:\/\/extensions.gnome.org\/extension\/8243\/uxplay-control\/\" target=\"_blank\" rel=\"noopener\">extension in EGO<\/a>, then use ON\/OFF switch to install (need to install browser extension if it asks and refresh).<\/p>","protected":false},"excerpt":{"rendered":"<p>This is a step by step guide shows how to mirror your iOS or iPadOS screen onto Ubuntu computer desktop through Apple AirPlay. AirPlay is a protocol allowing to stream or share content from Apple Devices to Apple TV. Thanks to free open-source software (FOSS), it&#8217;s also easy to setup AirPlay server on Windows and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":49167,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[2225],"class_list":["post-49166","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","tag-airplay"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/49166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/comments?post=49166"}],"version-history":[{"count":0,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/49166\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media\/49167"}],"wp:attachment":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media?parent=49166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/categories?post=49166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/tags?post=49166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}