README update for the BleuIO version of uxplay-beacon.py

This commit is contained in:
F. Duncanh
2026-03-04 06:58:47 -05:00
parent 8602f86175
commit 3d9a6a47b6
3 changed files with 62 additions and 35 deletions

View File

@@ -24,14 +24,16 @@ Bonjour/Rendezvous DNS-SD service discovery). <strong>This can be used
on networks that do not allow the user to run a DNS_SD service.</strong> on networks that do not allow the user to run a DNS_SD service.</strong>
The user must run a Bluetooth LE “beacon”, (a USB 4.0 or later “dongle” 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 can be used). The beacon is managed by a Python3 script
<code>uxplay-beacon.py</code> (available in two versions, a BlueZ/DBus <code>uxplay-beacon.py</code> (available in three versions, a BlueZ/DBus
version for Linux/*BSD, and a winrt version for Windows). The beacon version for Linux/*BSD, a winrt version for Windows, and a version for
runs independently of UxPlay: while UxPlay is running, it regularly the BlueIO usb-serial dongle (which has its own BlueTooth-LE stack
broadcasts a Bluetooth LE (“Low Energy”) 46 byte legacy-type independent of that of the host system) that runs on all systems
advertisement informing nearby iOS/macOS devices of the local IPv4 including macOS). The beacon runs independently of UxPlay: while UxPlay
network address of the UxPlay server, and which TCP port to contact is running, it regularly broadcasts a Bluetooth LE (“Low Energy”) 46
UxPlay on. Instructions are <a href="#bluetooth-le-beacon-setup">given byte legacy-type advertisement informing nearby iOS/macOS devices of the
below</a>.</p></li> local IPv4 network address of the UxPlay server, and which TCP port to
contact UxPlay on. Instructions are <a
href="#bluetooth-le-beacon-setup">given below</a>.</p></li>
<li><p>option <code>-vrtp &lt;rest-of-pipeline&gt;</code> bypasses <li><p>option <code>-vrtp &lt;rest-of-pipeline&gt;</code> bypasses
rendering by UxPlay, and instead transmits rtp packets of decrypted h264 rendering by UxPlay, and instead transmits rtp packets of decrypted h264
or h265 video to an external renderer (e.g. OBS Studio) at an address or h265 video to an external renderer (e.g. OBS Studio) at an address
@@ -933,11 +935,12 @@ This should install the Bonjour SDK as
<code>C:\Program Files\Bonjour SDK</code>.</li> <code>C:\Program Files\Bonjour SDK</code>.</li>
</ol> </ol>
<ul> <ul>
<li><strong>NEW: while you still need to install the Bonjour SDK to <li>**NEW: while you still need to install the Bonjour SDK to build
build UxPlay, there is now an alternative method for Service Discovery UxPlay, there is now an alternative method for Service Discovery using a
using a Bluetooth Low Energy (BLE) beacon. A Windows-based python script Bluetooth Low Energy (BLE) beacon. (Dfferent) Python3 scripts for
for running the beacon is available for this.</strong> See <a running the beacon is on Linux/BSD*, Windows and macOS available for
href="#bluetooth-le-beacon-setup">instructions below</a>.</li> this.** See <a href="#bluetooth-le-beacon-setup">instructions
below</a>.</li>
</ul> </ul>
<ol start="2" type="1"> <ol start="2" type="1">
<li><p>(This is for 64-bit Windows; a build for 32-bit Windows should be <li><p>(This is for 64-bit Windows; a build for 32-bit Windows should be
@@ -1584,7 +1587,7 @@ default choice of BLE data file (<code>~/.uxplay.ble</code>) that is
monitored by the beacon script. This also requires that uxplay is run monitored by the beacon script. This also requires that uxplay is run
with option “<code>uxplay -ble &lt;BLE data file&gt;</code>”.</p></li> with option “<code>uxplay -ble &lt;BLE data file&gt;</code>”.</p></li>
</ul> </ul>
<p>The BlueZ/Dbus version has thee more options not offered by the <p>The BlueZ/Dbus version has three more options not offered by the
Windows version (the Windows operating system chooses their values):</p> Windows version (the Windows operating system chooses their values):</p>
<ul> <ul>
<li><p><code>--AdvMin x</code>, <code>--AdvMax y</code>. These controls <li><p><code>--AdvMin x</code>, <code>--AdvMax y</code>. These controls
@@ -1604,6 +1607,12 @@ instance of UxPlay must also have its own MAC address and ports).
not been tested, and this option might not be useful or not been tested, and this option might not be useful or
needed.</em></p></li> needed.</em></p></li>
</ul> </ul>
<p><strong>NEW</strong> 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).</p>
<p>If you wish to test Bluetooth LE Service Discovery on Linux/*BSD, you <p>If you wish to test Bluetooth LE Service Discovery on Linux/*BSD, you
can disable DNS_SD Service discovery by the avahi-daemon with</p> can disable DNS_SD Service discovery by the avahi-daemon with</p>
<pre><code>$ sudo systemctl mask avahi-daemon.socket <pre><code>$ sudo systemctl mask avahi-daemon.socket

View File

@@ -13,8 +13,10 @@
- Support for **service discovery using a Bluetooth LE "beacon"** for both Linux/\*BSD and Windows (as an alternative to Bonjour/Rendezvous DNS-SD - Support for **service discovery using a Bluetooth LE "beacon"** for both Linux/\*BSD and Windows (as an alternative to Bonjour/Rendezvous DNS-SD
service discovery). **This can be used on 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 service discovery). **This can be used on 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 two versions, a BlueZ/DBus version 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, and a winrt version for Windows). The beacon 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 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 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). 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).
@@ -924,8 +926,8 @@ downloads, "UxPlay" for "git clone" downloads) and build/install with
`C:\Program Files\Bonjour SDK`. `C:\Program Files\Bonjour SDK`.
* **NEW: while you still need to install the Bonjour SDK to build UxPlay, there is now an alternative method for * **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. A Windows-based python script for running the beacon Service Discovery using a Bluetooth Low Energy (BLE) beacon. (Dfferent) Python3 scripts for running the beacon
is available for this.** See [instructions below](#bluetooth-le-beacon-setup). is on Linux/BSD*, Windows and macOS available for this.** See [instructions below](#bluetooth-le-beacon-setup).
2. (This is for 64-bit Windows; a build for 32-bit Windows should be 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 possible, but is not tested.) The unix-like MSYS2 build environment
@@ -1593,16 +1595,22 @@ it is not given, an address will be obtained automatically (specify the address
* `--path <BLE data file>`. This overrides the default choice of BLE data file (``~/.uxplay.ble``) that is monitored by the beacon script. This also requires * `--path <BLE data file>`. This overrides the default choice of BLE data file (``~/.uxplay.ble``) that is monitored by the beacon script. This also requires
that uxplay is run with option "`uxplay -ble <BLE data file>`". that uxplay is run with option "`uxplay -ble <BLE data file>`".
The BlueZ/Dbus version has thee more options not offered by the Windows version (the Windows operating system chooses their values): The BlueZ/Dbus version has three more options not offered by the Windows version (the Windows operating system chooses their values):
* `--AdvMin x`, ``--AdvMax y``. These controls the interval between BLE advertisement broadcasts. This interval is in the range * `--AdvMin x`, ``--AdvMax y``. These controls the interval between BLE advertisement broadcasts. This interval is in the range
[x, y], given in units of msecs. Allowed ranges are 100 <= x <= y <= 10240. If AdvMin=AdvMax, the interval is fixed: if AdvMin < AdvMax [x, y], given in units of msecs. Allowed ranges are 100 <= x <= y <= 10240. If AdvMin=AdvMax, the interval is fixed: if AdvMin < AdvMax
it is chosen flexibly in this range to avoid interfering with other tasks the Bluetooth device is carrying out. The default values are it is chosen flexibly in this range to avoid interfering with other tasks the Bluetooth device is carrying out. The default values are
AdvMin = AdvMax = 100. The advertisement is broadcast on all three Bluetooth LE advertising channels: 37,38,39. AdvMin = AdvMax = 100. The advertisement is broadcast on all three Bluetooth LE advertising channels: 37,38,39.
* `--index x` (default x = 0, x >= 0). This can be used by the DBus to distinguish between multiple simultaneous instances of uxplay-beacon.py that are running to support multiple * `--index x` (default x = 0, x >= 0). This can be used by the DBus to distinguish between multiple simultaneous instances of uxplay-beacon.py that
instances of UxPlay. Each instance must have its own BLE Data file (just as each instance of UxPlay must also have its own MAC address and ports). _Note: are running to support multiple instances of UxPlay. Each instance must have its own BLE Data
running multiple beacons simultaneously on the same host has not been tested, and this option might not be useful or needed._ file (just as each instance of UxPlay must also have its own MAC address and ports). _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 "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).
If you wish to test Bluetooth LE Service Discovery on Linux/*BSD, you can disable DNS_SD Service discovery by the avahi-daemon with If you wish to test Bluetooth LE Service Discovery on Linux/*BSD, you can disable DNS_SD Service discovery by the avahi-daemon with

View File

@@ -21,14 +21,16 @@
networks that do not allow the user to run a DNS_SD service.** The 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" 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 can be used). The beacon is managed by a Python3 script
`uxplay-beacon.py` (available in two versions, a BlueZ/DBus version `uxplay-beacon.py` (available in three versions, a BlueZ/DBus
for Linux/\*BSD, and a winrt version for Windows). The beacon runs version for Linux/\*BSD, a winrt version for Windows, and a version
independently of UxPlay: while UxPlay is running, it regularly for the BlueIO usb-serial dongle (which has its own BlueTooth-LE
broadcasts a Bluetooth LE ("Low Energy") 46 byte legacy-type stack independent of that of the host system) that runs on all
advertisement informing nearby iOS/macOS devices of the local IPv4 systems including macOS). The beacon runs independently of UxPlay:
network address of the UxPlay server, and which TCP port to contact while UxPlay is running, it regularly broadcasts a Bluetooth LE
UxPlay on. Instructions are [given ("Low Energy") 46 byte legacy-type advertisement informing nearby
below](#bluetooth-le-beacon-setup). 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 - option `-vrtp <rest-of-pipeline>` bypasses rendering by UxPlay, and
instead transmits rtp packets of decrypted h264 or h265 video to an instead transmits rtp packets of decrypted h264 or h265 video to an
@@ -948,11 +950,12 @@ downloads, "UxPlay" for "git clone" downloads) and build/install with
site). This should install the Bonjour SDK as site). This should install the Bonjour SDK as
`C:\Program Files\Bonjour SDK`. `C:\Program Files\Bonjour SDK`.
- **NEW: while you still need to install the Bonjour SDK to build - \*\*NEW: while you still need to install the Bonjour SDK to build
UxPlay, there is now an alternative method for Service Discovery UxPlay, there is now an alternative method for Service Discovery
using a Bluetooth Low Energy (BLE) beacon. A Windows-based python using a Bluetooth Low Energy (BLE) beacon. (Dfferent) Python3
script for running the beacon is available for this.** See scripts for running the beacon is on Linux/BSD\*, Windows and macOS
[instructions below](#bluetooth-le-beacon-setup). available for this.\*\* See [instructions
below](#bluetooth-le-beacon-setup).
2. (This is for 64-bit Windows; a build for 32-bit Windows should be 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 possible, but is not tested.) The unix-like MSYS2 build environment
@@ -1635,7 +1638,7 @@ are
This also requires that uxplay is run with option This also requires that uxplay is run with option
"`uxplay -ble <BLE data file>`". "`uxplay -ble <BLE data file>`".
The BlueZ/Dbus version has thee more options not offered by the Windows The BlueZ/Dbus version has three more options not offered by the Windows
version (the Windows operating system chooses their values): version (the Windows operating system chooses their values):
- `--AdvMin x`, `--AdvMax y`. These controls the interval between BLE - `--AdvMin x`, `--AdvMax y`. These controls the interval between BLE
@@ -1655,6 +1658,13 @@ version (the Windows operating system chooses their values):
*Note: running multiple beacons simultaneously on the same host has *Note: running multiple beacons simultaneously on the same host has
not been tested, and this option might not be useful or needed.* 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
"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).
If you wish to test Bluetooth LE Service Discovery on Linux/\*BSD, you If you wish to test Bluetooth LE Service Discovery on Linux/\*BSD, you
can disable DNS_SD Service discovery by the avahi-daemon with can disable DNS_SD Service discovery by the avahi-daemon with