пишите нам 
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки к Солнцу! Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
 

Приветствуем на Ладошках!

Ладошки, у меня РАНЧИК РОДИЛСЯ! :-) ... Уважаемые давние поклонники и посетители Ладошек! Я запускаю коммьюнити-сайт, новый проект, а вы все, будучи https://www.facebook.com/run4iq Бег для интеллектуалов. Бег для интеллекта. Бег "за" интеллектом. Он сам не придёт ;-) Ранчик родился! Андрей AKA Andrew Nugged Ладошки служат как архив программ для Palm OS и Poclet PC / Windows Mobile и разрешённых книг с 15 окрября 2000 года.
 
Статьи на Ладошках: о КПК и гаджетах
список групп статейВы пишете статьи? Контактируйте с нами!

 
Настройка сетевого доступа для PalmOS эмулятора на операционной системе Linux


Автор/Источник: Дарья Полякова
» 03.04.2005 03:15,
просмотров сегодня: 1, всего: 5616
статья размещена в группе: КПК в работе (для профессионалов)
оценка: 2.177, 17 голосов


Авторы: Kors, daryna
 

Краткое предисловие

Это руководство возникло после тщетных поисков в Интернете решений подобной проблемы.

Не секрет, что для целей тестирования софта для Palm наиболее удобен PalmOS эмулятор. Но, к сожалению, такой класс ПО, как приложения использующие сеть, на эмуляторе в большинстве своем неработоспособны. А те, которые все же работают (Eudora), используют не библиотеку NetLib от PalmOS, а транслирование ее вызовов в вызовы сетевой библиотеки desktop операционной системы, т.е. ОС, на которой был эмулятор запущен. Многие программы просто не предусматривают работу в таком режиме, например, используют network api-функции, которые не могут транслироваться в вызовы desktop библиотеки и возвращают результаты об ошибках (Palm ICQ), либо используют класс сокетов RAW_SOCKET, на которые в Линуксе нужны привилегии root (Ping).

Вариант с трансляцией вызовов не устраивает также и программистов, которые занимаются разработкой сетевого ПО для Palm, т.к. его нельзя полноценно тестировать на эмуляторе. Подобные проблемы поднимались на форуме разработчиков PalmSource, но решение, предложенное там, а именно: соединение эмулятора с desktop'ом через COM-порт, требовало наличия null-модемного кабеля и 2х незадействованных COM-портов на компьютере, что нельзя назвать доступным.

Итак, чтобы оценить преимущества запуска и тестирования сетевых программ на эмуляторе, не остается ничего иного, кроме как заняться изготовлением null-модемного кабеля или поиском уже имеющегося. Но пользователям Линукса доступна программная альтернатива null-модемному подключению эмулятора. Рассмотрим ее подробнее.

Подготовка

Понадобятся:

  1. сам POSE или PalmOS эмулятор; ищется: сайт PalmOne или Ладошки.
  2. файл ROM с PalmOS не ниже 3.5 для эмулятора; ищется также на сайте PalmOne или Ладошках.
  3. сервис pppd; обычно установлен в Linux по умолчанию, если же нет, можно поискать на диске с дистрибутивом либо посмотреть на официальном сайте.
  4. утилита netcat (nc); ищется аналогично: на установочном диске либо на официальном сайте.

Настройка Linux'a

Сервис pppd должен быть настроен на ожидание входящего подключения на каком-либо из сокетов. В данном случае это будет сокет 9999. Так как практика показала, что просто с помощью сервиса inetd pppd к сокету прикреплен быть не может, использовался вариант с утилитой netcat, что повлекло необходимость написания дополнительных скриптов. Все последующие команды в этом разделе выполняются от пользователя root в консольном режиме.

  1. Создается скрипт, который запускает pppd при клиентском подключении на сокет 9999:
     $echo '#!/bin/sh' > ppp1.sh
     $echo '/usr/sbin/pppd local notty passive 10.0.0.1:10.0.0.2' >>  ppp1.sh
     $chmod ug+x ppp1.sh
             
    Параметры pppd означают следующее:
    local — директива ppd не использовать аппаратный контроль передачи, а именно DTR/CD
    notty — разрешает pppd быть запущенным для не tty устройства, как то сокет
    passive — директива использовать настройки переданные клиентом.
    10.0.0.1:10.0.0.2 — адреса в подсети desktop-host'а и POSE соответственно.
  2. Создается скрипт для запуска netcat:
    $cat > ncstart.sh <<END
    >#!/bin/bash
    >while :
    >do
    >nc -vvlp 9999 -s 127.0.0.1 -e ppp1.sh
    >done
    >END
             
    Здесь параметры nc означают следующее:
    -vv — подробный вывод логов;
    -l — listen mode, режим ожидания подключения;
    -p — номер сокета;
    -s — адрес хоста;
    Бесконечный цикл нужен, чтобы не перезапускать netcat всякий раз после Disconnect'а сетевого интерфейса PalmOS в POSE. (Решение с циклом не блестящее, конечно, и убивается только через kill PID)
  3. Для проверки работоспособности скриптов, запускается ncstart и подключается telnet к 9999 сокету:
    $./ncstart.sh
    $telnet localhost 9999
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    ~#ю!}!}!} }4}"e;}&} } } } }%}&y
    telnet > q
    Connection closed.
            
    Если все правильно, telnet показывает отклик pppd на сокете 9999. Чтобы завершить телнет-сессию не закрывая при этом всю консоль, можно перевести telnet в режим команд нажав Ctrl+], затем дать команду q.

