3G-соединение с wvdial не получает IP, выходы с кодом 16

Я пытаюсь установить соединение 3G с Raspbian, USB-ключ 3G, usb_modeswitch и wvdial . Я следовал этому руководству, который хорошо работал с другим 3G-ключом.

Мой 3G-ключ – ZTE D6601, у SIM-карты нет PIN-кода, и соединение работает безупречно с инструментом ISPs под Windows и под Ubuntu 15 со встроенным мобильным широкополосным инструментом. Но мне нужно сделать это на малине Pi и из командной строки.

Это то, что я пробовал до сих пор: когда я загружаю Raspbian, lsusb возвращается

 Bus 001 Device 004: ID 19d2:0154 ZTE WCDMA Technologies MSM 

Затем я запускаю

 sudo usb_modeswitch -I -v 19d2 -p 0154 -c /etc/usb_modeswitch.conf 

Что изменяет ProductID на

 Bus 001 Device 009: ID 19d2:0108 ZTE WCDMA Technologies MSM 

Существует более одного 3G-ключа с 0154 в качестве идентификатора DefaultProduct поэтому стандартные правила переключения usb_modeswitch не работают. 0108 – это то, что Ubuntu переключает на устройство или что происходит, когда я sudo eject виртуальный CD-привод, поэтому я использовал это.

Мой /etc/network/interfaces был изменен только для использования Wi-Fi-соединения:

 auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp 

Все идет нормально. Когда я запускаю sudo wvdialconf , модем обнаружен в /dev/ttyUSB1 . Затем я запускаю sudo wvdial dcom где dcom определяется таким образом (APN «e-connect» является правильным, без необходимости пользователя / пароля):

 [Dialer dcom] Modem = /dev/ttyUSB1 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,"IP","e-connect" Stupid Mode = 1 Modem Type = Analog Modem Phone = *99# ISDN = 0 Username = { } Auto Reconnect = 1 Password = { } Baud = 460800 

Оболочка возвращает это:

 --> WvDial: Internet dialer version 1.61 --> Initializing modem. --> Sending: ATZ OK --> Sending: ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CGDCONT=1,"IP","e-connect" AT+CGDCONT=1,"IP","e-connect" OK --> Modem initialized. --> Sending: ATDT*99# --> Waiting for carrier. ATDT*99# CONNECT 21600000 --> Carrier detected. Starting PPP immediately. --> Starting pppd at Sat Apr 25 18:09:08 2015 --> Pid of pppd: 5530 --> Using interface ppp0 --> pppd: [08]FX[01] FX[01]8GX[01]p<X[01] PX[01] QX[01] (+4 more times) 

После запуска ifconfig показывает, что ppp0 был создан, но IP-адрес не назначен. Затем примерно через 10 секунд это происходит:

 --> Disconnecting at Sat Apr 25 18:09:39 2015 --> The PPP daemon has died: A modem hung up the phone (exit code = 16) --> man pppd explains pppd error codes in more detail. --> Try again and look into /var/log/messages and the wvdial and pppd man pages for more information. --> Auto Reconnect will be attempted in 5 seconds --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CGDCONT=1,"IP","e-connect" AT+CGDCONT=1,"IP","e-connect" OK --> Modem initialized. --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CGDCONT=1,"IP","e-connect" AT+CGDCONT=1,"IP","e-connect" OK --> Modem initialized. --> Sending: ATDT*99# --> Waiting for carrier. ATDT*99# ERROR --> Invalid dial command. --> Disconnecting at Sat Apr 25 18:09:45 2015 

Если я снова запустил wvdial dcom , он повторит вывод второй попытки подключения выше ( Invalid dial command ) и даже не настроит ppp0 . Как ни странно, после быстрого sudo wvdialconf (во время которого /etv/wvdial.conf остается неизменным), я могу подключиться снова, но он снова не назначит IP и не сломается через 10 секунд. Я повторил это несколько раз.

Возможно, это также интересно: wlan0 теряет свой IP в момент ppp0 и я могу вернуть его обратно в sudo ifdown wlan0 и sudo ifup wlan0 даже если он настроен на автоматическое повторное подключение.

Я наконец понял способ: я сбросил wvdial и использовал nmcli (из пакета network-manager ). Я установил соединение 10 часов назад, и он по-прежнему активен с тем же IP-адресом. Вот как я это сделал:

Шаг 1. usb-modeswitch чтобы ваш USB-накопитель 3G распознавался как модем, а не устройство хранения. Я не собираюсь описывать подробности здесь, так как есть много учебников ( пример ).

Шаг 2: Установите NetworkManager на RPi: sudo apt-get install network-manager network-manager-gnome -y . Убедитесь, что NetworkManager распознает ваш модем, запустив приложение nmcli dev . Если да, вы должны увидеть таблицу следующим образом:

 DEVICE TYPE STATE ttyUSB2 gsm disconnected 

(Если нет, возможно, ваш usb-modeswitch может быть неудачным, и ваша система не может найти модем.)

Шаг 3: Запустите X-сервер: startx , откройте NetworkManager из меню и создайте новое соединение «Мобильная широкополосная связь» (вкладка «Мобильная широкополосная связь»> «Добавить»). Мастер проведет вас через этот процесс, даже если вы выберете своего провайдера, чтобы вам не пришлось беспокоиться о настройках APN. Инструмент создаст файл подключения в /etc/NetworkManager/system-connections/ и вы должны принять во внимание имя этого файла, поскольку оно будет использоваться в качестве имени соединения на следующем шаге.

Шаг 4: Как я уже сказал в своем вопросе, мне нужно иметь возможность запускать это из командной строки без X-сервера, и это можно сделать, запустив sudo nmcli con up id "Connection ID" , идентификатором соединения которого является имя соединения, которое вы создали на шаге 2. Это должно быть все. Чтобы отключить, выполните sudo nmcli con down id "Connection ID" .