diff --git a/README.html b/README.html
index 943ed11..b6efcd5 100644
--- a/README.html
+++ b/README.html
@@ -24,12 +24,14 @@ 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 later “dongle”
can be used). The beacon is managed by a Python3 script
-uxplay-beacon.py: three implementations of Bleutooth LE
+uxplay-beacon.py: four 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
+winrt for Windows only, 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), and a low-level HCI
+module (Linux and BSD only) that access the Host Contoller Interface
+(but users need enhanced privileges to use this). 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
@@ -1545,7 +1547,7 @@ messages, set GST_DEBUG=4; for DEBUG messages, GST_DEBUG=5; increase
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 provides three possible
+Discovery beacon is uxplay-beacon.py. It provides four possible
Bluetooth LE implementations (loaded as modules): one for Linux systems
with D-Bus, one for Windows, and one for the BleuIO (or BleuIO Pro) USB dongle with
@@ -1557,6 +1559,13 @@ 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.
+A fourth implementation (module HCI) for Linux or FreeBSD (maybe
+other BSD’s too?) requires elevated permissions to access the Host
+Controller Interface. These are granted by adding users to a new group
+“hciusers” that are give permission to call
+“sudo -n hcitool/hciconfig/hccontrol” without entering a
+password: this can be configured by the system admistrator using visudo,
+but has security implications.
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
@@ -1998,6 +2007,9 @@ an AppleTV6,2 with sourceVersion 380.20.1 (an AppleTV 4K 1st gen,
introduced 2017, running tvOS 12.2.1), so it does not seem to matter
what version UxPlay claims to be.
Changelog
+1.73.4 2026-03-15 Modularize Bluetooth support for uxplay-beacon. Add
+modules for BLeuIO serial-modem Bluetooth LE device, and HCI access
+(Linux/FreeBSD). Fix broken -vol option.
1.73 2026-01-25 Render Audio cover-art inside UxPlay with -ca option
(no file specified). (D-Bus based) option -scrsv to inhibit
screensaver while UxPlay is running (Linux/*BSD only). Add password
diff --git a/README.md b/README.md
index d914bc7..ea991b0 100644
--- a/README.md
+++ b/README.md
@@ -13,10 +13,11 @@
- 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
- later "dongle" can be used). The beacon is managed by a Python3 script `uxplay-beacon.py`: three implementations of Bleutooth LE advertising are available
- as loadable modules: BlueZ for Linux only, winrt for Windows only, and BleuIO
+ later "dongle" can be used). The beacon is managed by a Python3 script `uxplay-beacon.py`: four implementations of Bleutooth LE advertising are available
+ as loadable modules: BlueZ for Linux only, winrt for Windows only, 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
+ host system) that runs on all systems including macOS and *BSD), and a low-level HCI module (Linux and BSD only) that
+ access the Host Contoller Interface (but users need enhanced privileges to use this). 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
@@ -1559,9 +1560,8 @@ 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 provides three possible Bluetooth LE implementations (loaded as modules): one for Linux systems with D-Bus,
-one for Windows, and one for
-the [BleuIO (or BleuIO Pro) USB
+It provides four possible Bluetooth LE implementations (loaded as modules): 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
@@ -1569,6 +1569,11 @@ 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.
+A fourth implementation (module HCI) for Linux or FreeBSD (maybe other BSD's too?) requires elevated permissions to access the Host
+Controller Interface. These are granted by adding users to a new group "hciusers" that are give permission to
+call "`sudo -n hcitool/hciconfig/hccontrol`" without entering a password: this can be configured by the system admistrator
+using visudo, but has security implications.
+
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
@@ -2007,6 +2012,10 @@ introduced 2017, running tvOS 12.2.1), so it does not seem to matter
what version UxPlay claims to be.
# Changelog
+1.73.4 2026-03-15 Modularize Bluetooth support for uxplay-beacon.
+Add modules for BLeuIO serial-modem Bluetooth LE device, and HCI
+access (Linux/FreeBSD). Fix broken -vol option.
+
1.73 2026-01-25 Render Audio cover-art inside UxPlay with -ca option (no file
specified). (D-Bus based) option -scrsv to inhibit screensaver while UxPlay
is running (Linux/*BSD only). Add password support (-pw) using a displayed
diff --git a/README.txt b/README.txt
index 4357eb3..37241ab 100644
--- a/README.txt
+++ b/README.txt
@@ -21,16 +21,18 @@
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`: 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
+ `uxplay-beacon.py`: four implementations of Bleutooth LE advertising
+ are available as loadable modules: BlueZ for Linux only, winrt for
+ Windows only, 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), and a low-level HCI
+ module (Linux and BSD only) that access the Host Contoller Interface
+ (but users need enhanced privileges to use this). 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 ` bypasses rendering by UxPlay, and
@@ -1592,7 +1594,7 @@ 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 provides three possible Bluetooth LE
+beacon is uxplay-beacon.py. It provides four possible Bluetooth LE
implementations (loaded as modules): 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
@@ -1604,6 +1606,13 @@ 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.
+A fourth implementation (module HCI) for Linux or FreeBSD (maybe other
+BSD's too?) requires elevated permissions to access the Host Controller
+Interface. These are granted by adding users to a new group "hciusers"
+that are give permission to call "`sudo -n hcitool/hciconfig/hccontrol`"
+without entering a password: this can be configured by the system
+admistrator using visudo, but has security implications.
+
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
@@ -2070,6 +2079,10 @@ what version UxPlay claims to be.
# Changelog
+1.73.4 2026-03-15 Modularize Bluetooth support for uxplay-beacon. Add
+modules for BLeuIO serial-modem Bluetooth LE device, and HCI access
+(Linux/FreeBSD). Fix broken -vol option.
+
1.73 2026-01-25 Render Audio cover-art inside UxPlay with -ca option (no
file specified). (D-Bus based) option -scrsv ``{=html} to inhibit
screensaver while UxPlay is running (Linux/\*BSD only). Add password
diff --git a/uxplay.cpp b/uxplay.cpp
index 5d2da7a..b729a40 100644
--- a/uxplay.cpp
+++ b/uxplay.cpp
@@ -73,7 +73,7 @@
#endif
-#define VERSION "1.73"
+#define VERSION "1.73.4"
#define SECOND_IN_USECS 1000000
#define SECOND_IN_NSECS 1000000000UL
diff --git a/uxplay.spec b/uxplay.spec
index 251f0f6..4eed4b1 100644
--- a/uxplay.spec
+++ b/uxplay.spec
@@ -1,5 +1,5 @@
Name: uxplay
-Version: 1.73.3
+Version: 1.73.4
Release: 1%{?dist}
%global gittag v%{version}