近距離無線

Bluetooth Classic

音声や連続通信向けの従来Bluetooth。

概要

Bluetooth Classic(クラシックBluetooth)は、2.4GHz帯を使用した短距離無線通信規格で、主に音声通話・音楽ストリーミング・ファイル転送など、比較的高いスループットを必要とする継続的な通信に利用されます。1999年にBluetooth 1.0として策定されて以来、バージョンアップを重ね、現在はBluetooth 3.0以前を指すことが多いですが、Bluetooth 5.x以降もクラシックのプロファイルは引き続きサポートされています。

BLE(Bluetooth Low Energy)が登場した後、区別のために「Bluetooth Classic」または「BR/EDR(Basic Rate/Enhanced Data Rate)」と呼ばれるようになりました。スマートフォン・ヘッドセット・スピーカー・キーボード・マウスなど、身近な機器で広く使われています。

歴史・背景

Bluetoothの名称はデンマーク・ノルウェーを統一したヴァイキングの王、ハラルド・ブルートゥース(Harald Bluetooth)に由来します。1994年にエリクソンが無線ケーブル代替技術として研究を開始し、1998年にはエリクソン・IBM・Intel・Nokia・東芝の5社がBluetooth SIG(Special Interest Group)を設立。1999年にBluetooth 1.0仕様を公開しました。

主なバージョン履歴は以下の通りです:

  • Bluetooth 1.0 / 1.1(1999〜2001年): 最大1Mbps(実効700kbps程度)、基本的な音声・データ通信
  • Bluetooth 1.2(2003年): AFH(Adaptive Frequency Hopping)で干渉耐性向上、eSCO対応
  • Bluetooth 2.0 + EDR(2004年): EDR(Enhanced Data Rate)で最大3Mbps、A2DP対応で音楽ストリーミングが普及
  • Bluetooth 2.1 + EDR(2007年): SSP(Secure Simple Pairing)でペアリング簡素化
  • Bluetooth 3.0 + HS(2009年): 802.11をデータ転送に利用した高速転送(理論値24Mbps)
  • Bluetooth 4.0(2010年): BLE(Low Energy)を統合。デュアルモード対応へ
  • Bluetooth 5.x(2016年以降): 通信距離・速度向上、広告拡張対応

技術仕様

物理層(PHY)

パラメータBR(Basic Rate)EDR(Enhanced Data Rate)
変調方式GFSKπ/4-DQPSK / 8DPSK
最大スループット1 Mbps3 Mbps
実効スループット約700 kbps約2.1 Mbps
周波数帯域2.402〜2.480 GHz2.402〜2.480 GHz
チャンネル数79チャンネル(1MHz間隔)79チャンネル
周波数ホッピング1,600回/秒1,600回/秒
最大通信距離Class 1: 100m / Class 2: 10m / Class 3: 1m同左
出力電力Class 1: 100mW(20dBm) / Class 2: 2.5mW(4dBm) / Class 3: 1mW(0dBm)同左

プロトコルスタック

Bluetooth Classicのプロトコルスタック構造:

アプリケーション層
├── プロファイル(A2DP / HFP / HID / SPP / OPP など)
├── GAP(Generic Access Profile):デバイス発見・接続管理
├── SDP(Service Discovery Protocol):サービス検索
└── コアプロトコル
    ├── RFCOMM(シリアルポートエミュレーション)
    ├── BNEP(ネットワークプロファイル)
    ├── L2CAP(Logical Link Control and Adaptation Protocol)
    ├── HCI(Host Controller Interface)
    ├── LMP(Link Manager Protocol)
    └── Baseband(物理層)

主要プロファイル

プロファイル略称用途
Advanced Audio Distribution ProfileA2DP高品質音楽ストリーミング(SBC / AAC / aptX など)
Hands-Free ProfileHFPハンズフリー通話
Headset ProfileHSPヘッドセット
Human Interface Device ProfileHIDキーボード・マウス
Serial Port ProfileSPPシリアル通信エミュレーション
Object Push ProfileOPPファイル転送
File Transfer ProfileFTPファイル管理
Personal Area Networking ProfilePANネットワーク共有

動作原理

ピコネットとスキャッタネット

Bluetooth Classicはピコネット(Piconet)と呼ばれる小規模ネットワーク単位で動作します:

  • マスター: ピコネットを制御するデバイス(1台)
  • スレーブ: マスターに接続するデバイス(最大7台アクティブ、最大255台パーク状態)
  • スキャッタネット: 複数のピコネットをブリッジするデバイスが参加する構成

周波数ホッピング(FHSS)

2.4GHz帯はWi-Fi・電子レンジ・ZigBeeなど多くの機器が混在します。Bluetooth ClassicはFHSS(Frequency Hopping Spread Spectrum)を採用し、79チャンネルを1秒間に1,600回切り替えることで干渉耐性を確保します。

Bluetooth 1.2以降はAFH(Adaptive Frequency Hopping)により、使用中のチャンネルを動的に回避できます。

接続シーケンス

1. インクワイアリ(Inquiry)
   → マスター候補がIAC(Inquiry Access Code)を送出
   → スレーブがFHS(Frequency Hop Synchronization)パケットで応答

