Total Pageviews

Monday, 4 March 2013

Linux 桌面系统下,透過藍芽連線3G手機上網

許多3G手機在Linux下並沒有提供相關軟體可供使用者簡便的上網,其實在Linux的環境下透過藍芽連線把手機當成GPRS/HSDPA數據機來使用 並不困難,只要簡單的幾個指令就可以把手機跟電腦連接上。當然前提是你的Linux環境下要有基本的藍芽指令可以使用,可以在終端介面中下達 “hcitool”丶“sdptool”和“rfcomm”這三個指令看看是否存在系統中,如果沒有的話請安裝“bluez-utils”套件。

第一步先確認藍芽功能是否正常運作,是否可以順利搜尋到手機的存在,終端機的指令如下:
# hcitool scan
如果電腦和手機的藍芽都正常運作的話會出現搜尋到手機的藍芽位置和手機的名稱,結果如下
Scanning ...
00:12:D2:7E:1E:61 3gMobile
出現類似這樣的結果時就表示電腦有搜尋到手機的存在,當然你看到的結果並不會和我的完全一樣,如果找不到的話,請檢查一下手機的藍芽是否沒開,或是開了但沒設成開放模式。第一步成功後,接著進行第二步。
第二步是查詢手機使用撥接網路功能的藍芽頻道

# sdptool search DUN
Inquiring ...
Searching for DUN on
00:12:D2:7E:1E:61 ...
Service Name: Dial-Up Networking
Service RecHandle: 0x10003
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2 <= 請注意這一行
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
有看到中間我註明的那一行了嗎?就是寫著Channel的這一行,這是告訴我們手機的撥接網路用的藍芽頻道是“2”
知道要使用的頻道是“2”後,接著進行第三步,將手機連上電腦的連接埠。
# rfcomm connect rfcomm0 00:12:D2:7E:1E:61 2
以上參數中的2就是指上一步所顯示的Channel: 2,如果在上一步中的Channel顯示是1的話,這裡就要改1,這是要隨著上一步的結果而變更的。
Connected /dev/rfcomm0 to
00:12:D2:7E:1E:61 on channel 2
Press CTRL-C for hangup
如 果看到出現這樣的結果就是已經連上囉!表示手機已經連接到/etc/rfcomm0了。到目前為止這三步都很簡單,而且是透過指令模式進行,幾乎每個版本 的Linux都可以透過這三步將手機以Modem的形式連接到/etc/rfcomm0。接下來就是在連接上網的ppp設定了,因為每個ppp軟體設定的 方式都不太相同。


以上是完成了3g手機以modem的形式連接到電腦上。
我個人是使用kppp來進行連線的,kppp的設定可以參考“[FC6]Huawei E612 在linux環境下3G上網”這一篇來做設定。只是有些許的不同,以下將不同的地方加以說明。

在“編輯數據機”這一步,如下圖
pic03
注意圖中“數據機裝置”中的內容,因為前面我們是將手機連接到/etc/rfcomm0,所以在這裡也必須要選到/dev/rfcomm0,不然會連不通的哦!其他的步驟是相同的。可以開始享用手機帶來的3G上網囉!


另 外有些朋友會在連線時出現問題,以kppp來說,如果連上時kppp會告訴你ppp因不明原因錯誤中斷,如果確定你的3G服務有開而且餘額足夠(有些人是 用預付卡的,我在國外就是這一類型的),其中有部份是因為手機上網必須要針對不同的電信業著而有些設定上的不同。像是APN(Access Point Name希望我沒拼錯),中文是存取點名稱。中華電信的APN是“internet”,每家電信業者的APN都不太相同,這個必須要打電話到電信業者的客 服部請教會比較清楚。在linux下設定APN,可以透過在“編輯數據機指令”這一步中更改。如下圖:
pic05
看到由上方往下數的第三行,“起始字串2:”。請在這裡加上一串數據機指令,“at+cgdcont=1,"IP","internet","",0,0”,最前面和最後的引號就不用加進去了,記得拿掉哦!中間部份紅字的internet就是APN,把電信業者告訴你的APN(存取點名稱)套進去,整個指令放在“起始字串2:”後面的方框內。然後按確定。再進行一次連線,差不多就OK囉