歡迎您光臨本站 註冊首頁

ubuntu下利用MOTO E6手機的MODEM通過藍牙連接上網

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

在網上查找資料時看到一些用智能手機帶的MODEM撥號上網的帖子。用蘋果的OSX系統和MOTO E680實現GPRS上網和在LINUX下GPRS上網。但沒有找到LINUX下通過藍牙GPRS上網的方法。於是測試了一下,找到了方法。我用的是UBUNTU 7.10和MOTO E6手機。當然其他的LINUX系統應該也可以。下面是具體的方法:

首先在LINUX下面安裝下列包:bluez-utils,bluez-gnome。

運行bluetooth-applet,並在其中設置藍牙可以被查找。
用手機來查找可用的藍牙設備,找到電腦的藍牙設備后綁定在一起。並且在運行的bluetooth-applet的
首選項裡面把他們設置為信任關係,避免後面連接時的確認

想連接到手機的MODEM,肯定要在LINUX系統里建立一個和它對應的設備,這裡我們要用rfcomm命令來
做這個事情。
019:46:34 /home/j # rfcomm -h
RFCOMM configuration utility ver 3.19
Usage:
rfcomm [options]

Options:
-i [hciX|bdaddr] Local HCI device or BD Address
-h, --help Display help
-r, --raw Switch TTY into raw mode
-A, --auth Enable authentication
-E, --encrypt Enable encryption
-S, --secure Secure connection
-M, --master Become the master of a piconet
-f, --config [file] Specify alternate config file
-a Show all devices (default)

Commands:
bind [channel] Bind device
release Release device
show Show device
connect [channel] Connect device
listen [channel [cmd]] Listen
watch [channel [cmd]] Watch
大概我們要用的命令的樣子是這個: rfcomm connect [channel]
這裡面有三個參數我們要確定。 第一個是LINUX系統裡面的設備,我們自己起個設備名:/dev/rfcomm0
. 第二個是手機的UUID, 這個用 hcitool來找.(在查找前,要先讓手機的藍牙設備處於可被搜索的狀態:
017:45:07 /home/j # hcitool scan
Scanning ...
00:1A:77:8B:17:D6 MOTOROKR E6
好,找到了. 我的就是這個 00:1A:77:8B:17:D6
然後要確定第三個參數[channel].
因為撥號是用的串口,所以要找到手機的串口對應的channel,執行下面的指令
018:22:51 /home/j # sdptool -h
sdptool - SDP tool v3.19
Usage:
sdptool [options] [command parameters]
Options:
-h Display help
-i Specify source interface
Commands:
search Search for a service
browse Browse all available services
records Request all records
add Add local service
del Delete local service
get Get local service
setattr Set/Add attribute to a SDP record
setseq Set/Add attribute sequence to a SDP record

Services:
DID SP DUN LAN FAX OPUSH FTP PRINT HS HF HFAG SAP NAP GN PANU
HCRP HID KEYB WIIMOTE CIP CTP A2SRC A2SNK AVRCT AVRTG UDIUE UDITE
SEMCHLA SR1 SYNCML SYNCMLSERV ACTIVESYNC HOTSYNC PALMOS NOKID
PCSUITE NFTP NSYNCML NGAGE APPLE ISYNC
因為沒有查到串口的服務名(service_name)對應上面的Services中的哪一個,所以只有猜測了。
哪一個最象呢? 裡面最象的就是SP,我們先拿它開刀(SP大概應該是Serial Port的縮寫)。
018:28:52 /home/j # sdptool search SP 00:1A:77:8B:17:D6
Inquiring ...
Searching for SP on 00:1A:77:8B:17:D6 ...
Service Name: Bluetooth Serial Port
Service RecHandle: 0x10006
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
原來SP對應的是 Channel: 5.

現在就可以在LINUX裡面建立設備連接到手機的MODEM上面了:
018:29:24 /home/j # rfcomm connect /dev/rfcomm0 00:1A:77:8B:17:D6 5
Connected /dev/rfcomm0 to 00:1A:77:8B:17:D6 on channel 5
Press CTRL-C for hangup

呵呵,連接上了.

這個時候就可以在LINUX裡面利用/dev/rfcomm0這個設備撥號了:
020:07:02 /home/j # cat /etc/wvdial.conf
[Dialer Defaults]
Init1 = at+cgdcont=1,"ip","cmwap"
Modem Type = BlueTooth Modem
ISDN = 0
Phone = *99***1#
Modem = /dev/rfcomm0
Username = "wap"
Carrier Check = no
Password = "wap"
Baud = 460800
Auto DNS = on
先如上配置/etc/wvdial.conf.
並且在/etc/ppp/options裡面加入
:192.168.0.254
然後執行wvdial:
018:29:07 /home/j # wvdial
WvDial<*1>: WvDial: Internet dialer version 1.56
WvModem<*1>: Cannot get information for serial port.
WvDial<*1>: Initializing modem.
WvDial<*1>: Sending: at+cgdcont=1,"ip","cmwap"
WvDial Modem<*1>: at+cgdcont=1,"ip","cmwap"
WvDial Modem<*1>: OK
WvDial<*1>: Modem initialized.
WvDial<*1>: Sending: ATDT*99***1#
WvDial<*1>: Waiting for carrier.
WvDial Modem<*1>: ATDT*99***1#
WvDial Modem<*1>: CONNECT
WvDial<*1>: Carrier detected. Waiting for prompt.
WvDial Modem<*1>: ~[7f]}#@!}!}!} }<}!}$}%\}"}&} } } } }#}$@#}%}&h}#} } }'}"}(}"}#}<~
WvDial<*1>: PPP negotiation detected.
WvDial: Starting pppd at Sat Mar 1 18:29:47 2008
WvDial: Pid of pppd: 14991
WvDial<*1>: Using interface ppp1
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: local IP address 10.198.35.182
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
WvDial<*1>: remote IP address 192.168.0.254
WvDial<*1>: pppd: [18]?[06][08]??[06][08]
可以看到已經撥號登錄上去了,獲得IP地址為WvDial<*1>: local IP address 10.198.35.182
查看網路設備WvDial<*1>: Using interface ppp1
DNS也被改變為新的: cat /etc/resolv.conf

018:31:37 /home/j # ifconfig
ppp1 鏈路封裝:點對點協議
inet 地址:10.198.35.182 點對點:192.168.0.254 掩碼:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 躍點數:1
接收數據包:7 錯誤:0 丟棄:0 過載:0 幀數:0
發送數據包:7 錯誤:0 丟棄:0 過載:0 載波:0
碰撞:0 發送隊列長度:3
接收位元組:64 (64.0 b) 發送位元組:87 (87.0 b)

此時,只需設置代理即可以上網了 代理為 10.0.0.172:80

為了方便使用,可以用 rfcomm bind /dev/rfcomm0 00:1A:77:8B:17:D6 5
然後,用wvdial連接時, 會自動連接手機的MODEM.

上網的速度還是挺快的. 如果在沒有網路連接的時候,比如旅遊的過程中,可以臨時上下網.
不過最好用包月的GPRS.

如果不能上網, 執行:
route add default gw 192.168.0.254

[火星人 ] ubuntu下利用MOTO E6手機的MODEM通過藍牙連接上網已經有639次圍觀

http://coctec.com/docs/linux/show-post-180230.html