與 wvdial 的 3G 連接沒有 IP,退出程式碼 16
我正在嘗試與 Raspbian、3G USB 加密狗
usb_modeswitch
和wvdial
. 我遵循本教程,該教程之前使用不同的 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/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
),甚至不會 configureppp0
。奇怪的是,在快速sudo wvdialconf
(期間/etv/wvdial.conf
保持不變)之後,我可以再次連接,但它會再次分配沒有 IP 並在 10 秒後中斷。我已經複製了好幾次了。也許這也很有趣:在創建
wlan0
的那一刻失去了它的 IPppp0
,我只能讓它重新執行sudo ifdown wlan0
,sudo ifup wlan0
即使它被設置為自動重新連接。
我終於想出了一個辦法:我放棄
wvdial
並使用nmcli
(從network-manager
包裝中)代替。我在 10 小時前建立了連接,它仍然使用相同的 IP 處於活動狀態。我是這樣做的:**第 1 步:**開始執行,以便將您
usb-modeswitch
的 3G USB 記憶棒辨識為調製解調器,而不是儲存設備。我不打算在這裡介紹細節,因為那裡有很多教程(範例)。**第 2 步:**在 RPi 上安裝NetworkManager
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"
,連接 ID 是您在第 2 步中創建的連接的名稱. 應該就是這樣。要斷開連接,請執行sudo nmcli con down id "Connection ID"
.