2014年6月29日 星期日

[Bluetooth] Bluetooth 基本架構,使用BlueZ介紹

BlueZ是由官方Linux Bluetooth protocol stack,提供開發者可透過Command Line方式或使用blueZ library與Bluetooth device溝通。BlueZ與Linux網路程式類似,分成 :
  • Kernel Layer
    • Bluetooth kernel subsystem core
    • L2CAP and SCO audio kernel layers
    • RFCOMM, BNEP, CMTP and HIDP kernel implementations
    • HCI UART, USB, PCMCIA and virtual device drivers
  • User Space Layer
    • General Bluetooth and SDP libraries and daemons
    • Configuration and testing utilities
    • Protocol decoding and analysis tools
    若在執行Bluetooth Command Line發生問題時,那就先檢查Linux Kernel Option是否都已經正確開啟設定。

    Kernel Option
    -*- Networking support --->
        -*- Bluetooth Subsystem support --->
           (...將需求部分開啟....)


    圖一: Bluetooth Core System
    圖片來源: Bluetooth 4.0 Spec
    Bluetooth(BT) 是由一個 Host(BR/EDR、LE),加上一個Primary Controller(BR、EDR)及零個以上的Secondary Controllers(AMP)所組成。Host與Control之間的溝通,透過Host Control Interface來達成,對造網路OSI Model或DOD Model(如圖二),就是Transport Layer,類似網路程式設計裡的Socket Interface。

    圖二: Bluetooth Stack

    如上述,BlueZ實作 Linux Kernel Layer and User Layer,而他們之間對應關係如下 :
    • bluetooh.ko,為blueZ的核心,其餘的所有module,都需要透過這個Service運作。
    • hci_uart.ko, transporting HCI Packet over UART Packet
    • hci_usb.ko, transporting HCI Packet over USB Packet
    • l2cap.ko,L2CAP是負責多工處理的功能,將不同Application Service的Packet,有效率的傳送至下層處理,也可做QoS的功能。
    • rfcomm.ko,若想使用termianl傳遞Bluetooth Packet,則須先模擬一個Serial Port,這些由rfcomm來完成。
    • sco.ko,負責處理聲音傳遞。
    圖三: Figure 16.2 Bluetooth protocol layers mapped to BlueZ kernel modules
    圖片來源: Chapter 16. Linux Without Wires



    Reference :
    [1] bluetooth org
    [2] BlueZ
    [3] Chapter 16. Linux Without Wires
    [4] Study BT concept

    沒有留言:

    張貼留言