概要
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 Mbps | 3 Mbps |
| 実効スループット | 約700 kbps | 約2.1 Mbps |
| 周波数帯域 | 2.402〜2.480 GHz | 2.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 Profile | A2DP | 高品質音楽ストリーミング(SBC / AAC / aptX など) |
| Hands-Free Profile | HFP | ハンズフリー通話 |
| Headset Profile | HSP | ヘッドセット |
| Human Interface Device Profile | HID | キーボード・マウス |
| Serial Port Profile | SPP | シリアル通信エミュレーション |
| Object Push Profile | OPP | ファイル転送 |
| File Transfer Profile | FTP | ファイル管理 |
| Personal Area Networking Profile | PAN | ネットワーク共有 |
動作原理
ピコネットとスキャッタネット
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モジュールが一般的です:
| モジュール | メーカー | 特徴 |
|---|---|---|
| CSR8635 | Qualcomm | A2DP/HFP対応、音声処理内蔵 |
| BC127 | Sierra Wireless | AT コマンドで制御 |
| RN52 | Microchip | 小型、SPP/HFP/A2DP対応 |
| ESP32 | Espressif | Wi-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 Classic | BLE |
|---|---|---|
| 最大スループット | 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 Classic | Wi-Fi |
|---|---|---|
| 通信距離 | 〜100m(Class 1) | 〜数百m |
| スループット | 最大3Mbps | 数百Mbps〜数Gbps |
| 消費電力 | 低〜中 | 高め |
| ネットワーク構成 | ピコネット(P2P中心) | インフラモード・AP経由 |
| インフラ不要 | はい(P2P) | 通常はAP必要 |
大容量データ転送や既存ネットワーク接続にはWi-Fiが優位ですが、機器間の直接接続・音声通信・省電力ではBluetooth Classicが適します。