Networkmanager

與 wvdial 的 3G 連接沒有 IP,退出程式碼 16

  • September 26, 2016

我正在嘗試與 Raspbian、3G USB 加密狗usb_modeswitchwvdial. 我遵循本教程,該教程之前使用不同的 3G 加密狗執行良好。

我的 3G 加密狗是 ZTE D6601,SIM 卡沒有 PIN,並且在 Windows 下和 Ubuntu 15 下使用內置移動寬頻工具的 ISP 工具可以完美連接。但我需要在 Raspberry 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 

ID為 0154 的 3G 加密狗不止一個,DefaultProduct因此標準的切換規則usb_modeswitch不起作用。0108 是 Ubuntu 將設備切換到的位置,或者當我sudo eject使用虛擬 CD 驅動器時會發生什麼,所以我使用了它。

/etc/network/interfaces的只是更改為使用 WiFi 連接:

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/ttyUSB1sudo 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),甚至不會 configure ppp0。奇怪的是,在快速sudo wvdialconf(期間/etv/wvdial.conf保持不變)之後,我可以再次連接,但它會再次分配沒有 IP 並在 10 秒後中斷。我已經複製了好幾次了。

也許這也很有趣:在創建wlan0的那一刻失去了它的 IP ppp0,我只能讓它重新執行sudo ifdown wlan0sudo ifup wlan0即使它被設置為自動重新連接。

我終於想出了一個辦法:我放棄wvdial並使用nmcli(從network-manager包裝中)代替。我在 10 小時前建立了連接,它仍然使用相同的 IP 處於活動狀態。我是這樣做的:

**第 1 步:**開始執行,以便將您usb-modeswitch的 3G USB 記憶棒辨識為調製解調器,而不是儲存設備。我不打算在這裡介紹細節,因為那裡有很多教程(範例)。

**第 2 步:**在 RPi 上安裝NetworkManagersudo 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",連接 ID 是您在第 2 步中創建的連接的名稱. 應該就是這樣。要斷開連接,請執行sudo nmcli con down id "Connection ID".

引用自:https://unix.stackexchange.com/questions/198554