Вчера ми пристигна 1650mHa батерия за HTC Kaiser-a ми, което е с 300mHa повече от оригиналната 😎 . Понеже ползвам телефон които е non native Android се налга да се направят няколко магии за да отчита правилно батерията в %-ти. Единия по лесния вариант е ако ползвате стандартен kernel си го едитвате с Atools като задавате новата стойност за mHa на батерията флашвате с новото NBH и дерзаете. Другия вариант е да ползвате нестандартно ядро което не се поддава на atools обработка и да направите грозена кръпка на създалия се проблем.

Първо нека да разясним малко теория и след това да пристъпим към кръпката. Когато правите промени по ядрото си с atools вие правите фини настройки на система в /sys/module/ и след това според зависи за вашия хардуер. При мен важния файл който отговаря за настройката на батерията се намира в /sys/module/board_kaiser_battery/parameters/battery_capacity. В него се съдържа колко единици е количеството на вашата батерия и на база на цифрата вътре се изчислява на колко % е вашата батерия в момента. Казвам единици защото не се пише чисто число в mHa а се изчислява на база на формулата

mHa*1.6=единици

В моя случай това ще рече 1650*1,6=2640 единици, сиреч това ще ни е съдържанието на файлчето. Речено сторено набързо в конзолата си набивам едно


echo 2640 > /sys/module/board_kaiser_battery/parameters/battery_capacity

Така до тука нещата са кристално ясни какво трябва да се прави, къде и защо. Обаче тука идва и момента за малката подробност, файлът в /sys директорията си занулява съдържанието след всеки рестарт на телефона, което не е много оферта. Затова следващата стъпка е да го сложим горния ред init-a на нашия Android.

Тъй като несъм съм го сложил в init-аискам да изчакам няколко дни преди да го направя. Когато го набия в init-a ще драсна набързо едно дребно how to 🙂

Днес понеже имам повече свободно време се заиграх с дроидчето ми и направих 2 доста интересни подобрения. Общо взето резултата беше 3 пъти по бързо зареждане на системата и около 50% ускорение на апликациите. Версията която ползвах е 2.2.2.  Така какво направих

  1. Odexing – Така какво е odex и deodex е тема която нямам намерение да разглеждам сега и кои какво прави но нека леко разяснение deodex това са разни хешове чек суми и класчета дето улесняват местенето на апликациите от една системка на друга и подобряват живота на програмиста,  да ама и забавят нашата системка защото когато се стартира апликацията прави кила провери и чекове. Така стига лирика първо премахнах deodex-вете това е елементарно с следния скрипт. Пуска се с root права на вашия телефон, тои ще свърши всичко необходимо. Раз пакетира пакетира и прочие. Да знаете че може да загубите известна информация контакти и прочие затова ги архивирайте предварително!
  2. JIT enabling – just-in-time compilation това е друга благинка която е добре да се появи. Както е известно java-та не е най бързите платформи на планената както и много други програмни езици. Та затова разни умни глави се се сетили че е разумна идея вместо всеки път да се компилира апликацията и след това да се стартира по добре да се компилира веднъж и след това да се пази byte code копието. Така избягваме нужда повторна компилация ускоряваме стартирането и намаляваме необходимите ресурси. Това се оказва интеренсна задачка не заради друго ами защото файла се намираше в read only директория на телефона 😀 не че това е проблем 😉 Самото разрешване на JIT ства като се добави следния ред в файла /system/build.prop dalvik.vm.execution-mode=int:jit Как ще го отоворите и едитните си е ваша работа дали през adb или ssh си е въпрос на ваша преценка за да може да го едитнете е необходимо да изпълните следните команди на телефона
mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system

#mtdblock2 е дяла където е маунтнат system може да видите верния за вас номер с df

echo "dalvik.vm.execution-mode=int:jit" >> /system/build.prop

#може просто да си ъплоуднете файла аз направо на ръка го оправих

sync
mount -o remount,ro /dev/mtd/mtdblock2 /system

Рестартирайте и се радвайте на новия си по бърз Android

Понеже имах доста полемики докато стигна до оптималния вариант – за Android върху моя HTC реших да драсна едно що годе подробно обяснение за нещата. В случая ще вляза в конкретизация за инсталация върху NAND-а на телефона, haret boot варианта няма да го разисквам, въпреки че при него нещата трябва да са идентични.

