Вы здесь

Доведение до ума навигатора GEOFOX MID709GPS

Захотелось мне купить хороший подарок отцу на юбилей. В том, что это будет навигатор я уже не сомневался, ведь на старенький GP-230 на WinCE 4.2 уже и поставить ничего нового нельзя было, ни карты обновить.

Руководствуясь принципом "раз дороже - значит лучше" решил выбрать что-то серьёзное и функциональное. Выбор пал на GEOFOX MID709GPS.

Заказал на минской конторе аппарат утром, вечером привезли, запустили Навител, спутники поймались, деньги отдал.

Оставались сутки на настройку и "доводку напильником". Но я бы не подумал, что обычное потребительское устройство такой доводки потребует.

Начиналось всё хорошо, устройство резво подцепилось на домашний вай-фай шифрованный WPA. Но вскоре поджидал облом. Андроидовские программы всегда хотят гугловскую учётку. А аппарат добавлять учётку никак не хотел, ругаясь мол, "не удается установить надежное соединение с сервером".

Поиск в интернете привёл к удручающим результатам. Было предложена куча решений проблемы и ни одно не подошло. Установка приложения Add Account к успеху не привела.

Сейчас будет не лишним добавить, что андроидовских устройств у меня нет, и опыта борьбы с ними тоже, поэтому было неясно с какой стороны за проблему хвататься в принципе.

Решение проблемы пришло можно сказать "свыше". Плюс помог одиннадцатилетний опыт работы с Linux.

1. Сперва поставил пакет для работы с Андроид на компьютер (Fedora 17).
yum install android-tools
2. Сделал бэкап на всякий случай, но он не пригодился.
3. Запустил shell
adb shell
4. Повезло в том плане, что на устройстве был доступ к учётке root без всяких доп. манипуляций.
Вводим в консоль su и получаем рутовскую консоль.
shell@android:/ $ su
shell@android:/ #

5. Доступ-то я получил, но что с этим делать я не знал. Полез изучать особенности файловой системы. Схожие с линуксом моменты и отличия. И вот дёрнуло меня посмотреть /etc/hosts
shell@android:/etc # cat /etc/hosts
127.0.0.1 localhost
74.125.93.113 android.clients.google.com

Опаньки! Очень похоже, что это именно то, что нам надо.
Хитрый адрес 74.125.93.113 не пинговался ни с компа, ни с навигатора. whois лишь рассказал, что это один из адресов гугла.

Зато с при проверке с компьютера сразу стало ясно, что адресок-то левый:
[yevgeny@trainer-2 rsync]$ nslookup android.clients.google.com
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
android.clients.google.com canonical name = android.l.google.com.
Name: android.l.google.com
Address: 173.194.44.8
Name: android.l.google.com
Address: 173.194.44.4
Name: android.l.google.com
Address: 173.194.44.7
Name: android.l.google.com
Address: 173.194.44.2
Name: android.l.google.com
Address: 173.194.44.0
Name: android.l.google.com
Address: 173.194.44.1
Name: android.l.google.com
Address: 173.194.44.9
Name: android.l.google.com
Address: 173.194.44.3
Name: android.l.google.com
Address: 173.194.44.14
Name: android.l.google.com
Address: 173.194.44.5
Name: android.l.google.com
Address: 173.194.44.6

То есть нашим 74.125.93.113 тут и не пахнет.

6. Дело техники - надо убрать строчку 74.125.93.113 android.clients.google.com из файла cat /etc/hosts. В навигаторе не установлен vi - файл можно только перезаписать, отредактировать никак.
echo "127.0.0.1 localhost" > /etc/hosts
7. И тут получаем облом, ибо файловая система смонтирована в режиме "Read Only" ("Только для чтения").

shell@android:/etc # mount
rootfs / rootfs rw,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mtdblock2 /system yaffs2 rw,relatime 0 0
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
/sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0
/dev/block/vold/179:1 /mnt/ext_sd vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/240:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/240:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/block/dm-0 /mnt/asec/com.navitel-1 vfat ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

Что ж, перемонтируем.
mount -o remount,rw /dev/block/mtdblock2 /system yaffs2

и пробуем перезаписать файл
echo "127.0.0.1 localhost" > /etc/hosts

И... барабанная дробь...
shell@android:/etc # ping android.clients.google.com
PING android.l.google.com (173.194.44.6) 56(84) bytes of data.
64 bytes from muc03s07-in-f6.1e100.net (173.194.44.6): icmp_seq=1 ttl=52 time=83.6 ms

Связь есть!
После этого без проблем добавились учётные записи Google и устройство стало полнофункциональным после доступа к Google Play. Были установлены osmand, transpot и прочие вкусности.

Единственной непобеждённой функцией является приём цифрового ТВ DVB-T. В Беларуси оно есть, но устройство не ловит его напрочь, хоть и оснащено телескопической антенной.
UPD. В полевых условиях всё-таки ловит. А много где даже в Минске не ловится.

Регистратор, FM-трансмиттер работают. Обычные USB-флэшки тоже работают "на ура!".