Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: pppd в uClinux
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Carolinus
Здравствуйте. Пытаюсь запустить gprs-модем под uClinux. Использовал http://docs.blackfin.uclinux.org/doku.php?...clinux-dist:ppp для компиляции ядра с поддержкой ppp. Работаем с модемом с помощью chat.
Скрипты для ppp:
Цитата
lcp-echo-failure 0
lcp-echo-interval 0
nodetach
debug
connect /etc/ppp/peers/mgcc
/dev/ttyS1
19200
xonxoff
local
:10.0.0.1
noipdefault
ipcp-accept-local
defaultroute
usepeerdns
novj
novjccomp
nopcomp
noaccomp
noccp
noauth
user megafon

для chat:
Цитата
#!/bin/sh
/bin/chat -v \
TIMEOUT 5 \
ECHO ON \
ABORT '\nBUSY\r' \
ABORT '\nERROR\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nNO CARRIER\r' \
ABORT '\nNO DIALTONE\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
TIMEOUT 12 \
SAY "Press CTRL-C to close the connection at any stage!" \
SAY "\ndefining PDP context...\n" \
OK ATZ \
OK AT+CGDCONT=1,"IP","internet" \
OK ATD*99***1# \
TIMEOUT 22 \
SAY "\nwaiting for connect...\n" \
CONNECT "" \
SAY "\nConnected." \
SAY "\nIf the following ppp negotiations fail,\n" \
SAY "try restarting the phone.\n"


Написаны после курения мануалки http://www.vpx.nu/dokuwiki/doku.php?id=gprs_ppp#chat_scripts
На большом компе c помощью этих скриптов соединение поднимается на ура. На uClinux пытаемся работать с модемом через tip - опрашивается, отвечает. все нормально. Пытаюсь просто запустить второй скрипт - тоже все работает, естественно, команды выводятся в консоль. Я руками эмулирую модем. Но если пытаюсь дать команду pppd call megafon - просто без всяких диагностических сообщений вываливаемся в консоль. ifconfig не показывает поднятый интерфейс ppp0. Модем лампочкой тоже не моргает. Пробовал подключать к ком-порту второй компьютер с терминалом - в ком-порт вообще ничего не пишется. Эта ветка http://electronix.ru/forum/index.php?showtopic=10552 тоже ничем не помогла. Подскажите плз где я ошибся.
Harbour
если chat'у дать -V (большое) то можно увидеть в syslog/stdout где вываливается скрипт
Carolinus
чат отрабатывает нормально. Но до него тут даже дело не доходит. pppd вываливается, не успевая вызвать chat
Harbour
1. у pppd есть опция debug
2. ман читали ? раздел EXIT STATUS

Чтение документации есть первое и необходимое действие, берем жбанчик чаю/пива/портвейна с абсентом - и от корки до корки, желательно с исходниками - вопросы отпадают сами собой, да и проф-уровень незаметно повышается wink.gif
Carolinus
Спасибо, про функцию debug я знаю. а также про logfile и прочие отладочные опции. И мануалок скурил предостаточно. В той сборке uClinux, что у меня есть, не запущен syslogd и нахаляву его запустить не получилось. Так что все дебажные сообщения идут в /dev/null (( Ковыряние в исходниках показало, что затык происходит при попытке открыть устройство /dev/ppp.
if (new_style_driver) {
ppp_dev_fd = open("/dev/ppp", O_RDWR);
...
}
При конфигурировании ядра я включил:
[*] Networking support
<*> PPP (point-to-point protocol) support
[*] PPP filtering
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
и добавил в romfs/dev/ пустой файл @ppp,c,180,0
при загрузке появляется строчка PPP generic driver version 2.4.2
Устройство /dev/ppp имеет место быть, но открыть его все равно не получается. Где я что забыл-сделал не так?
Carolinus
короче всем спасибо за участие ))
проблема решилась.
файл должен называться @ppp,c,108,0
cpl
Цитата(Carolinus @ Jun 11 2008, 16:14) *
короче всем спасибо за участие ))
проблема решилась.
файл должен называться @ppp,c,108,0


вопрос, во время сборки(компиляции) этот файл не создется ?
Dr.Alexey
Доброго времени суток!
Пытаюсь запустить pppd в ucLinux (ядро 2.6.21, патч от EmbeddedArtists для проца LPC2468). В ядре включена поддержка ppp и chat, в /dev создаю устройтство ppp,c,108,0. При запуске pppd выдается сообщение: munmap of non-mmaped memory by process 138 (pppd): a0ba8600 и возвращаемся в командную строку. Скрипты для подключения и вывод терминала привожу ниже.

