Bluetooth 个人区域网 (PAN) 是一种技术,可让您在移动计算机、移动电话以及手持设备之间创建使用无线链接的以太网网络。可以连接到以下类型的启用 Bluetooth 且使用 PAN 的设备:个人区域网用户 (PANU) 设备、小组临时网络 (GN) 设备或网络访问点 (NAP) 设备。
以下是有关每种设备功能的详细信息:
-
PANU 设备。 连接到启用 Bluetooth 的 PANU 设备会创建包括计算机与该设备的临时网络。
-
GN 设备。 连接到启用 Bluetooth 的 GN 设备会创建一个临时网络,该网络包括计算机、GN 设备以及其他任何连接到相同 GN 设备的 PANU 设备。
-
NAP 设备。 连接到启用 Bluetooth 的 NAP 设备可让您将计算机连接到更大的网络,如家庭网络、公司网络或 Internet。
注意
-
有些移动电话和个人数字助理 (PDA) 只使用拨号网络,有些设备只使用 PAN,而有些设备则同时使用这两种服务。若要找到启用 Bluetooth 的设备使用何种服务,请查看与该设备一起提供的信息。
最近公司要在网络测试设备A上实现蓝牙个人局域网PAN。也就是通过pc机上接个usb的蓝牙,连接到A设备上后要求pc机能和A在一个网络里,所有在测试时,如果能够ping基本就没问题了。
下面是A设备上的蓝牙配置:
/etc/bluetooth>ls -R
.:
hcid.conf pan pin rfcomm.conf
./pan:
dev-up udhcpd.conf
/etc/bluetooth>
上面是目录结构。
由于之前已经支持蓝牙功能,我只是在该目录下添加了别人给的pan目录,下面依次把每个文件的内容贴出来,
首先是hcid.conf文件内容:
#
# HCI daemon configuration file.
#
# HCId options
options {
# Automatically initialize new devices
autoinit no;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security auto;
# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;
# PIN helper
pin_helper /usr/local/sbin/btpin_helper.sh;
# D-Bus PIN helper
#dbus_pin_helper;
}
# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "BlueZ (%d)";
# Local device class
class 0x3e0100;
# Default packet type
#pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
lm accept;
# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
lp rswitch,hold,sniff,park;
# Authentication and Encryption (Security Mode 3)
auth enable;
encrypt enable;
}
下面是pin文件里的内容:
789
下面是rfcomm.conf文件内容:
# RFCOMM configuration file.
#
rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 11:22:33:44:55:66;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "Example Bluetooth device";
}
~
下面是dev-up文件内容:
#!/bin/sh
ifconfig $1 10.0.10.1
udhcpd /etc/bluetooth/pan/udhcpd.conf
下面是udhcpd.conf文件内容:
start 10.0.10.2 #default: 192.168.0.20
end 10.0.10.100 #default: 192.168.0.254
interface bnep0 #default: eth0
opt dns 10.0.10.1 192.168.48.10
option subnet 255.255.255.0
opt router 10.0.10.1
opt wins 10.0.10.10
option dns 129.219.13.81 # appened to above DNS servers for a total of 3
option domain local
option lease 864000 # 10 days of seconds
当pc机连接上A设备是,A设备会增加一个虚拟网卡bnep0。
根据ubuntu10.04版本下/etc/bluetooth/network.conf文件的介绍:
[General]
# Disable link encryption: default=false
#DisableSecurity=true
[PANU Role]
# Network interface name for PANU for connections. default:bnep%d
# (up to 16 characters)
#Interface=
# PAN user connection interface up script. default:none
Script=avahi-autoipd
[GN Role]
# Network Interface name for Group Network server. default:pan0
#Interface=
# Group Network connection interface up script. default:none
Script=avahi-autoipd
[NAP Role]
# Network Interface name for Network Access Point server. default:pan1
#Interface=
# Network Access Point connection interface up script. default:none
Script=dhclient
这里使用到的角 {MOD}应该是 PANU Role。不过我也管不了那么多了,反正pc和A设备在一个网络,ping通也没问题就可以了。
linux下比较有名的蓝牙开发库BlueZ,安装如下:
sudo apt-get install libbluetooth-dev
主要有下几个文件:
bluetooth.h bnep.h cmtp.h hci.h hci_lib.h hidp.h l2cap.h rfcomm.h sco.h sdp.h sdp_lib.h
编译时加入 -lbluetooth
下面的地址有些使用例子:
http://bbs.chinaunix.net/thread-2013602-1-1.html