1. Подготовка – преди да започнем трябва да подготвим ядрото с което ще флашнем NAND чипа и ще направи възможно директното boot-ване на Androida. Ако сте с Linux или Mac OS ви препоръчвам Atools-а варианта ако сте с Windows NBH Editor-a е вашата панацея.  След това смъквате последното ядротo от GIT-a аз лично ви препоръчвам последния вариант на версия 2.6.25. Работи по стабилно от 2.6.32 и пести повече ток, недостатък е по ниския трансфер на wifi адаптера, което мен ме устройва. След това отваряте nbh файла и прилагате настройките за вашия телефона и версията на дроида . След това запазвате новия преработен за вашия телефон kernel. И го поставяте на SD карата си. Задължително трябва да е формат kaisimg.nbh за да можем ако сме си SPL-нали телефона да префлашенм от SD карата ни. За тея неща има доста изписано навсякъде така че няма да ги дискутирам. След флашване с въпросното ядро вече можете да кажеше чао на Windows Mobile 😉

2. Android – След като сме приключили с горната част телефона ще започне да зарежда в конзолен режим и ще ни прикани да задържим d-pad-а или средния бутон на предния панел. С него влизаме в boot менюто от което можем да си инсталираме ъпдейтваме ресетваме и прочие Androida ни. За да можем да инсталираме трябва да имаме папка andboot в SD карата ни в нея трябва да има файл с името androidinstall.tar.gz или androidinstall.tgz. След като пробвах почти всички Froyo версии мисля че най бърза и стабилна е Fat Free Froyo. Лично него ползвам и не съм имал почти никакви бъгове, ще се надявам и за напред разработчика му да се старае толкова много. Разумно е преди да почнете да инсталирате да си направите един поне 512 или малко повече ext2 дял на вашата SD карта където ще седи data.img или часта на дроида вив която ще са инсталирани програмите. Самата инсталация е тривиална избирате системата ви да бъде върху NAND-а а дата-та ви върху ext2 дяла. Изчаквате 2-3 мин докато всичко се нагласи и ще се върнете в първоначалното меню. Избирате Quit и ще започне да ви се стартира прясно инсталирания Android. От тук нататък дерзайте и се забавлявайте.

3. Малко думички за другите неща – Преди всичко препоръчвам Radio ROM-а да е версия 1.65.хх версия. Версиите 1.7хххх не работят толкова добре. Има известни неприятности около тях с обхвата четенето на контактите от SIM картата ви и прочие. Ако все пак искате да тествате 2.6.32 ядрото има вероятност вашият Android да не се стартира заради различните параметри които подава новото ядро към init системата. В такъв случай упдейтвате системата като сложите архивчето то тука в adboot папката и после от boot менюте се избира да се ъпдейтне системата.  Хубавото при него че прави системата една идея по бърза wifi адаптера смучи с по голяма скорост но не е толкова стабилен като 2.6.25 което не е малък минус 😉 отделно че с него Fat Free Froyo-то не може да запаметява контактите от SIM-a.

От 2 дни изцяло разкарах Windows Mobile-то и съм инсталирал върху NAND-a Android 2.2 на моя HTC Kaiser. Като цяло наблюденията ми са позитивни – не че имам време за задълбочена работа и изследване на шитните дето се стартират на телефона и прочие но ми допада най малко идеятаm че има един нормален терминален емулатор, че мога да си забия на телефона top, ls, iptables, telnet или ssh за да си свърша работа нормално отдалечено. Имам леки забележки по яденето на оперативната памет но вярвам, че ако му забия един SWAP дял ще се подобрят нещата. Като остане време ще се занимая по подробно с изследване на init структурата на тая глупост да видя колко излишни неща ще махна и дали ще успея да сваля времето на стартиране.

От около една седмица вече съм собственик на HTC TyTN 2. Продадох си стария HTC TyTN 1 и с известно доплащане си купих Kaiser-a(кодовото име на TyTN 2). Новия ми комуникатор се различава от стария с доста по добрия си хардуер – по ново поколение ARM процесор, 2 пъти повече оперативна памет по голям NAND за ROM-a. Отделно че разполага и с GPS което безумно много ми липсваше в стария Hermes. Предишния собственик не беше експериментирал с машинарията и затова цялото удоволствие от SPL-ването и отключването и се падна на мен 🙂 Към момента го карам с Android през мемори картата, че нещо напоследък не съм възхитен от дроида и мисля да си поиграя да портна Openmoko GUI. Работата ми по предишния проект приключи като портнах Touch Screen driver-a. Вярвам имаше още хляб в проекта но нямах нито време нито нерви да се занимавам и с него. Засега ще карам с Android-a докато не ми остане време да си портна Openmoko-то все пак дроида колкото и да не ми допада е по добре Windows Mobile 😉 Имам разни забележки по работата на телефона но проекта е прекалено напреднал тепърва да се включвам в тимът на разработчиците.