martes, 26 de agosto de 2014

GPS Mediatek y otras cosas en /system/build.prop

Me ha dado por probar el GPS con AndroiTS GPS Test ... y va de pena. Pasan minutos y ve un satélite.
Googleando
http://gizchina.es/2013/07/22/solucion-problema-gps-mediatek/
Lo he hecho pero que no va... el EPO DOWNLOADING dura décimas de segundo e indica "EPO update failure"

Siguiente cosa encontrada:
https://play.google.com/store/apps/details?id=com.chxdev.mtgps&hl=es
La app indica que es para otros chipset, decido no probarla inicialmente.


Siguiente, indica solución alternativa a EPO ... pero no va. En exterior pasan minutos y minutos sin pillar satélites (máximo 4 y con baja señal) 
http://fix-my-gps.blogspot.com.es/
Añadido, en configuración AGPS indico que puede utilizar red itinerancia (así es como funciona los datos en Jazztel que es un OMV, un "itinerante" en la red de Orange, por eso siempre está el símbolo R de Roaming junto a la cobertura)
Con eso tampoco funciona


Siguiente
http://forum.xda-developers.com/showthread.php?t=1975500
Lo pruebo:
$ ftp epo.mediatek.com
Connected to epo.mediatek.com.
220 (vsFTPd 2.2.2)
Name (epo.mediatek.com:enrique): epo_alps
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 509      509        276480 Aug 26 00:02 EPO.DAT
-rw-r--r--    1 509      509            37 Aug 26 00:02 EPO.MD5
-rw-r--r--    1 509      509          8302 Nov 13  2013 LEGAL.txt
226 Directory send OK.
ftp> bin
200 Switching to Binary mode.
ftp> mget *
mget EPO.DAT? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for EPO.DAT (276480 bytes).
226 Transfer complete.
276480 bytes received in 23.71 secs (11.4 kB/s)
mget EPO.MD5? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for EPO.MD5 (37 bytes).
226 Transfer complete.
37 bytes received in 0.00 secs (175.4 kB/s)
mget LEGAL.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for LEGAL.txt (8302 bytes).
226 Transfer complete.
8302 bytes received in 0.00 secs (40135.8 kB/s)
ftp> quit
221 Goodbye.

$ md5sum EPO.DAT
d0fbc3da4124fa6de5d2d035e61f7500  EPO.DAT
$ cat EPO.MD5
d0fbc3da4124fa6de5d2d035e61f7500 


Compruebo que no hay ningún fichero /data/misc/EPO* y decido ponerlos a mano

$ adb push EPO.DAT /storage/sdcard1/EPO.DAT
5303 KB/s (276480 bytes in 0.050s)
$ adb push EPO.MD5 /storage/sdcard1/EPO.MD5
0 KB/s (37 bytes in 0.118s)
enrique@invitado:~$ adb shell
shell@android:/ $ su
shell@android:/ # cp /storage/sdcard1/EPO.DAT /data/misc/EPO.DAT              
shell@android:/ # cp /storage/sdcard1/EPO.MD5 /data/misc/EPO.MD5              
shell@android:/ # cd /data/misc
shell@android:/data/misc # ls -l

