出門在外,沒有無線基地台可以連線,樹莓派是不是可以用 4G 網卡來連線,甚至用 Wi-Fi 分享給別人連線呢?
身為「可以不走路,不能沒網路」症候群重度患者,偏偏因為阮囊羞澀的關係,手機網路只用得起吃不飽的專案,眼看流量就要爆了,這可怎麼辦是好 ......
剛好朋友手邊有個閒置的台灣大哥大 4G 吃到飽門號,外加一片 4G 網卡,就把腦筋動到他的頭上,動動手接到樹莓派上面來用囉。
事前準備
- Raspberry Pi,這次用的是 Raspberry Pi 3B
- Raspbian Stretch 2017-11-29,並參考 老朋友,新功能!關於那些開箱後馬上要作的事,完成基本設定
- 4G LTE 網路卡,這次用的是 D-Link DWM-222
驅動 4G 網卡
將 D-Link DWM-222 插上 Raspberry Pi 之後,作業系統直接就偵測到了,雖然並沒有顯示型號。
lsusb
在 /dev 目錄裡,也出現了 4個 ttyUSB 開頭的設備。
ls /dev/tty*
核心模組也正確的載入了 4G 網卡的相關模組。
lsmod
因為直接就驅動了,所以不必再做任何動作。
要查詢手上的 3G/4G 網卡是否支援,可以參閱支援清單:USB_ModeSwitch - Known working hardware。
如果發現作業系統偵測不到,但是在支援清單裡找的到時,再執行下列步驟,手動將 USB_ModeSwitch 升級最新的版本。
確認一下是否已安裝過相關模組。
dpkg -l usb-modeswitch*
有的話,就先移除。
sudo apt-get -y remove usb-modeswitch usb-modeswitch-data
從 USB_ModeSwitch 官網下載最新的版本,在 2017/12/20 的版號是 2.5.1。
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.5.1.tar.bz2
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20170806.tar.bz2
下載之後解壓縮。
tar jxf usb-modeswitch-2.5.1.tar.bz2
tar jxf usb-modeswitch-data-20170806.tar.bz2
安裝必要的相依套件。
sudo apt-get -y install libgusb-dev
因為這是原始碼,所以要先編譯後才能安裝。
cd ~/usb-modeswitch-2.5.1
make
sudo make install
cd ~/usb-modeswitch-data-20170806/
sudo make install
載入核心模組。
sudo modprobe qmi_wwan
sudo modprobe option
安裝及設定 4G LTE 連線
先安裝主程式。
sudo apt-get -y install ppp pppconfig
sudo pppconfig
建立一個新連線,Create a connection。
為這個連線自訂一個名稱,之後連線時會用到。
直接使用 ISP 指定的 DNS Server,Use dynamic DNS。
使用 PAP 驗證協定,Peer Authentication Protocol。
因為用不到帳號,所以直接用預設值不必改。
因為用不到密碼,所以直接用預設值不必改。
通訊埠的傳輸速度設定成 115200。千萬別誤會,這不是 4G 上網的連線速度。
撥號模式指定為 TONE (複頻)。
撥接號碼設定為 *99#,這組是台灣大哥大的號碼,其他 ISP 業者別忘了問一下客服。
手動選擇通訊埠,No。
指定通訊埠的路徑為 /dev/ttyUSB1。
儲存設定參數,Finished Write files and return to main menu。
這是相關設定檔的位置。
退出設定程式。
編輯 PAP 驗證協定檔。
建立一個新連線,Create a connection。
為這個連線自訂一個名稱,之後連線時會用到。
直接使用 ISP 指定的 DNS Server,Use dynamic DNS。
使用 PAP 驗證協定,Peer Authentication Protocol。
因為用不到帳號,所以直接用預設值不必改。
因為用不到密碼,所以直接用預設值不必改。
通訊埠的傳輸速度設定成 115200。千萬別誤會,這不是 4G 上網的連線速度。
撥號模式指定為 TONE (複頻)。
撥接號碼設定為 *99#,這組是台灣大哥大的號碼,其他 ISP 業者別忘了問一下客服。
手動選擇通訊埠,No。
指定通訊埠的路徑為 /dev/ttyUSB1。
儲存設定參數,Finished Write files and return to main menu。
這是相關設定檔的位置。
退出設定程式。
編輯 PAP 驗證協定檔。
sudo vi /etc/ppp/pap-secrets
刪除或註解掉這一行。
"replace_with_your_login_name" 4GLTE "replace_with_password"
調整撥接參數設定。
sudo vi /etc/ppp/peers/4GLTE刪除或註解掉這一行。
"replace_with_your_login_name" 4GLTE "replace_with_password"
調整撥接參數設定。
刪除或註解掉這一行。
connect "/usr/sbin/chat -v -f /etc/chatscripts/4GLTE"
改成
connect "/usr/sbin/chat -v -T internet -f /etc/chatscripts/4GLTE"
刪除或註解掉這一行。
replace_with_your_login_name
在最下方增加這兩行。
persist
replacedefaultroute
調整撥接指令字串。
sudo vi /etc/chatscripts/4GLTE
在 '' ATZ 的下一行增加
OK-AT-OK AT+CGDCONT=1,"IP","\T","",0,0
註解或刪除這一行。
OK-AT-OK "ATDT*99#"
改成這一行。
OK "ATDT*99#"
恭禧老爺,賀禧夫人,咱們可以用 4G 網卡連上 Internet 了。
sudo pon 4GLTE
玩夠了就中斷連線吧。
sudo poff 4GLTE
開機自動連上 4G 網路
新增一個 4G 網卡的介面。
sudo vi /etc/network/interfaces
增加這三行,4gppp0 是自訂的網路介面名稱,4GLTE 是先前連線參數裡的自訂連線名稱。
allow-hotplug 4gppp0
iface 4gppp0 inet ppp
provider 4GLTE
測試一下是否正確運作。
sudo ifup 4gppp0
sudo ifdown 4gppp0
編輯服務設定檔。
sudo vi /lib/systemd/system/ifup@4gppp0.service
刪除或註解掉這一行。
After=sys-subsystem-net-devices-%i.device
啟動 4G 連線服務並讓它開機自動執行。
sudo systemctl daemon-reload
sudo systemctl restart ifup@4gppp0
sudo systemctl enable ifup@4gppp0
插上 4G 網卡後自動連線
因為我們不一定會一直把 4G 網卡插在 Raspbery Pi 上面,可是一但拔起來之後,再插回去時還要用 SSH 連線輸入連線指令,這實在是太麻煩了,所以加上一些設定,讓系統可以自動辨識並連上 4G 網路。
新增一個設備設定檔。
sudo vi /etc/udev/rules.d/99-dwm222.rules
增加這一行,ttyUSB1 是先前連線參數裡指定的通訊埠,idVendor 跟 idProduct 的數字要依據不同廠牌型號的 4G 網卡,會有不同的設定值。
KERNEL=="ttyUSB1", ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7e35", ENV{SYSTEMD_WANTS}+="ifup@4gppp0.service"
最後,重新載入 udev 管理程式的設定值即可。
sudo udevadm control --reload
改造 Wi-Fi 無線基地台功能
最後,再配合上 多了WiFi,價格不變,輕鬆打造隨身無線基地台 這篇文章的步驟,只要把原來的對外的 LAN 有線網路,改成這次使用的 4G 網卡,就變身成自製的攜帶式行動分享器了。
參考資料
- USB_ModeSwitch - Handling Mode-Switching USB Devices on Linux
- 台灣樹莓派 - [基礎] Raspberry Pi 用 3G 網卡(3G USB dongle)上網
- ModeSwitchForum - D-LINK DWM-222
- talkwithdevices.com - DWM-222 (4G LTE USB ドングル) を Ubuntu Xenial で使う
- talkwithdevices.com - DWM-222 (4G LTE USB ドングル) を Raspberry Pi で ppp する
- talkwithdevices.com - Raspberry Pi で DWM-222 (4G LTE USB ドングル) 挿抜により ppp を自動認識する
圖片來源
- https://pixabay.com
更新紀錄
- 2017/12/20 撰文。
請問可以用在Raspberry Pi b+嗎?
回覆刪除你好,請問為什麼我在設定開機自動連線的階段時,在使用指令:sudo systemctl enable ifup@4gppp0後,會出現以下的錯誤?
回覆刪除The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
instance name specified.
你好!請問我的SIM卡是中華電信的,插上這個DLINK模組(同型號)後,模組一直閃紅燈!我在猜想是不是因為像是中華的卡在手機上需要輸入0000才能開通? 會不會是因為這個原因導致閃紅燈? 請問這種情況怎麼解決? 謝謝
回覆刪除請問如何在樹梅終端機編輯程式內容?
回覆刪除vi vim nano都是編輯器 看樹梅派可用哪個
刪除請問有遇過
回覆刪除只要重啟 Mac Address 會一直換新的,的狀況嗎?
不知道是不是哪個設定值要調整,
我現在只要重啟 Mac Address 就會變新的,
而且是完全不同,沒有一點組合上的相似,
不知道有沒有解
sudo vi /lib/systemd/system/ifup@4gppp0.service
回覆刪除不好意思 我打開之後文件是空的該怎麼辦呢?