Is there a way to find out the RSSI or Link Quality of a BLE connection after we perform connect in Linux environment?
hci_read_rssi() from hci_lib.h in Bluez, "hcitool rssi ", "hcitool lq ", and also the vendor specific HCI_VS_Read_RSSI (0xFDFC) command (https://www.ti.com/lit/ug/swru442b/swru442b.pdf because of the Wl1837MOD chipset that we are using) they all seem to work only on BR/EDR connections and not on LE connections.
Is there a way to find out RSSI or Link Quality or any signal strength from the Bluez APIs for connected BLE devices..?
I am using Bluez V5.48 and hCI/LMP version is Bluetooth 4.2
I will be grateful for any suggestions.
Thanks,
Vinay
It seems like not possible via DBUS API. as it states:
int16 RSSI [readonly, optional]
Received Signal Strength Indicator of the remote
device (inquiry or advertising).
I did not try by myself but you might be able to do this via Noble.js. 'rssiUpdate' event listener.
Related
In my current project, I am working with iBeacon in the area of IoT. Basically iBeacon works on Bluetooth wireless technology. I am using Raspberry Pi 3 (which is available with in-built wifi and bluetooth). Pi 3 Bluetooth display and detect the iBeacon but not able to do pairing with it and display the following error:
GDBus.Error:org.bluez.Error.AuthenticationFailed
I also tried with bluetoothctl command also but again display the Failed to pair: org.bluez.Error.AuthenticationFailed
error.
Am I missing something? I am able to pair iBeacon with my mobile and windows based lapotop.
Understand that iBeacon is a transmit only Bluetooth LE device. It is Bluetooth LE manufacturer advertisements to send a unique identifier, something you have seen if you have detected it with the Raspberry Pi 3.
But a basic iBeacon device is not designed to be connectable over Bluetooth LE. Some beacon manufacturers may expose a secondary configuration service that is connectable, but this is not universal and if it exists it is entirely outside the beacon spec.
Bottom line: you are not supposed to be able to connect.
If you have a specific model of beacon that does have a config interface, and you want to connect to that, you may want to put that in your question.
As stated in the title, can both be ran simultaneously or is a second adapter required? For example, can one adapter run both BLE and BT classic at the same time - the BLE beacon broadcasts the MAC for opportunistic clients to connect to using RFCOMM.
If you are using a common CSR 4.0 Dongle or Ampac AP6212 (which purportedly uses the same Broadcom chip as the RPI3) then this is possible - they are "dual-stack".
Given this, the typical USB CSR chips have a hard limit of two connected RFCOMM clients and the Ampac, 8 or maybe more (tested for sure 8).
I'm planning to replace the Beacon tag of my Bluetooth (BLE)-based localization System with a smartwatch. Therefore, the smartwatch has to be able to advertise bluetooth signals. However I can't find any information about smartwatches using BLE advertising methods. I actually don't want to use an additional smartphone which would be able to advertise. I already found that the iWatch and the Moto 360 are probably not able to advertise.
Does anyone know if there's (or will be) a smartwatch available that is able to advertise BLE signals?
Thanks a lot!
el Baum
Ok, this is not possible for Sony Smartwatch atleast. This is because in order to be able to broadcast a BLE advertisement of your choosing, any given Android device has to be able to support BluetoothAdapter.isMultipleAdvertisementSupported(). Unfortunately, this feature is not available on most Android Wear devices.
If your Android device does support multiple advertisement, then you can create an advertisement packet and use the BluetoothLeAdvertiser object to start advertising.
I was thinking can we make Pebble watch to transmit signal strength over bluetooth and use it as a bluetooth advertisement device. This way Pebble itself can be used to do something that we have iBeacons doing.
Any thought about it?
No. Pebble does not provide any Bluetooth LE APIs (as of march 2014).
iBeacon is a Bluetooth LE based protocol. You will have to wait for Pebble Bluetooth LE apis to do that.
I have been asked to figure out how to achieve bluetooth communication through an off-the-shelf dongle (in this case a dongle utilizing the Broadcom BCM2045 chip) using the FTDI Vinculum 2 (VNC2) USB controller. I have custom firmware written for the VNC2 to communicate with a generic USB device with the VNC2 acting as the host, and I can successfully read the VID and PID from the dongle as well as the USB device class, subclass, and protocol. I can also send data to the dongle using the bulk data endpoint and I believe the device is receiving though I have no way to tell at the moment.
So I believe I can communicate with the dongle, the problem is I have no idea WHAT to communicate to it in order to set it up in discoverable mode or to pair it with another discoverable device, nor how to actually transmit data through the wireless link once it is paired. I don't even know if there exists a standard communication protocol for this type of thing or if every device will be different. I have a vague understanding of the bluetooth protocol stack and it is my understanding that I won't be required to fully understand that as it should be implemented in the dongle on one end and in the android smartphone that we hope to connect to on the other end. Like I said, I can currently send data to the bulk endpoint, is it true that this endpoint is only for data transfer over the wireless link and I will need to connect to a different endpoint in order to send setup/configuration messages to the dongle?
In short, I need to know what data to send over the USB bus to control any generic bluetooth dongle if possible or at least one specific bluetooth dongle. I have a USB port sniffer but the complexity of the output while using the dongle to communicate is staggering and I doubt I'll ever figure it out.
Thank you in advance.
Bluetooth dongles communicate with host software stack using HCI (host control interface), which is defined in the Bluetooth spec. For reference, you can look at source code for the open source BlueZ stack (standard linux stack). You could run BlueZ on linux talking to your USB dongle, and use hcidump to capture actual packets going across HCI. You can also check out hcitool and hciconfig for performing specific actions.