Search code examples
androidgsmrssicellular-networksignal-strength

GSM RSSI and LTE RSSI and RSRP


I am looking to create an app that gets information about the phones connection to the cellular network.

My understanding is that RSSI is a measure of cellular signal with GSM and RSRP is a good measure for LTE.

To keep it consistent, is it possible to get a RSSI measure for LTE?

I am confused about what classes to use to get some of this information. At the moment, I am using the phone state listener which gives me a SignalStrength object. Using this object, I can call the two string method that provides me the following information when i split it. I am a little confused on what some of this means.

String ssignal = signalStrength.toString();
String[] parts = ssignal.split(" ");
The parts[] array will then contain these elements:
part[0] = "Signalstrength:"  _ignore this, it's just the title_
parts[1] = GsmSignalStrength
parts[2] = GsmBitErrorRate
parts[3] = CdmaDbm
parts[4] = CdmaEcio
parts[5] = EvdoDbm
parts[6] = EvdoEcio
parts[7] = EvdoSnr
parts[8] = LteSignalStrength
parts[9] = LteRsrp
parts[10] = LteRsrq
parts[11] = LteRssnr
parts[12] = LteCqi
parts[13] = gsm|lte|cdma
parts[14] = _not really sure what this number is_

What is part 8 providing? RSSI?

Also, when you look at the signal strength in the android settings, it gives you the RSSI for GSM. When connected to LTE, is it giving us the RSRP or RSSI? It seems its providing RSRP.

My understanding is that part[1] provides the RSSI when connected on GSM. However, i am unsure, and interested about, part[2] (what is the rate measured against? what unit of time), part[8] (what does it measure exactly?), part[10] and part [11](what unit is it measured in and what is the unit range)

I understand this thread is all over the place. Hopefully it makes a little bit of sense and someone can clear something up.

Cheers guys!


Solution

  • To put it simply, RSSI and RSRP are signal level measurements for GSM and LTE, respectively. They are not exactly the same, because GSM and LTE are very different technologies. However, they both indicate the same type of information. RSRP holds no meaning in GSM and RSSI means something different in LTE.

    This question may be worth reading: How to get LTE signal strength in Android?

    Most of what you are looking for, I was able to find here: https://developer.android.com/reference/packages.html

    GsmSignalStrength - GSM Signal Strength, valid values are (0-31, 99) as defined in TS 27.007 8.5

    GsmBitErrorRate - GSM bit error rate (0-7, 99) as defined in TS 27.007 8.5

    CdmaDbm - CDMA RSSI value in dBm

    CdmaEcio - CDMA Ec/Io value in dB*10

    EvdoDbm - EVDO RSSI value in dBm

    EvdoEcio - EVDO Ec/Io value in dB*10

    EvdoSnr - Signal to noise ratio. Valid values are 0-8. 8 is the highest.

    I could not locate the following, but here is what I suspect:

    LteSignalStrength - LTE Signal Strength in ASU (0-31, 99)

    LteRsrp - LTE RSRP value in dBm

    LteRssnr - LTE SINR value in dB

    LteCqi - LTE CQI (no units)

    gsm|lte|cdma - Network type