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.
- 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.
- Since it is not always clear what events trigger LMP events, we needed
to define some signals(enabling conditions) of our own.
- 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.
- We also assumed that only one procedure was permittted to be in
transaction on a single device at a time.
- In order to simplify the SDL program, some procedures run only
one time, for example, LMP Version, Name Request, and Supported Features.
- 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.
- 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.
- 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.
- 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.
- 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
|