Any way to know RSSI?


  1. I would like to know if there is some way to get RSSI of the messages. I would like to do some field distance measuring.

  2. Is there any way to use bigger antenna? Are you planning to accommodate some external antenna connector like u.fl?

PS: I have received BC products yesterday and today I can send data from modules to RPi with my own software. That is just amazing. End of self boasting.

ad 1. We do not implement RSSI reading in our SDK, but if you import SPIRIT Qi.h then can use original function
uint8_t rssi = SpiritQiGetRssi();

ad 2. ST Microelectronics is now manufacturing the SPIRIT1 module with u.fl connector.
It is pin compatible. It would be possible to buy Core Module NR which is without radio and populate the radio yourself. Or if you would like bigger quantity, we can probably produce them for you.

Karel and Martin, thank you for your answers which are as usual fast and to the point which is why I like BigClown for.

  1. The SpiritQiGetRssidBm() from Qi.h is what I have been looking form. It works great! I have found the library at GitHub
  2. I will order some spare core module without the radio later for some test.

thank for this idea, how to get RSSI.

I am usually getting values about 22 dBm from device about 6 meteres away from hub. I don’t know if it is good or not. When I place radio module near the hub, there is value about 27dBm. Are you getting similar values? What is the best value? (I understand that the best value probably should be nearest to hub, but…)

Do you know what are best practices where to place hub and in which position should be USB dongle? (Should be whole HUB (usb dongle) placed higher than all devices? Should it be placed lower or ± at the same level? )

Ideally, the devices should be placed in line of sight to each other. Shorter distance means better signal quality (higher dBm). There is practically no advantage to have one device higher than the other.

I do not know my actual RSSI values but I think 22 and 27 dBm are oddly big numbers. If I look on my WiFi router for example, there is RSSI between -60 and -50 dBm. I will look at these numbers when I will be home from work. Are you using the function SpiritQiGetRssidBm() or only SpiritQiGetRssi()? This would explain the high numbers.

Thank you for your reaction. I am using “SpiritQiGetRssi();” should I use "SpiritQiGetRssidBm() " instead of the “SpiritQiGetRssi();”?

Well both is the same thing (quality of signal) but the SpiritQiGetRssidBm() will return you a value in dBm which is more commonly used. Your number 27 is equal to -56,5 dBm and 22 to -61 dBm which is both OK. The used receiver has ability to listen down to -118 dBm (if I remember correctly).

I changed the function to “SpiritQiGetRssidBm()” and it is giving me value 126 when it is close to the HUB and value 138 when it is far from the HUB. It is not corresponding with your expectation. Probably I am doing something wrong. I am just calling “SpiritQiGetRssidBm()” function. Do you have an idea what is wrong, please?

I suggest showing the code. Signed/unsigned integers or 8/16bit values could be the issue.
I also never used this functions. I would be interested in the code and the place where you call these functions.

I added it into battery_event_handler. My whole application is based on climate monitor example. I am converting the value into string (because I already had this function). BUFFER_SIZE constant is set to 128. It shouldn’t be problem to change it to publish just number

I can change it to this:


But unfortunately, I can try it during the weekend…

I see the problem. The RSSI value in dBm is negative so you should not assign it to rssi variable which is unsigned int. Change it to signed or float for better precision and it should work :slight_smile:

1 Like

Oh, I see! Thank you… :+1: I will try it during the weekend and I hope it will works :slight_smile:

I have changed variable to float and numbers looks similar to values as you wrote. But I am still not sure if it is correct, because it looks like some random numbers :wink: :smile:

I have tested climate module in these positions:

  • 2cm from hub -118dBm
  • in the next room (6m through the wall) -120,5dBm
  • in the greenhouse (6m from HUB, outside the house) -119,5dBm

When I am measuring signal more times, I am getting values ±3dBm form the middle value above.

Am I getting something wrong? Does exists any other method how to get signal quality more precise? At this moment I am really not sure If something is wrong, because the device lost the signal 10m from HUB, through the house, or behid the greenhouse which is 3 meters beside the house.

EDIT: I am adding measured values from the greenhouse during the night (same place of HUB, same place of climate module)

@owarek your values are similar? Or range of your measured numbers is higher?

I am sorry but now I do not have time to do some range tests. The only thing I can tell you is my “door module” (core + battery and reed switch) which is in my flat is reporting between -118 and -122,5 dBm. There is 6 metres and two walls (made of reinforced concrete) between the senor and central hub. And it works every time.

OK, thank you and I understand it. I know, that my values are similar to yours an I just need to know what is correct and what not, but I will talk to BC directly, not in this topic. Thanks for your help

You are welcome. I hope you wil succeed:)

Have you tried that SPSGRFC-868 alternative with u.fl? Any improvement?

I changed position of my BC dongle and now I have some issues with outside probe. Signal has to go through old cast-iron radiator between both endpoints and 50% messages are suddenly lost. So I would like to solder u.fl version on dongle and test it.

I did comparison tests with standard and u.fl SPIRIT1 modules on Core Module and the range was almost double. In most cases you just need Dongle with u.fl. I had some kind of Molex flex-strip antenna with dimensions around 10x3 cm.
All this should be in the e-shop in a few months.
Contact us on the email if you would like to have some pre-production samples.