скрипт gprs:
lcp-echo-failure 0
lcp-echo-interval 0
тodetach
debug
connect /etc/ppp/peers/chat_connect
/dev/ttyS1
19200
crtscts
local
:10.0.0.1
noipdefault
ipcp-accept-local
ipcp-accept-remote
defaultroute
usepeerdns
nopcomp
noaccomp
novj
novjccomp
nopcomp
noaccomp
noauth
user mts
mtu 576

скрипт chat_connect:
#!/bin/sh
/bin/chat -v \
TIMEOUT 5 \
ECHO ON \
ABORT '\nBUSY\r' \
ABORT '\nERROR\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nNO CARRIER\r' \
ABORT '\nNO DIALTONE\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
TIMEOUT 12 \
SAY "Press CTRL-C to close the connection at any stage!" \
SAY "\ndefining PDP context...\n" \
OK ATZ \
OK AT+CGDCONT=1,"IP","internet.mts.ru" \
OK ATD*99***1# \
TIMEOUT 22 \
SAY "\nwaiting for connect...\n" \
CONNECT "" \
SAY "\nConnected." \
SAY "\nIf the following ppp negotiations fail,\n" \
SAY "try restarting the phone.\n"

вывод терминала:
# pppd call gprs
munmap of non-mmaped memory by process 138 (pppd): a0ba8600
#

Есть идеи, в чем проблема? help.gif
Dr.Alexey
Спасибо Carolinus, проблема решилась. Привожу порядок действий, может кому пригодится.

1. Включаем поддержку ppp в ядре:
Networking support
Networking options->TCP/IP Networking, IP Tunneling
Network Device support
PPP
PPP filtering
PPP support for async serial ports
Устанавливаем приложения pppd (MPPE enabled) и chat

2. Должно присутствовать устройство /dev/ppp. У меня например это делается добавлением строки ppp,c,108,0 в секцию DEVICES по адресу <путь к ядру>/vendors/EmbeddedArtists/LPC2468OEM_Board/Makefile

3. В /etc/ppp/peers создаем файлы gprs и chat_connect, в /etc/ppp файлы pap-secrets и chap-secrets:
файл gprs содержимое (для модема на ttyS1 и скорости 19200, опсос mts):

# Most GPRS phones don't reply LCP echo's
lcp-echo-failure 0
lcp-echo-interval 0
# Debug info from pppd:
debug
# Serial device to which the GPRS modem is connected:
/dev/ttyS1
# Serial port line speed
19200
# Hardware flow control
crtscts
# Use modem signal lines
modem
# Connect script to initialize the GPRS modem and start the connection
connect '/bin/chat -v -e -V -f /etc/ppp/peers/chat_connect'
# pppd must not propose any IP address to the peer!
noipdefault
# Accept peers idea of our local address
ipcp-accept-local
# Accept peers idea of its (remote) address
ipcp-accept-remote
# Add the ppp interface as default route to the IP routing table
defaultroute
# DNS servers from the modem
usepeerdns
# The phone is not required to authenticate
noauth
# Username
user "mts"

файл chat_connect содержимое (одной строкой!!!):
SAY "\nstaring chat... \n" '' AT TIMEOUT 12 ABORT 'BUSY' ABORT 'NO CARRIER' ABORT 'VOICE' ABORT 'NO DIALTONE' ABORT 'NO ANSWER' OK ATH OK ATE1 OK 'AT+CGDCONT=1,"IP" ,"internet.mts.ru"' OK ATD*99***1# TIMEOUT 22 SAY "\nwaiting for connect... \n"
CONNECT "" SAY "\nConnected."

файл pap-secrets (идентичен chap-secrets)
tele2 * tele2 *
megafon * megafon *
mts * mts *
beeline * beeline *

4. Запуск соединения: pppd call gprs. Просмотр состояния соединения - ifconfig (должен появится интерфейс ppp0).

P.S. На моей плате установлен проц LPC2468 без MMU-модуля и в используемом uClinux не поддерживается fork, как следствие pppd при запуске остается подцепленным к консоли, несмотря на параметр updetach. Лечится запуском pppd в фоновом режиме: pppd call gprs&

P.P.S. Еще раз спасибо за помощь Carolinus
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.