mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
README edit: identify support is for iOS12 and later
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<h1 id="uxplay-1.44-airplayairplay-mirror-server-for-linux-macos-and-unix.">UxPlay 1.44: AirPlay/AirPlay-Mirror server for Linux, macOS, and Unix.</h1>
|
||||
<p>This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and *BSD. It is now hosted at the github site <a href="https://github.com/FDH2/UxPlay">https://github.com/FDH2/UxPlay</a> (where development and user-assistance now takes place), although it initially was developed by <a href="http://github.com/antimof/Uxplay">antimof</a> using code from <a href="https://github.com/FD-/RPiPlay">RPiPlay</a>, which in turn derives from <a href="https://github.com/KqsMea8/AirplayServer">AirplayServer</a>, <a href="https://github.com/juhovh/shairplay">shairplay</a>, and <a href="https://github.com/EstebanKubata/playfair">playfair</a>. (The antimof site is mainly inactive, but periodically posts updates pulled from the <a href="https://github.com/FDH2/UxPlay">main UxPlay site</a>).</p>
|
||||
<p>Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/iPadOS/macOS clients (iPhones, iPads, MacBooks, as well as certain third-party AirPlay-emulator clients on Windows, such as <em>AirMyPC</em>) in a window on the server display (with the possibility of sharing that window on screen-sharing applications such as Zoom) on a host running Linux, macOS, or other unix, using Apple’s AirPlay Mirror protocol first available in iOS 5. (Details of what is publically known about Apple’s AirPlay2 protocol can be found <a href="https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol">here</a> and <a href="https://emanuelecozzi.net/docs/airplay2">here</a>).</p>
|
||||
<p>Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/iPadOS/macOS clients (iPhones, iPads, MacBooks, as well as certain third-party AirPlay-emulator clients on Windows, such as <em>AirMyPC</em>) in a window on the server display (with the possibility of sharing that window on screen-sharing applications such as Zoom) on a host running Linux, macOS, or other unix. UxPlay supports a “legacy” form of Apple’s AirPlay Mirror protocol introduced in iOS 12, and supports current iPads (5th generation or later) and iPhones (iPhone6 or later). (Details of what is publically known about Apple’s AirPlay2 protocol can be found <a href="https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol">here</a> and <a href="https://emanuelecozzi.net/docs/airplay2">here</a>).</p>
|
||||
<p>The UxPlay server and its client must be on the same local area network, on which a <strong>Bonjour/Zeroconf mDNS/DNS-SD server</strong> is also running (only DNS-SD “Service Discovery” service is strictly necessary, it is not necessary that the local network also be of the “.local” mDNS-based type). On Linux and BSD Unix servers, this is usually provided by <a href="https://www.avahi.org">Avahi</a>, through the avahi-daemon service, and is included in most Linux distributions (this service can also be provided by macOS, iOS or Windows servers).</p>
|
||||
<p>Connections to the UxPlay server by iOS/MacOS clients can be initiated both in AirPlay Mirror mode (which streams lossily-compressed AAC audio while mirroring the client screen, or in the alternative AirPlay Audio mode which streams Apple Lossless (ALAC) audio without screen mirroring (the accompanying metadata and cover art in this mode is not displayed). <em>Switching between these two modes during an active connection is possible: in Mirror mode, close the mirror window and start an Audio mode connection, switch back by initiating a Mirror mode connection.</em> <strong>Note that Apple DRM (as in Apple TV app content on the client) cannot be decrypted by UxPlay, and (unlike with a true AppleTV), the client cannot run a http connection on the server instead of streaming content from one on the client.</strong></p>
|
||||
<p>UxPlay uses GStreamer Plugins for rendering audio and video, and does not offer the alternative Raspberry-Pi-specific audio and video renderers available in <a href="https://github.com/FD-/RPiPlay">RPiPlay</a>. It is tested on a number of systems, including (among others) Ubuntu 20.04, Linux Mint 20.2, OpenSUSE 15.3, macOS 10.15, FreeBSD 13.0.</p>
|
||||
@@ -63,7 +63,7 @@
|
||||
<p>Some extra GStreamer packages for special plugins may need to be installed (or reinstalled: a user using a Wayland display system as an alternative to X11 reported that after reinstalling Lubuntu 18.4, UxPlay would not work until gstreamer1.0-x was installed, presumably for Wayland’s X11-compatibility mode). Different distributions may break up GStreamer 1.x into packages in different ways; the packages listed above in the build instructions should bring in other required GStreamer packages as dependencies, but will not install all possible plugins.</p>
|
||||
<h3 id="failure-to-decrypt-all-video-and-audio-streams-from-a-particular-older-client">5. Failure to decrypt ALL video and audio streams from a particular (older) client:</h3>
|
||||
<p>This triggers an error message, and will be due to use of an incorrect protocol for getting the AES decryption key from the client.</p>
|
||||
<p>Modern Apple clients use a more-encrypted protocol than older ones. Which protocol is used by UxPlay depends on the client <em>User-Agent</em> string (reported by the client and now shown in the terminal output). Since UxPlay 1.45, to support the third-party Windows AirPlay-client emulator <em>AirMyPC</em>, which uses the old protocol and reports itself as User-Agent: “AirMyPC/2.0”. The legacy protocol is used for clients reporting a User-Agent string contained in <code>OLD_PROTOCOL_AUDIO_CLIENT_LIST</code> (for the audio AES key) and <code>OLD_PROTOCOL_VIDEO_CLIENT_LIST</code> (for the video AES key), defined in<code>lib/global.h</code>. If they fail one of the decryption tests, you might be able to get very old versions of iOS or iPadOS to work with UxPlay by adding their User_Agent strings to the appropriate list.</p>
|
||||
<p>Modern Apple clients use a more-encrypted protocol than older ones. Which protocol is used by UxPlay depends on the client <em>User-Agent</em> string (reported by the client and now shown in the terminal output). Since UxPlay 1.45 (to support the third-party Windows AirPlay-client emulator <em>AirMyPC</em>, which uses the old protocol and reports itself as User-Agent: “AirMyPC/2.0”), a modified protocol is used for clients reporting a User-Agent string contained in <code>OLD_PROTOCOL_AUDIO_CLIENT_LIST</code> (for the audio AES key) and <code>OLD_PROTOCOL_VIDEO_CLIENT_LIST</code> (for the video AES key), defined in<code>lib/global.h</code>. If they fail one of the decryption tests, you might be able to get very old versions of iOS or iPadOS to work with UxPlay by adding their User_Agent strings to the appropriate list. <em>It has now been reported that iOS 9 and iOS 10 video work with UxPlay, but not the audio, and the suggested fix here did not fix the audio, and was not needed for video.</em></p>
|
||||
<h1 id="usage"><strong>Usage:</strong></h1>
|
||||
<p>Options:</p>
|
||||
<p><strong>-n server_name</strong> (Default: UxPlay); server_name@_hostname_ will be the name that appears offering AirPlay services to your iPad, iPhone etc, where <em>hostname</em> is the name of the server running uxplay. This will also now be the name shown above the mirror display (X11) window.</p>
|
||||
|
||||
17
README.md
17
README.md
@@ -10,10 +10,13 @@ from [RPiPlay](https://github.com/FD-/RPiPlay), which in turn derives from
|
||||
mainly inactive, but periodically posts updates pulled from the [main UxPlay site](https://github.com/FDH2/UxPlay)).
|
||||
|
||||
Its main use is to act like an AppleTV for screen-mirroring (with audio) of iOS/iPadOS/macOS clients
|
||||
(iPhones, iPads, MacBooks, as well as certain third-party AirPlay-emulator clients on Windows, such as _AirMyPC_) in a window on the server display (with the possibility of
|
||||
(iPhones, iPads, MacBooks, as well as certain third-party AirPlay-emulator clients on Windows, such as _AirMyPC_) in a window
|
||||
on the server display (with the possibility of
|
||||
sharing that window on screen-sharing applications such as Zoom)
|
||||
on a host running Linux, macOS, or other unix, using Apple's AirPlay Mirror protocol first available in iOS 5.
|
||||
(Details of what is publically known about Apple's AirPlay2 protocol can be found [here](https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol) and
|
||||
on a host running Linux, macOS, or other unix. UxPlay supports a "legacy" form of Apple's AirPlay Mirror protocol introduced
|
||||
in iOS 12, and supports current iPads (5th generation or later) and iPhones (iPhone6 or later).
|
||||
(Details of what is publically known about Apple's AirPlay2 protocol can be found
|
||||
[here](https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol) and
|
||||
[here](https://emanuelecozzi.net/docs/airplay2)).
|
||||
|
||||
The UxPlay server and its client must be on the same local area network,
|
||||
@@ -275,11 +278,11 @@ other required GStreamer packages as dependencies, but will not install all poss
|
||||
This triggers an error message, and will be due to use of an incorrect protocol for getting the AES decryption key from the client.
|
||||
|
||||
Modern Apple clients use a more-encrypted protocol than older ones.
|
||||
Which protocol is used by UxPlay depends on the client _User-Agent_ string (reported by the client and now shown in the terminal output). Since UxPlay 1.45,
|
||||
to support the third-party Windows AirPlay-client emulator _AirMyPC_, which uses the old protocol and reports itself as User-Agent: "AirMyPC/2.0".
|
||||
The legacy protocol is used for clients reporting a User-Agent string contained in ```OLD_PROTOCOL_AUDIO_CLIENT_LIST``` (for the audio AES key) and
|
||||
Which protocol is used by UxPlay depends on the client _User-Agent_ string (reported by the client and now shown in the terminal output). Since UxPlay 1.45
|
||||
(to support the third-party Windows AirPlay-client emulator _AirMyPC_, which uses the old protocol and reports itself as User-Agent: "AirMyPC/2.0"),
|
||||
a modified protocol is used for clients reporting a User-Agent string contained in ```OLD_PROTOCOL_AUDIO_CLIENT_LIST``` (for the audio AES key) and
|
||||
```OLD_PROTOCOL_VIDEO_CLIENT_LIST``` (for the video AES key), defined in```lib/global.h```. If they fail one of the decryption tests, you might be able to get very old
|
||||
versions of iOS or iPadOS to work with UxPlay by adding their User_Agent strings to the appropriate list.
|
||||
versions of iOS or iPadOS to work with UxPlay by adding their User_Agent strings to the appropriate list. _It has now been reported that iOS 9 and iOS 10 video work with UxPlay, but not the audio, and the suggested fix here did not fix the audio, and was not needed for video._
|
||||
|
||||
# **Usage:**
|
||||
|
||||
|
||||
17
README.txt
17
README.txt
@@ -18,9 +18,11 @@ of iOS/iPadOS/macOS clients (iPhones, iPads, MacBooks, as well as
|
||||
certain third-party AirPlay-emulator clients on Windows, such as
|
||||
*AirMyPC*) in a window on the server display (with the possibility of
|
||||
sharing that window on screen-sharing applications such as Zoom) on a
|
||||
host running Linux, macOS, or other unix, using Apple's AirPlay Mirror
|
||||
protocol first available in iOS 5. (Details of what is publically known
|
||||
about Apple's AirPlay2 protocol can be found
|
||||
host running Linux, macOS, or other unix. UxPlay supports a "legacy"
|
||||
form of Apple's AirPlay Mirror protocol introduced in iOS 12, and
|
||||
supports current iPads (5th generation or later) and iPhones (iPhone6 or
|
||||
later). (Details of what is publically known about Apple's AirPlay2
|
||||
protocol can be found
|
||||
[here](https://github.com/SteeBono/airplayreceiver/wiki/AirPlay2-Protocol)
|
||||
and [here](https://emanuelecozzi.net/docs/airplay2)).
|
||||
|
||||
@@ -367,15 +369,18 @@ protocol for getting the AES decryption key from the client.
|
||||
Modern Apple clients use a more-encrypted protocol than older ones.
|
||||
Which protocol is used by UxPlay depends on the client *User-Agent*
|
||||
string (reported by the client and now shown in the terminal output).
|
||||
Since UxPlay 1.45, to support the third-party Windows AirPlay-client
|
||||
Since UxPlay 1.45 (to support the third-party Windows AirPlay-client
|
||||
emulator *AirMyPC*, which uses the old protocol and reports itself as
|
||||
User-Agent: "AirMyPC/2.0". The legacy protocol is used for clients
|
||||
User-Agent: "AirMyPC/2.0"), a modified protocol is used for clients
|
||||
reporting a User-Agent string contained in
|
||||
`OLD_PROTOCOL_AUDIO_CLIENT_LIST` (for the audio AES key) and
|
||||
`OLD_PROTOCOL_VIDEO_CLIENT_LIST` (for the video AES key), defined
|
||||
in`lib/global.h`. If they fail one of the decryption tests, you might be
|
||||
able to get very old versions of iOS or iPadOS to work with UxPlay by
|
||||
adding their User\_Agent strings to the appropriate list.
|
||||
adding their User\_Agent strings to the appropriate list. *It has now
|
||||
been reported that iOS 9 and iOS 10 video work with UxPlay, but not the
|
||||
audio, and the suggested fix here did not fix the audio, and was not
|
||||
needed for video.*
|
||||
|
||||
**Usage:**
|
||||
==========
|
||||
|
||||
Reference in New Issue
Block a user