RFM69 reports lower RSSI from Teensy than from Arduino Mini and Micro

Started by midix, November 04, 2022, 06:31:24 PM

midix

I have an issue that puzzles me a lot.

Given:

- two RFM69W 868MHz modules (bought from the same seller at the same time) with simple pieces of ~9cm wire as antennas
- Teensy LC
- Arduino Pro Mini 3v edition
- using LowPowerLab RFM69 library
- not using encryption
- using set300KBPS

Arduino is transmitting a message every 100ms and Teensy is replying.
Both devices are located less than 50cm from each other.

On both sides, I have code like this:

if (radio.receiveDone()) {

        lastRssi = radio.RSSI;


and then I print lastRssi to Serial.

Everything seemed to work fine, but I noticed that the Arduino side always reports RSSI of about -80 or less. The Teensy side reported RSSI of about -30.

I suspected that the issue might be caused by the power supply, so I tried a power bank instead of PC USB port for Teensy. No improvement. Maybe make the antennas more dipole by adding ground wire down? No improvement. Maybe the problem is with my soldered protoboard? Fortunately, I had both the Teensy and the RFM69 socketed, so I took them out and connected everything on a solderless breadboard. No improvement. Swapping the RFM69 to check if the problem will reverse. Nope, the Arduino still reports -80 RSSI for the messages coming from the Teensy.

Then without any expectations, I replaced Teensy LC with Arduino Pro Micro. The same breadboard, the same wires, the same power supplies, the same RFM69s. Surprise! Now the old Arduino Mini starts constantly reporting RSSI values of about -30, which is exactly what I would expect, judging how the other side reported the same values.

Does anyone have any ideas? How the fact of using Teensy LC for transmitting could cause the receiver side to see much worse RSSI values than with Arduino Micro Pro as a transmitter, all the other things being equal?

Could there be something specific in the RFM69 library code for Teensy that somehow makes RFM69 transmit at a much lower power or somehow otherwise unintentionally deteriorate the signal quality?

midix

I captured full reg details from all three devices - Arduino Mini, Micro, and Teensy LC and ran through Compare text editor tool. There are no differences, but I'm pasting the results below, just in case any settings need special treatment on Teensy:

Address - HEX - BIN
1 - 4 - 100
Controls the automatic Sequencer ( see section 4.2 )
SequencerOff : 0 -> Operating mode as selected with Mode bits in RegOpMode is automatically reached with the Sequencer

Enables Listen mode, should be enabled whilst in Standby mode:
ListenOn : 0 -> Off ( see section 4.3)

Aborts Listen mode when set together with ListenOn=0 See section 4.3.4 for details (Always reads 0.)

Transceiver's operating modes:
Mode : 001 -> Standby mode (STDBY)

2 - 0 - 0
Data Processing mode:
DataMode : 00 -> Packet mode

Modulation scheme:
Modulation Type : 00 -> FSK

Data shaping: in FSK:
ModulationShaping : 00 -> no shaping

3 - 0 - 0
4 - 6B - 1101011
Bit Rate (Chip Rate when Manchester encoding is enabled)
BitRate : 299065

5 - 13 - 10011
6 - 33 - 110011
Frequency deviation
Fdev : 299987

7 - D9 - 11011001
8 - 0 - 0
9 - 0 - 0
RF Carrier frequency
FRF : 868000000

A - 41 - 1000001
RC calibration control & status
RcCalDone : 1 -> RC calibration is over

B - 40 - 1000000
Improved AFC routine for signals with modulation index lower than 2. Refer to section 3.4.16 for details
AfcLowBetaOn : 0 -> Standard AFC routine

C - 2 - 10
Reserved

D - 92 - 10010010
Resolution of Listen mode Idle time (calibrated RC osc):
ListenResolIdle : 10 -> 4.1 ms

Resolution of Listen mode Rx time (calibrated RC osc):
ListenResolRx : 01 -> 64 us

Criteria for packet acceptance in Listen mode:
ListenCriteria : 0 -> signal strength is above RssiThreshold

Action taken after acceptance of a packet in Listen mode:
ListenEnd : 01 -> chip stays in Rx mode until PayloadReady or Timeout interrupt occurs. It then goes to the mode defined by Mode. Listen mode stops and must be disabled (see section 4.3)

E - F5 - 11110101
F - 20 - 100000
10 - 24 - 100100
11 - 9F - 10011111
12 - 9 - 1001
13 - 1A - 11010
14 - 40 - 1000000
15 - B0 - 10110000
16 - 7B - 1111011
17 - 9B - 10011011
18 - 8 - 1000
19 - 40 - 1000000
1A - 80 - 10000000
1B - 40 - 1000000
1C - 80 - 10000000
1D - 6 - 110
1E - 10 - 10000
1F - 0 - 0
20 - 0 - 0
21 - 0 - 0
22 - 0 - 0
23 - 2 - 10
24 - FF - 11111111
25 - 40 - 1000000
26 - 7 - 111
27 - 80 - 10000000
28 - 0 - 0
29 - F0 - 11110000
2A - 0 - 0
2B - 0 - 0
2C - 0 - 0
2D - 3 - 11
2E - 88 - 10001000
2F - 2D - 101101
30 - 4D - 1001101
31 - 0 - 0
32 - 0 - 0
33 - 0 - 0
34 - 0 - 0
35 - 0 - 0
36 - 0 - 0
37 - 90 - 10010000
38 - 42 - 1000010
39 - 0 - 0
3A - 0 - 0
3B - 0 - 0
3C - 8F - 10001111
3D - 10 - 10000
3E - 0 - 0
3F - 0 - 0
40 - 0 - 0
41 - 0 - 0
42 - 0 - 0
43 - 0 - 0
44 - 0 - 0
45 - 0 - 0
46 - 0 - 0
47 - 0 - 0
48 - 0 - 0
49 - 0 - 0
4A - 0 - 0
4B - 0 - 0
4C - 0 - 0
4D - 0 - 0
4E - 1 - 1
4F - 0 - 0