Ciao a tutti,
questa è l'app per poter meglio personalizzare i parametri di filtro messi a disposizione dal modulo phantom_kp_filter, creato per mitigare la problematica delle pressioni "fantasma".
Questa applicazione richiede, quindi, come requisito fondamentale, un custom kernel che include anche il modulo phantom_kp_filter. Questo modulo è stato inizialmente implementato ed incluso nel mio kernel (K^Kernel) per poi essere incluso anche in altri kernel, compreso il nuovo 3.4 kernel stock.
Descrizione del problema delle pressioni "fantasma":
Il problema delle pressioni "fantasma" è causato da un bug hardware ben noto e presente su alcuni dispositivi Samsung, inclusi alcuni modelli di I9001.
Praticamente, l'elevata attività della parte hardware radio, principalmente l'antenna (specialmente quando si è in modalità 2G), può causare interferenze sul circuito integrato Melfas, adibito alla gestione delle pressioni dei pulsanti e posizionato molto vicino all'antenna. Questa interferenza potrebbe indurre falsi interrupt che vengono visti dal chip come possibili pressioni del pulsante HOME, MENU o BACK.
Queste pressioni indesiderate potrebbero provocare chiusure inaspettate delle app correntemente in uso, la comparsa di Google Search, il ritorno alla home del laucher, o l'accensione del display del dispositivo se si trovava in modalità di sospensione (semplicemente appoggiato sulla scrivania). Ovviamente, questo problema potrebbe anche causare un consumo di batteria maggiore rispetto al normale.
Funzionalità dell'app:
- Abilitazione / disabilitazione del filtro delle pressioni fantasma sul pulsante HOME e sui touchkey MENU/BACK
- Personalizzazione dei parametri di filtering
- Visualizzazione delle pressioni dei pulsanti ignorate (possibili pressioni "fantasma" )
- Persistenza delle impostazioni dopo chiusure della app / riavvi / spegnimenti
- Le precedenti impostazioni dei parametri di filtraggio verranno ripristinate durante il primo avvio dell'app
Download link:
Installazione:
- Cancellare gli eventuali script 05pkf* precedentemente posizionati in /etc/init.d
- Scaricare ed installare l'applicazione
- Avviarla e personalizzare i parametri a vostro piacere
Screenshots:
Come usare l'app:
E' possibile spostarsi tra le 3 schede (tab view) della app con degli swipe a sinistra/destra o facendo click sul pulsante di intestazione della tab desiderata.
I valori selezionati verranno applicati e salvati immediatamente dopo la modifica dell'opzione o la conferma della popup di dialogo.
Tab HOME Key Presses Filtering
- Status: questa opzione permette di abilitare/disabilitare il filtro sulle pressioni fantasma del pulsante HOME (default disabilitato)
- Max allowed incoming interrupts: premendo su questa opzione è possibile personalizzare il numero massimo consentito di interrupt in ingresso per poter considerare una pressione del pulsante HOME come valida (da 1 a 32, default = 4), un valore inferiore consente di avere un filtro più aggressivo, invece un valore più alto permette di avere una filtro più permissivo
- Report wait time: premendo su questa opzione è possibile personalizzare il tempo di attesa in ms prima di segnalare le pressioni dei pulsanti HOME correntemente ricevute (da 5 a 25 ms, default = 12 ms), le pressioni dei pulsanti, durante questo tempo di attesa, vengono temporaneamente memorizzate e segnalate solo se il sistema ha ricevuto un numero di interrupt minore o uguale al numero massimo consentito
- Ignored phantom key presses: mostra le pressioni del pulsante HOME finora ignorate, premendo sulla voce verrà acquisito il valore aggiornato
Tab MENU/BACK Key Presses Filtering
- Status: questa opzione permette di abilitare/disabilitare il filtro sulle pressioni fantasma dei pulsanti MENU/BACK (default abilitato)
- Interrupt checks: premendo su questa opzione è possibile personalizzare il numero di controlli da effettuare sugli interrupt in ingresso relativi alle pressioni dei pulsanti MENU e BACK (da 1 a 10, default = 10), un valore minore consente di avere un filtro più permissivo, invece un valore più alto evita in modo sicuro la maggior parte dei falsi interrupt
- First error wait time: premendo su questa opzione è possibile personalizzare il tempo in millisecondi di attesa dopo il primo errore rilevato sul pulsante MENU o BACK nel caso ci siano molte pressioni non valide in rapida sequenza (da 50 a 1000 ms, default = 500 ms), il valore di default è ottimale e ben testato
- Last error wait time: premendo su questa opzione è possibile personalizzare il tempo in millisecondi di attesa dopo l'ultimo errore rilevato sul pulsante MENU o BACK nel caso ci siano molte pressioni non valide in rapida sequenza (da 50 a 1000 ms, default = 100 ms), il valore di default è ottimale e ben testato
- Ignored phantom key presses: mostra le pressioni dei pulsanti MENU/BACK finora ignorate, premendo sulla voce verrà acquisito il valore aggiornato
Tab About
- XDA forum thread: premendo su questa opzione, sarete reindirizzati sul thread ufficiale che ho pubblicato su XDA
- Donate: premendo su questa preferenza, sarete reindirizzati su PayPal
Codice sorgente dell'app:
Potete trovare il codice sorgente della app sul mio GitHub al seguente percorso:
Il workaround sviluppato sul kernel e il modulo phantom_kp_filter:
Per risolvere questo problema, che interessa anche il mio I9001, ho sviluppato un possibile workaround software direttamente sul kernel.
La soluzione include un nuovo modulo (phantom_kp_filter), che permette anche la personalizzazione dei parametri di filtraggio tramite interfaccia sysfs, e varie modifiche ai moduli cypresss-touchkey e pmic8xxx-key.
Il nuovo modulo espone la sua interfaccia sysfs al seguente percorso: /sys/class/misc/phantom_kp_filter e la app permette di controllare in maniera semplice i vari parametri esposti.
Risorse:
Potete trovare la soluzione implementata sul kernel e il relativo modulo sul mio repository GitHub, la commit è la seguente:
La soluzione lato kernel relativa alla gestione delle pressioni "fantasma" dei pulsanti MENU/BACK (touch key) è in parte basata e riadattata sul lavoro di Electric Bill: XDA - Phantom keypress and screen shot
Ulteriori dettagli sul modulo, suggerimenti e post utili potrete trovarli sul thread ufficiale su XDA (in inglese).
Crediti e ringraziamenti:
Electric Bill per la sua ricerca e le possibili soluzioni software e hardware
Jt1134 per la sua soluzione realizzata per il kernel del team CyanogenMod per il Fascinate
KTulu84, Smeroni68, Educk, Spaazm e Abhi.a3s per il loro supporto in fase di test
Smeroni68 e Neurom per le loro donazioni