ORG.BLUEZ.RANGING1(5)
π¦ NAME π¦
okay so bestie, this is org.bluez.Ranging1(5) β the BlueZ D-Bus Ranging API doc from the Linux System Administration section of the manual. It's literally the page for the read side of BlueZ ranging, and we're gonna get through it together. π
π INTERFACE π
Here's the D-Bus lineup, no cap:
πΈ Service πΈ
org.bluez
π¦ Interface π¦
org.bluez.Ranging1
π Object path π
[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX
β¨ Properties β¨
π uint32 Distance [readonly] π
This is the estimated distance to the remote device, in millimeters, as last reported by a ranging provider. That's the whole property: distance, millimeters, last report, read-only. π«
Providers implementing org.bluez.RangingProvider1(5), registered via org.bluez.RangingProviderManager1(5), compute this value and report it back to bluetoothd(8) for reflection here. For Channel Sounding based ranging, a provider derives the distance from the raw procedure data reported via the ProcedureData signal on org.bluez.ChannelSounding1(5), but this interface itself carries no assumption about the underlying ranging technology. It's giving "tech-neutral icon." π«Ά
This property emits PropertiesChanged whenever a new estimate is reported. π
β οΈ important vibe check: this property does not exist until a ranging provider has reported at least one estimate for this device. Reading it before then (e.g. viaorg.freedesktop.DBus.Properties.Get) fails withorg.freedesktop.DBus.Error.UnknownProperty, and it is omitted fromGetAll/GetManagedObjectsresults. Once a provider unregisters or stops providing ranging for this device, this whole Ranging interface β and therefore theDistanceproperty β is removed (InterfacesRemoved); it does not linger with a stale value. periodt. π
π OVERVIEW π
Ranging is the read side of a three-party pattern:
Ranging daemon -- RangingProvider --> BlueZ -- Ranging --> Desktop clients
(registered via RangingProviderManager)
Sequence for a single distance update, once a provider is registered (see org.bluez.RangingProviderManager1(5)) and has exposed a org.bluez.RangingProvider1(5) object for the device (see org.bluez.RangingProvider1(5)):
Ranging daemon bluetoothd Desktop client
| | |
| Distance = D on its | |
| RangingProvider object | |
| | |
| PropertiesChanged( | |
| RangingProvider, | |
| "Distance", D) | |
|-------------------------------->| |
| | updates Ranging on the |
| | device path with D |
| | |
| | PropertiesChanged( |
| | Ranging, |
| | "Distance", D) |
| |---------------------------->|
and that's the entire flow, bestie β daemon reports to bluetoothd, bluetoothd updates the device path, desktop client gets the PropertiesChanged. slay. π
Cute sign-off time: this page is from BlueZ, August 2026, and its manual-page name is ORG.BLUEZ.RANGING1(5). β¨π
π
π¦ where this page comes from
- centos-stream 9: bluez-libs-devel 5.87+2.git8750129efca8-1.el9 Β· GPLv2+
- centos-stream 9: bluez-libs-devel 5.87+2.git8750129efca8-1.el9 Β· GPLv2+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms