FrSkyRC / ETHOS-Feedback-Community

Feedback & suggestions are welcomed here for ETHOS by FrSky
188 stars 85 forks source link

Crossfire/ELRS RSSI sensor is not work #2086

Closed r1000ru closed 1 year ago

r1000ru commented 1 year ago

When use external Crossfire/ELRS module, RX RSSI1, RX RSSI2, TX RSSI sensors is not work.

I look that they have a range of 0-100, but must have negative range from -255 to 0 Note that a positive value (uint8_t) is transmitted in CRSF protocol, on transmitter this value should be multiplied by -1.

bsongis-frsky commented 1 year ago

Excellent description of the issue ;)

bsongis-frsky commented 1 year ago

If you increase the maximum limit to 255, will the sensor work correctly? The value would remain positive though.

bsongis-frsky commented 1 year ago

In 1.4.4 the range [-255:0] will be correctly set on sensor creation. The received value will be multiplied by -1.

r1000ru commented 1 year ago

If you increase the maximum limit to 255, will the sensor work correctly? The value would remain positive though.

On Ethos 1.4.3 RSSI sensor range field is readonly. But under normal conditions on the table I would have to see 30-50dbm without multiple

Target0815 commented 1 year ago

In 1.4.4 the range [-255:0] will be correctly set on sensor creation.

In 1.4.4 with ELRS 3.x RSSI2 is displayed with 0db. ArduPlane shows a value of 99 which is correct. By the new definition unfortunately always 0db is indicated and never the correct value.

bsongis-frsky commented 1 year ago

You have to rediscover your sensor so that it is created with the right range

Target0815 commented 1 year ago

You have to rediscover your sensor

I do this with every test ...

2 different ELRS modules and various receivers = RSSI2 = 0db, no value change when increasing the distance. Fail.

The same with Crossfire: e.g. -22db for RSSI1 and RSSI2. Value changes with distance. Ok.

The RSSI value in -db is probably correct in itself, but actually everywhere is normalized to 0-100%. There will be probably still some hints of the users ...

Target0815 commented 1 year ago

Interesting is what is displayed at OpenTX (same ELRS receiver):

1RSS = RSSI1 e.g. -33db, value changes when increasing the distance. 2RSS = RSSI2 always 0db, just like with Ethos.

But with Ethos no value is displayed at RSSI1.

bsongis-frsky commented 1 year ago

When use external Crossfire/ELRS module, RX RSSI1, RX RSSI2, TX RSSI sensors is not work.

I look that they have a range of 0-100, but must have negative range from -255 to 0 Note that a positive value (uint8_t) is transmitted in CRSF protocol, on transmitter this value should be multiplied by -1.

If I receive RSSI1=0xFB does it mean -5dB ? If I am right, the value should NOT be multiplied by -1

bsongis-frsky commented 1 year ago

Checked here, we receive negative values.

r1000ru commented 1 year ago

Hello, @bsongis-frsky I'm sorry I was misled about the RSSI type. Unsigned int8_t used in this frame from crsf-receiver to flight controller. At the same time, from the crsf-transmitter to the radio used signed int8_t, which does not require any action, but requires proper type.