Тъй като процеса е интересен, тук ще опиша успешната процедура по подкарване на Palm Pre по нашите ширини, пък дано е полезен на някой.

Hardware

Като начало, ви трябва unlocked GSM Palm Pre, който най-лесно се намира в магазните на O2 в Германия. Хардуерната клавиатура е qwertz вместо qwerty, но от една страна това не е особен проблем, от друга страна има вариант да се пренастрои софтуерно. Цената на телефона е 481 евро.

Software

Трябва да си регистрирате акаунт във Palm Developer Center и да си свалите Palm webOS Software Development Kit за предпочитаната операционна система. Под "Linux" там имат предвид "Ubuntu", но процедурата (link) с малки разлики работи и под Debian GNU/Linux, каквото ползвах аз.

SDK-то поддържа емулатор на телефона, с който да тествате ако решите да разработвате приложения. За него ви е необходим VirtualBox който присъства в Debian като пакети:

virtualbox-guest-additions           3.1.2-1
virtualbox-ose                       3.1.2-dfsg-1
virtualbox-ose-dkms                  3.1.2-dfsg-1
virtualbox-ose-guest-dkms            3.1.2-dfsg-1
virtualbox-ose-guest-utils           3.1.2-dfsg-1
virtualbox-ose-guest-x11             3.1.2-dfsg-1
virtualbox-ose-modules-2.6.30-2-686  2.6.30+3.0.6-dfsg-4
virtualbox-ose-qt                    3.1.2-dfsg-1
virtualbox-ose-source                3.1.2-dfsg-1 

За съжаление, емулатора динамично създава виртуалната машина и зависи от GTK версията на VirtualBox, за която в Debian Testing има отворен bug report, в следствие на което емулатора за момента не съм си играл да подкарвам -- той не е и нужен за подкарването на телфона. Предполагам, в Ubuntu този проблем не съществува, както и във Windows/MacOS вариантите на SDK-то.

Трябва ви и java6, Debian-ски пакет sun-java6-jre, аз инсталирах целия комплект:

sun-java6-bin                        6-16-1
sun-java6-jdk                        6-16-1
sun-java6-jre                        6-16-1

Настройте java да сочи към sun java6:

update-alternatives --config java

Трябва ви /usr/lib/jvm/java-6-sun/jre/bin/java

Самото Palm webOS SDK for Linux се състои от два пакета - palm-novacom и palm-sdk. NovaCom е "Palm's debug/control protocol server", който осигурява
най-общо казано TCP интерфейс за комуникация на различни програми към
телефона (през USB) или емулатора. Бидейки Ubuntu-centric пакет, демона вътре зависи от event-based init процес, така че инсталацията на пакета върху Debian най-вероятно ще даде грешки от рода на "start: command not found". Това не е голям проблем - винаги може да стартирате (като root) инсталирания демон на ръка /opt/Palm/novacom/novacomd или ако имате нужда от дългосрочно решение -- да си напишете sysvinit скрипт. Обърнете внимание на Debian Bug #560056 -- преди стартиране на демона е необходимо да редактирате /etc/sysctl.d/bindv6only.conf и да промените net.ipv6.bindv6only = 0

Palm-sdk пакета съдържа image-а на емулатора и други файлове (които не са пряко необходими за подкарването на телефона).

Процес

Заобикаляне на aктивацията

Включвайки телефона за първи път ви посреща т.н. Activation, реализиран от приложението FirstUse (com.palm.app.firstuse), от което няма вариант да се излезе докато не се активира телефона. Оригиналния вариант за такова активиране би бил да се използва SIM карта от GSM оператор който предлага Palm Pre като телефон с активирани data услуги на нея. След като приложението създаде вашия Palm профил, можете да сложите друга SIM карта и да се логнете с вече създадения профил. В случай че нямате под ръка таква карта, най-лесния вариант за заобикаляне на FirstUse приложението е reflash-ване на телефона. За целта ви трябва т.н. Meta Doctor. Meta Doctor е набор от шел скриптове които променят image-ите на оригиналния Palm webOS Doctor, нанасяйки в тях различни промени, една от които е премахването на задължителното изпълнение на FirstUse приложението при стартиране на телефона.

Meta Doctor може да се инсталира през git и зависи от patch (необходими пакети: git-core и patch):

- направете си работна директория (например ~/palm/md/) и в нея изпълнете

git clone git://git.webos-internals.org/tools/meta-doctor.git

- в ~/palm/md/meta-doctor/downloads (създайте директорията, ако не съществува) свалете оригиналния Palm webOS Doctor image който ще използвате за reflash-ването на телефона от http://www.webos-internals.org/wiki/Webos_Doctor_Versions. Unlocked GSM Palm Pre телефоните доколкото знам се продават само от O2 в Германия, така че image-а който ви трябва е в секция "O2 Germany, UK and Ireland / Movistar Spain". Аз използвах версия 1.3.1 , който беше последния към момента. Избирането на неправилен image или буквалното следване на процедурата с по-нова версия на image-a вероятно ще доведе до проблеми. За щастие, явно е почти невъзможно чисто софтуерно да си brick-нете Palm Pre телефона (за постоянно).

