Closed carlidel closed 2 years ago
Penso che sia tutto un problema legato al fatto che il Bluethoot risulta non supportato dal sistema Exposure Notification...
isBluetoothSupported=false
Tuttavia, non so a questo punto cosa fare o a chi rivolgermi per sistemare la cosa. Mi seccherebbe davvero molto dover rinunciare a Lineage.
Su Moto G 2nd gen con LineageOS 14 funziona, ma l'app viene killata spesso dal sistema e dopo si presenta il tuo stesso problema. Un workaroud è spegnere il bluetooth e premere consenti a bluetooth spento.
Confermo che spegnendo prima il Bluethoot sono riuscito ad attivarla!
Tuttavia confermo anche che basta altrettanto poco tempo per trovarmi il servizio ucciso in background... vedo se riesco a tracciare il fattore scatenante.
Attenzione che potrebbe essere un falso positivo (dice di essere attivo quando in realtà non lo è). Aspettiamo un feedback dagli sviluppatori Problema descritto su #146
Attenzione che potrebbe essere un falso positivo (dice di essere attivo quando in realtà non lo è).
Confermo: OnePlus One con LineageOS 16 non si attiva quando Bluetooth è già attivo, il servizio si disattiva quando l'app va in background e sniffando non manda eventi advertising BTLE anche quando segnala che il servizio è attivo.
Confermo che spegnendo prima il Bluethoot sono riuscito ad attivarla!
Tuttavia confermo anche che basta altrettanto poco tempo per trovarmi il servizio ucciso in background... vedo se riesco a tracciare il fattore scatenante.
Domanda : l'account Google associato è anche enrolled per la Beta dei Play Services e/o altri servizi Google ?
Motivo : riscontrato situazione analoga di anomalie/instabilità entry Notifiche EN in Impostazioni \ Google, indipendentemente dalla release GMS (20.15.16 / 20.18.17) con modulo nearby aggiornato per supporto EN, che era condizionata da questioni relative a KO check EN API dell'account in uso.
Occorsa infatti sia su CM13.0 (usata per test MM6.0.1) che su LOS15.1 e 16.0, utilizzando appunto un account region IT - enrolled beta Play Services, tanto con dispositivi non certificati - whitelisted che certificati.
In tal caso - quando non compariva correttamente l'entry EN nel chk Impostazioni Google - avevo appunto le medesime entry del tuo logcat, che poi sono quelle restituite dall'app frontend in virtù di KO rilevamento del supporto API GAEN.
Resettando & utilizzando account non enrolled beta & con region OK per GAEN (quali CH e IT), non ho avuto problemi di stabilità dell'entry notifiche EN = OK, indipendentemente anche dallo stato Active / Inactive di SU.
Tamponata tale situazione, non ho avuto problemi ON/OFF Bluetooth = sempre configurato le app testate, attivando previamente il Bluetooth da Quick Toogle e la geolocalizzazione in modalità basso consumo (NO GPS).
\ In merito alla questione background ho replicato l'impostazione, che invece applica automaticamente SwissCovid in fase di setup (Apturi Covid ed Immuni p.es. non lo fanno) = ho disabilitato manualmente l'ottimizzazione batteria, vedi immagine.
Non ho applicato ulteriori modifiche (mantenuto Profilo Prestazioni - Bilanciato, che di base imposto come predefinito).
Rilevo correttamente l'advertising BLE (che non è gestito dall'app, bensì dalle API GAEN, come per la gestione TEK/RPI n.d.r.) tanto con l'app frontend chiusa per più di 24h / 144 Intervalli (indipendentemente da quella in test, che al momento ha attivato le API) quanto negli switch tra diverse app frontend (vedasi video switch test ).
Confesso di non riuscire a comprendere gran parte delle terminologie che usi, quindi non comprendo proprio il meccanismo che hai scoperto, ma ti posso dire che sul mio telefono è registrato il mio account Google italiano, e che l'unica beta alla quale sono iscritto è quella dei Play Services.
@rawmain pure io ho riscontrato il problema di isBluetoothSupported=false Account con region IT, non mi risulta sia attualmente nel beta dei ps (lo è stato nei giorni scorsi però). Account condiviso su dispositivi multipli. Notato anche io una forte instabilità della cosa: a volte parte senza errori ma non emette, a volte diche che non sono attivate, l'opzione delle notifiche nei settaggi Google va e viene.
@DrSchottky e @carlidel rispondo in un unico (lungo) messaggio.
In fase di impostazione l'app effettua prima i controlli di Enabled/Accesso per le ExposureNotifications API, cioè verifica se il servizio sia impostato in Impostazioni \ Google e se risponda OK il guard a cui è associato il placeholder (la scheda/pagina che si vede dopo aver cliccato su 'Notifiche di esposizione al COVID-19').
Finché non completa OK tale controlli, non aggiorna il controllo del supporto Bluetooth BLE, che è preimpostato false
public final boolean isBluetoothSupported(@org.jetbrains.annotations.NotNull()
android.content.Context context) {
return false;
}
\ Nel logcat di @carlidel si vede OK 1° passaggio con KO 2° nel controllo Enabled per le ExposureNotifications API ed errore di connessione EN 39501 (restituito dal guard di autorizzazione/accesso API).
06-02 11:51:09.635 1224 1224 I ExposureNotification: ExposureNotificationChimeraService.onBind [CONTEXT service_id=236 ]
06-02 11:51:09.649 1224 4148 I ExposureNotification: Utils#isSupported enabled=true, isDeviceSupported=true, isBluetoothSupported=false [CONTEXT service_id=236 ]
06-02 11:51:09.661 8946 8946 W System.err: com.google.android.gms.common.api.ApiException: 17: API: Nearby.EXPOSURE_NOTIFICATION_API is not available on this device. Connection failed with: ConnectionResult{statusCode=UNKNOWN_ERROR_CODE(39501), resolution=null, message=null}
Se fosse fallito infatti già il 1° (servizio assente), avrebbe avuto invece p.es. questo tipo di log con diverso codice di errore connessione API 3950x :
06-03 12:55:32.994 856 856 I ExposureNotification: ExposureNotificationService created [CONTEXT service_id=236 ]
06-03 12:55:32.995 856 856 I ExposureNotification: ExposureNotificationChimeraService.onBind [CONTEXT service_id=236 ]
06-03 12:55:32.997 856 871 I ExposureNotification: Exposure notifications disabled. [CONTEXT service_id=236 ]
06-03 12:55:33.003 3289 3289 W System.err: com.google.android.gms.common.api.ApiException: 17: API: Nearby.EXPOSURE_NOTIFICATION_API is not available on this device. Connection failed with: ConnectionResult{statusCode=UNKNOWN_ERROR_CODE(39503), resolution=null, message=null}
Usando release ufficiali (quali appunto quelle pubblicate sul Play Store) ho rilevato l'errore 39501 associato ad anomalie/instabilità di comparsa del servizio Notifiche in 2 casi principali :
usando un account Google registrato per Programmi Beta dei Google Play Services e/o di altri servizi Google
in presenza sul dispositivo di 2 account associati a paesi differenti,di cui uno non in allowlist per l'uso delle API ExposureNotification.
Un flusso di verifica/fix potrebbe essere quindi il seguente :
Passaggio A1
Disinstallare Immuni
Svuotare Cache+Dati dei Google Play Services da Impostazioni / App
Riavviare il dispositivo
Attivare il Bluetooth
Impostare la geolocalizzazione in modalità Attiva - Basso Consumo (NO GPS)
Verificare che sia presente il permesso di geolocalizzazione per Google Play Services
Verificare se sia presente il servizio Notifiche con pagina associata OK in Impostazioni \ Google
Se quest'ultima verifica è OK, si procede con il successivo A2, altrimenti si salta a B
Passaggio A2
Installare dal Play Store un'altra app ufficiale con supporto ExposureNotifications API = APTURI (link diretto alla scheda sul Play Store) cioè l'app ufficiale della Lettonia, che non ha vincoli geografici per il download.
Configurare l'app = basta scegliere la lingua Inglese / EN e seguire le schermate, indicando alla fine di NON fornire il numero di telefono. Potete fare riferimento alle immagini dalla 00 alla 05, che trovate QUI .
Se l'attivazione di Apturi non ha restituito errori di accesso alle notifiche, si procede con il successivo A3, altrimenti si salta a B
Passaggio A3
Installare Immuni dal Play Store - build attuale è la 1.0.1 #1011346
Configurare l'app
Se non si riscontrano problemi nell'autorizzazione notifiche, si procede, altrimenti si salta a B.
Disinstallare Apturi
Disabilitare manualmente l'ottimizzazione batteria per Immuni nelle Impostazioni Batteria
Verificare che stia trasmettendo correttamente i beacon BLE di advertising sia quando aperta in primo piano che in background. Potete farlo anche da un altro telefono con un'app tipo Bluetooth LE Scanner o nRF Connect, o anche con uno, che filtri ed evidenzi solo i beacon trasmessi dalle API ExposureNotifications, tipo questo (che è quello, che uso per le verifiche veloci in giro).
Se anche il controllo di trasmissione dei beacon BLE è OK, è finita qui, altrimenti si passa a B
Passaggio B - Solo in caso di KO dei passaggi precedenti
Controllare lo stato di partecipazione a programmi Beta per servizi/app Google dal Play Store \ Le mie App & da Impostazioni \ App.
Se iscritti a programmi Beta per Google Play Services, disattivarne la partecipazione, quindi da Impostazioni \ App disinstallare gli aggiornamenti (dal menu nella scheda dell'app).
Svuotare cache+dati Google Play Services
Riavviare il dispositivo
Controllare lo stato di versione / aggiornamenti nella scheda dei Google Play Services
Controllare lo stato del servizio Notifiche in Impostazioni / Google
Qualora compaia già, potete verificare con attivazione Bluetooth e passi successivi passaggio A1, per poi procedere (a scelta) con A2->A3 o direttamente con A3.
Nel caso non compaia il servizio, occorre attendere. Comunque di base - alla peggio compare entro le 24h.
Sorry per il papiro. Fateci sapere.
@rawmain mi fermo ad A1, non ho nulla riguardo alle notifiche in Impostazioni\Google. Proverò ad attendere ulteriormente, ma era in quello stato già da ieri. Non so se l'abilitazione della funzionalità sia a device o ad account, perché con lo stesso sono loggato su un altro telefono sul quale funziona tutto.
UPDATE: ad un certo punto su tutti e tre i telefoni sono comparsi settaggi delle notifiche. Ne prendo uno, scarico Apturi, parte e funziona. la killo e provo a riavviarla: non parte. Dal settaggi Google è sparita (solo su quel telefono) di nuovo la voce relative alle notifiche. Scaricato immuni e ritorna errore 39501. Riavviando non cambia nulla
Prendo altro telefono, skippo lo step Apturi e vado direttamente con Immuni. Stessa cosa: parte la prima volta, killo e non riesce a ripartire. Settaggi notifiche spariti anche qui.
In tutto questo nessuna emissione, durante i test ho tenuto monitorato il traffico BLE da wireshark e non ho visto nulla passare. Good job, Google 😞
UPDATE: ad un certo punto su tutti e tre i telefoni sono comparsi settaggi delle notifiche. Ne prendo uno, scarico Apturi, parte e funziona. la killo e provo a riavviarla: non parte. Dal settaggi Google è sparita (solo su quel telefono) di nuovo la voce relative alle notifiche. Scaricato immuni e ritorna errore 39501. Riavviando non cambia nulla
Prendo altro telefono, skippo lo step Apturi e vado direttamente con Immuni. Stessa cosa: parte la prima volta, killo e non riesce a ripartire. Settaggi notifiche spariti anche qui.
In tutto questo nessuna emissione, durante i test ho tenuto monitorato il traffico BLE da wireshark e non ho visto nulla passare.
Grazie intanto per l'update (utile tanto per altri utenti quanto per il team di sviluppo).
Queste situazioni di errori anomali, con il servizio Notifiche EN, che appare/scompare, sono infatti questioni indipendenti dalle app frontend nazionali.
Dipendono appunto da problemi di KO autorizzazione lato API per user / per device, come confermano anche riscontri simili nelle issue dell'app Svizzera (ved. issue SwissCovid #51).
Dato che sono le API (non le app) a gestire sia i codici TEK/RPI (ID) che l'advertising BLE Bluetooth, in presenza di situazioni anomale non funziona niente,
Ho fatto qualche prova al volo e su tutti e tre i dispositivi ho il metodo [isMultipleAdvertisementSupported()](https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#isMultipleAdvertisementSupported()) ritorna false, sebbene con uno dei tre, in modo un po' limitato, riesca comunque a fare advertising con l'app della Nordic. Leggo che è un modo un po' controverso (specie su hw datati) per determinare le funzionalità di advertising.
Allego informazioni HW dei 3 device, nei prossimi giorni cercherò di reperire HW un po' più recente da testare
Mi scuso se non mi sono fatto più vivo... solo ieri notte ho avuto tempo di tentare un reset totale del mio dispositivo anche per seguire le procedure indicate da @rawmain
La buona notizia è che il sistema tutto adesso pare funzionare! La app resta stabile e mi è pure comparso il banner EN tra le voci di impostazione account Google (ma se sapete istruirmi su come analizzare il flusso BLE per verificare la cosa, tanto meglio).
La cattiva notizia è che non so bene dire quale elemento in particolare ha messo a posto le cose. Mi sono limitato ad aggiornare il mio telefono all'ultima build di Lineage OS compatibile e a riflashare le OpenGapps, aggiornandole poi all'ultima versione non-beta.
Tuttavia, anche portando i Play Services di nuovo alla versione beta, non ho più riscontrato il bug. È probabile che sia anche tutto grazie all'ultimo update di Immuni, purtroppo non sono abbastanza navigato per riuscire a capire che cosa ha fatto funzionare le cose.
Ho fatto qualche prova al volo e su tutti e tre i dispositivi ho il metodo [isMultipleAdvertisementSupported()](https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#isMultipleAdvertisementSupported()) ritorna false, sebbene con uno dei tre, in modo un po' limitato, riesca comunque a fare advertising con l'app della Nordic. Leggo che è un modo un po' controverso (specie su hw datati) per determinare le funzionalità di advertising.
Allego informazioni HW dei 3 device, nei prossimi giorni cercherò di reperire HW un po' più recente da testare
Per i test GAEN ho infatti escluso a priori i terminali con commercializzazione precedente a 5 anni fa, onde restare comunque entro le raccomandazioni Apple+Google & minimizzare le limitazioni di supporto BLE lato dispositivi.
Questa è la situazione rilevata da nRF con il dispositivo più vecchio (2015) del lotto nei test GAEN con custom rom base CM/LOS a bordo. Per ora sta rispondendo bene nelle verifiche ristrette (5 altri device con API GAEN attive entro un raggio < 10 metri).
@rawmain ho trovato un pattern abbasatnza ricorrente tra i device problematici Più che età del device è questione di ROM, anche i Huawei tutto sommato recenti ne soffrono.
La buona notizia è che il sistema tutto adesso pare funzionare! La app resta stabile e mi è pure comparso il banner EN tra le voci di impostazione account Google (ma se sapete istruirmi su come analizzare il flusso BLE per verificare la cosa, tanto meglio).
Grazie per feedback/update.
Per quanto riguarda le verifiche di corretta trasmissione, è sufficiente usare un dispositivo con Bluetooth + software per scansione/rilevamento dei beacon BLE. Da computer si può usare Wireshark, ma vanno bene anche programmi più semplici senza funzioni avanzate per sniffare il traffico.
Da altro dispositivo Android puoi usare l'app nRF Connect o Bluetooth LE Scanner. Io per i test veloci di advertising BLE (controllo rilevamenti immediati/prolungati e verifica rotazioni BT MAC + RPI) utilizzo uno molto semplice, che filtra direttamente gli UUID 0xFD6F utilizzati dai beacon BLE delle API GAEN - Link .
@rawmain ho trovato un pattern abbasatnza ricorrente tra i device problematici Più che età del device è questione di ROM, anche i Huawei tutto sommato recenti ne soffrono.
Sin dai primissimi test con le app di tracing BT/BLE (quindi non solo API GAEN), ho sempre verificato/mantenuto le seguenti impostazioni nei test-device, indipendentemente che fossero con firmware stock o custom ROM :
Disabilitazione della gestione automatica di ottimizzazione batteria per le app di tracing
Autorizzazione full per esecuzione app : Avvio Automatico - Avvio Secondario - Background
Alcune issue segnalate & riscontrate con le build pubblicate Play Store 1.0.0 e 1.0.1 (come peraltro con altre soluzioni di tracing BT/BLE) dipendono proprio dall'abbinamento tra l'assenza di richiesta/implementazione di tali impostazioni in fase di configurazione app & le policy di gestione app dei diversi firmware (vendor stock e non).
Infatti, agendo manualmente sulle impostazioni, non ho riscontrato problemi di stop advertising in background con la build 1.0.0 ufficiale nemmeno sui 2 dispositivi con EMUI/HMS + GMS nel parco test (Huawei Nova 5T e P30). Non li ho testati con la 1.0.1 ufficiale, visto che sono stati esclusi nel controllo JSON per il download dal Play Store, ma non vi sarebbero state differenze.
Ringrazio tutti i partecipanti a questo thread per le informazioni.
Lascio qui un commento perchè mi sembra pertinente. Sto provando Immuni su dispositivo BQ Aquaris E4.5, (se non erro la certificazione per le emissioni risale a Maggio 2014). Nonostante il dispositvo non sia mai stato aggiornato ad Android 6.0, sono riuscito a compilare ed installare una versione custom di LineageOS 14.1 (corrispondente ad Android 7.1.2), completandolo con le pico gapps in modo da poter avere GAEN a bordo. Sia le EN dai PlayServices che Immuni si attivano senza problemi, ma a quanto pare il dispositivo non genera gli advertising GAEN (ho controllato con GAEN detector). In effetti nRF lo indica come non supportato:
Anche logcat conferma:
09-14 14:05:13.343 998 2758 I ExposureNotification: Generating advertisement with version=80, tx=-24 [CONTEXT service_id=236 ]
09-14 14:05:13.348 998 2758 E BluetoothAdapter: Bluetooth LE advertising not supported
09-14 14:05:13.349 998 2758 W ExposureNotification: Advertising not supported, error code=ERROR_BLUETOOTH_NOT_SUPPORTED [CONTEXT service_id=236 ]
Possibile che un dispositivo incapace di generare advertising possa non innescare alcun avviso evidente all'utente, sia a livello di Play Services che di applicativo client?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Possiedo un Galaxy S5 (klte) con su installato Lineage OS 16.0 e OpenGapps.
Pur avendo l'ultima beta installata dei Play Services, l'applicazione Immuni ritorna il messaggio "Notifiche di esposizione non attivate".
Osservando il log da ADB, risulta che il servizio di Exposure Notification non è proprio attivo, pur avendo la versione 20.21.15 (100308-313409149) dei Play Services installata.
To Reproduce
Expected behaviour
Dovrebbe comparire il banner di attivazione delle Exposure notifications.
ADB logcat
Allego il log di errori che si cattura nel momento in cui premo il tasto "Consenti":
Smartphone:
Additional context
Il telefono è "Rootato" con il pacchetto SU, offerto da LineageOS.
Su di un Galaxy S5 con sistema operativo originale, Immuni funziona.