----r-x--- root     root       276480 2014-08-26 23:03 EPO.DAT
----r-x--- root     root           37 2014-08-26 23:03 EPO.MD5
-rw------- gps      nvram          10 2014-08-23 19:59 GPS_CHIP.cfg
drwxr-s--- system   shell             2014-08-21 12:15 adb
drwxrwx--- system   system            2014-08-21 12:15 akmd
drwxrwx--- bluetooth net_bt_stack          2014-08-21 12:15 bluedroid
drwxrwx--- system   system            2014-08-21 12:16 bluetooth
drwxrwx--- dhcp     wifi              2014-08-26 20:37 dhcp
drwxrwx--x system   system            2014-08-21 12:24 keychain
drwx------ keystore keystore          2014-08-26 22:59 keystore
drwx------ shell    system            2014-08-21 12:15 mblog
-rw-rw-rw- gps      nvram       29720 2014-08-26 21:39 mtkgps.dat
drwxrwx--- bluetooth net_bt            2014-08-21 12:15 ppp
drwxrwx--- system   system            2014-08-21 12:15 radvd
drwxrwx--- system   system            2014-08-21 12:15 rtc
drwxrwx--x compass  compass           2014-08-21 12:15 s62x
drw-rw-r-- system   system            2014-08-21 12:15 sensors
drwxrwx--- system   radio             2014-08-21 12:15 sms
drwx------ system   system            2014-08-24 02:20 systemkeys
drwxrwx--- system   vpn               2014-08-21 12:15 vpn
drwxrwx--- wifi     wifi              2013-01-01 01:02 wifi
drwxrwx--- wifi     wifi              2014-08-26 20:40 wpa_supplicant
-rw------- shell    shell        1234 2014-08-21 12:15 xlog-filter
shell@android:/data/misc # chmod 777 EPO.*

Tras eso, sin reiniciar, ya se ve información
La misma información también se ve en ajustes
Sobre qué es EPO: Extended Prediction Orbit, de Mediatek

En el post de XDA se cita

Lo instalo y configura ok
Veo que indica que guarda copia de seguridad de fichero de configuración y crea 
shell@android:/etc # ls -l gps.conf                                           
-rw-r--r-- root     root           27 2014-08-26 23:38 gps.conf
shell@android:/etc # cat gps.conf
NTP_SERVER=es.pool.ntp.org
Si indico volver a versión anterior aparece un archivo gps.conf de 0 bytes


Además veo esto
que parece indicar la función de la app MT GPS EPO Fix es descargar esos ficheros, por lo que sería válida en general para cualquier chip mediatek 
La pruebo y al segundo intento funciona, aunque parece que pone los mismos ficheros variando la hora..
-rwxrwxrwx root     root       276480 2014-08-26 02:00 EPO.DAT
-rw-r----- root     root           37 2014-08-26 02:00 EPO.MD5 
Desinstalo...

Viendo posts finales con idea de servidor ftp propio y añadirlo en /etc/hosts me sugiere añadir IP de epodownload.mediatek.com para el nombre servidor antiguo... que parece estar a fuego en el código y funciona mal por exceso de carga / mal mantenimiento mediatek

También veo que se puede poner en configuración AGPS servidores de Google (es lo que está por defecto) o de Nokia, que en algunas ocasiones han funcionado mejor

Siguiente:
Citada aquí, busco la fuente
[SOLVED] Mediatek quad core gps tracking bug solved: very easy. 
This solution has been extensively tried and tested in spanish forums htcmania and movilesdualsim (this post and folowing), and it works in every phone.

Se trata de editar
/system/build.prop
y añadir
dalvik.vm.execution-mode=int:fast

Sobre qué hace la opción

Puede que la solución final sea una combinación de todo ...

Cambiar /system/build.properties es algo serio ... compruebo que es posible

shell@android:/ $ dalvikvm -help

dalvikvm: [options] class [argument ...]
dalvikvm: [options] -jar file.jar [argument ...]

The following standard options are recognized:
  -classpath classpath
  -Dproperty=value
  -verbose:tag  ('gc', 'jni', or 'class')
  -ea[:<package name>... |:<class name>]
  -da[:<package name>... |:<class name>]
   (-enableassertions, -disableassertions)
  -esa
  -dsa
   (-enablesystemassertions, -disablesystemassertions)
  -showversion
  -help

The following extended options are recognized:
  -Xrunjdwp:<options>
  -Xbootclasspath:bootclasspath
  -Xcheck:tag  (e.g. 'jni')
  -XmsN  (min heap, must be multiple of 1K, >= 1MB)
  -XmxN  (max heap, must be multiple of 1K, >= 2MB)
  -XssN  (stack size, >= 1KB, <= 256KB)
  -Xverify:{none,remote,all}
  -Xrs
  -Xint  (extended to accept ':portable', ':fast' and ':jit')

