Часть 1: Пингвин + Пальма = ?

С каждым годом КПК завоевывают сердца и кошельки "гиков", пользователей, которые не мыслят жизнь без компьютера. Не так давно эта напасть добралась и до России, почти слившись с бумом всеобщей мобильной телефонизации. Аудитория покупателей КПК, несомненно, гораздо уже, чем мобильных телефонов - ведь КПК не заменит в полной мере настоящего настольного компьютера. Однако он может быть прекрасным дополнением к нему. Под всеми любимую Windows проблем с синхронизацией с наладонниками нет, программ написано много, как для палмов, так и для PocketPC (есть решения от сторонних разработчиков). А вот чтобы наладить синхронизацию КПК с Linux, придется немного поработать. Статья посвящена в основном настройке синхронизации с наладонниками под управлением PalmOS.

[Александр Кузьменков (random_code AT list DOT ru)]

Пингвин + Пальма = ?

С каждым годом КПК завоевывают сердца и кошельки "гиков", пользователей, которые не мыслят жизнь без компьютера. Не так давно эта напасть добралась и до России, почти слившись с бумом всеобщей мобильной телефонизации. Аудитория покупателей КПК, несомненно, гораздо уже, чем мобильных телефонов - ведь КПК не заменит в полной мере настоящего настольного компьютера. Однако он может быть прекрасным дополнением к нему. Кроме того, не все еще понимают, зачем нужна эта маленькая серая коробочка, и какую пользу она может принести, относя ее скорее к продвинутым, но бестолковым игрушкам. КПК на базе PalmOS с недавних пор переживают второе рождение после, казалось бы, полного разгрома: не так давно очень распространено было мнение, согласно которому "пальмы" -- всего лишь многофункциональные записные книжки по сравнению с устройствами Pocket PC. Вот "покеты" -- это настоящие компьютеры. С выходом КПК на PalmOS 5 положение несколько изменилось, их железная начинка немногим уступала аппаратной части устройств PocketPC. Однако в России такая ситуация сохраняется до сих пор. Впрочем, мне бы не хотелось касаться этого вопроса т.к. выбор платформы -- дело личное, и споры "Palm vs PocketPC" сродни "священным войнам" из серии "PC vs. Mac" или "Windows vs. Linux". Под всеми любимую Windows проблем с синхронизацией с наладонниками нет, программ написано много, как для палмов, так и для PocketPC (есть решения от сторонних разработчиков). А вот чтобы наладить синхронизацию КПК с Linux, придется немного поработать. Статья посвящена в основном настройке синхронизации с наладонниками под управлением PalmOS. Согласитесь, было бы очень странно, если бы пользователь ОС Linux предпочел КПК, базирующийся на Windows Mobile. Если у вас все-таки PocketPC, то для вас наверняка будет интересна информация, приведенная во врезке.

Прежде чем переходить к настройке соответствующих программ, необходимо удостовериться, что ОС правильно определила ваше устройство. Если ваш КПК подключается к настольному компьютеру через COM-порт, то вам повезло: никаких дополнительных драйверов подключать не придется. Впрочем, такое бывает очень редко, ведь почти все современные наладонники подключаются через USB. Для связи с моделями m500,Tungsten T/T2/T3/T5, Tungsten C/W, Tungsten E, Zire31, Zire 71/72, коммуникаторами Treo и Handspring Visor в составе ядра Linux есть драйвер visor, для более старых КПК Palm III или Palm V следует использовать драйвер klsi. Все эксперименты я проводил на Tungsten E, поэтому я буду использовать модуль visor. Работа с остальными модулями абсолютно ничем не отличается, так что приводимую мной информацию можно (и нужно) использовать и с другими модулями. В большинстве дистрибутивов эти драйверы уже скомпилированы в ядро или собраны в виде модулей. Для того, чтобы определить, каким образом собраны эти драйверы, и присутствуют ли они вообще в системе, выполните команду dmesg. Если вам удалось найти в выводе следующие строки, то модуль visor встроен прямо в ядро:

