Linux bluetooth development
 help / color / mirror / Atom feed
* [PATCH BlueZ 0/3] Promote the bearer interfaces to stable
@ 2026-10-23 22:37 Kevin Dewald
  2026-10-23 22:37 ` [PATCH BlueZ 1/3] org.bluez.Bearer: Promote " Kevin Dewald
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Kevin Dewald @ 2026-10-23 22:37 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Luiz Augusto von Dentz, Kevin Dewald

As offered in the Role series, this marks org.bluez.Bearer.LE1 and
org.bluez.Bearer.BREDR1 stable, now that test/functional/test_bearer.py
covers them.

The bearer interfaces are the only way to connect a given bearer of a
dual-mode device. Device1.Connect picks one, by default the last used,
so an application that only uses LE, such as a GATT library, can end
up with only BR/EDR connected, and Device1.Connected does not say which
bearer is up. Today such an application has to ask its users to run
bluetoothd with --experimental.

The series drops the [experimental] tags from the documentation, the
experimental flags from src/bearer.c, and Experimental from the bearer
tests. The Disconnected signal was only marked experimental in the
documentation.

The bearer tests pass without Experimental in three consecutive runs,
and the rest of test-functional still passes.

test_bearer_le_connect can fail in CI when
test_bass_past_transport_acquire runs just before it on the same VMs.
That is a kernel bug, unrelated to the bearer interfaces, fixed by:
https://lore.kernel.org/linux-bluetooth/20261023191437.87024-1-kevin@simpleble.org/

Kevin Dewald (3):
  org.bluez.Bearer: Promote to stable
  bearer: Promote to stable
  test: functional: run bearer tests without experimental

 doc/functional-bearer.rst      |  7 +++----
 doc/org.bluez.Bearer.BREDR.rst | 32 +++++++++++++++---------------
 doc/org.bluez.Bearer.LE.rst    | 36 +++++++++++++++++-----------------
 src/bearer.c                   | 23 ++++++++--------------
 test/functional/test_bearer.py |  8 +++-----
 5 files changed, 48 insertions(+), 58 deletions(-)


base-commit: 7bc9684dc9e45358661301da4a0ede433fdf0a30
-- 
2.54.0 (Apple Git-157)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH BlueZ 1/3] org.bluez.Bearer: Promote to stable
  2026-10-23 22:37 [PATCH BlueZ 0/3] Promote the bearer interfaces to stable Kevin Dewald
@ 2026-10-23 22:37 ` Kevin Dewald
  2026-10-24  1:14   ` Promote the bearer interfaces " bluez.test.bot
  2026-10-23 22:37 ` [PATCH BlueZ 2/3] bearer: Promote " Kevin Dewald
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Kevin Dewald @ 2026-10-23 22:37 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Luiz Augusto von Dentz, Kevin Dewald

Promote the methods, signal and properties of org.bluez.Bearer.LE1 and
org.bluez.Bearer.BREDR1 to stable, so they can be used by upper layers
without having to enable experimental. They are now covered by the
bearer functional tests.

Assisted-by: Claude:claude-opus-5.5
---
 doc/org.bluez.Bearer.BREDR.rst | 32 +++++++++++++++---------------
 doc/org.bluez.Bearer.LE.rst    | 36 +++++++++++++++++-----------------
 2 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/doc/org.bluez.Bearer.BREDR.rst b/doc/org.bluez.Bearer.BREDR.rst
index a1477a2d2..370ea6e6c 100644
--- a/doc/org.bluez.Bearer.BREDR.rst
+++ b/doc/org.bluez.Bearer.BREDR.rst
@@ -21,8 +21,8 @@ Interface
 Methods
 -------
 
-void Connect() [experimental]
-`````````````````````````````
+void Connect()
+``````````````
 
 Connects all BREDR profiles the remote device supports that can be connected to
 and have been flagged as auto-connectable. If only subset of profiles is already
@@ -38,8 +38,8 @@ Possible errors:
 :org.bluez.Error.InProgress:
 :org.bluez.Error.AlreadyConnected:
 
-void Disconnect() [experimental]
-````````````````````````````````
+void Disconnect()
+`````````````````
 
 Disconnects all connected profiles and then terminates low-level ACL connection.
 
@@ -59,8 +59,8 @@ Possible errors:
 Signals
 -------
 
