2014-10-21 11 views
7

Mi chiedevo se qualcuno sapesse come ottenere a livello di codice l'SNR o il rapporto segnale/rumore dei segnali LTE/WCDMA nei telefoni Android. L'SNR può essere visualizzato da un codice segreto * # 0011 # nei modelli Samsung, ma non in altri telefoni come Nexus 5. Stavo pensando se non esiste un'API effettiva, forse un calcolo da API esistenti?Android come ottenere SNR (Signal to Noise Ratio)

So per certo che è possibile ottenere informazioni dettagliate sui segnali con l'API SignalStrength ma ho analizzato le parti che ho visto e non riesco a trovare alcuna lettura SNR.

Qualsiasi aiuto o suggerimento è molto apprezzato!

Grazie!

Informazioni aggiuntive:

Vorrei aggiungere che ho armeggiare intorno con potenza del segnale da questa discussione [link] How to get LTE signal strength in Android? e in modo che il mio punto di partenza per la mia domanda.

miei risultati sono per i seguenti sono:

LteSignalStrength -> oscilla tra circa il 15-30 a seconda della posizione, nessuna idea di che cosa si tratta ..

LteRsrp -> mostra il dBm, credo che questo è come i telefoni determinano la qualità del segnale (all'incirca in ogni caso).

LteRsrq -> mostra -7 a -11, non è sicuro

LteRssnr -> sempre 300 per qualche motivo, nessuna idea perché ...

LteCqi -> Indicatore di qualità del canale? un numero enorme che sembra essere il valore intero massimo a 32 bit, non sicuro

C'è un modo per arrivare a SNR da questa API o sto cercando un ago inesistente in un pagliaio?

Schermata di Samsung GalaxyNote2 con la lettura SNR da * # 0011 # codice segreto: enter image description here

+0

SNR = Segnale/rumore. I punti di forza dei segnali sono misurati in dBm. Che sono sempre in negativo quando il segnale si indebolisce mentre si allontana dalla sua sorgente. Il punto è che ottieni LTE Signal Strength ma non c'è modo (AFAIK) di misurare la potenza del rumore sul tuo telefono. Penso che non sia possibile, forse c'è un modo, ma non secondo la mia conoscenza. –

+0

Hmm ... Sono sicuro che il telefono lo vede in qualche modo perché le varianti Samsung sono in grado di mostrarlo tramite codice segreto. Vorrei solo che l'API fosse più disponibile. – publicknowledge

+0

è interessante, puoi pubblicare il valore SNR attuale, se possibile? –

risposta

8

che sto ricercando questo argomento intensamente dal Aug-2014. In primo luogo, spero che tu abbia familiarità con alcune conoscenze di telecomunicazione e Android Open Source Project (AOSP). Ebbene, in base alle mie ricerche, premetto che:

  1. Osservando AOSP classi native interne, sembra che Android fornisce valori SignalStrength dalla parcellizzazione valori restituiti da AT + CSQ comando (per favore, controlla classe nativa AOSP reference-ril.c) tramite il modem. E solo da esso. Il problema è che questo comando fornisce solo la qualità del segnale unita al tasso di errore del blocco (BLER) e non informa nulla sugli altri segnali in arrivo; Nel modem LTE sembra essere OK in alcuni dispositivi, ma quando si passa alla rete UMTS, le cose diventano non chiare/incoerenti;
  2. È possibile calcolare le interferenze in entrata (SNR e altri) utilizzando alcune derivazioni da formule di telecomunicazione (relative a RSSI, RSCP, EcNo e così via) da soli con intensità di segnale ricevute da altre celle o con il AT + CGREG e AT + CREG (di nuovo, verificare la classe reference-ril.c).;
  3. Ho analizzato tutte le classi interne AOSP, le chiamate dei metodi di tracciamento e diagramma relative alla telefonia. Ho cercato tutto dal livello SDK (dove usiamo le classi TelephonyManager e PhoneStateListener), oltre alle classi di livelli di interfaccia radio nativi scritti in c/C++. In qualsiasi momento ho trovato un calcolo SNQ basato su altre celle, ma solo passato come valore ottenuto dal modem con AT + CSQ (questo comando fornisce solo la qualità del segnale e BLER). Mi sembra strano, perché l'interferenza è un valore calcolato con altri segnali ricevuti, inclusi quelli che non provengono dal GSM. Quindi, per me, l'SNR in arrivo ottenuto da API Android è in qualche modo zoppo o incompleto.

base a quanto sopra, suppongo che:

  1. Google non è 3GPP. E 3GPP non è Google. Android è un progetto enorme e complesso con oltre 12 milioni di righe di codice. È molto plausibile che le informazioni di comunicazione/teoriche possano essere perse tra Android e le telecomunicazioni;
  2. In particolare, sto cercando CQI e sospetto che CQI sia nel contesto di LQR (Link Quality Report), calcolato nel PPP L2 (Point-to-Point Protocol);
  3. L'argomento di questa discussione è davvero problematico. Non ci sarà il Santo Graal, perché diversi dispositivi possiedono driver hardware diversi (magari chiusi). Avremo bisogno di supportare diversi software per ogni dispositivo diverso. Forse, dovrai ricompilare un'intera ROM Android per ciascun dispositivo, se devi avere un valore corretto per tutto il dispositivo.

Spero che porti un po 'di luce a voi. Se hai ulteriori informazioni, per favore condividi qui.