usbcore: registered new driver visor
drivers/usb/serial/visor.c: USB HandSpring Visor / Palm OS driver v2.1
Если же таких строк вы не нашли, загляните в директорию /lib/modules/kernel/drivers/usb/serial/, возможно драйвер visor собран в виде модуля. Чтобы подключить модуль visor, введите от лица суперпользователя root команду modprobe visor. Команда modprobe довольно молчалива, и, даже если все прошло нормально, она не выводит на консоль никаких данных. Для того, чтобы убедиться в том, что загрузка модуля прошла нормально, выполните команду lsmod. Вот какой вывод дала эта команда на моем компьютере:
# lsmod
Module		Size		Used by
skystar2		23812		0 
dvb_core		76840		1 skystar2
nvidia		4816308	12
visor			897471	0
Как видите, модуль успешно загрузился и теперь почти все готово. Для того, чтобы не загружать нужные модули после каждой перезагрузки, можно добавить строку с именем модуля в файл /etc/modules.autoload. В некоторых дистрибутивах, таких как например Gentoo, файл /etc/modules.autoload отсутствует, а вместо него имеются файлы /etc/modules.autoload.d/kernel-2.4 и /etc/modules.autoload.d/kernel-2.6. То есть для каждой ветви ядра есть свой файл автоматической загрузки модулей. Версию ядра можно узнать с помощью команды uname:
$ uname -r
2.6.8.1
Если команда modprobe выводит на экран строку вида "FATAL: Module visor not found", и в выводе сообщений ядра (dmesg) вы не смогли найти нужные строки, значит разработчики используемого вами дистрибутива не скомпилировал нужный драйвер. В этом случае вам придется самостоятельно пересобрать ядро. Сборка ядра -- слишком обширная тема, и заслуживает отдельной статьи, так что здесь я ее касаться не буду. Скажу лишь, что нужные драйверы находятся в ветви Device Drivers -> USB Support -> USB Serial Converter Support. Для использования драйвера visor следует активировать опцию USB Handspring Visor / Palm m50x / Sony Clie Driver, если же нужна поддержка более старых устройств (Palm III/V), нужно отметить USB KL5KUSB105 (PalmConnect) Driver. Впрочем, отсутствие модулей для связи с КПК на сегодняшний день большая редкость. Пользователям последних версий отечественных дистрибуций ASPLinux (v10) и ALT Linux Master (2.4) ядро пересобирать не нужно, разработчики об этом позаботились.

После настройки модулей, желательно создать символьную ссылку на файл устройства КПК. Обычно программы по умолчанию используют файл /dev/pilot. Для того, чтобы определить, под каким именем наладонник существует в системе, необходимо подключить его и выполнить синхронизацию. Конечно же, никакой синхронизации не будет, потому что мы ее еще не настроили :). Однако при использовании динамической файловой системы /dev (а большинство современных дистрибутивов используют ее), в каталоге устройств (/dev/) присутствуют лишь файлы тех устройств, которые в данный момент подключены к компьютеру и от которых система получает сообщения. Palm, даже будучи подключенным к компьютеру, никак себя не проявляет. Для того, чтобы КПК посылал сигналы на компьютер, следует нажать кнопку синхронизации на самом наладоннике. Пока Palm безуспешно пытается синхронизироваться, можете выполнить команду dmesg, чтобы посмотреть последние сообщения ядра. Если в последних строках будут подобные сообщения, то драйверы работают правильно:

