RFM69HWC poor range and hanging

Started by drewpolek, October 26, 2021, 04:29:00 AM

drewpolek

I'm facing with range issues. I have two Moteino R6 with stock firmware. I soldered RFM69HCW on each one and flashed examples from github for "Gateway" and "Node". Both are configured as "RF69_868MHZ" and "IS_RFM69HW_HCW" and that's all what I changed in code. Then soldered 82mm straight wire antenna on each one. Distance between them is ~1m.

That's Gateway log output. After ~5 minutes of work it hangs and I need to restart device.
Listening at 868 Mhz...
SPI Flash Init OK. Unique MAC = [D7:63:3C:48:4F:34:B4:26:]
RFM69_ATC Enabled (Auto Transmission Control)
#[1][2] 1] 123   [RX_RSSI:-89] - ACK sent. Pinging node 2 - ACK...ok!
#[2][2] 1] 123    [RX_RSSI:-89] - ACK sent.
#[3][2] 1] 123 A   [RX_RSSI:-85] - ACK sent.
#[4][2] 1] 123 AB   [RX_RSSI:-85] - ACK sent. Pinging node 2 - ACK...ok!
#[5][2] 1] 123 ABC   [RX_RSSI:-84] - ACK sent.
#[6][2] 1] 123 ABCD   [RX_RSSI:-86] - ACK sent.
#[7][2] 1] 123 ABCDE   [RX_RSSI:-90] - ACK sent. Pinging node 2 - ACK...ok!
#[8][2] 1] 123 ABCDEF   [RX_RSSI:-77] - ACK sent.
#[9][2] 1] 123 ABCDEFG   [RX_RSSI:-76] - ACK sent.
#[10][2] 1] 123 ABCDEFGH   [RX_RSSI:-77] - ACK sent. Pinging node 2 - ACK...ok!
#[11][2] 1] 123 ABCDEFGHI   [RX_RSSI:-76] - ACK sent.
#[12][2] 1] 123 ABCDEFGHIJ   [RX_RSSI:-78] - ACK sent.
#[13][2] 1] 123 ABCDEFGHIJK   [RX_RSSI:-81] - ACK sent. Pinging node 2 - ACK...ok!
#[14][2] 1] 123 ABCDEFGHIJKL   [RX_RSSI:-79] - ACK sent.
#[15][2] 1] 123 ABCDEFGHIJKLMNOPQ   [RX_RSSI:-79] - ACK sent.
#[16][2] 1] 123 ABCDEFGHIJKLMNOPQR   [RX_RSSI:-79] - ACK sent. Pinging node 2 - ACK...ok!
#[17][2] 1] 123 ABCDEFGHIJKLMNOPQRS   [RX_RSSI:-84] - ACK sent.
#[18][2] 1] 123 ABCDEFGHIJKLMNOPQRST   [RX_RSSI:-82] - ACK sent.
#[19][2] 1] 123 ABCDEFGHIJKLMNOPQRSTU   [RX_RSSI:-77] - ACK sent. Pinging node 2 - ACK...ok!
#[20][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUV   [RX_RSSI:-75] - ACK sent.
#[21][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVW   [RX_RSSI:-73] - ACK sent.
#[22][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWX   [RX_RSSI:-75] - ACK sent. Pinging node 2 - ACK...ok!
#[23][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWXY   [RX_RSSI:-76] - ACK sent.
#[24][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWXYZ   [RX_RSSI:-77] - ACK sent.
#[25][2] 1] FLASH_MEM_ID:0xEF30   [RX_RSSI:-78] - ACK sent. Pinging node 2 - ACK...ok!
#[26][2] 1] 1   [RX_RSSI:-77] - ACK sent.
#[27][2] 1] 12   [RX_RSSI:-75] - ACK sent.
#[28][2] 1] 123   [RX_RSSI:-76] - ACK sent. Pinging node 2 - ACK...ok!
#[29][2] 1] 123    [RX_RSSI:-76] - ACK sent.
#[30][2] 1] 123 A   [RX_RSSI:-76] - ACK sent.
#[31][2] 1] 123 AB   [RX_RSSI:-77] - ACK sent. Pinging node 2 - ACK...ok!
#[32][2] 1] 123 ABC   [RX_RSSI:-77] - ACK sent.
#[33][2] 1] 123 ABCD   [RX_RSSI:-77] - ACK sent.
#[34][2] 1] 123 ABCDE   [RX_RSSI:-80] - ACK sent. Pinging node 2 - ACK...ok!
#[35][2] 1] 123 ABCDEF   [RX_RSSI:-80] - ACK sent.
#[36][2] 1] 123 ABCDEFG   [RX_RSSI:-81] - ACK sent.
#[37][2] 1] 123 ABCDEFGH   [RX_RSSI:-80] - ACK sent. Pinging node 2 - ACK...ok!
#[38][2] 1] 123 ABCDEFGHI   [RX_RSSI:-80] - ACK sent.
#[39][2] 1] 123 ABCDEFGHIJ   [RX_RSSI:-79] - ACK sent.
#[40][2] 1] 123 ABCDEFGHIJK   [RX_RSSI:-82] - ACK sent. Pinging node 2 - ACK...ok!
#[41][2] 1] 123 ABCDEFGHIJKL   [RX_RSSI:-81] - ACK sent.
#[42][2] 1] 123 ABCDEFGHIJKLM   [RX_RSSI:-80] - ACK sent.
#[43][2] 1] 123 ABCDEFGHIJKLMN   [RX_RSSI:-79] - ACK sent. Pinging node 2 - ACK...nothing
#[44][2] 1] 123 ABCDEFGHIJKLMNO   [RX_RSSI:-80] - ACK sent.
#[45][2] 1] 123 ABCDEFGHIJKLMNOP   [RX_RSSI:-79] - ACK sent.
#[46][2] 1] 123 ABCDEFGHIJKLMNOPQ   [RX_RSSI:-79] - ACK sent. Pinging node 2 - ACK...ok!
#[47][2] 1] 123 ABCDEFGHIJKLMNOPQR   [RX_RSSI:-79] - ACK sent.
#[48][2] 1] 123 ABCDEFGHIJKLMNOPQRS   [RX_RSSI:-78] - ACK sent.
#[49][2] 1] 123 ABCDEFGHIJKLMNOPQRST   [RX_RSSI:-79] - ACK sent. Pinging node 2 - ACK...nothing
#[50][2] 1] 123 ABCDEFGHIJKLMNOPQRSTU   [RX_RSSI:-82] - ACK sent.
#[51][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUV   [RX_RSSI:-79] - ACK sent.
#[52][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVW   [RX_RSSI:-80] - ACK sent. Pinging node 2 - ACK...ok!
#[53][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWX   [RX_RSSI:-82] - ACK sent.
#[54][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWXY   [RX_RSSI:-80] - ACK sent.
#[55][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWXYZ   [RX_RSSI:-79] - ACK sent. Pinging node 2 - ACK...ok!


