嵌入式linux下实现蓝牙bluetooth实现个人局域网PAN

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
      

      这里使用到的角色应该是 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

你可能感兴趣的:(linux,linux-network)