Ho provato il modulo patchato ma purtroppo non funziona con il mio v5.
Visualizzazione stampabile
riprendiamo il discorso sui file di log.
ho scoperto che esistono alcuni "modi" di avvio del cell:
- mode 0 : avvio normale
- mode 8 : avvio per caricabatteria collegato
- mode 7 : avvio per sveglia
in /data/log_other_mode vengono automaticamente salvati i log di tutti i modi diversi da 0 (avvio normale).
esiste un metodo per forzare il log anche per il mode=0.
si va nella cartella /data/misc/mblog e si modifica con un editor testo (RootExplorer) il file mblog_config si modifica la prima riga in:
autostart=1
dopo il riavvio, il log per il mode=0 e' attivo e troveremo i dati di log nella cartella /data/log_temp.
ora andiamo in /sys/bus/Platform/drivers/msensor e anche qui apriamo con l'editor di testo il file trace e modifichiamo la prima riga in:
0x001F
cosi' facendo abbiamo abilitato tutti i log del modulo memsicd3416x.
ora usiamo la bussola qualche secondo.
prima di poter analizzare i log dobbiamo fermare l'acquisizione, si ritorna nella cartella /data/misc/mblog si modifica nuovamente il file mblog_config scrivendo sulla prima riga:
autostart=0
riavviamo e ora possiamo copiare il contenuto della cartella /data/log_temp sul PC per poterla analizzare.
cercate le linee contenenti mmc3416 (se lo avete/sapete usare GREP e' l'ideale), troverete cose tipo queste:
<6>[ 246.798421] (1)[181:memsicd3416x]mmc3416x Get daemon data: 1919, -1406, 32918, 3, -12800, -30976, 41536, 3, 0, 445, -611, 0!
<6>[ 246.807936] (0)[55:kworker/0:1]mmc3416x mmc3416x_orientation_operate is called
<6>[ 246.807960] (0)[55:kworker/0:1]mmc3416x Hwm get o-sensor data: 0, 20025, -27495. divide 8192, status 0!
oppure messaggi di errore che ci possono aiutare a capire perché il sensore magnetico non funziona.
se volete, mandatemi una copia dei log in MP, mi piacerebbe studiarci su.
Ciao becar, ecco i miei log:
[ I log possono essere ottenuti anche tramite EngineerMode, vengono memorizzati sulla SD in "/mtklog". Non ho capito se sono gli stessi.]
Allego una parte di log SD e un log preso da: /data/log_temp.
L'avvio veloce è disattivo da tempo. il modulo ha il nome corretto e le permissions sono le stesse del vecchio modulo, ho provato anche a dargli 775 ma non cambia nulla.
Se per roll invertito intendi il fatto che con marine compass metti il telefono in verticale e quindi si vede anche il sotto della bussola ed il nord è al posto del sud e viceversa, allora sì...
Strano, il modulo patchato e' quello che uso, ed e' uguale alla rom stock. Continuo a pensare che hai sbagliato qualcosa nel copiarlo sul cell.
no, quello e' il funzionamento normale di MarineCompass.Quote:
Se per roll invertito intendi il fatto che con marine compass metti il telefono in verticale e quindi si vede anche il sotto della bussola ed il nord è al posto del sud e viceversa, allora sì...
io se metto il cell il landscape (ruotato sul lato lungo) ho la bussola capovolta.
errata (1.0): Allegato 84065
corretta (-1.0): Allegato 84066
grazie per la dritta, e' sicuramente molto piu' semplice usando EngineerMode :)
come avrai gia' visto c'e' un problema di comunicazione sul bus i2c con il sensore:
<4>[ 1328.230073] (1)[184:memsicd3416x]I2C_TxData delay!
<3>[ 1328.239061] (2)[184:memsicd3416x]I2C_TxData retry over 3
<3>[ 1328.239081] (2)[184:memsicd3416x]MMC3416X_IOC_TM failed
nel sorgente queste line vengono scritte dalla funzione I2C_TxData
chiamata da mmc3416x_unlocked_ioctl:codice:for(loop_i = 0; loop_i < MMC3416X_RETRY_COUNT; loop_i++)
{
if(i2c_master_send(this_client, (const char*)txData, length) > 0)
{
break;
}
printk("I2C_TxData delay!\n");
mdelay(10);
}
if(loop_i >= MMC3416X_RETRY_COUNT)
{
printk(KERN_ERR "%s retry over %d\n", __func__, MMC3416X_RETRY_COUNT);
return -EIO;
}
mi e' passata per la mente l'idea che avessero montato alcuni V5 con il BMM050 e mi sarebbe piaciuto provare a scambiare i moduli, ma questo codice sta nel Kernel, ossia in boot.img, che mi e' impossibile cambiare, quindi al momento non ho idee per ulteriori test.codice:case MMC31XX_IOC_TM:
data[0] = MMC3416X_REG_CTRL;
data[1] = MMC3416X_CTRL_TM;
if (I2C_TxData(data, 2) < 0)
{
printk(KERN_ERR "MMC3416X_IOC_TM failed\n");
return -EFAULT;
}
Stavo per chiedere se il sensore non fosse incluso nel mtk6589 come BT, GPS e WIFI, ma mi sembra di capire che non sia così:
MediaTek - MediaTek Strengthens Global Position with World?s First Quad-Core Cortex-A7 System on a Chip ? MT6589
Anche io ipotizzavo hardware diversi (l'alternativa è mal funzionanti, non ci sono altre possibilità).
Dico una cavolata: non si trovano kernel bmm050 semi-compatibili, giusto per provare la bussola?