uv-k5-firmware-custom: Incorrect RSSI register read

We found a potential issue in the RT-890 OEFW code that appears to also affect the K5.

It looks like the BK4819_GetRSSI() function is reading what’s supposed to be an 8 bit register as 9 bits. The current read is done as: BK4819_ReadRegister(0x67) & 0x01FF;

This is causing the returned RSSI value to be high. Which explains why most traffic reads as S9+ on the signal bar.

After playing around on the 890, the correct way to read the register seems to be 8 bits, excluding the least significant bit. On the 890, this has produced more sensible dBm values:

  • -117 instead of -74 for a repeater several miles away
  • -81 instead of -47 for a 5w transmission with radios side-by-side

This is the modified read function that I tested on the 890 that seems to return sane values:

uint16_t BK4819_GetRSSI(void)
{
	uint16_t RawRSSI;

	RawRSSI = BK4819_ReadRegister(0x67) & 0x01FE;
	RawRSSI = RawRSSI >> 1;
	return RawRSSI;
}

About this issue

  • Original URL
  • State: closed
  • Created 8 months ago
  • Comments: 17 (10 by maintainers)

Most upvoted comments

The register datasheet shows the formula to be what 11 wrote above. It’s nothing new/hidden.