skip to Main Content

Is there any way to read Bluetooth Classic RSSI in Microsoft Bluetooth Stack?

I’m looking for the solution how I can read Bluetooth Classic RSSI without connection.
I tried some ways: inthehand, WinApi, or other console programs.
And I looked it up for about two days, but I cannot find any solution.

Anything is fine, C# code, console program, or otherelse…
Please tell me how I can read RSSI, or cannot.

Using Visual Studio, Windows 11 x64.

2

Answers


  1. According to 32Feet’s creator – https://github.com/inthehand/32feet/wiki/Peer-Device-Information

    This property is not supported on desktop Windows with the Microsoft stack since there is no native API for it. It is supported on WM with the Microsoft stack (though only on the WM6 platform, devices known to support it include the HTC Trinity and the Symbol MC35). It is generally supported on the other stacks (is supported on Widcomm, BlueSoleil, Bluetopia).

    The Bluetooth commands used for the Rssi and ClassOfDevice properties require an open connection to the target device, although the CoD value is also read at discovery time and if is possible to get the RSSI value at discovery in later Bluetooth versions but no stack supports that as far as we know. For most platforms we don’t automatically form a connection when the Rssi and ClassOfDevice properties are used, so they will fail if there’s no open connection. On MSFT+WM (Microsoft stack on Windows Mobile/CE) we will internally attempt to form a (ACL) connection to allow the native API to work, thus if the device is not in range the property will take a long time to return.

    So no, this is not natively supported. However you can test if a device is in range instead;

    https://github.com/inthehand/32feet/wiki/Testing-if-a-device-is-in-range

    Login or Signup to reply.
  2. C : "(…) any way to read Bluetooth Classic RSSI in Microsoft Bluetooth Stack?"

    As a last resort, given the W11 x64 host is RAM/CPU-rich system, one may always launch a Virtual Machine ( any good HyperVisor with virtualised handling USB devices, be it Windows-ports of VirtualBox, VmWare Player (using exactly this strategy since VmWare WorkStation v.1.0 back in early 90-ies, yeah, the time is running soo fast) )

    Using this, one may easily read RSSI values from linux commandline tools available since ever.

    Another option is to host a BT-device on an Arduino-alike micro-controller board, which can similarly to the linux-hosted device control, read and report the actual RSSI data to the W11 host via the micro-controller board USB-interconnect, typically emulating a serial tty-dev character-I/O for the W11 side. Again, a cheap & stable, immediate solution.

    If surprised by going this way, just take the cost of a USB-BT device and the cost of time/efforts/nightmares with code-refactoring after swapped BT-stacks, W-xy updates/upgrades etc. Using this strategy of reading an RSSI-value via an "exo-system" is sure to work now & forever, like reading data from an RSS-feed or a socket.

    Cool & sure, immediate result. That’s exciting ( not only after all other options failed ), isn’t it?

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search