分页: 1 / 1

《NetBSD指南-20.6.串口连接》

发表于 : 2010-03-06 15:16
leo
通过蓝牙的串口连接由RFCOMM协议提供, 它通过一个L2CAP通道提供了多达30个复用通道。使用BTPROTO_RFCOMM套接字接口可以访问这个数据流协议, 也可以通过 rfcomm_sppd(1) 程序对其访问.

例如, 你可以建立一个串口连接到一个移动电话的 “拨号网络” (DUN) 服务以便用PPP连接到Internet上。首先你要找到这部电话的BDADDR, 并将其加到 /etc/bluetooth/hosts 以便于使用. 将这部电话设置成可识别模式, 然后从适当的控制器执行一个质询:

代码: 全选

% btconfig ubt0 inquiry
Device Discovery from device: ubt0 ..... 1 response
  1: bdaddr 00:16:bc:00:e8:48 (unknown)
   : name "Nokia 6103"
   : class: [0x520204] Cellular Phone <Networking> <Object Transfer> <Telephony>
   : page scan rep mode 0x01
   : page scan period mode 0x02
   : page scan mode 0x00
   : clock offset 30269

# echo "00:16:bc:00:e8:48 phone" >>/etc/bluetooth/hosts

现在, 你可以质询这部电话以确认其支持DUN profile:

代码: 全选

% sdpquery -d ubt0 -a phone search DUN

Record Handle: 0x00010000
Service Class ID List:
        Dial-Up Networking (0x1103)
        Generic Networking (0x1201)
Protocol Descriptor List:
        L2CAP (0x0100)
        RFCOMM (0x0003)
                Protocol specific parameter #1: u/int8/bool 1
Bluetooth Profile Descriptor List:
        Dial-Up Networking (0x1103) ver. 1.0

很有可能这部电话需要先认证才会连接到DUN服务, 所以在你首次连接前需要提供一个PIN, 它可以随机生成. 你可以以stdio模式使用 rfcomm_sppd 已检查连接工作正常, 按下 ^C 以断开连接并返回到 shell, 例如:

代码: 全选

% btpin -d ubt0 -a phone -r -l 6
PIN: 904046
% rfcomm_sppd -d ubt0 -a phone -s DUN

    < ENTER PIN ON PHONE NOW >

rfcomm_sppd[24635]: Starting on stdio...
at
OK
ati
Nokia

OK
ati3
Nokia 6103

OK
at&v
ACTIVE PROFILE:
E1 Q0 V1 X5 &C1 &D2 &S0 &Y0
+CMEE=0 +CSTA=129 +CBST=0,0,1 +CRLP=61,61,48,6 +CR=0 +CRC=0 +CLIP=0,2
+CLIR=0,2 +CSNS=0 +CVHU=1 +DS=0,0,2048,32 +DR=0 +ILRR=0
+CHSN=0,0,0,0 +CHSR=0 +CPBS="SM"
S00:000 S01:000 S02:043 S03:013 S04:010 S05:008 S07:060 S08:002
S10:100 S12:050 S25:000

OK
^C
rfcomm_sppd[24635]: Completed on stdio

当建立外部连接时,要让 pppd(8) 自动连接到你电话的DUN服务,将下面这行加入到 /etc/ppp/options 文件,这个位置用于常规的tty声明:

代码: 全选

pty "rfcomm_sppd -d ubt0 -a phone -s DUN -m encrypt"