That's Node code. It's transmitting all the time and doesn't hang.
Transmitting at 868 Mhz...
SPI Flash Init OK ... UniqueID (MAC): D7 63 3C 48 4F 43 BF 26 
RFM69_ATC Enabled (Auto Transmission Control)

 ok!
[1] ACK TEST   [RX_RSSI:-71] - ACK sent
Sending[1]: 1 ok!
Sending[2]: 12 ok!
Sending[3]: 123 ok!
[1] ACK TEST   [RX_RSSI:-70] - ACK sent
Sending[4]: 123  ok!
Sending[5]: 123 A ok!
Sending[6]: 123 AB ok!
[1] ACK TEST   [RX_RSSI:-73] - ACK sent
Sending[7]: 123 ABC ok!
Sending[8]: 123 ABCD ok!
Sending[9]: 123 ABCDE ok!
[1] ACK TEST   [RX_RSSI:-83] - ACK sent
Sending[10]: 123 ABCDEF ok!
Sending[11]: 123 ABCDEFG ok!
Sending[12]: 123 ABCDEFGH ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[13]: 123 ABCDEFGHI ok!
Sending[14]: 123 ABCDEFGHIJ ok!
Sending[15]: 123 ABCDEFGHIJK ok!
Sending[16]: 123 ABCDEFGHIJKL ok!
Sending[17]: 123 ABCDEFGHIJKLM ok!
[1] ACK TEST   [RX_RSSI:-76] - ACK sent
Sending[18]: 123 ABCDEFGHIJKLMN ok!
Sending[19]: 123 ABCDEFGHIJKLMNO ok!
Sending[20]: 123 ABCDEFGHIJKLMNOP ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[21]: 123 ABCDEFGHIJKLMNOPQ ok!
Sending[22]: 123 ABCDEFGHIJKLMNOPQR ok!
Sending[23]: 123 ABCDEFGHIJKLMNOPQRS ok!
[1] ACK TEST   [RX_RSSI:-79] - ACK sent
Sending[24]: 123 ABCDEFGHIJKLMNOPQRST ok!
Sending[25]: 123 ABCDEFGHIJKLMNOPQRSTU ok!
Sending[26]: 123 ABCDEFGHIJKLMNOPQRSTUV ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[27]: 123 ABCDEFGHIJKLMNOPQRSTUVW ok!
Sending[28]: 123 ABCDEFGHIJKLMNOPQRSTUVWX ok!
Sending[29]: 123 ABCDEFGHIJKLMNOPQRSTUVWXY ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[30]: 123 ABCDEFGHIJKLMNOPQRSTUVWXYZ ok!
 ok!
