README update for modularized uxplay-beacon

This commit is contained in:
F. Duncanh
2026-03-09 02:16:17 -04:00
parent 07fa972de1
commit 84662c360c
3 changed files with 185 additions and 101 deletions

View File

@@ -21,16 +21,17 @@
networks that do not allow the user to run a DNS_SD service.** The
user must run a Bluetooth LE "beacon", (a USB 4.0 or later "dongle"
can be used). The beacon is managed by a Python3 script
`uxplay-beacon.py` (available in three versions, a BlueZ/DBus
version for Linux/\*BSD, a winrt version for Windows, and a version
for the BlueIO usb-serial dongle (which has its own BlueTooth-LE
stack independent of that of the host system) that runs on all
systems including macOS). The beacon runs independently of UxPlay:
while UxPlay is running, it regularly broadcasts a Bluetooth LE
("Low Energy") 46 byte legacy-type advertisement informing nearby
iOS/macOS devices of the local IPv4 network address of the UxPlay
server, and which TCP port to contact UxPlay on. Instructions are
[given below](#bluetooth-le-beacon-setup).
`uxplay-beacon.py`: three implementations of Bleutooth LE
advertising are available as loadable modules: BlueZ for Linux only,
winrt for Windows only, and BleuIO for the BlueIO usb-serial dongle
(which has its own BlueTooth-LE stack, independent of that of the
host system) that runs on all systems including macOS and \*BSD).
The beacon runs independently of UxPlay: while UxPlay is running, it
regularly broadcasts a Bluetooth LE ("Low Energy") 46 byte
legacy-type advertisement informing nearby iOS/macOS devices of the
local IPv4 network address of the UxPlay server, and which TCP port
to contact UxPlay on. Instructions are [given
below](#bluetooth-le-beacon-setup).
- option `-vrtp <rest-of-pipeline>` bypasses rendering by UxPlay, and
instead transmits rtp packets of decrypted h264 or h265 video to an
@@ -490,7 +491,7 @@ First-time RPM builders should first install the rpm-build and
rpmdevtools packages, then create the rpmbuild tree with
"`rpmdev-setuptree`". Then download and copy uxplay.spec into
`~/rpmbuild/SPECS`. In that directory, run
"`rpmdev-spectool -g -R uxplay.spec`" to download the corresponding
"`pmdev-spectool -g -R uxplay.spec`" to download the corresponding
source file `uxplay-*.tar.gz` into `~/rpmbuild/SOURCES`
("rpmdev-spectool" may also be just called "spectool"); then run
"`rpmbuild -ba uxplay.spec`" (you will need to install any required
@@ -937,6 +938,15 @@ downloads, "UxPlay" for "git clone" downloads) and build/install with
affect the (small) initial OpenGL mirror window size, but the window
can be expanded using the mouse or trackpad.
Unfortunately, it seems that the macOS Bluetooth stack does not allow
users to broadcast Bluetooth LE advertisements of the type needed for
Bluetooth LE service discovery ("manufacture-specific" advertisements),
but this can be achieved if you acquire a BleuIO USB dongle which
provides its own Bluetooth LE stack, as a USB serial modem. Bluetooth
Service Discovery is an alternative to Rendezvous/Bonjour DNS_SD, and
can be used on networks that don't allow DNS_SD. See [instructions
below](#bluetooth-le-beacon-setup).
## Building UxPlay on Microsoft Windows, using MSYS2 with the MinGW-64 compiler.
- tested on Windows 10 and 11, 64-bit.
@@ -952,10 +962,8 @@ downloads, "UxPlay" for "git clone" downloads) and build/install with
- \*\*NEW: while you still need to install the Bonjour SDK to build
UxPlay, there is now an alternative method for Service Discovery
using a Bluetooth Low Energy (BLE) beacon. (Dfferent) Python3
scripts for running the beacon is on Linux/BSD\*, Windows and macOS
available for this.\*\* See [instructions
below](#bluetooth-le-beacon-setup).
using a Bluetooth Low Energy (BLE) beacon on Windows. See
[instructions below](#bluetooth-le-beacon-setup).
2. (This is for 64-bit Windows; a build for 32-bit Windows should be
possible, but is not tested.) The unix-like MSYS2 build environment
@@ -1583,27 +1591,50 @@ this to see even more of the GStreamer inner workings.
# Bluetooth LE beacon setup
The python\>=3.6 script for running a Bluetooth-LE Service Discovery
beacon is uxplay-beacon.py. It comes in two versions, one (for Linux and
\*BSD) is only installed on systems which support DBUS, and another only
for Windows 10/11. Bluetooth \>= 4.0 hardware on the host computer is
required: a cheap USB bluetooth dongle can be used.
The python\>=3.6 script for running a Bluetooth LE Service Discovery
beacon is uxplay-beacon.py. It provides three possible Bluetooth LE
implementations: one for Linux systems with D-Bus, one for Windows, and
one for the [BleuIO (or BleuIO Pro) USB dongle](https://www.bleuio.com)
with its own on-board Bluetooth-LE Stack that does not use the host
operating system Bluetooth (the Host sees the device as a USB serial
modem). This is needed for macOS where the operating system does not
allow users to send Bluetooth-LE advertisements of the type we require.
If a BleuIO dongle is available, the bleuio version of the python script
can be used on many operating systems including macOS, Windows and
Linux, and perhaps \*BSD (not tested): it requires python library
`python3-pyserial` to be installed.
On Linux/\*BSD, Bluetooth support (BlueZ) must be installed (on
Debian-based systems: `sudo apt install bluez bluez-tools`; recent
Ubuntu releases provide bluez as a snap package). In addition to
standard Python3 libraries, you may need to install the gi, dbus, and
psutil Python libraries used by uxplay-beacon.py. On Debian-based
systems:
On Linux, Bluetooth support (using the offical Linux Bluetooth stack
BlueZ) must be installed (on Debian-based systems:
`sudo apt install bluez bluez-tools`; recent Ubuntu releases provide
bluez as a snap package). In addition to standard Python3 libraries, you
may need to install the gi, dbus, and psutil Python libraries used by
uxplay-beacon.py. On Debian-based systems:
sudo apt install python3-gi python3-dbus python3-psutil
For Windows support on MSYS2 UCRT systems, use pacman -S to install
`mingw-w64-ucrt-x86_64-python`, `*-python-gobject`, `*-python-psutil`,
and `*-python-pip`. Then install **winrt** bindings:
"`pip install winrt-Windows.Foundation.Collections`", also
`winrt-Windows.Devices.Bluetooth.Advertisement` and
`winrt-Windows.Storage.Streams`.
If a python3-gi package is not found, install the python3-gobject
package which provides it.
For Windows support in the MSYS2 UCRT64 environment, use pacman -S to
install `mingw-w64-ucrt-x86_64-python`, `*-python-gobject`,
`*-python-psutil`, and `*-python-pip`. Then install **winrt** bindings
using pip (or pip3):
pip install winrt-Windows.Foundation
pip install winrt-Windows.Foundation.Collections
pip install winrt-Windows.Devices.Bluetooth.Advertisement
pip install winrt-Windows.Storage.Streams
For python \>= 3.11, the pip commands on "externally-managed" python
installations (such as the one provided in MSYS2) should be
pip install .... --break-system-packages
The option `--break-system-packages` was required to make users hesitate
before adding packages not provided by the "external management": *this
is unnecessarily scary, as in the case of the winrt packages, no
breakage will occur*.
If uxplay will be run with option "`uxplay -ble`" (so it writes data for
the Bluetooth beacon in the default BLE data file `~/.uxplay.ble`), just
@@ -1658,12 +1689,13 @@ version (the Windows operating system chooses their values):
*Note: running multiple beacons simultaneously on the same host has
not been tested, and this option might not be useful or needed.*
**NEW** While the native macOS BlueTooth-LE does not allow users to send
While the native macOS BlueTooth-LE does not allow users to send
"manufacturer-specific" advertisements like the uxplay service discovery
announcement, this can be achieved using the BleuIO dongle, which is a
usb-serial device with its own full BlueTooth-LE implementation (the
bleuio version of uxplay-beacon.py is installed in macOS systems, but
works on all operating systems).
usb-serial device with its own full Bluetooth LE implementation (the
BleuIO module for uxplay-beacon.py is installed with UxPlay in all
operating systems, including macos and \*BSD, while the BlueZ and winrt
modules are only installed on Linux and Windows, respectively).
If you wish to test Bluetooth LE Service Discovery on Linux/\*BSD, you
can disable DNS_SD Service discovery by the avahi-daemon with