I am trying to implement a C++ code (using bluez 5.43 and dbus) to read advertisement packets from a BLE sensor. As per the bluez DBus docs, there is a StartDiscovery API that can be used to scan for nearby devices. However, I am unable to find any APIs to store/parse the advertisement packets from nearby BLE devices. The advertising-api.txt lists registeradvertisement API but as per my understanding, it can be used only for creating advertisement packets and not reading from an external device (or am I wrong?) Can someone please guide me on the correct way to get advertisement packets from nearby BLE devices using bluez and DBus?
What is the correct way to read advertisement packets from a BLE sensor using bluez 5.43 and DBus
3.1k views Asked by codingenthusiast At
2
There are 2 answers
Related Questions in C++
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Why can't I use templates members in its specialization?
- How to fix "Access violation executing location" when using GLFW and GLAD
- Dynamic array of structures in C++/ cannot fill a dynamic array of doubles in structure from dynamic array of structures
- How do I apply the interface concept with the base-class in design?
- File refuses to compile std::erase() even if using -std=g++23
- How can I do a successful map when the number of elements to be mapped is not consistent in Thrust C++
- Can std::bit_cast be applied to an empty object?
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- How i can move element of dynamic vector in argument of function push_back for dynamic vector
- Brick Breaker Ball Bounce
- Thread-safe lock-free min where both operands can change c++
- Watchdog Timer Reset on ESP32 using Webservers
- How to solve compiler error: no matching function for call to 'dmhFS::dmhFS()' in my case?
- Conda CMAKE CXX Compiler error while compiling Pytorch
Related Questions in BLUETOOTH
- React native - how can i listen callBack function
- java android: how to send data on Bluetooth between android and computer
- Pair bluetooth device to Android 12 phone by selecting my own pin
- Bluetooth virtual sniffer for windows
- PyBluez connection problems
- How to set value the descriptor of iOS BLE in Objective-C?
- python script using bluetooth running on windows 11 vs raspberry pi4
- Mobile printing PT200 tru Bluetooth opened in web app
- PlatformException(connect_errd or timeout)
- Bluetooth Driver file corrupt or replaced
- Bluetooth driver Failed and unable to install bluetooth driver for jammy ubuntu
- strange Flutter bug on turning on/off bluetooth permission using IOS device
- Call requires permission which may be rejected by user code should explicitly check to see if permission is available
- Error during getting android Bluetooth device RSSI from Windows 10 using BlueCove library
- Error in Bluetooth specification? Heading field of Location and Speed
Related Questions in BLUETOOTH-LOWENERGY
- How to receive Bluetooth value in Android app
- provision failed and giving null pointer exception in android using ESP provisioning Library
- Need the decoded data while from server esp32 send and Receiving in react native cli
- python script using bluetooth running on windows 11 vs raspberry pi4
- How to make sure only one client connect to the BLE server on ESP32?
- Samsung SM-A546E Bluetooth in background odd behaviour
- Android OnCharacteristicChanged - Continuous stream of bytes from Bluetooth Stethoscope
- ESP32 BLE Arduino And getting a compile error of 'ringbuf_type_t' has not been declared
- (corebluetooth didUpdateValueFor) data is not being sent properly between my peripheral arduino 33 nano and iOS app
- Constructing a script using a 3rd party library
- BLE SMP packets sniffing using scapy python
- Error in Bluetooth specification? Heading field of Location and Speed
- How to understand the Sensor Setting Property ID in the SIG Mesh model
- Problem with mapping of BLE 5.1 ATT protocol stack with winsock & winsock2 arcitechture
- Plot ecg graph in flutter
Related Questions in DBUS
- Why does my D-Bus signal, implemented with Python dasbus library, not show up?
- Writing value to GATT characteristic via DBUS results in "garbage" value during subsequent read
- Connect wifi service with dbus-native
- Parsing DBUS response type as Array of Dictionary or Map using C++
- How can I trigger shutdown or logout in KDE Plasma via QDbus in Python?
- Zbus create proxy builder without destination
- Am I wrong or Dunst+notify-send violates the Desktop Notification Specification?
- Python DBus unknown method or interface
- Unable to Parse Dictionary Response in sd_bus_message_read() After Successful String Retrieval
- Having trouble toggling Bluetooth functionality using sd-bus in C
- What are the known pitfalls of periodic vs continuous Bluetooth device discovery in Bluez/Linux?
- Client in BLE for raspberry Pi 4 using BlueZ
- How can I make my D-Bus service exit automatically when idle?
- Why do I get "Unexpected reply type" from notify-send when using this Haskell notification server?
- Docker container (KASMvnc + obsidian) not able to play sound : bdus error
Related Questions in BLUEZ
- PyBluez connection problems
- Writing value to GATT characteristic via DBUS results in "garbage" value during subsequent read
- Connect RFCOMM profile using BlueZ 5
- How to deal with BlueZ bluetooth instability?
- What are the known pitfalls of periodic vs continuous Bluetooth device discovery in Bluez/Linux?
- How to get local device address from "bluez" library
- Client in BLE for raspberry Pi 4 using BlueZ
- BlueALSA loopback - PCM write
- Bluetooth LE audio development with Bluez 5.66
- Reading and writing vendor-specific BLE characteristic values using bluetoothctl or gatttool
- How does bluealsa's hfp choose audio encoding
- Unauthenticated Pairing failed - Bluez
- Using Dbus api in bluez, using notify how can i check when controller is ready to send next packet so buffer won't override?
- Catching all BLE advertisement telegrams with pydbus
- How to accept the bluetooth pair request through terminal without GUI
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The behavior you described in one your last comment is the right one (the advertising data is not beeing updated) : if I am correct a BLE device is not supposed to be up all the time, it can sleep or turn to low-power etc.
In this context, it is not weird that the data is in some way "cached". From my experience, when you perform a scan and discover a device (even if you don't Connect to it), the device information will be stored for some time.
In your case, that's problematic because you are passing data through the advertising. However there is a way to force bluez to remove all it's cached data about a device : the adapter-api provides a RemoveDevice(object device) method. It takes the object path (eg "/org/bluez/hci0/dev_AA_BB_AA_BB_AA") as argument.
If you're looking for DBus bindings in C, I suggest GLib GDBus (you will find links at the bottom of this tutorial on freedesktop website : https://dbus.freedesktop.org/doc/dbus-tutorial.html).
If you are familiar with bluetoothctl (a tool to interact with bluez using commands), it was developped by the bluez guys using Glib GDbus and you can find the source code here (look at the bottom to find the command list) : https://git.kernel.org/cgit/bluetooth/bluez.git/tree/client/main.c
There are more straigthforward ways to use GDBus with bluez but bluetoothctl source code is a start and you'll find examples for pretty much anything that is possible to do with bluez =)