This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Can I "listen" to the data between two devices (under my control) using a third device to get rssi?

What I am trying to accomplish is to establish a connection between an iPhone (device 1) and an NRF52 (device 2), then sniff the data sent between them from a third device (also NRF52, device 3) to get an RSSI. I have the connection part working just fine and I can get RSSI between device 1 and device 2. What I need is RSSI to device 3 without using advertisements or connections (thanks to the limitations of iOS). I can freely exchange any data I need to between device 2 and device 3 (using some wired or wireless connection). Can I somehow sniff the connection and get an RSSI measurement of the signal from device 1 on device 3?

  • Little confusing to me but when it comes to RSSI: it's Relative Signal Strength Indication which you can measure on any radio receiver which supports it on PHY level and provides API to it. So your device 3 can listen to any packet and measure its signal strength at its antenna. Now the question is if this is what you want;) If you want to know what is RSSI at some device which don't support propagation of this to upper layers through some API then you are obviously out of luck, you cannot assume by other device what are radio properties of another device at different position. You can imagine it like sound: if you hear some sound with certain intensity you can assume if the source was loud or not but you can only guess if I hear it because you don't know how sensitive my ears are and what is blocking the sound on way to my ear. And while with sound waves it might be possible to predict just based on look on the place topology 2.4GHz radio is much less intuitive in terms of reflections and interference. So don't assume anything like this...

  • You may be able to sniff the data, but for the received RSSI (on the iOS side) I doubt you can do it.

  • First of all, thanks for taking the time to help. Maybe I can clarify my question. I want to listen in on the transmission from device 1 (iPhone) to device 2 (nrf) with device 3. I want to get the rssi value at device 3. Then I can pass this value (via some back channel or whatever) back to the iOS device using the wireless connection of device 2 (the connected NRF).

    So basically in short iOS transmits, and both nrf devices read the rssi of one packet.

    My hangup is how to sniff a packet, determine its source and destination (I could read a data identifier or something I'm sure) and then get rssi using the NRF board. Is there a way for the NRF52 chip to listen to all data even for unconnected devices (monitor mode I guess it might be called), not just advertisements and pass it to my code via the api?

  • If it helps, I have a decent amount of RF background, so it's not the physical reflections/propogations, etc. that is the trouble, it is the actual implementation on the NRF52. - Thanks again

  • Hehe, this is kind of dreamer's idea, right? Yes, nRF52 chip can be used in "raw" mode - similar to how nRF sniffer FW/app is doing it - and then you can parse and decode any packet which you get (assuming you managed to tune nRF5x receiver to the same frequency and coding so you get decoded data from Rx stage). When it comes to decoding BLE PDUs on the lowest layer there is so-called ACCESS ADDRESS which is set uniquely (= randomly:) for each connection at connection request so if you follow the connection from the very beginning you can clearly identify packets belonging to certain BLE link from other packets. The same with sides, you can easily say what is Master to Slave and what is opposite direction. That's all you need in theory but I doubt you will want to go through torture of implementing this on your own (my estimation would be many months of full-time job). Good luck.

Related