- преименувайте сваления image от webosdoctorp100ueu-wr.jar на webosdoctorp100ueu-wr-1.3.1.jar

- редактирайте ~/palm/md/meta-doctor/Makefile и направете следните конфигурации:

DEVICE = pre
CARRIER = wr
VERSION = 1.3.1
MODEL = p100ueu

като се ориентирате из всичките ifeq-ове в началото, така че в крайна сметка да имате

DOCTOR  = webosdoctor${MODEL}-${CARRIER}-${VERSION}.jar
PATIENT = ${DEVICE}-${MODEL}-${CARRIER}-${VERSION}

еквивалентни съответно на webosdoctorp100ueu-wr-1.3.1.jar и webosdoctorp100ueu-wr-1.3.1

- промените които Meta Doctor-а прави в/у Palm webOS Doctor-а се контролират от променливите в началото на Makefile-а:

# Comment out any of these lines to skip that step
BYPASS_ACTIVATION     = 1
ENABLE_FIRSTUSE_WIFI  = 1
MAKE_FIRSTUSE_VISIBLE = 1
INCREASE_VAR_SPACE    = 1
ENABLE_DEVELOPER_MODE = 1
INSTALL_SSH_AUTH_KEYS = 1

Имайте предвид, че INSTALL_SSH_AUTH_KEYS ще се опита да копира ~/.ssh/authorized_keys от вашата home директория в image-а с който ще флашвате телефона, така че да може да имате key-based достъп по SSH (през WiFi) до телефона в последствие. Ако нямате такъв файл а опцията е включена, Meta Doctor ще даде грешка при изпълнението си. Възможни варианти са да изключите опцията, или да копирате съдържанието на ~/.ssh/id_dsa.pub във ~/.ssh/authorized_keys.

- изпълнете в директория ~/palm/md/meta-doctor/ командата

make CARRIER=wr unpack patch pack

При проблеми с изпънението на Meta Doctor винаги можете да изпълните make clobber, да отстраните проблема и да пуснте горната make команда наново.

- след успешно изпълнение на Meta Doctor трябва да имате файл webosdoctorp100ueu-wr-1.3.1.jar в директория ~/palm/md/meta-doctor/build/pre-p100ueu-wr-1.3.1/. Това е коригираната версия на Palm webOS Doctor-а.

- при пуснат novacomd и закачен телефон на USB порт стартирайте получения файл със

java -jar webosdoctorp100ueu-wr-1.3.1.jar

и изчакайте да приключи рефлашването на телефона. Уверете се че имате заредена батерия и не разкачвайте връзката до приключването на процеса.

След рестартиране, телефона стартира директно Luna Manager-а и пропуска задължителната активация.

Активиране на пренос на данни през GSM мрежата

След прескачането на активацията, телефона би трябвало да поддържа гласови разговори (т.н. voice) който и български GSM оператор да ползвате. Преноса на данни (SMS, MMS, GPRS, EDGE, 3G) зависи от допълнителни настройки на всеки един телефон, независимо на кой производител. Повечето телефони имат вариант за въвеждане на тези настройки. При Palm Pre в телефона съществува списък с множество оператори по света и техните специфични настройки за пренос на данни. За съжаление, списъкът не е пълен и в него отсъстват настройки за Mobiltel (и Vivatel/Vivacom), но има за Globul. До webOS 1.3.1 при Palm няма възможност за ръчно въвеждане на настройките, а във версия 1.3.1 (последната към момента версия за GSM) има неопределен проблем при опит за записване въведените настройки. За работещ пренос на данни се налага редактиране на базата с настройките в телефона.

Настройките стоят в SQLite база, която по същество е един файл. Въпросния файл може да бъде взет от webOS Doctor-а който ползвахме на предишата стъпка, или от самия телефон.

В случай, че искате да го вземете от webOS Doctor-a, в директория ~/palm/md/meta-doctor/build/pre-p100ueu-wr-1.3.1/webOS/ има файл nova-cust-image-castle.rootfs.tar.gz. В този архив се намира файла /usr/lib/luna/CarrierNetworkSettings.db3 който копирайте в новосъздадената директория ~/palm/cns/. Направете и едно архивно копие на файла.

В случай, че искате да вземете файла от самия телефон, двата най-лесни варианта са:

а) при закачен за USB телефон и стартиран novacomd стартирайте novaterm който ще ви отвори терминал на самия телефон. Там изпълнете командата

cp /usr/lib/luna/CarrierNetworkSettings.db3 /media/internal/

След което превключете връзката на "USB disk mode", монтирайте новото устройство което виждате (/dev/sda1), копирайте файла и демонтирайте устройството.

б) свалете си WebOS Quick Install v2.96, стартирайте го (при стартиран novacomd):

java -jar WebOSQuickInstall.jar 

и изберете "Receive File" на /usr/lib/luna/CarrierNetworkSettings.db3

Редактирането на базата може да стане със SQLite Database Browser (пакет sqlitebrowser) или Firefox SQLite manager extension.

