diff --git a/README.html b/README.html index 5c531c8..c8cc5f7 100644 --- a/README.html +++ b/README.html @@ -1,7 +1,7 @@

UxPlay -1.56: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and -Unix.

+id="uxplay-1.56-airplay-mirror-and-airplay-audio-server-for-linux-macos-and-unix-now-also-runs-on-windows.">UxPlay +1.56: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix +(now also runs on Windows).

Now developed at the GitHub site https://github.com/FDH2/UxPlay (where all user issues should be posted).

Highlights:

This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and *BSD. It was initially developed by

Building -UxPlay on macOS: (Intel X86_64 and “Apple Silicon” M1 +id="building-uxplay-on-macos-intel-x86_64-and-apple-silicon-m1m2-macs">Building +UxPlay on macOS: (Intel X86_64 and “Apple Silicon” M1/M2 Macs)

Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware. UxPlay can run on older @@ -449,6 +454,95 @@ X11 GStreamer seems only possible if the image size is left unchanged from the initial “-s wxh” setting (also use the iPad/iPhone setting that locks the screen orientation against switching between portrait and landscape mode as the device is rotated).

+

Building +UxPlay on Windows (tested on Windows 10 64bit, using MSYS2 and MinGW-64 +compiler)

+

Limitations: “sudo make install” does not work (due to +lack of “sudo” equivalent on this platform); GStreamer sound was so far +only confirmed to work with the DirectSound audiosink option +“-as directsoundsink”. The identification of the “true” MAC +address of the UxPlay server is not yet implemented on Windows, so a +random MAC address is used.

+
    +
  1. Download and install Bonjour SDK for Windows +v3.0 from the official Apple site https://developer.apple.com/download

  2. +
  3. (This is for the MSYS2 build enviroment; other build environments +may also work, but are not yet tested): download and install MSYS2 from +the official site https://www.msys2.org/

  4. +
  5. For building on Windows 64 bit, install the +MinGW-64 compiler and cmake (MSYS2 packages are +installed with a variant of the “pacman” package manager adapted from +Arch Linux). After installation, you can add this compiler to your IDE. +The compiler with all required dependencies is located in the msys64 +directory, with default path C:/msys64/mingw64. +Alternatively, you can build UxPlay from the command line in the MSYS2 +environment (this uses “ninja” in place of +“make” for the build system).

    +

    To install and build from the command line, open a MSYS2 MinGW x64 +terminal from the MSYS2 64 bit tab in the Windows Start menu, then +run

    +

    pacman -S mingw-w64-x86_64-cmake

    +

    pacman -S mingw-w64-x86_64-gcc

    +

    echo 'export PATH="/mingw64/bin/:$PATH"' >> ~/.bashrc

    +

    Now close the MSYS2 terminal widow, and reopen a new one from the +Start menu, to use the new PATH.

  6. +
  7. Download latest UxPlay from github (to use +git, install it with pacman -S git, then +“git clone https://github.com/FDH2/UxPlay”), then +install UxPlay dependencies:

    +

    pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-openssl

    +

    pacman -S mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base

    +

    It should also be possible to install gstreamer for Windows from the +offical GStreamer +site, especially if you are trying a different Windows build +system.

  8. +
  9. cd to the UxPlay source directory, then +“mkdir build” and “cd build”, then

    +

    cmake ..

    +

    ninja

  10. +
  11. Assuming no error in either of these, you will have built the +uxplay executable uxplay.exe in the current (“build”) +directory. Unfortunately “make install” does not yet work, +as an equivalent to sudo does not appear to be available. +You can run uxplay.exe from the command line in the +build directory, or move it it somewhere in your PATH: in the MSYS2 +environment, /usr/local/bin is in the PATH, so install +using

    +

    mkdir /usr/local/bin

    +

    cp uxplay.exe /usr/local/bin/

    +

    This does not install manpages, but you will have access to help with +“uxplay -h”.

  12. +
+

To run uxplay.exe you need to install gstreamer +plugins. For sound, the audiosink option +-as directsoundsink has worked. Install plugins with +pacman -S mingw-w64-x86_64-gst-<plugin>, where +<plugin> is

+
    +
  1. libav
  2. +
  3. plugins-good
  4. +
  5. plugins-bad
  6. +
+

Other possible MSYS2 gstreamer plugin packages you might use are +listed in MSYS2 +packages.

+

You also will need to grant the uxplay executable permission to have +access through the Windows firewall. You may automatically be offered +the choice to do this when you first run uxplay, or you may need to do +it using Windows Settings->Update and Security->Windows +Security->Firewall & network protection -> allow an app +through firewall. If your virus protection flags uxplay.exe as +“suspicious” (but without a true malware signature) you may need to give +it an exception.

+

Now test (in a MSYS2 terminal window) with

+
uxplay -as directsoundsink
+

Unfortunately, so far there is no success in getting UxPlay to +successfully create a valid GStreamer audio pipeline ending at the +more-modern wasapi Windows audiosink with option +“-as wasapisink”.

Usage

Options:

-n server_name (Default: UxPlay); @@ -828,7 +922,10 @@ it seems that the use of “legacy” protocol just requires bit 27 (listed as “SupportsLegacyPairing”) of the “features” plist code (reported to the client by the AirPlay server) to be set. The “features” code and other settings are set in UxPlay/lib/dnssdint.h.

-

ChangeLog

+

Changelog

+

1.56 2022-09-01 Added support for building and running UxPlay-1.56 on +Windows (github source only, no changes to Unix (Linux, *BSD, macOS) +codebase.)

1.56 2022-07-30 Remove -bt709 from -rpi, -rpiwl, -rpifb as GStreamer is now fixed.

1.55 2022-07-04 Remove the bt709 fix from -v4l2 and create a new diff --git a/README.md b/README.md index d8d53bb..49ac15d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# UxPlay 1.56: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix. +# UxPlay 1.56: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows). ### Now developed at the GitHub site [https://github.com/FDH2/UxPlay](https://github.com/FDH2/UxPlay) (where all user issues should be posted). @@ -30,6 +30,9 @@ Highlights: development branch.) See [success reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:). + * **New**: Support for running on Microsoft Windows (so far only tested on current Windows 10 64 bit, + using MinGW-64 compiler in MSYS2 environment). + This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and \*BSD. It was initially developed by [antimof](http://github.com/antimof/Uxplay) using code @@ -308,7 +311,7 @@ Either avahi-libdns or mDNSResponder must also be installed to provide the dns_s OpenSSL is already installed as a System Library. -## Building UxPlay on macOS: **(Intel X86_64 and "Apple Silicon" M1 Macs)** +## Building UxPlay on macOS: **(Intel X86_64 and "Apple Silicon" M1/M2 Macs)** _Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware. UxPlay can run on older macOS systems that will not be able to run Monterey, or can run Monterey but not AirPlay._ @@ -378,6 +381,78 @@ Using the MacPorts X11 GStreamer seems only possible if the image size is left u (also use the iPad/iPhone setting that locks the screen orientation against switching between portrait and landscape mode as the device is rotated). +## Building UxPlay on Windows (tested on Windows 10 64bit, using MSYS2 and MinGW-64 compiler) + +Limitations: "`sudo make install`" does not work (due to lack of "sudo" equivalent on this platform); GStreamer sound was so far only confirmed to work with the DirectSound audiosink option "`-as directsoundsink`". The identification of the "true" MAC address of the UxPlay server is not yet implemented on Windows, so a random MAC address is used. + +1. Download and install **Bonjour SDK for Windows v3.0** from the official Apple site + [https://developer.apple.com/download](https://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20Windows) + +2. (This is for the MSYS2 build enviroment; other build environments may also work, but are not yet tested): download and install MSYS2 from the official site https://www.msys2.org/ + +3. For building on Windows 64 bit, install the **MinGW-64** compiler and cmake ([MSYS2 packages](https://packages.msys2.org/package/) are + installed with a variant of the "pacman" package manager adapted from Arch Linux). After installation, you can add this + compiler to your IDE. The compiler with all required dependencies is located in the msys64 directory, with + default path `C:/msys64/mingw64`. Alternatively, you can build UxPlay from the command line in the MSYS2 environment + (this uses "`ninja`" in place of "``make``" for the build system). + + To install and build from the command line, open a MSYS2 MinGW x64 terminal from the MSYS2 64 bit tab in the Windows Start menu, then run + + `pacman -S mingw-w64-x86_64-cmake` + + `pacman -S mingw-w64-x86_64-gcc` + + `echo 'export PATH="/mingw64/bin/:$PATH"' >> ~/.bashrc` + + Now close the MSYS2 terminal widow, and reopen a new one from the Start menu, to use the new PATH. + +4. Download latest UxPlay from github **(to use `git`, install it with ``pacman -S git``, + then "`git clone https://github.com/FDH2/UxPlay`")**, then install UxPlay dependencies: + + + `pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-openssl` + + `pacman -S mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base` + + It should also be possible to install gstreamer for Windows from the [offical GStreamer site](https://gstreamer.freedesktop.org/download/), + especially if you are trying a different Windows build system. + +5. cd to the UxPlay source directory, then "`mkdir build`" and "``cd build``", then + + `cmake ..` + + `ninja` + +6. Assuming no error in either of these, you will have built the uxplay executable **uxplay.exe** in the current ("build") directory. Unfortunately + "`make install`" does not yet work, as an equivalent to ``sudo`` does not appear to be available. You can run **uxplay.exe** from the command line in + the build directory, or move it it somewhere in your PATH: in the MSYS2 environment, `/usr/local/bin` is in the PATH, so install using + + `mkdir /usr/local/bin` + + `cp uxplay.exe /usr/local/bin/` + + This does not install manpages, but you will have access to help with "`uxplay -h`". + +To run **uxplay.exe** you need to install gstreamer plugins. For sound, the audiosink option `-as directsoundsink` has worked. +Install plugins with `pacman -S mingw-w64-x86_64-gst-`, where ```` is + + 1. **libav** + 2. **plugins-good** + 3. **plugins-bad** + +Other possible MSYS2 gstreamer plugin packages you might use are listed in [MSYS2 packages](https://packages.msys2.org/package/). + +You also will need to grant the uxplay executable permission to have access through the Windows firewall. You may automatically be offered the choice to do this when you first run uxplay, or you may need to do it using **Windows Settings->Update and Security->Windows Security->Firewall & network protection -> allow an app through firewall**. If your virus protection flags uxplay.exe as "suspicious" (but without a true malware signature) you may need to give it an exception. + +Now test (in a MSYS2 terminal window) with + +``` +uxplay -as directsoundsink +``` + +Unfortunately, so far there is no success in getting UxPlay to successfully create a valid GStreamer audio pipeline ending at +the more-modern **wasapi** Windows audiosink with option "`-as wasapisink`". + # Usage Options: @@ -701,7 +776,10 @@ tvOS 12.2.1); it seems that the use of "legacy" protocol just requires bit 27 (l "features" plist code (reported to the client by the AirPlay server) to be set. The "features" code and other settings are set in `UxPlay/lib/dnssdint.h`. -# ChangeLog +# Changelog +1.56 2022-09-01 Added support for building and running UxPlay-1.56 on Windows (github source only, no changes + to Unix (Linux, *BSD, macOS) codebase.) + 1.56 2022-07-30 Remove -bt709 from -rpi, -rpiwl, -rpifb as GStreamer is now fixed. 1.55 2022-07-04 Remove the bt709 fix from -v4l2 and create a new -bt709 option (previous diff --git a/README.txt b/README.txt index 6f27b05..bb9961c 100644 --- a/README.txt +++ b/README.txt @@ -1,26 +1,32 @@ -# UxPlay 1.56: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix. +# UxPlay 1.56: AirPlay-Mirror and AirPlay-Audio server for Linux, macOS, and Unix (now also runs on Windows). ### Now developed at the GitHub site (where all user issues should be posted). Highlights: - GPLv3, open source. + - Originally supported only AirPlay Mirror protocol, now has added support for AirPlay Audio-only (Apple Lossless ALAC) streaming from current iOS/iPadOS 15.6 clients. **There is no support for Airplay2 video-streaming protocol, and none is planned.** + - macOS computers (2011 or later, both Intel and "Apple Silicon" M1/M2 systems) can act either as AirPlay clients, or as the server running UxPlay. Using AirPlay, UxPlay can emulate a second display for macOS clients. + - Support for older iOS clients (such as 32-bit iPad 2nd gen. and iPhone 4S, when upgraded to iOS 9.3.5 or later), plus a Windows AirPlay-client emulator, AirMyPC. + - Uses GStreamer plugins for audio and video rendering (with options to select different hardware-appropriate output "videosinks" and "audiosinks", and a fully-user-configurable video streaming pipeline). + - Support for server behind a firewall. + - **New**: Support for Raspberry Pi, with hardware video acceleration using Video4Linux2 (vl42), which supports both 32- and 64-bit systems, unlike deprecated OpenMAX (omx), which is being dropped by @@ -32,6 +38,10 @@ Highlights: branch.) See [success reports](https://github.com/FDH2/UxPlay/wiki/UxPlay-on-Raspberry-Pi:-success-reports:). +- **New**: Support for running on Microsoft Windows (so far only + tested on current Windows 10 64 bit, using MinGW-64 compiler in + MSYS2 environment). + This project is a GPLv3 open source unix AirPlay2 Mirror server for Linux, macOS, and \*BSD. It was initially developed by [antimof](http://github.com/antimof/Uxplay) using code from @@ -361,7 +371,7 @@ Terminal output is saved to FILE (which can be /dev/null to discard it). be installed to provide the dns_sd library. OpenSSL is already installed as a System Library. -## Building UxPlay on macOS: **(Intel X86_64 and "Apple Silicon" M1 Macs)** +## Building UxPlay on macOS: **(Intel X86_64 and "Apple Silicon" M1/M2 Macs)** *Note: A native AirPlay Server feature is included in macOS 12 Monterey, but is restricted to recent hardware. UxPlay can run on older macOS @@ -450,6 +460,109 @@ from the initial "-s wxh" setting (also use the iPad/iPhone setting that locks the screen orientation against switching between portrait and landscape mode as the device is rotated). +## Building UxPlay on Windows (tested on Windows 10 64bit, using MSYS2 and MinGW-64 compiler) + +Limitations: "`sudo make install`" does not work (due to lack of "sudo" +equivalent on this platform); GStreamer sound was so far only confirmed +to work with the DirectSound audiosink option "`-as directsoundsink`". +The identification of the "true" MAC address of the UxPlay server is not +yet implemented on Windows, so a random MAC address is used. + +1. Download and install **Bonjour SDK for Windows v3.0** from the + official Apple site + [https://developer.apple.com/download](https://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20Windows) + +2. (This is for the MSYS2 build enviroment; other build environments + may also work, but are not yet tested): download and install MSYS2 + from the official site https://www.msys2.org/ + +3. For building on Windows 64 bit, install the **MinGW-64** compiler + and cmake ([MSYS2 packages](https://packages.msys2.org/package/) are + installed with a variant of the "pacman" package manager adapted + from Arch Linux). After installation, you can add this compiler to + your IDE. The compiler with all required dependencies is located in + the msys64 directory, with default path `C:/msys64/mingw64`. + Alternatively, you can build UxPlay from the command line in the + MSYS2 environment (this uses "`ninja`" in place of "`make`" for the + build system). + + To install and build from the command line, open a MSYS2 MinGW x64 + terminal from the MSYS2 64 bit tab in the Windows Start menu, then + run + + `pacman -S mingw-w64-x86_64-cmake` + + `pacman -S mingw-w64-x86_64-gcc` + + `echo 'export PATH="/mingw64/bin/:$PATH"' >> ~/.bashrc` + + Now close the MSYS2 terminal widow, and reopen a new one from the + Start menu, to use the new PATH. + +4. Download latest UxPlay from github **(to use `git`, install it with + `pacman -S git`, then + "`git clone https://github.com/FDH2/UxPlay`")**, then install UxPlay + dependencies: + + `pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-openssl` + + `pacman -S mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base` + + It should also be possible to install gstreamer for Windows from the + [offical GStreamer + site](https://gstreamer.freedesktop.org/download/), especially if + you are trying a different Windows build system. + +5. cd to the UxPlay source directory, then "`mkdir build`" and + "`cd build`", then + + `cmake ..` + + `ninja` + +6. Assuming no error in either of these, you will have built the uxplay + executable **uxplay.exe** in the current ("build") directory. + Unfortunately "`make install`" does not yet work, as an equivalent + to `sudo` does not appear to be available. You can run + **uxplay.exe** from the command line in the build directory, or move + it it somewhere in your PATH: in the MSYS2 environment, + `/usr/local/bin` is in the PATH, so install using + + `mkdir /usr/local/bin` + + `cp uxplay.exe /usr/local/bin/` + + This does not install manpages, but you will have access to help + with "`uxplay -h`". + +To run **uxplay.exe** you need to install gstreamer plugins. For sound, +the audiosink option `-as directsoundsink` has worked. Install plugins +with `pacman -S mingw-w64-x86_64-gst-`, where `` is + +1. **libav** +2. **plugins-good** +3. **plugins-bad** + +Other possible MSYS2 gstreamer plugin packages you might use are listed +in [MSYS2 packages](https://packages.msys2.org/package/). + +You also will need to grant the uxplay executable permission to have +access through the Windows firewall. You may automatically be offered +the choice to do this when you first run uxplay, or you may need to do +it using **Windows Settings-\>Update and Security-\>Windows +Security-\>Firewall & network protection -\> allow an app through +firewall**. If your virus protection flags uxplay.exe as "suspicious" +(but without a true malware signature) you may need to give it an +exception. + +Now test (in a MSYS2 terminal window) with + + uxplay -as directsoundsink + +Unfortunately, so far there is no success in getting UxPlay to +successfully create a valid GStreamer audio pipeline ending at the +more-modern **wasapi** Windows audiosink with option "`-as wasapisink`". + # Usage Options: @@ -861,7 +974,11 @@ as "SupportsLegacyPairing") of the "features" plist code (reported to the client by the AirPlay server) to be set. The "features" code and other settings are set in `UxPlay/lib/dnssdint.h`. -# ChangeLog +# Changelog + +1.56 2022-09-01 Added support for building and running UxPlay-1.56 on +Windows (github source only, no changes to Unix (Linux, \*BSD, macOS) +codebase.) 1.56 2022-07-30 Remove -bt709 from -rpi, -rpiwl, -rpifb as GStreamer is now fixed.