LMP
読み:エルエムピー
外語:LMP: Link Manager Protocol
Bluetooth
の
リンクマネージャー層
の
通信プロトコル
。
GAP
の一部。
目次
概要
特徴
パケット
パケット構造
オペコード(OpCode)
フィーチャーマスク
拡張フィーチャーマスク
概要
ACL論理トランスポートで接続された二つのデバイス間における、
リンクマネージャー
(LM)間の通信に使われるプロトコルである。リンクマネージャーは
ベースバンド層
の
リンクコントローラー
の上にあり、
ペアリング
や暗号化はこのプロトコルで行なわれている。
二つのデバイス間における、接続やネゴシエーションなどあらゆる動作で使用されており、論理リンクの設定と制御、および物理リンクの制御が含まれている。全てのLMPメッセージは、送信側と受信側のデバイス間における、物理リンク、および関連付けられている論理リンクと論理トランスポートにのみ適用される。
二つのデバイス間での、デフォルトACL論理トランスポート上のACL-C論理リンク(ACL CONTROL LOGICAL LINK)を介して転送する際の一連のメッセージで構成されている。LMPメッセージが解釈された際にはLMに対して作用し、直接より高いプロトコル層に伝播しない。
特徴
パケット
LMPメッセージは、
ベースバンド層
のDM1パケット(ACLリンク)を使用して送信する。
ただし、HV1 SCOリンクが使用され、ペイロード長が9バイトに満たない場合、DVパケットが使用されることもある。DVパケットについては、Bluetooth 3.0/4.0仕様書では共に6.5.2.4に説明がある。
パケット構造
7ビットオペコード時
TID: 1ビット (0=PDUはマスター、1=PDUはスレーブ)
OpCode: 7ビット
Payload
OpCodeの値が特殊なエスケープ値124から127までの場合は、OpCodeが15ビットとなる。
TID: 1ビット (0=PDUはマスター、1=PDUはスレーブ)
Escape OpCode: 7ビット
Extended OpCode: 8ビット
Payload
オペコード(OpCode)
次の4つは拡張用。
Escape 1 ‐ 124
Escape 2 ‐ 125
Escape 3 ‐ 126
Escape 4 ‐ 127
以下、PDU一覧(LMP PDU名ABC順)。番号はすべて10進数。ペイロードの構造については仕様書を参照のこと。
LMP_accepted ‐ 3
LMP_accepted_ext ‐ 127/01
LMP_au_rand ‐ 11
LMP_auto_rate ‐ 35
LMP_channel_classification_req ‐ 127/16
LMP_channel_classification ‐ 127/17
LMP_clkoffset_req ‐ 5
LMP_clkoffset_res ‐ 6
LMP_comb_key ‐ 9
LMP_decr_power_req ‐ 32
LMP_detach ‐7
LMP_DHkey_Check ‐65
LMP_encapsulated_header ‐ 61
LMP_encapsulated_payload ‐ 62
LMP_encryption_key_size_mask_req ‐ 58
LMP_encryption_key_size_mask_res ‐ 59
LMP_encryption_key_size_req ‐ 16
LMP_encryption_mode_req ‐ 15
LMP_eSCO_link_req ‐ 127/12
LMP_features_req ‐ 39
LMP_features_req_ext ‐ 127/03
LMP_features_res ‐ 40
LMP_features_res_ext ‐ 127/04
LMP_host_connection_req ‐ 51
LMP_hold ‐ 20
LMP_hold_req ‐ 21
LMP_incr_power_req ‐ 31
LMP_in_rand ‐ 8
LMP_IO_Capability_req ‐ 127/25
LMP_IO_Capability_res ‐ 127/26
LMP_pause_encryption_req ‐ 127/23
LMP_resume_encryption_req ‐ 127/24
LMP_max_power ‐ 33
LMP_max_slot ‐ 45
LMP_max_slot_req ‐ 46
LMP_min_power ‐ 34
LMP_modify_beacon ‐ 28
LMP_name_req ‐ 1
LMP_name_res ‐ 2
LMP_numeric_comparison_failed ‐ 127/27
LMP_not_accepted ‐ 4
LMP_not_accepted_ext ‐ 127/02
LMP_packet_type_table_req ‐ 127/11
LMP_page_mode_req ‐ 53
LMP_page_scan_mode_req ‐ 54
LMP_park_req ‐ 25
LMP_passkey_failed ‐ 127/28
LMP_oob_failed ‐ 127/29
LMP_keypress_notification ‐ 127/30
LMP_preferred_rate ‐ 36
LMP_quality_of_service ‐ 41
LMP_quality_of_service_req ‐ 42
LMP_remove_eSCO_link_req ‐ 127/13
LMP_remove_SCO_link_req ‐ 44
LMP_SCO_link_req ‐ 43
LMP_set_AFH ‐ 60
LMP_set_broadcast_scan_window ‐ 27
LMP_setup_complete ‐ 49
LMP_Simple_Pairing_Confirm ‐ 63
LMP_Simple_Pairing_Number ‐ 64
LMP_slot_offset ‐ 52
LMP_sniff_req ‐ 23
LMP_sres ‐ 12
LMP_start_encryption_req ‐ 17
LMP_stop_encryption_req ‐ 18
LMP_supervision_timeout ‐ 55
LMP_switch_req ‐ 19
LMP_temp_rand ‐ 13
LMP_temp_key ‐ 14
LMP_test_activate ‐ 56
LMP_test_control ‐ 57
LMP_timing_accuracy_req ‐ 47
LMP_timing_accuracy_res ‐ 48
LMP_unit_key ‐ 10
LMP_unpark_BD_ADDR_req ‐ 29
LMP_unpark_PM_ADDR_req ‐ 30
LMP_unsniff_req ‐ 24
LMP_use_semi_permanent_key ‐ 50
LMP_version_req ‐ 37
LMP_version_res ‐ 38
LMP_sniff_subrating_req ‐ 127/21
LMP_sniff_subrating_res ‐ 127/22
LMP_power_control_req ‐ 127/31
LMP_power_control_res ‐ 127/32
フィーチャーマスク
LMP_features_req PDUを送信すると、相手のLMはLMP_features_res PDUを返す。reqはOpCode=39、resはOpCode=40、長さは共に9である。
フィーチャーは、LMPメッセージで転送されるビットマスクで表わされる。各ビットごとに、フィーチャーをサポートする場合は1、さもなくば0をセットする。
長さは常に8オクテット(64ビット)である。
0オクテット目
0-0 0 ‐ 3 slot packets
0-1 1 ‐ 5 slot packets
0-2 2 ‐ Encryption
0-3 3 ‐ Slot offset
0-4 4 ‐ Timing accuracy
0-5 5 ‐ Role switch
0-6 6 ‐ Hold mode
0-7 7 ‐ Sniff mode
1オクテット目
1-0 8 ‐ Park state
1-1 9 ‐ Power control requests
1-2 10 ‐ Channel quality driven data rate (CQDDR)
1-3 11 ‐ SCO link
1-4 12 ‐ HV2 packets
1-5 13 ‐ HV3 packets
1-6 14 ‐ μ-law log synchronous data
1-7 15 ‐ A-law log synchronous data
2オクテット目
2-0 16 ‐ CVSD synchronous data
2-1 17 ‐ Paging parameter negotiation
2-2 18 ‐ Power control
2-3 19 ‐ Transparent synchronous data
2-4 20 ‐ Flow control lag (least significant bit)
2-5 21 ‐ Flow control lag (middle bit)
2-6 22 ‐ Flow control lag (most significant bit)
2-7 23 ‐ Broadcast Encryption
3オクテット目
3-0 24 ‐ Reserved
3-1 25 ‐ Enhanced Data Rate ACL 2 Mbps mode
3-2 26 ‐ Enhanced Data Rate ACL 3 Mbps mode
3-3 27 ‐ Enhanced inquiry scan
3-4 28 ‐ Interlaced inquiry scan
3-5 29 ‐ Interlaced page scan
3-6 30 ‐ RSSI with inquiry results
3-7 31 ‐ Extended SCO link (EV3 packets)
4オクテット目
4-0 32 ‐ EV4 packets
4-1 33 ‐ EV5 packets
4-2 34 ‐ Reserved
4-3 35 ‐ AFH capable slave
4-4 36 ‐ AFH classification slave
4-5 37 ‐ BR/EDR Not Supported (Bluetooth 4.0〜)
4-6 38 ‐ LE Supported (Controller) (Bluetooth 4.0〜)
4-7 39 ‐ 3-slot Enhanced Data Rate ACL packets
5オクテット目
5-0 40 ‐ 5-slot Enhanced Data Rate ACL packets
5-1 41 ‐ Sniff subrating
5-2 42 ‐ Pause encryption
5-3 43 ‐ AFH capable master
5-4 44 ‐ AFH classification master
5-5 45 ‐ Enhanced Data Rate eSCO 2 Mbps mode
5-6 46 ‐ Enhanced Data Rate eSCO 3 Mbps mode
5-7 47 ‐ 3-slot Enhanced Data Rate eSCO packets
6オクテット目
6-0 48 ‐ Extended Inquiry Response
6-1 49 ‐ Simultaneous LE and BR/EDR to Same Device Capable (Controller) (Bluetooth 4.0〜)
6-2 50 ‐ Reserved
6-3 51 ‐ Secure Simple Pairing
6-4 52 ‐ Encapsulated PDU
6-5 53 ‐ Erroneous Data Reporting
6-6 54 ‐ Non-flushable Packet Boundary Flag
6-7 55 ‐ Reserved
7オクテット目
7-0 56 ‐ Link Supervision Timeout Changed Event
7-1 57 ‐ Inquiry TX Power Level
7-2 58 ‐ Enhanced Power Control
7-3 59 ‐ Reserved
7-4 60 ‐ Reserved
7-5 61 ‐ Reserved
7-6 62 ‐ Reserved
7-7 63 ‐ Extended features
拡張フィーチャーマスク
8オクテットのフィーチャーマスクで不足したため拡張された情報。フィーチャーマスク63(7オクテット目7ビット目)が1の場合、この機能がある。
LMP_features_req_ext PDUを送信すると、相手のLMはLMP_features_res_ext PDUを返す(対応している場合のみ)。reqはOpCode=127/03、resはOpCode=127/04、長さは共に12である。2オクテット目(0から数えた場合、以下同)がfeatures page、3オクテット目がmax supported page、4から11オクテット目がextended featuresである。
ページ0から255までがあり、各ページは64ビットであるため、都合16384ビットもあり拡張性は充分である。未実装のページを要求すれば、相手は全64ビットが0の結果を返すことになり、実装していないことを通知することになる。
なお、ページ0は従来のフィーチャーマスクを意味する。拡張された情報はページ1以降に存在する。
ページ1
0オクテット目
1-0-0 64 ‐ Secure Simple Pairing (Host Support)
1-0-1 65 ‐ LE Supported (Host) (Bluetooth 4.0〜)
1-0-2 66 ‐ Simultaneous LE and BR/EDR to Same Device Capable (Host) (Bluetooth 4.0〜)
再検索