Использование Visor с USB-интерфейсом под Linux.

Я сегодня получил свой Handvisor, и пытался заставить его работать. Мне не удалось найти хороший документ HOWTO, поэтому я решил написать свой.

[Алексей Выскубов]

Введение
Об этом документе

Первая версия этого документа была написана Ryan VanderBijl 6 апреля, в 2 часа ночи. Она была отредактирована Miles Lott, и я также получал советы от многих других людей.

Я сегодня получил свой Handvisor, и пытался заставить его работать. Мне не удалось найти хороший документ HOWTO, поэтому я решил написать свой. Некоторые случайные мутации могут привести к тому, что вы сможете найти новую версию на моей Web-странице, но это как повезет. Проверьте свою удачу:

http://www.calvin.edu/~rvbijl39/

или

http://usbvisor.sourceforge.net

Я использовал редактор vi. (А я vim. -- Прим. переводчика) Все остальное -- зло. Я не проверял орфографию этого документа (я тоже -- прим. переводчика). Так что если у вас возникнут проблемы с моим правописанием, вам не повезло.

Disclaimer

Хмм... что я должен утверждать? Ах да. Я действительно новичок в этих usb/visor-штучках, так что я точно не смогу ответить на многие из ваших вопросов. Где-то есть люди, которые могут помочь вам лучше, нежели я -- те, кто поддерживает Web-сайты, на которые я ссылаюсь в конце этого документа. Однако не стесняйтесь задавать мне вопросы или присылать обновления этого документа. Мой email-адрес: rvbijl39@calvin.edu
(Мой: alexey@pepper.spb.ru -- Прим. переводчика)

История документа

  • v0.1 - Исходная версия
  • v0.2 - HTML-версия
  • v0.3 - SGML-версия, внесены исправления, сделанные Miles Lott
  • v0.4 - уточнения и обновления, предложенные Matt Shook,
  • Steven Coffman, Miles Lott, а также информация от Greg KH.

Что вы не найдете в этом документе?

Я "потерял" мой компьютер с USB, так что я больше не могу тестировать что-либо, связанное с USB. Будет просто замечательно, если кто-нибудь пришлет документацию, описывающую, как настроить PPP (ну или другие прикольные штучки).

Copyright