Настройка POSE

Все настройки POSE, те что доступны в меню эмулятора Settings->..., а также расширенные, которые в меню найти нельзя, хранятся в текстовом файле ~/.poserrc. Здесь ~ — домашний каталог пользователя, от которого запускается pose. В файле нужно найти фрагмент, представленный ниже, и отредактировать параметр PortSerial, отвечающий за последовательный порт эмулятора. Перенаправляем его на серверный сокет 9999, созданный с помощью netcat:

PortIR=null:
PortIRSocket=
PortMystery=null:
PortSerial=socket:localhost:9999
PortSerialSocket=
        

Настройка PalmOS на эмуляторе

Чтобы подключение POSE к сети произошло, нужно настроить сетевые свойства PalmOS на эмуляторе. Для этого нужно зайти в Prefs->Network и проделать следующее:

  1. Выбрать Service->Unix
  2. Выбрать Connection->Cradle/Cable
  3. UserName/Password оставить пустыми
  4. Зайти в Details:
    1. Выбрать Connection type->PPP
    2. Указать Primary DNS такой же как и в сетевых свойствах desktop-хоста.
    3. Выбрать IP Address->Automatic
    4. Зайти в Script, выбрать в первой строке End из списка.
  5. Убедиться что все изменения сохранены, вернуться в Network Preferences и нажать Connect.

Если настройки были сделаны правильно и на сокете 9999 «слушает» netcat, подключение пройдет успешно и в netcat output добавится строка:

$listening on [127.0.0.1] 9999 ...
connect to [127.0.0.1] from localhost.localdomain [127.0.0.1] 34948
     
A запуск ifconfig от пользователя root покажет, что добавился новый интерфейс, в данном случае ppp0:
ppp0   Link encap:Point-to-Point Protocol
       inet addr:10.10.0.1  P-t-P:10.10.0.2  Mask:255.255.255.255
       UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
       RX packets:4 errors:0 dropped:0 overruns:0 frame:0
       TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:3
       RX bytes:58 (58.0 b)  TX bytes:73 (73.0 b)
     
Наиболее часто встречающимися ошибками на этом этапе были следующие:
  1. Сообщение:«Error: PPP timeout»
    Причина: отсутсвует серверный сокет 9999 -- не запущен netcat
  2. POSE прекращает работу, система выдает собщение: «broken pipe».
    Причина: серверный сокет 9999 присутствует, но отвергает подключение POSE. (такое происходило, когда pppd был прикреплен к 9999 порту через inetd сервис, а не через netcat)
Если соединение прошло успешно POSE с адресом 10.10.0.2 должен был доступен для пинга из Linux:
$ping 10.0.0.2
PING 10.10.0.2 (10.10.0.2) 56(84) bytes of data.
64 bytes from 10.10.0.2: icmp_seq=1 ttl=255 time=37.9 ms
64 bytes from 10.10.0.2: icmp_seq=2 ttl=255 time=32.1 ms
64 bytes from 10.10.0.2: icmp_seq=3 ttl=255 time=32.7 ms
     
Также можно запустить программу ping для адреса desktop-host'а 10.10.0.1 и на самом эмуляторе.
Palm Ping

Настройка форвардинга

Непосредственно для доступа в Интернет с POSE как и с любого Palm, подключенного через ppp, необходимо настроить IP-форвадинг. (Настройки, установленные приведенным способом, действительны только до перезагрузки ОС). Проделываются все команды в консоли от пользователя root.

  1. Разрешить форвардинг в системе:
    $echo 1 > /proc/sys/net/ipv4/ip_forward
             
  2. Сконфигурировать форвардинг:
    $iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
    $iptables -A FORWARD -i ppp0 -j ACCEPT
    $iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
              
Palm ICQ

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

1   2   3   4   5
«хуже     ваша оценка     лучше»


Обсуждение
22.04.2005 18:44 - Akimov Uriy

Да беспорно этот опыт чего то значит, я шел по альтернативному пути но увы застрял, :( повторил шаги автора, и все :) ОК



Чтобы писать комментарии вам нужно
авторизоваться (войти) или зарегистрироваться


 
Регистрация товарного знака в Украине patent.km.ua.
Telephones, address and opening times for shops, post and banks in the UK
 
 

 

статьи
по этой теме
 
Palm под FreeBSD — драйверы и TCP/IP
14-04-2005, рейтинг(общ.): 3.15, просм.: 0/8339

Подключение USB CardReader в Linux
01-04-2005, рейтинг(общ.): 2.889, просм.: 0/9930

а вы знаете, что есть:
- рейтинг-каталог сайтов Ладошек?

поддержите
Ладошки
 
Рейтинг Ладошек: КПК, мобильность, коммуникаторы, смартфоны, гаджеты, высокие технологии Рейтинг каталога сайтов Хмельницкого региона Поддержите Ладошки: Как поддержать сайт?
Использование материалов сайта разрешено только при наличии
гиперссылки на страницу Ладошек без блокировки индексации
реклама на сайте    Andrew Nugged © 2000-2015