High Speed Network Technologies

Bluetooth

Link Manager Protocol (LMP) Part C Version 1.0B



During our creation, modeling and validation of this protocol, we discovered problems and holes, which we fixed based on our understanding. Below is a list of those assumptions.

  1. LMP has no states defined (i.e. no Finite State Machine (FSM)); therefore we created an FSM with seven (7) states.
    OFF state means initial state, there is no connection for LMP.
    BEGIN state means that one device begins to create ACL connection, i.e. sending or receiving LMP_host_connect_req message for local or remote device.
    REQ state means ACL connection request accepted.
    ON state means that ACL connection setup is completed and one device is in normal working state.
    SNIFF state, or HOLD state, or PARK state means one device is in sniff mode, or hold mode, or park mode.
  2. Since it is not always clear what events trigger LMP events, we needed to define some signals(enabling conditions) of our own.
  3. A new procedure was added to version B which attempts to remove collisions of initiating procedures between the master and the slave, since this is a general blanket statement, we follow the following assumption:
    To avoid collisons, the master shall reject the slave-initiated procedure by sending LMP_not_accepted with the reason code "LMP Error Transaction Collision". The master-initiated procedure shall then be completed. For example, both devices initiates the LMP_encryption_mode_req message at the same time.
  4. We also assumed that only one procedure was permittted to be in transaction on a single device at a time.
  5. In order to simplify the SDL program, some procedures run only one time, for example, LMP Version, Name Request, and Supported Features.
  6. Our modeling of two LMP devices communicating together is not done on a dynamic point of view, therefore some situations can occur in our model that cannot occur in a real implementation.
    For example, if both devices initiate LMP_host_connection_req message to create one connection at the same time, both are not accepted because there is no way to define Master and Slave.
  7. Under the PARK state, if receiving ACL disconnect command, there may be three possible choices: simply ignore it, save it for SDL, or run it. If running it for master, later on there is no way to remove the PARK state of slave, because slave must be unparked by master. Therefore, currently save is used for SDL programming.
  8. After an ACL connection is created, at most three SCO links may be established through the ACL connection and then only SCO links exist between both devices. If one device needs to run an ACL procedure, firstly it needs to determine whether the slot are full of SCO packets; if not, then determine whether HV1 packets are transmitted; if yes, determine whether the length of ACL packet is less than 10 bytes, if yes, ACL packets can be transmitted. Actually, all these information are extracted from Baseband level.
  9. For LMP messages, some decisions of next action are based on the Baseband level or even higher levels. Temporarily the LMP program is separated from Baseband and higher levels, so the decision is made randomly, even some variables are defined, but the values are not fixed, e.g., accept_key_size, accept_hold_mode, etc.
  10. According to Appendix IX Message Sequence Charts of Bluetooth Specification Vesion 1.0B, for the pairing procedure in Section 3.2.1 or change of connection link key procedure in Section 4.3, the Bluetooth devices must go through mutual authentication based on the new combination key, which is not described in Part C for the Link Manager Protocol. Currently the SDL program does not contain the mutual authentication after a new combination key is created.


Project Contact

For inquiries regarding this project, contact David Cypher


NIST is an agency of the U.S. Commerce Department's   Technology Administration
Disclaimer
Privacy Statement/Security Notice

Created: March, 1999
Last Update: August 1, 2000
Web Page Contact: David Cypher at david.cypher@nist.gov