ORG.BLUEZ.RANGING1(5)

πŸ“¦
version 5.87+2.git8750129efca8 Β· 4 versions
, in centos-stream 9

πŸ¦‹ 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. via org.freedesktop.DBus.Properties.Get) fails with org.freedesktop.DBus.Error.UnknownProperty, and it is omitted from GetAll/GetManagedObjects results. Once a provider unregisters or stops providing ranging for this device, this whole Ranging interface β€” and therefore the Distance property β€” 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