-void Disconnected(string reason, string message) [experimental]
-```````````````````````````````````````````````````````````````
+void Disconnected(string reason, string message)
+````````````````````````````````````````````````
 
 This signal is launched when a device is disconnected, with the reason of the
 disconnection.
@@ -113,37 +113,37 @@ Possible reasons:
 Properties
 ----------
 
-object Adapter [readonly, experimental]
-```````````````````````````````````````
+object Adapter [readonly]
+`````````````````````````
 
 The object path of the adapter the set belongs to.
 
 
-boolean Paired [readonly, experimental]
-```````````````````````````````````````
+boolean Paired [readonly]
+`````````````````````````
 
 Indicates if the remote device is paired to BREDR bearer.
 
 Paired means the pairing process where devices exchange the information to
 establish an encrypted connection has been completed.
 
-boolean Bonded [readonly, experimental]
-```````````````````````````````````````
+boolean Bonded [readonly]
+`````````````````````````
 
 Indicates if the remote device is bonded to BREDR bearer.
 
 Bonded means the information exchanged on pairing process has been stored and
 will be persisted.
 
-boolean Connected [readonly, experimental]
-``````````````````````````````````````````
+boolean Connected [readonly]
+````````````````````````````
 
 Indicates if the remote device is currently connected to BREDR bearer.
 
 A PropertiesChanged signal indicate changes to this status.
 
-boolean Connectable [readonly, experimental]
-````````````````````````````````````````````
+boolean Connectable [readonly]
+``````````````````````````````
 
 Indicates if the remote device accepts connections on BREDR bearer. BREDR
 devices are always considered connectable.
diff --git a/doc/org.bluez.Bearer.LE.rst b/doc/org.bluez.Bearer.LE.rst
index dfd809739..6d3df3fcf 100644
--- a/doc/org.bluez.Bearer.LE.rst
+++ b/doc/org.bluez.Bearer.LE.rst
@@ -21,8 +21,8 @@ Interface
 Methods
 -------
 
-void Connect() [experimental]
-`````````````````````````````
+void Connect()
+``````````````
 
 Connects all LE profiles the remote device supports that can be connected to and
 have been flagged as auto-connectable. If only subset of profiles is already
@@ -38,8 +38,8 @@ Possible errors:
 :org.bluez.Error.InProgress:
 :org.bluez.Error.AlreadyConnected:
 
-void Disconnect() [experimental]
-````````````````````````````````
+void Disconnect()
+`````````````````
 
 Disconnects all connected profiles and then terminates low-level ACL-LE
 connection.
@@ -60,8 +60,8 @@ Possible errors:
 Signals
 -------
 
-void Disconnected(string reason, string message) [experimental]
-```````````````````````````````````````````````````````````````
+void Disconnected(string reason, string message)
+````````````````````````````````````````````````
 
 This signal is launched when a device is disconnected, with the reason of the
 disconnection.
@@ -114,36 +114,36 @@ Possible reasons:
 Properties
 ----------
 
-object Adapter [readonly, experimental]
-```````````````````````````````````````
+object Adapter [readonly]
+`````````````````````````
 
 The object path of the adapter the set belongs to.
 
-boolean Paired [readonly, experimental]
-```````````````````````````````````````
+boolean Paired [readonly]
+`````````````````````````
 
 Indicates if the remote device is paired to LE bearer.
 
 Paired means the pairing process where devices exchange the information to
 establish an encrypted connection has been completed.
 
-boolean Bonded [readonly, experimental]
-```````````````````````````````````````
+boolean Bonded [readonly]
+`````````````````````````
 
 Indicates if the remote device is bonded to LE bearer.
 
 Bonded means the information exchanged on pairing process has been stored and
 will be persisted.
 
-boolean Connected [readonly, experimental]
-``````````````````````````````````````````
+boolean Connected [readonly]
+````````````````````````````
 
 Indicates if the remote device is currently connected to LE bearer.
 
 A PropertiesChanged signal indicate changes to this status.
 
-boolean Connectable [readonly, optional, experimental]
-``````````````````````````````````````````````````````
+boolean Connectable [readonly, optional]
+````````````````````````````````````````
 
 Indicates if the remote device accepts connections on LE bearer, based on the
 most recent advertising report. It is false when the last advertising report
@@ -154,8 +154,8 @@ over LE bearer.
 
 A PropertiesChanged signal indicate changes to this status.
 
-string Role [readonly, optional, experimental]
-``````````````````````````````````````````````
+string Role [readonly, optional]
+````````````````````````````````
 
 Indicates the role of the remote device in the current connection on LE bearer.
 It is only present while the remote device is connected over LE bearer.
-- 
2.54.0 (Apple Git-157)


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH BlueZ 2/3] bearer: Promote to stable
  2026-10-23 22:37 [PATCH BlueZ 0/3] Promote the bearer interfaces to stable Kevin Dewald
  2026-10-23 22:37 ` [PATCH BlueZ 1/3] org.bluez.Bearer: Promote " Kevin Dewald
@ 2026-10-23 22:37 ` Kevin Dewald
  2026-10-23 22:37 ` [PATCH BlueZ 3/3] test: functional: run bearer tests without experimental Kevin Dewald
  2026-10-26 21:40 ` [PATCH BlueZ 0/3] Promote the bearer interfaces to stable patchwork-bot+bluetooth
  3 siblings, 0 replies; 6+ messages in thread
From: Kevin Dewald @ 2026-10-23 22:37 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Luiz Augusto von Dentz, Kevin Dewald

Drop the experimental flags of the Connect and Disconnect methods and of
the properties of the bearer interfaces, so they are available without
enabling experimental.

Assisted-by: Claude:claude-opus-5.5
---
 src/bearer.c | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/src/bearer.c b/src/bearer.c
index ea3bf697a..51dd789f1 100644
--- a/src/bearer.c
+++ b/src/bearer.c
@@ -199,9 +199,8 @@ static DBusMessage *bearer_disconnect(DBusConnection *conn, DBusMessage *msg,
 }
 
 static const GDBusMethodTable bearer_methods[] = {
-	{ GDBUS_EXPERIMENTAL_ASYNC_METHOD("Connect", NULL, NULL,
-						bearer_connect) },
-	{ GDBUS_EXPERIMENTAL_ASYNC_METHOD("Disconnect", NULL, NULL,
+	{ GDBUS_ASYNC_METHOD("Connect", NULL, NULL, bearer_connect) },
+	{ GDBUS_ASYNC_METHOD("Disconnect", NULL, NULL,
 						bearer_disconnect) },
 	{}
 };
@@ -312,19 +311,13 @@ static const GDBusSignalTable bearer_signals[] = {
 };
 
 static const GDBusPropertyTable bearer_properties[] = {
-	{ "Adapter", "o", bearer_get_adapter, NULL, NULL,
-			G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
-	{ "Paired", "b", bearer_get_paired, NULL, NULL,
-			G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
-	{ "Bonded", "b", bearer_get_bonded, NULL, NULL,
-			G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
-	{ "Connected", "b", bearer_get_connected, NULL, NULL,
-			G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
+	{ "Adapter", "o", bearer_get_adapter },
+	{ "Paired", "b", bearer_get_paired },
+	{ "Bonded", "b", bearer_get_bonded },
+	{ "Connected", "b", bearer_get_connected },
 	{ "Connectable", "b", bearer_get_connectable, NULL,
-			bearer_connectable_exists,
-			G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
-	{ "Role", "s", bearer_get_role, NULL, bearer_role_exists,
-			G_DBUS_PROPERTY_FLAG_EXPERIMENTAL },
+					bearer_connectable_exists },
+	{ "Role", "s", bearer_get_role, NULL, bearer_role_exists },
 	{}
 };
 
-- 
2.54.0 (Apple Git-157)


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH BlueZ 3/3] test: functional: run bearer tests without experimental
  2026-10-23 22:37 [PATCH BlueZ 0/3] Promote the bearer interfaces to stable Kevin Dewald
  2026-10-23 22:37 ` [PATCH BlueZ 1/3] org.bluez.Bearer: Promote " Kevin Dewald
  2026-10-23 22:37 ` [PATCH BlueZ 2/3] bearer: Promote " Kevin Dewald
@ 2026-10-23 22:37 ` Kevin Dewald
  2026-10-26 21:40 ` [PATCH BlueZ 0/3] Promote the bearer interfaces to stable patchwork-bot+bluetooth
  3 siblings, 0 replies; 6+ messages in thread
From: Kevin Dewald @ 2026-10-23 22:37 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Luiz Augusto von Dentz, Kevin Dewald

The bearer interfaces are no longer experimental, so run bluetoothd
without Experimental in the bearer tests.

Assisted-by: Claude:claude-opus-5.5
---
 doc/functional-bearer.rst      | 7 +++----
 test/functional/test_bearer.py | 8 +++-----
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/doc/functional-bearer.rst b/doc/functional-bearer.rst
index 79fed9db3..de69b489b 100644
--- a/doc/functional-bearer.rst
+++ b/doc/functional-bearer.rst
@@ -13,10 +13,9 @@ used here, and **test-functional(1)** for how to run the suite.
 SETUP
 =====
 
-Two hosts, both running **bluetoothd(8)** with ``Experimental = true``,
-as the bearer interfaces are experimental, and with the MIDI plugin
-disabled (``-P midi``), as the MIDI profile would ask to pair as soon as
-it finds the MIDI service the other host exports:
+Two hosts, both running **bluetoothd(8)** with the MIDI plugin disabled
+(``-P midi``), as the MIDI profile would ask to pair as soon as it finds
+the MIDI service the other host exports:
 
 .. code-block::
 
diff --git a/test/functional/test_bearer.py b/test/functional/test_bearer.py
index 9d2f3346d..69eed15c4 100644
--- a/test/functional/test_bearer.py
+++ b/test/functional/test_bearer.py
@@ -34,9 +34,7 @@ DEVICE_INTERFACE = "org.bluez.Device1"
 LE_INTERFACE = "org.bluez.Bearer.LE1"
 BREDR_INTERFACE = "org.bluez.Bearer.BREDR1"
 
-# The bearer interfaces are experimental
-CONF = "[General]\nExperimental = true\n"
-LE_CONF = CONF + "ControllerMode = le\n"
+LE_CONF = "[General]\nControllerMode = le\n"
 
 # bluetoothd only creates device objects for advertisers that are
 # discoverable, which a broadcaster is not
@@ -170,8 +168,8 @@ le_config = host_config(
 )
 
 bredr_config = host_config(
-    [Bluetoothd(conf=CONF, args=ARGS), Agent(), Bearers()],
-    [Bluetoothd(conf=CONF, args=ARGS), Agent(), Bearers()],
+    [Bluetoothd(args=ARGS), Agent(), Bearers()],
+    [Bluetoothd(args=ARGS), Agent(), Bearers()],
 )
 
 
-- 
2.54.0 (Apple Git-157)


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* RE: Promote the bearer interfaces to stable
  2026-10-23 22:37 ` [PATCH BlueZ 1/3] org.bluez.Bearer: Promote " Kevin Dewald
@ 2026-10-24  1:14   ` bluez.test.bot
  0 siblings, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2026-10-24  1:14 UTC (permalink / raw)
  To: linux-bluetooth, kevin

[-- Attachment #1: Type: text/plain, Size: 1019 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1192442/

---Test result---

Test Summary:
CheckPatch                    PASS      1.05 seconds
GitLint                       PASS      0.76 seconds
BuildEll                      PASS      13.04 seconds
BluezMake                     PASS      170.01 seconds
MakeCheck                     PASS      13.08 seconds
MakeDistcheck                 PASS      95.71 seconds
CheckValgrind                 PASS      146.98 seconds
CheckSmatch                   PASS      169.11 seconds
bluezmakeextell               PASS      58.94 seconds
TestFunctional                PASS      799.13 seconds
IncrementalBuild              PASS      186.00 seconds
ScanBuild                     PASS      581.08 seconds



https://github.com/bluez/bluez/pull/2705

---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH BlueZ 0/3] Promote the bearer interfaces to stable
  2026-10-23 22:37 [PATCH BlueZ 0/3] Promote the bearer interfaces to stable Kevin Dewald
                   ` (2 preceding siblings ...)
  2026-10-23 22:37 ` [PATCH BlueZ 3/3] test: functional: run bearer tests without experimental Kevin Dewald
@ 2026-10-26 21:40 ` patchwork-bot+bluetooth
  3 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+bluetooth @ 2026-10-26 21:40 UTC (permalink / raw)
  To: Kevin Dewald; +Cc: linux-bluetooth, luiz.dentz

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Fri, 23 Oct 2026 15:37:05 -0700 you wrote:
> As offered in the Role series, this marks org.bluez.Bearer.LE1 and
> org.bluez.Bearer.BREDR1 stable, now that test/functional/test_bearer.py
> covers them.
> 
> The bearer interfaces are the only way to connect a given bearer of a
> dual-mode device. Device1.Connect picks one, by default the last used,
> so an application that only uses LE, such as a GATT library, can end
> up with only BR/EDR connected, and Device1.Connected does not say which
> bearer is up. Today such an application has to ask its users to run
> bluetoothd with --experimental.
> 
> [...]

Here is the summary with links:
  - [BlueZ,1/3] org.bluez.Bearer: Promote to stable
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=892d1885af48
  - [BlueZ,2/3] bearer: Promote to stable
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=b25019027d3b
  - [BlueZ,3/3] test: functional: run bearer tests without experimental
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=b0bf49270d44

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-10-26 21:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-23 22:37 [PATCH BlueZ 0/3] Promote the bearer interfaces to stable Kevin Dewald
2026-10-23 22:37 ` [PATCH BlueZ 1/3] org.bluez.Bearer: Promote " Kevin Dewald
2026-10-24  1:14   ` Promote the bearer interfaces " bluez.test.bot
2026-10-23 22:37 ` [PATCH BlueZ 2/3] bearer: Promote " Kevin Dewald
2026-10-23 22:37 ` [PATCH BlueZ 3/3] test: functional: run bearer tests without experimental Kevin Dewald
2026-10-26 21:40 ` [PATCH BlueZ 0/3] Promote the bearer interfaces to stable patchwork-bot+bluetooth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox