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

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

This article is a stub.

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

Эта страница нуждается в сопроводителе

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

Информация в этой статье или разделе устарела

Причина: 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

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

- Dialup_without_a_dialer_HOWTO (Русский)
- Huawei E220
- USB 3G Modem (Русский)

Category:

- Русский