Sending[1]: 1 ok!
[1] ACK TEST   [RX_RSSI:-80] - ACK sent
Sending[2]: 12 ok!
Sending[3]: 123 ok!
Sending[4]: 123  ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[5]: 123 A ok!
Sending[6]: 123 AB ok!
Sending[7]: 123 ABC ok!
[1] ACK TEST   [RX_RSSI:-79] - ACK sent
Sending[8]: 123 ABCD ok!
Sending[9]: 123 ABCDE ok!
Sending[10]: 123 ABCDEF ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[11]: 123 ABCDEFG ok!
Sending[12]: 123 ABCDEFGH ok!
Sending[13]: 123 ABCDEFGHI ok!
[1] ACK TEST   [RX_RSSI:-77] - ACK sent
Sending[14]: 123 ABCDEFGHIJ ok!
Sending[15]: 123 ABCDEFGHIJK ok!
Sending[16]: 123 ABCDEFGHIJKL ok!
[1] ACK TEST   [RX_RSSI:-79] - ACK sent


When distance between nodes is ~1m then RSSI between -70/-80. In that case I expect -30/-40 in worst case. I'm out of ideas what might be wrong.

In former times I used exactly the same code for Gateway and Node for Arduino Pro Mini with RFM69HW and everything worked fine, I didn't have any range issues and no hangs. I even used the same wires as antennas and range was about -30/-40 in the same place!
I decided to move to Moteino board because if RFM integration pcb pads, but unfortunately Moteino R6 isn't compatible with RFM69HW so I needed to switch to RFM69HCW.

I started loosing my hairs because of these issues. I thought it will work out of the box. Maybe there is a problem with my transceivers? I ordered them from Aliexpress from here
https://pl.aliexpress.com/item/32878809891.html?spm=a2g0s.9042311.0.0.6b125c0fU8rIOD

Do you have any ideas what can I check?

drewpolek