Права на этот документ принадлежат Ryann VanderBijl. (c) 2000, Ryan VanderBijl. Вы можете свободно распространять этот документ на условиях GPL (http://www.gnu.org/copyleft/gpl.html).

Установка программного обеспечения
Что вам потребуется

Вам, само собой, потребуются такие вещи, как компьютер, USB-порты, Handspring Visor (с USB-кроваткой), Linux и прочее. Вам также нужно знать, как компилировать и устанавливать разное ПО, например, ядро. Если у вас отсутствуют эти знания и умения, то вам, скорее всего, поможет документ kernel-HOWTO: http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html.

Ядро

Сначала вам потребуется ядро, которое поддерживает USB. Вы можете взять "последнее" разрабатываемое ядро, которое на момент написания этого документа имело версию 2.4.0-test5 (на момент перевода версия была уже не такой, но я не вижу большого смысла указывать ее -- Прим. переводчика).
Его можно найти по адресу ftp://ftp.kernel.org/pub/linux/kernel/v2.4/.

Второй вариант -- взять последнее стабильное ядро, и последний бэк-порт USB-кода. На момент написания этого документа (7 августа, 2000) стабильным ядром было 2.2.16 и его можно было найти здесь: ftp://ftp.kernel.org/pub/linux/kernel/v2.2/.

Последний бэк-порт USB-кода распространяется проектом linux-usb project и находится тут: http://www.suse.cz/development/usb-backport/

Текущая версия (7 августа, 2000) -- usb-2.4.0-test2-pre2-for-2.2.16-v3.
Возможно, как бэк-порту есть патчи. Вы сможете найти их по адресу http://sourceforge.net/patch/?group_id=1404.

Выкачайте и установите исходный код ядра, включив в него USB-код, если вы используете версию 2.2. Ниже приведен пример установки исходного кода 2.2 и бэк-порта.

cd /usr/src
tar xzvf linux-2.2.14.tar.gz
cd linux
gzip -dc ../usb-2.3.50-1-for-2.2.14.diff.gz | \
patch -p1

make distclean

Следующий шаг, чрезвычайно важный, заключается в том, что вы должны определить, какой тип USB-контроллера используется в вашем компьютере.
USB-контроллер -- это аппаратное устройство, обрабатывающее USB-ввод/вывод.
Материнские платы на чипсете Intel, то есть на чипсете BX, обычно содержат UHCI-контроллеры. Большинство карт расширения являются OHCI-контроллерами. Вы можете определить тип вашего контроллера при помощи команды 'lspci -v'.
(Если у вас нет lspci, обратитесь к разделу "Ссылки").

Если вы увидите что-нибудь такого типа:

USB Controller: ......
Flags: .....
I/O ports at ....

то у вас UHCI-контроллер. Если же вывод выглядит следующим образом:

USB Controller: .....
Flags: ....
Memory at .....

то ваш контроллер -- OHCI.

(Описание процесса определения типа контроллера было украдена из документации к ядру, Documentation/usb/scanner.txt).
Дополнительную информацию вы можете найти на сайте http://www.linux-usb.org.
Вам также может помочь документация на ядро в каталоге Documentation/usb/usb.txt.

Если у вам нет USB-контроллера, то вам нужно либо купить "кроватку" для Visor, подключающуюся к последовательному порту (кстати, зачем вы это читаете?), либо устройство, имеющее USB-контроллер (то есть карту расширения или материнскую плату).

Теперь нам предстоит настроить и собрать ядро. При настройке не забудьте включить

USB support (CONFIG_USB),
соответствующий тип контроллера -- UHCI, alternate UHCI, или OHCI (CONFIG_USB_UHCI, CONFIG_USB_UHCI_ALT, или CONFIG_USB_OHCI)
USB Serial Converter support (CONFIG_USB_SERIAL)
USB Handspring Visor Driver (CONFIG_USB_SERIAL_VISOR) (подпункт пункта USB Serial Converter support)

(Я не знаю, в чем разница между двумя UHCI-драйверами, и не знаю, какой порекомендовать. Кто-нибудь может объяснить?) Я компилировал драйвера как отдельными модулями, так и включая их в ядро. Работает и так, и так. Разработчики предпочитают модули, но решайте сами.

После этого заканчивайте сборку и установку ядра, а затем перезагружайтесь.

Еще не все! Чтобы драйвер Visor заработал, нам потребуется выполнить дополнительные процедуры по обеспечению работоспособности USB Serial driver.

Вы можете найти их описание в документации по ядру: Documentation/usb/usb-serial.txt.

Вкратце, вам потребуется создать необходимые устройства.
Для этого достаточно с полномочиями пользователя root выполнить следующие команды:

mknod /dev/ttyUSB0 c 188 0
mknod /dev/ttyUSB1 c 188 1
etc...
chmod 666 /dev/ttyUSB*

В настоящий момент ограничения в коде позволяют использовать до 16 подключений/портов/устройств, так что вам потребуются только устройства с номерами от 0 до 15.
Команда chmod позволит всем пользователям получить доступ к Visor. По мнению автора этого документа, такая настройка хороша лишь для персонального компьютера.
Для многопользовательских машин этот вопрос следует рассмотреть дополнительно.

При подключении Visor образуются два открытых "порта".
(В большинстве случаев это будут /dev/ttyUSB0 и /dev/ttyUSB1, или что-нибудь подобное).
Первый порт (номер ноль) -- общее соединение.
Второй порт -- hotsync-порт.
Это позволит в будущих разработках устроить что-нибудь типа, например, экспорта файловой системы с Visor.
Полезно будет создать ссылку с hotsync-порта, чтобы синхронизирующее программное обеспечение по умолчанию использовало нужное устройство.
Это можно сделать так:

cd /dev
ln -s /dev/ttyUSB1 pilot

Просто для развлечения вы также можете создать ссылку с /dev/visor на /dev/ttyUSB1, ну, просто потому, что у нас visor, а не pilot (или Palm(tm)).
Реальный номер устройства может изменяться, в зависимости от того, сколько (активных?) USB-последовательных устройств подключено к вашей системе.
При нажатии на "кроватке" кнопки синхронизации будет выведено сообщение, указывающее, какое устройство используется.

Если вы скомпилировали USB-код как модули, вам также потребуется включить эти модули в работающее ядро.
Как пользователь root введите следующие команды:

/sbin/modprobe usb-uhci
/sbin/modprobe usb-ohci
/sbin/modprobe usb-serial

Установка ColdSync

ColdSync представляет собой пакет, который содержит программы, предназначенные для коммуникации с Visor (или Palm(tm), если у вас один из них).
Другим популярным пакетом для решения тех же задач является pilot-link.
Однако, как кажется, в работе pilot-link есть ошибки, особенно при работе с USB-драйверами.
Поэтому я рекомендую ColdSync. Системы с UHCI-контроллерами работают с coldsync прекрасно, хотя у OHCI-контроллеров есть некоторые проблемы.
(При использовании pilot-link все хуже и в том, и в другом случае.)

Дополнительную информацию вы можете найти в списке рассылки разработчиков visorusb: http://www.geocrawler.com/lists/3/SourceForge/1169/.

На момент написания этого документа (7 августа, 2000) последней стабильной версий ColdSync была 1.2.5.
Последняя версия pilot-link, насколько я знаю, -- 0.9.3. Одним из преимуществ pilot-link является то, что существует больше графических интерфейсов, использующих библиотеки pilot-link, нежели использующих coldsync.

Обсуждавшиеся программы могут быть найдены по следующим адресам:
http://www.ooblick.com/software/coldsync/
ftp://ryeham.ee.ryerson.ca/pub/PalmOS/pilot-link.0.9.3.tar.gz

или, конечно: http://pilot-link.sourceforge.net/

Выкачайте и установите программу, которую вы хотите использовать.
(Если вы устанавливаете coldsync, вам следует прочитать файл INSTALL.)

cd /usr/src
gzip -dc coldsync-1.2.5.tar.gz | tar xvf -
cd coldsync-1.2.5
./configure
make
make install

Если вы предпочитаете лениться, то, вероятно, существуют пакеты для redhat и debian, которые вы можете выкачать и установить. Я их не поддерживаю.

Почти готово! (aka тестирование)

Мы уже почти закончили. Теперь нужно протестировать, как все работает.
Конечно, Visor должен быть в "кроватке", а она должна быть подключена к USB-порту.

Для тестирования мы можем использовать coldsync.
Для того, чтобы компьютер осознал, что Visor действительно здесь, вам потребуется нажать кнопку синхронизации на "кроватке".
(Я заметил, что при подключении USB-устройства на экране появляется куча информации. Обновление: это происходит при включенной отладке.)
После этого драйвер для Visor создаст запись в /proc/drivers/visor, которая будет содержать дополнительный (minor) номер и назначение. Подробнее об этом -- потом.
А сейчас давайте запустим coldsync.

coldsync -p /dev/visor

(Помните, /dev/visor -- символическая ссылка на /dev/ttyUSB1). Начиная с этого момента используйте другую документацию. Полезен man.

Ссылки

При написании этого документа я пользовался следующей информацией:

ColdSync: http://www.ooblick.com/software/coldsync/
PalmOS HOWTO: http://www.orbits.com/Palm/
Pilot-link: ftp://ryeham.ee.ryerson.ca/pub/PalmOS
Pilot-link: http://pilot-link.sourceforget.net
Linux Kernel: ftp.kernel.org/pub/linux/kernel/
Kernel USB backport: http://www.linux-usb.org
USB Visor page: http://usbvisor.sourceforge.net
lspci tool: http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html



Перевод Алексея Выскубова, alexey@pepper.spb.ru

[ опубликовано 20/03/2001 ]

Алексей Выскубов - Использование Visor с USB-интерфейсом под Linux.   Версия для печати