These are unique to Dalvik:
  -Xzygote
  -Xdexopt:{none,verified,all,full}
  -Xnoquithandler
  -Xjnigreflimit:N  (must be multiple of 100, >= 200)
  -Xjniopts:{warnonly,forcecopy}
  -Xjnitrace:substring (eg NativeClass or nativeMethod)
  -Xstacktracefile:<filename>
  Xmtkstacktracefile:<filename>
  -Xgc:[no]precise
  -Xgc:[no]preverify
  -Xgc:[no]postverify
  -Xgc:[no]concurrent
  -Xgc:[no]verifycardtable
  -XX:+DisableExplicitGC
  -X[no]genregmap
  -Xverifyopt:[no]checkmon
  -Xcheckdexsum
  -Xincludeselectedop
  -Xjitop:hexopvalue[-endvalue][,hexopvalue[-endvalue]]*
  -Xincludeselectedmethod
  -Xjitthreshold:decimalvalue
  -Xjitblocking
  -Xjitmethod:signature[,signature]* (eg Ljava/lang/String\;replace)
  -Xjitclass:classname[,classname]*
  -Xjitoffset:offset[,offset]
  -Xjitconfig:filename
  -Xjitcheckcg
  -Xjitverbose
  -Xjitprofile
  -Xjitdisableopt
  -Xjitsuspendpoll

Configured with: debugger profiler hprof jit(armv7-a-neon) smp show_exception=1

Dalvik VM init failed (check log file)
Mirando el fichero, veo otras propiedades que podría arreglar el tema de versión de CPU y android 
ro.build.version.release=4.4
ro.hw.version.custom=MT6589
Otras propiedades confirman que es android 4.2.2
ro.build.version.sdk=17
ro.build.description=leatek72_wet_jb3-user 4.2.2 JDQ39 eng.wulei.1398824151 test-keys

>Esto es lo que aparece en la mayoría de los apk del sistema ...

ro.build.fingerprint=alps/leatek72_wet_jb3/leatek72_wet_jb3:4.2.2/JDQ39/1398824151:user/test-keys


http://en.wikipedia.org/wiki/Android_version_history#Android_4.2_Jelly_Bean_.28API_level_17.29

Además podría hacer cosas como cambiar la identificación de modelo del móvil!
ro.product.model=316
ro.product.brand=dingcheng


Confirmación de la idea
http://www.taringa.net/comunidades/lg-optimus-me/5496268/Tutorial-Como-instalar-aplicaciones-no-compatibles.html


Editar un fichero para mi implica usar vi ... no me gusta la idea de hacer pull y push del fichero
Pero vi no está disponibile aunque hay un fichero busybox (visto en otra sesión previa)

shell@android:/ # /data/data/eu.thedarken.sdm/files/busybox                 
BusyBox v1.22.1-sdm324 (2014-02-02 13:50:50 CET) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
   or: busybox --list
   or: function [arguments]...

    BusyBox is a multi-call binary that combines many common Unix
    utilities into a single executable.  Most people will create a
    link to busybox for each function they wish to use and BusyBox
    will act like whatever it was invoked as.