On "Node" I resoldered RFM69HCW to RFM69HW without any other midifications and I got following RSSI output without changing distance
loop 1s
#[331][2] 1] 123 ABCDEFGHIJKLMNO   [RX_RSSI:-31] - ACK sent.
#[332][2] 1] 123 ABCDEFGHIJKLMNOP   [RX_RSSI:-30] - ACK sent. Pinging node 2 - ACK...ok!
#[333][2] 1] 123 ABCDEFGHIJKLMNOPQR   [RX_RSSI:-28] - ACK sent.
#[334][2] 1] 123 ABCDEFGHIJKLMNOPQRS   [RX_RSSI:-28] - ACK sent.
#[335][2] 1] 123 ABCDEFGHIJKLMNOPQRST   [RX_RSSI:-29] - ACK sent. Pinging node 2 - ACK...ok!
loop 1s
#[336][2] 1] 123 ABCDEFGHIJKLMNOPQRSTU   [RX_RSSI:-30] - ACK sent.
#[337][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUV   [RX_RSSI:-29] - ACK sent.
loop 1s
#[338][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUV   [RX_RSSI:-28] - ACK sent. Pinging node 2 - ACK...nothing
#[339][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVW   [RX_RSSI:-28] - ACK sent.
#[340][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWXY   [RX_RSSI:-29] - ACK sent.
#[341][2] 1] 123 ABCDEFGHIJKLMNOPQRSTUVWXYZ   [RX_RSSI:-29] - ACK sent. Pinging node 2 - ACK...ok!
loop 1s
#[342][2] 1] FLASH_MEM_ID:0xEF30   [RX_RSSI:-29] - ACK sent.
#[343][2] 1] 1   [RX_RSSI:-31] - ACK sent.
#[344][2] 1] 12   [RX_RSSI:-26] - ACK sent. Pinging node 2 - ACK...ok!
#[345][2] 1] 123   [RX_RSSI:-28] - ACK sent.
#[346][2] 1] 123    [RX_RSSI:-28] - ACK sent.
loop 1s
#[347][2] 1] 123 A   [RX_RSSI:-29] - ACK sent. Pinging node 2 - ACK...ok!
#[348][2] 1] 123 ABC   [RX_RSSI:-28] - ACK sent.
#[349][2] 1] 123 ABCD   [RX_RSSI:-28] - ACK sent.
#[350][2] 1] 123 ABCDE   [RX_RSSI:-28] - ACK sent. Pinging node 2 - ACK...ok!
loop 1s
#[351][2] 1] 123 ABCDEF   [RX_RSSI:-28] - ACK sent.
#[352][2] 1] 123 ABCDEFG   [RX_RSSI:-28] - ACK sent.
loop 1s
#[353][2] 1] 123 ABCDEFGH   [RX_RSSI:-29] - ACK sent. Pinging node 2 - ACK...nothing
#[354][2] 1] 123 ABCDEFGHIJ   [RX_RSSI:-29] - ACK sent.
#[355][2] 1] 123 ABCDEFGHIJK   [RX_RSSI:-28] - ACK sent.
#[356][2] 1] 123 ABCDEFGHIJKL   [RX_RSSI:-29] - ACK sent. Pinging node 2 - ACK...ok!
loop 1s
#[357][2] 1] 123 ABCDEFGHIJKLM   [RX_RSSI:-28] - ACK sent.


I guess there is something wrong with RFM69HCW. I have 18 boards, tested all of them without any success. Or maybe there is other software configuration for it? Might it be possible these chips are fake one?

Felix

#2
So I understand you have bought your RFM69's from a 3rd party.
The only thing I can advise is to check your soldering, and use proper antennas.
If you use the ATC library extension (shown in examples), it will auto-tune transmit power down and after a few dozen packets you should see the RSSI drop as well, this is normal and the intent of ATC. Disable ATC to ensure max power and consistent RSSI.

drewpolek

I checked carefully every connection, switched back to RFM69HCW with the same antenna which I used for RFM69HW, disabled ATC and RSSI is back to ~-90. I ordered two RFM69HCW and RFM69CW from local provider and I will test it. Maybe there is something wrong with already received.

drewpolek

I made progress. I unsoldered transceivers from moteino board and placed them on 2-3mm distance pad. Then connected all pads by using 0.5mm wire. Result was the same. Then I disconnected ANT between moteino and transceiver and soldered antenna directly to transceiver. RSSI was about -45. Still too much. Then I found somewhere that 2.4GHz wifi might interfere with 868MHz so switched frequency on Gateway and Node to 689MHz. Then RSSI started to be -15/-20 what is acceptable. I hope I will get good results next days.