usb 1-2: new full speed USB device using address 9
visor 1-2:1.0: Handspring Visor / Palm OS converter detected
usb 1-2: Handspring Visor / Palm OS converter now attached to ttyUSB0
usb 1-2: Handspring Visor / Palm OS converter now attached to ttyUSB1
Можно догадаться, что наладонник теперь существует под именем ttyUSB0/1 (/dev/ttyUSB0 или /dev/ttyUSB1). Для того, чтобы убедиться в этом, загляните в каталог /dev/. Может оказаться и так, что никаких /dev/ttyUSB0 и /dev/ttyUSB1 не существует. Тогда следует посмотреть в каталог /dev/usb/tts/. Скорее всего там будут два файла со звучными именами "0" и "1". Это и есть так называемые ttyUSB0 и ttyUSB1. Имена устройств зависят от настроек ядра в дистрибутиве. Например в ASPLinux v10 я без труда нашел устройства ttyUSB0 и ttyUSB1 в каталоге /dev/, однако в Gentoo, в котором я использую самосборное ядро, таких файлов не было, хотя dmesg показал, что наладонник подключен именно к ttyUSB :). Когда палм наконец осознает тщетность своих попыток и отменит синхронизацию, снова выполните команду dmesg:
usb 1-2: USB disconnect, address 9
visor ttyUSB0: Handspring Visor / Palm OS converter now disconnected from ttyUSB0
visor ttyUSB1: Handspring Visor / Palm OS converter now disconnected from ttyUSB1
visor 1-2:1.0: device disconnected
Как видите, КПК отключился, и связанный с ним файл устройства исчез из системы. В дистрибутивах, использующих статическую файловую систему /dev/, сообщения о подключении КПК могут выдаваться сразу при загрузке ядра, а сами файлы устройств могут никуда не исчезать. Проверить это можно, выполнив команду dmesg сразу после перезагрузки. Что ж, теперь вы знаете, какое устройство использует ваш Palm, и сейчас можно создать ссылку на /dev/pilot:
# ln -sf /dev/usb/tts/0 /dev/pilot
либо
# ln -sf /dev/ttyUSB0 /dev/pilot
С низкоуровневой частью настройки покончено, теперь можно приступать к подбору и настройке программного обеспечения. Основной программой для работы с PalmOS-устройствами в Linux является набор утилит для командной строки pilot-link. Есть и альтернативное решение - пакет coldsync, однако почти все графические утилиты используют pilot-link. Из графических утилит мне больше всего понравилась программа jPilot (см. рис.1): если вам не будет хватать ее возможностей (что маловероятно), всегда можно подключить дополнительные плагины (conduits). Любителям KDE и красивых интерфейсов могу посоветовать kpilot (см. рис. 2), входящий в состав пакета kdepim. Пользователям GNOME - gnome-pilot. Кроме того, почтовые клиенты Ximian Evolution и Sylpheed (и Sylpheed-claws) обладают возможностью синхронизации с "пальмами", правда, используя при этом те же gnome-pilot (Evolution) и pilot-link (Sylpheed). Пользователям ASPLinux и ALT Linux ничего дополнительно загружать из сети не придется, т.к. рассматриваемый пакет jPilot входит в эти дистрибутивы. Если вам нужна самая новая версия или вы не обнаружили jPilot в пакетах к своему дистрибутиву, вам придется скачивать программу с сайта разработчиков (http://www.jpilot.org). Там же можно найти ссылки на дополнительные плагины, установив которые, вы будете с пренебрежением смотреть на фирменный Palm Desktop для Windows и MacOS X :). Обратите внимание, для правильной работы jPilot у вас должен быть установлен пакет pilot-link. Для настройки программы зайдите в "Файл - Настройки" (см. рис.3, рис.4). В первую очередь следует обратить внимание на настройки локализации. Следует узнать, какая кодировка используется в вашем дистрибутиве Linux и в наладоннике. Для того, чтобы узнать основную кодировку, используемую Linux, введите команду echo $LANG:
# echo $LANG
ru_RU.KOI8-R
Команда echo $LANG выводит на экран значение строковой системной переменной LANG, в которой хранится информация о локализации системы. "ru_RU.KOI8-R" говорит о том, что используется русская локализация для России (то есть без спецсимволов) и кодировка KOI8-R. Вообще, KOI8-R является стандартной кодировкой для русской локализации в Linux-системах, однако в ASPLinux и ALT Linux довольно качественно выполнена локализация в кодировке CP1251 (стандартной кодировке Windows), поэтому не станем исключать вариант с этой кодировкой. В PalmOS кодировку можно выяснить (и при необходимости поменять) при помощи программы PiLoc, которая поставляется со всеми устройствами на базе PalmOS, продающимися в России. Итак, если кодировки, используемые в Linux и PalmOS одинаковы, тогда в jPilot для опции "Кодировка" выберите "Latin1 / No Conversion". Однако чаще всего в Linux используется KOI8-R, а в PalmOS - Win (CP1251). В этом случае параметр "Кодировка" должен иметь значение "Host KOI8-R <-> Palm Windows-1251". Возможна и обратная ситуация, тогда ваш выбор - "Host Windows1251 <-> Palm KOI8-R". Если неправильно настроить этот параметр, при первой же синхронизации вы получите нечитаемые записи в контактах, списке дел и т.д. Параметры формата даты и времени особого значения не имеют, а вот "Первый день недели" желательно установить в "Понедельник". Самые главные настройки находятся на вкладке "Установки". Здесь в опции "Порт" следует указать значение /dev/pilot (ссылку, которую вы недавно создали), хотя можно прописать и /dev/ttyUSB0 (или /dev/usb/tts/0). Если у вас КПК с компьютером синхронизируется через COM-порт, то здесь нужно указать /dev/ttyS0 (или /dev/ttyS1, это зависит от номера COM-порта: COM1=/dev/ttyS0, COM2=/dev/ttyS1 и т.д.). Скорость порта желательно установить на 115200, если у вас COM-устройство. Для КПК, синхронизирующихся по USB, эта настройка никакого влияния не оказывает, можете выставить самое высокое значение (H460800). На последней вкладке, "Кондуиты", задаются параметры выборочной синхронизации. Здесь же можно деактивировать дополнительные плагины. Допустим, вы не используете на КПК приложение "Список задач" (Tasks), то зачем напрасно синхронизировать задачи? Для отключения снимите галочки с неиспользуемых приложений. Я оставил включенными "Календарь", "Список задач", "Адресную книгу", "Заметки" и "SyncTime". Модуль "SyncTime" используется для синхронизации часов на вашем наладоннике и настольном компьютере. Если вы читаете новости на наладоннике с помощью новостного граббера AvantGo, нужно включить модуль "SyncMal". Настройка окончена, теперь можете попробовать синхронизировать КПК и jPilot. Так как устройство, на котором зарегистрирован палм, доступно только во время синхронизации, то сначала следует нажать кнопку синхронизации на наладоннике, а уж затем в jPilot. Если все прошло удачно, советую сохранить резервную копию оперативной памяти КПК на случай экстренной аппаратной перезагрузки (Hard reset). Чтобы сделать это, запустите синхронизацию на КПК, а затем нажмите кнопку "Архив" (Backup) в jPilot. Для восстановления из архива выберите пункт "Восстановить палм" (Restore Backup) из меню "Файл" (см. рис.5). Обратите внимание, что восстановить можно как весь архив, так и отдельные приложения. Для установки программ воспользуйтесь инструментом "Установка" ("Файл" - "Установка").

Изготовление огнеупорных рукописей

Немало владельцев КПК предпочитают читать книги только на нем. Казалось бы, разве можно на таком небольшом экранчике комфортно читать? Оказалось, что во многих случаях это даже приятнее, чем чтение бумажной книги. Почему приятнее? Тут сказывается и небольшой размер наладоннике (представьте, сколько фолиантов можно вместить на карточку размером 256 Мб), и автоскроллинг с плавной прокруткой текста в современных "читалках", и мягкая настраиваемая подсветка, позволяющая комфортно читать даже при полном отсутствии освещения. Наверняка таким "пальмовым библиофилам" известны ресурсы http://www.fictionlib.ru и http://www.aldebaran.lib.ru, на которых можно переписать книги в форматах PalmDOC, iSilo или fb. Однако не все книги в этих библиотеках доступны в форматах для КПК, некоторые из них можно получить только в виде стандартных текстовых документов (txt). Да и как быть с теми книгами, которых в этих библиотеках нет? Для конвертирования текстовых документов в формат Palm DataBase (pdb) я раньше использовал бесплатную утилиту TiBR Converter, которая, кстати, прекрасно работает под эмулятором wine в ОС Linux (см. рис.6). Можно, конечно, остановиться и на таком варианте. Правда, больно уж он неизящен: устанавливать громоздкий wine из-за одной маленькой утилиты -- это, конечно, очень смешно, но непрактично. Случайно обнаружив, что текстовой процессор AbiWord способен сохранять документы в формате pdb, я прекратил поиски. Как оказалось, зря. Все будет хорошо до тех пор, пока не потребуется сконвертировать в pdb документы, использующие кириллицу. Как оказалось, AbiWord сохранил русскоязычный документ в кодировке Unicode, которую на данный момент не поддерживает даже PiLoc (3.5). На наладоннике сохраненный AbiWord документ представлял собой кучу вопросительных знаков. Вскоре мне попалась программа kpalmdoc, входящая в комплект пакета kdepim вместе с kpilot. Однако и она не смогла сконвертировать русский текст, не превратив его во все ту же гору вопросительных знаков. Зато очень обрадовала крохотная (всего 70 Кбайт) консольная утилита txt2pdbdoc, которая смогла сконвертировать текст как в кодировке KOI8-R, так и в CP1251. Скачать исходные коды можно с http://homepage.mac.com/pauljlucas/software.html. Синтаксис утилиты очень прост:
# txt2pdbdoc Заглавие_документа Текстовый_документ Документ.pdb
Кодировка при этом не имеет значения. Если текстовый документ был в кодировке KOI8-R, то и его pdb-версия будет сохранена в той же кодировке. Единственное ограничение -- в заглавии документа нельзя использовать пробелы, и если у вас системная кодировка KOI8-R, то от использования кириллицы в заглавии тоже придется отказаться (в том случае, если ваш палм использует CP1251). Если требуется перекодировка текстового файла из KOI8-R в CP1251, можно воспользоваться утилитой iconv:
# iconv --from-code=koi8-r --to-code=cp1251 textfile.koi > textfile.cp1251
Textfile.koi -- исходный текстовый файл в кодировке KOI8-R. После завершения операции должен появиться файл textfile.cp1251, содержащий тот же текст в кодировке Windows (CP1251). Вместе с утилитой txt2pdbdoc устанавливается еще одна интересная программа, позволяющая "выжать" весь текст из HTML-документа и сохранить его в обычный текстовый файл. Причем кодировка при этом тоже не меняется:
# html2pdbtxt file.html file.txt

Дегустация кокосов

Наверняка после скачивания какой-нибудь программы для PalmOS, вам хочется поскорее протестировать ее, узнать все ее достоинства и недостатки и наконец решить, нужна она вам или нет. Если вам не хочется лишний раз выполнять синхронизацию и забивать память своего наладонника, то можно установить программу в виртуальный Palm. Под Linux портирован популярный PalmOS Emulator, который в этой ОС носит скромное название-акроним pose (http://www.palmos.com/dev/tools/emulator/). Единственный недостаток - эмулятор пока не поддерживает PalmOS 5, что несколько ограничивает список поддерживаемого ПО, но ничуть не умаляет его достоинств (ведь большинство современных приложений для Palm способно работать и на PalmOS 4). То же самое касается и разнообразных системных патчей и "хаков". Для работы с эмулятором вам потребуется образ ПЗУ какого-нибудь поддерживаемого КПК. Для примера я взял образ Palm m515. Теперь необходимо создать новую сессию (меню появляется по щелчку правой кнопки мыши в главном окне), "New". В диалоге "New Session" укажите файл образа ПЗУ, тип эмулируемого устройства, количество памяти. Установить файл prc или pdb в виртуальную систему можно с помощью пункта меню "Install Application/Database". Такой "песочницы" вполне хватит для нетребовательного пользователя.

Надеюсь, описанные здесь приемы и утилиты помогут вам без проблем работать с вашим наладонником в Linux. Если у вас что-то не получается, пишите на random_code@list.ru.

Читать дальше.

[ опубликовано 31/08/2005 ]

Александр Кузьменков (random_code AT list DOT ru) - Часть 1: Пингвин + Пальма = ?   Версия для печати