3G and GPRS modems with pppd (Русский)

From ArchWiki
Jump to: navigation, search

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:3G and GPRS modems with pppd (Русский)#)

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: rc.d references. Needs update, see Systemd (Русский). (Обсудить)

Для подключения к Интернету с помощью 3G или GPRS модема не обязательно использовать Wvdial или подобные программы. Использовать их удобно, но они создают лишний "слой". Более простое, очевидно, является более надёжным, не так ли?

Требования

Единственное требование к программной части - установленный ppp.

Способ настройки и подключения, изложенный ниже, был проверен на нескольких модемах:

  • Huawey EM770 MiniPCIe (внутренний модем Asus Eee PC 1000H Go);
  • внешний модем Huawey E220;
  • Nokia N73 (подключение по USB; в телефоне выбрано "PC Suite").

Настройка

Примечание: Описание настройки pppd в оригинальной статье содержит подробные листинги конфигурационных файлов. Здесь же описывается краткий вариант для настройки на единственного оператора.
Важно: Дальнейшие действия предполагают, что ваш модем установлен и успешно опознан. Более подробную информацию по установке и настройке 3G/GPRS модема вы можете получить в статье USB 3G Модем.
Tip: Вам нужно будет создать несоклько файлов в /etc/ppp, и для этого понадобятся права root.

Настройки модема

Первым делом, создайте файл /etc/ppp/options-mobile. Pppd, следуя указанным настройкам, постарается удержать соединение активным, а в случае обрыва попытается восстановить его.

/etc/ppp/options-mobile
/dev/ttyUSBn
921600
defaultroute
usepeerdns
crtscts
lock
noauth
local
persist
modem
nopcomp
novjccomp
nobsdcomp
nodeflate
noaccomp
ipcp-accept-local
ipcp-accept-remote
noipdefault

Обратите внимание на первую строчку: здесь должно быть имя вашего модема в /dev. Подставьте вместо n номер устройства модема.

Примечание: Обычно, для USB модемов, оно имеет вид ttyUSBn, где n - номер модема, или же ttyACMn.

Настройки оператора

Если ваш оператор требует авторизации при установлении соединения с Интернетом, создайте файл /etc/ppp/peers/название-оператора следующего содержания:

/etc/ppp/peers/название-оператора
file /etc/ppp/options-mobile
user "логин"
password "пароль"
connect "/usr/sbin/chat -v -t15 -f /etc/ppp/chatscripts/название-оператора.chat"

Замените логин и пароль на предоставленные вашим оператором.

Tip: Вы можете создать несколько таких файлов для разных операторов

Если же авторизация не требуется, опустите строчки user... и password...

Сценарии диалога

Чтобы подключиться к Интернету, вашему компьютеру необходимо отправить на модем команды, которые бы задали режим работы, номер телефона и прочие настройки, необходимые для установления соедиинения. Такие команды называются AT-командами, и pppd для "общения" с модемом использует программу /usr/sbin/chat. Сейчас мы создадим "сценарий диалога", которые будет использовать chat для общения с нашим модемом.

Создайте папку /etc/ppp/chatscripts.

mkdir /etc/ppp/chatscripts
/etc/ppp/chatscripts/название-оператора.chat
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'VOICE'
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT 'DELAYED'
REPORT CONNECT
TIMEOUT 6
'' 'ATQ0'
'OK-AT-OK' 'ATZ'
TIMEOUT 3
'OK' 'AT+CPIN=0000'
'OK-AT-OK' 'ATI'
'OK' 'ATZ'
'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'
'OK' 'AT\^SYSCFG=2,2,3fffffff,0,1'
'OK-AT-OK' 'AT+CGDCONT=1,"IP","internet.apn"'
'OK' 'ATDT*99***1#'
TIMEOUT 30
CONNECT 

Если вы используете проверку PIN кода, замените нули в первой выделенной строке ('OK' 'AT+CPIN=0000') на ваш PIN-код. В противном случае просто удалите строчку целиком.

3G модем может работать в четырёх режимах. Для задания того или иного режима вам нужно внести изменения во вторую выделенную строчку:

  • Только 3G - AT\^SYSCFG=14,2,3fffffff,0,1
  • Предпочтительно 3G - AT\^SYSCFG=2,2,3fffffff,0,1
  • Только GPRS - AT\^SYSCFG=13,1,3fffffff,0,0
  • Предпочтительно GPRS - AT\^SYSCFG=2,1,3fffffff,0,0

Задайте точку доступа в последней выделенной строке: замените internet.apn на точку доступа, указанную вашим оператором.

Важно: Будьте внимательны при указании точки доступа. Ошибка может привести к списанию значительной суммы с вашего виртуального счёта.

Запуск

Чтобы подключиться к Интернету, наберите:

/etc/rc.d/ppp start

Для отключения выполните:

/etc/rc.d/ppp stop

Вы можете добавить pppd в список демонов файла /etc/rc.conf, если хотите, чтобы pppd запускался автоматически.

Патч на доступность модема

Если вы запускаете pppd автоматически, может возникнуть такая проблема: к моменту запуска pppd модем ещё не существует. Pppd честно пытается запуститься, не находит нужного устройства и завершается с ошибкой.

Для того чтобы pppd немного подождал, пока появится модем, измените файл /etc/rc.d/ppp:

case "$1" in
  start)
    stat_busy "Starting PPP daemon"
    /etc/ppp/wait-dialup-hardware
    [ -z "$PID" ] && /usr/bin/pon

Теперь, создайте файл /etc/ppp/wait-dialup-hardware:

/etc/ppp/wait-dialup-hardware
#!/bin/bash
INTERFACE="/dev/$(/usr/bin/head -1 /etc/ppp/options-mobile)"
for ((retry=0; retry < 40; retry++))
do
    if [ -c ${INTERFACE} ]; then
        /usr/bin/logger "$0: OK existing required device ${INTERFACE} (in $((retry / 4)).$((100 * (retry % 4) / 4)) seconds)"
        break
    else
        /bin/sleep 0.25
    fi
done
if [ ! -c ${INTERFACE} ]; then
    /usr/bin/logger "$0: ERROR timeout waiting for required device ${INTERFACE}"
fi
exit 0

Этот сценарий добавит в /var/log/messages строчку:

Jun  1 22:52:08 parsec logger: /etc/ppp/wait-dialup-hardware: OK existing required device /dev/ttyUSB0 (in 1.25 seconds)

Устранение неполадок

Проблема с PIN кодом

Если PIN код задан неверно, модем может игнорировать строчку, задающую точку доступа. В /var/log/messages это выглядит примерно так:

Jun 20 00:17:30 quark chat[3348]: send (AT+CGDCONT=1,"IP","ac.vodafone.es"^M)
Jun 20 00:17:31 quark chat[3348]: expect (OK)
Jun 20 00:17:31 quark chat[3348]: ^M
Jun 20 00:17:31 quark chat[3348]: AT+CGDCONT=1,"IP","ac.vodafone.es"^M^M
Jun 20 00:17:31 quark chat[3348]: ERROR^M
Jun 20 00:17:34 quark chat[3348]: alarm
Jun 20 00:17:34 quark chat[3348]: Failed

Если вы только что установили или изменили PIN код, перезагрузите телефон и первый раз пройдите проверку PIN кода на телефоне, и лишь затем переставляйте SIM карту в модем.

Возможно, подходящим решением будет отключить проверку PIN кода, это можно сделать в настройках безопасности вашего телефона.

Модем EM770

Если pppd часто перезапускается вручную, например, при проверке настроек, EM770 (прошивка 11.104.16.12.00) иногда зависает после ответа NO CARIER (хотя исправно отвечал на AT а соединение с сотовой сетью в порядке). Этой ошибки не происходит, если при потере соединения с интернетом, сценарий будет ждать некоторое время, прежде чем попытаться ещё раз установить соединение. Если же модем всё-таки "залип", включите и выключите компьютер, это помогает. Вероятно, это ошибка программного обеспечения модема.

Кроме того, если используется проверка PIN кода, этот модем отвечает NO CARRIER при первой попытке соединения. В этом случае помогает большой интервал ожидания после отправки AT+CPIN.

Справочник команд AT^SYSCFG для Huawei

Чтобы увидеть поддерживаемые значения, вы можете опросить свой модем, отправив на него команду AT^SYSCFG=?.

AT^SYSCFG=$mode,$acqOrder,$band,$roam,$srvDomain

$mode
2=Auto-Select
13=GSM only
14=WCDMA only
16=no Change

$acqOrder
0=Automatic
1=GSM prefered
2=WCDMA prefered
3=no Change

$band
3fffffff = All
other (query list with "AT^SYSCFG=?")

$roam
0=Not Supported
1=Supported
2=no Change

$srvDomain
0=Circuit-Switched only
1=Packet-Switched only
2=Circuit- & Packet-Switched
3=Any
4=no Change

Связанные статьи