2. ページング(Paging)
   → マスターがターゲットのBDアドレスを使いページアクセスコードを送信
   → スレーブが応答し、タイミング同期を確立

3. 認証・暗号化
   → PINコードまたはSSP(Secure Simple Pairing)でペアリング
   → リンクキーを生成・保存

4. データ転送
   → ACL(非同期接続)またはSCO/eSCO(同期接続:音声)リンクを確立

音声通信(SCO / eSCO)

音声通信はSCO(Synchronous Connection Oriented)リンクを使用します:

  • SCO: 固定64kbpsのPCM音声、CVSD符号化
  • eSCO(Bluetooth 1.2以降): 再送制御あり、より高品質な音声
// LinuxのBlueZでSCOソケットを開く例
int sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO);
struct sockaddr_sco addr;
memset(&addr, 0, sizeof(addr));
addr.sco_family = AF_BLUETOOTH;
str2ba("XX:XX:XX:XX:XX:XX", &addr.sco_bdaddr);
connect(sock, (struct sockaddr *)&addr, sizeof(addr));

用途・ユースケース

音声・音楽

最も普及しているのが音声関連用途です:

  • ワイヤレスヘッドフォン・イヤホン: A2DPでハイレゾ相当のストリーミング(aptX HD / LDAC)
  • スピーカー: Bluetooth対応ポータブルスピーカー
  • カーオーディオ: HFP/HFPでハンズフリー通話、A2DPで音楽再生
  • ヘッドセット: コールセンター・ゲーミングヘッドセット

周辺機器

  • キーボード・マウス: HIDプロファイルでPCやタブレットに接続
  • ゲームコントローラー: PS・Xbox等のコントローラー
  • プリンター: BPPプロファイルでワイヤレス印刷

産業・組み込み

  • シリアル通信代替(SPP): RS-232Cケーブルの無線化
  • データ収集: POS端末・ハンディターミナルとの通信
  • 医療機器: 生体信号モニタリング(HDP:Health Device Profile)

実装・開発のポイント

モジュール選択

組み込み開発では、以下のようなBluetooth Classicモジュールが一般的です:

モジュールメーカー特徴
CSR8635QualcommA2DP/HFP対応、音声処理内蔵
BC127Sierra WirelessAT コマンドで制御
RN52Microchip小型、SPP/HFP/A2DP対応
ESP32EspressifWi-Fi + Bluetooth Classic + BLE の三刀流

ESP32はBluetooth ClassicとBLEの両方を搭載しており、組み込み開発で人気があります。

ESP32でのBluetooth Classic(A2DP)実装例

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
    // I2S出力先のDAC設定
    i2s_config_t i2s_config = {
        .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
        .sample_rate = 44100,
        .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
        .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
        .communication_format = I2S_COMM_FORMAT_STAND_I2S,
        .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
        .dma_buf_count = 8,
        .dma_buf_len = 64,
    };
    a2dp_sink.start("MyBTSpeaker");  // デバイス名を設定してA2DP受信開始
}

void loop() {
    // A2DPはバックグラウンドで動作
}

SPPによるシリアル通信例

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
    Serial.begin(115200);
    SerialBT.begin("ESP32_SPP");  // デバイス名
    Serial.println("SPP Ready to pair");
}

void loop() {
    if (SerialBT.available()) {
        char c = SerialBT.read();
        Serial.write(c);          // UARTへ転送
    }
    if (Serial.available()) {
        char c = Serial.read();
        SerialBT.write(c);        // BTへ転送
    }
}

ペアリング・セキュリティ

  • レガシーペアリング(Bluetooth 2.0以前): PINコード(4〜16桁)を両デバイスで入力
  • SSP(Secure Simple Pairing、Bluetooth 2.1以降): Numeric Comparison / Passkey Entry / Just Works / Out of Band の4方式
  • セキュアコネクション(Bluetooth 4.1以降): ECDH鍵交換でより強固な暗号化

他技術との比較

Bluetooth Classic vs BLE

項目Bluetooth ClassicBLE
最大スループット3 Mbps(EDR)2 Mbps(BT5)
消費電力中〜高(数十〜数百mA)低(数µA〜数mA)
レイテンシ100ms程度数ms〜数十ms
音声通信対応(SCO/eSCO)非対応(LC3コーデックはBT5.2+)
主用途音声・高スループット通信センサー・IoT・ビーコン
接続台数マスター1台+スレーブ7台多数接続可能

音楽再生や音声通話にはBluetooth Classic、電池寿命重視のIoT機器にはBLEが適しています。

Bluetooth Classic vs Wi-Fi

項目Bluetooth ClassicWi-Fi
通信距離〜100m(Class 1)〜数百m
スループット最大3Mbps数百Mbps〜数Gbps
消費電力低〜中高め
ネットワーク構成ピコネット(P2P中心)インフラモード・AP経由
インフラ不要はい(P2P)通常はAP必要

大容量データ転送や既存ネットワーク接続にはWi-Fiが優位ですが、機器間の直接接続・音声通信・省電力ではBluetooth Classicが適します。

関連用語

参考リンク