Currently defined functions:
    [, [[, awk, cat, chgrp, chmod, chown, cp, cut, dd, df, du, echo, egrep,
    env, fgrep, find, grep, groups, head, id, kill, killall, killall5, ln,
    ls, mkdir, mount, mountpoint, mv, ps, pwd, readlink, realpath, rm,
    rmdir, sed, stat, tail, test, touch, tr, umount, uname, wc, which,
    xargs
/data/data/eu.thedarken.sdm/files/busybox vi /system/build.prop vi: applet not found

Así que decido instalar busybox de Google Play
Se instala 1.22.1 en /system/xbin y proporciona vi y muchas cosas más

shell@android:/ # busybox
BusyBox v1.22.1-Stericson (2014-01-25 17:27:18 CET) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
   or: busybox --list[-full]
   or: busybox --install [-s] [DIR]
   or: function [arguments]...

    BusyBox is a multi-call binary that combines many common Unix
    utilities into a single executable.  Most people will create a
    link to busybox for each function they wish to use and BusyBox
    will act like whatever it was invoked as.

Currently defined functions:
    [, [[, acpid, adjtimex, arp, arping, ash, awk, base64, basename, beep,
    blkid, blockdev, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat,
    chattr, chgrp, chmod, chown, chpst, chroot, chrt, chvt, cksum, clear,
    cmp, comm, conspy, cp, cpio, crond, crontab, cut, date, dc, dd,
    deallocvt, depmod, devmem, df, diff, dirname, dmesg, dnsd,
    dnsdomainname, dos2unix, du, dumpkmap, echo, ed, egrep, env, envdir,
    envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset,
    fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs,
    flock, fold, free, freeramdisk, fsck, fsck.minix, fstrim, fsync, ftpd,
    ftpget, ftpput, fuser, getopt, grep, groups, gunzip, gzip, hd, hdparm,
    head, hexdump, hostname, httpd, hush, hwclock, id, ifconfig, ifdown,
    ifup, inetd, insmod, install, ionice, iostat, ip, ipaddr, ipcalc,
    iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, less, ln,
    loadkmap, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lsof, lspci,
    lsusb, lzcat, lzma, lzop, lzopcat, makedevs, man, md5sum, microcom,
    mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat,
    mknod, mkswap, modinfo, modprobe, more, mount, mountpoint, mpstat, mv,
    nameif, nanddump, nandwrite, nbd-client, nc, netstat, nice, nmeter,
    nohup, nslookup, ntpd, od, openvt, patch, pgrep, pidof, ping, ping6,
    pipe_progress, pivot_root, pkill, pmap, powertop, printenv, printf, ps,
    pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead,
    readlink, readprofile, realpath, renice, reset, resize, rev, rm, rmdir,
    rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runsv, runsvdir, rx,
    script, scriptreplay, sed, seq, setconsole, setkeycodes, setlogcons,
    setserial, setsid, setuidgid, sha1sum, sha256sum, sha3sum, sha512sum,
    showkey, slattach, sleep, smemcap, softlimit, sort, split,
    start-stop-daemon, stat, strings, stty, sum, sv, svlogd, swapoff,
    swapon, switch_root, sync, sysctl, tac, tail, tar, tcpsvd, tee, telnet,
    telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute,
    traceroute6, true, tty, ttysize, tunctl, ubiattach, ubidetach,
    ubimkvol, ubirmvol, ubirsvol, ubiupdatevol, udpsvd, umount, uname,
    unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep,
    uudecode, uuencode, vconfig, vi, volname, watch, watchdog, wc, wget,
    which, whoami, whois, xargs, xz, xzcat, yes, zcat, zcip


Antes de editar le doy otra pensada ... y descubro que puedo consultar valores y fijarlos en caliente temporalmente hasta el reinicio sin editar el fichero, como aparece en la documentación de dalvik de enlaces anteriores

adb shell setprop dalvik.vm.execution-mode int:portable

Pruebo esto
shell@android:/system # getprop | grep dalvik                               
[dalvik.vm.heapgrowthlimit]: [96m]
[dalvik.vm.heapsize]: [128m]
[dalvik.vm.mtk-stack-trace-file]: [/data/anr/mtk_traces.txt]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]


Ya puestos, pruebo algo sencillo ...

shell@android:/system # setprop ro.build.version.release 4.2.2              
shell@android:/system # getprop ro.build.version.release
4.4

Igual las propiedades ro.* no se pueden cambiar así ...

Pruebo otra y parece que sí
Inicialmente no dice nada
shell@android:/ $ getprop dalvik.vm.execution-mode

shell@android:/system # setprop dalvik.vm.execution-mode int:fast         
shell@android:/system # getprop dalvik.vm.execution-mode

int:fast
No parece haberse roto nada. Respecto a arreglar, habría que salir al exterior para probarlo ...

Suficiente por esta sesión ...




No hay comentarios:

Publicar un comentario