Двете таблици които ни интересуват са
com_pam_data_carriernetworksettings_CarrierNetworkSettings (която съкратено ще наричаме CNS) и com_pam_data_carriernetworksettings_DataConnectionSettings (която ще наричаме DCS).

CNS съдържа обща информация за оператора, а DCS съдържа специфичните настройки за различните видове пренос на данни. Уникалния (в рамките на базата) идентификатор на оператора в таблица CNS, колона id определя релацията към данните в таблица DCS (колона com_palm_data_carriernetworksettings_CarrierNetworkSettings_id).

Най-лесния (макар и малко грозен) вариант е да се преправят данните на някой съществуващ оператор (който не ви трябва) към необходимите ви.

Аз лично преправих данните на оператор id 2199023255663 (IDEA PL) към необходимите ми на Mobiltel. Първата необходима промяна е настройката на Mobile Country Codes и Mobile Network Code кодовете на оператора -- по тях телефона познава кой оператор ползва в момента. За българските оператори MCC кода е 284, а MNC кодовета са:

M-TEL (Mobiltel) 1
Vivacom/Vivatel (BTC) 3
GLOBUL (Cosmo Bulgaria Mobile) 5

В моя случай (IDEA PL към Mobiltel) промених MCC от 260 на 284 и MNC от 3 на 1. В qOperatorShortName и qOperatorLongName нанасяте желаните от вас имана ("M-TEL" и "Mobiltel" при мен). В smsEmailGateway въвеждате в случая за M-TEL номер 1111. Настройвате (за M-TEL) smscNumber да е +35988000301. voicemailNumber става 131, mmscWapGateway става 10.150.0.22, mmscUrl и mmsProxy ги оставих празни. С това приключваме промените в CNS таблицата.

В DCS намирате редовете за съответния оператор (в моя случай редовете със стойност 2199023255663 в ID-колоната) и нанасяте съответните промени. При мен това са редовете с уникални ID-та (по колона apnid) 201, 202, 203. Съответните стойности са:

- за 201:

apn: inet-gprs.mtel.bg
cshnUserName: празен стринг
cshnPassword: празен стринг
supportedService: 1
serviceDefault: 1
regionName: wap mtel

- за 202:

apn: inet-gprs.mtel.bg
cshnUserName: празен стринг
cshnPassword: празен стринг
supportedService: 2
serviceDefault: 2
regionName: wap mtel

- за 203:

apn: mms-gprs.mtel.bg
cshnUserName: mtel
cshnPassword: mtel
supportedService: 4
serviceDefault: 4
regionName: mtel mms

Забележка: горните стойности за Mobiltel са мои предположения след 10 мин търсене в интернет. SMS/GPRS/EDGE/3G със сигурност работят, MMS-и не съм тествал - не се интересувам от услугата. При проблеми (link) с MMS-а, най-вероятно трябва да се направят промени в CNS таблицата, колони mmscUrl и mmsProxy.

Променения CarrierNetworkSettings.db3 трябва да запишете обратно на телефона, примерно през "Send File" на WebOS Quick Install в директории /usr/lib/luna/ и /var/luna/data/.

Рестартирайте телефона. Би трябвало да имате работещи SMS-и, а при изгасен WiFi да виждате в горния десен ъгъл на екрана до изображението за силата на сигнала G/E/3G в зависимост от това на каква връзка сте в момента. При включен WiFi телефона предпочита да ползва него за пренос и не "пали" G/E/3G комуникацията.

Активация

Ако решите да пуснете ръчно вече видимото приложение FirstUse, за да си създадете Palm Pre профил, ще видите че въпреки работещия пренос на данни през GSM мрежата, приложението все още отказва да създаде профил. Тъй като не ми се ровеше да намеря къде е зависимостта от country of origin на SIM картата, най-лесния вариант е да създадете профила ръчно.

Отваряте novaterm към телефона (при пуснат novatermd и закачен USB кабел) и изпълнявате следната команда:

luna-send -n 1 palm://com.palm.accountservices/createNovaAccount {\"password\":\"YOURPASSWORD\",\"email\":\"YOUREMAIL@SOMEWHERE.com\",\"firstName\":\"YOURFIRSTNAME\" ,\"lastName\":\"YOURLASTNAME\",\"language\":\"en\",\"country\":\"gb\",\"question\":\"2\",\"respons e\":\"FIRSTCAR\"}

Като променяте частите с главни букви с данните за вашия профил. На посочения email ще получите мейл за потвърждение, след което можете да се логнете в Palm User Console където да въведете пак "въпрос-отговор" настройките за възстановяване в случай на забравена парола.

След това можете да стартирате FirstUse приложението и през него да се логнете във вече съществуващия профил.

Забележка: Въпреки че вече може да виждате AppCatalog-а, в него не се виждат никакви приложения. Това е временно състояние за европейските телефони с версия 1.3.1, страната и езика които са настроени за всяко приложение и т.н. Очаква се във версия 1.3.5 тези неща да са оправени.

С това приключва обобщението на подкарването на unlocked Palm Pre (Germany O2). Всякакви коментари са добре дошли, ще пробвам и в бъдеще да пиша по нещо за употребата на телефона (примерно - инсталация на приложения от неофициални хранилища).