Bluez does not send LMP in_rand after oximeter sends LMP not_accepted in response to LMP au_rand
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
bluez (Ubuntu) |
Expired
|
Undecided
|
Unassigned |
Bug Description
We paired Nonin Oximeter to Bluetooth module running Bluez stack 4.99. All operation is good. After some time, the Nonin oximeter sends out "not_accepted" response to the "au_rand" message from Bluetooth module.
au_rand contains a random number that is encrypted by link key. When au_rand is not accepted, meaning the oximeter cannot compute the same number using the link key. So the problem is with the link key, meaning the oximeter link key database is corrupted.
In normal case, BT module challenges oximeter by sending the random 128-bit value AU_RAND and expects from oximeter the response:
SRES = E(K, AU_RAND, BD_ADDR_OXIMETER)
K is link key, E is Bluetooth authentication function. The oximeter receives the AU_RAND and sends back SRES as response.
But when oximeter send not_accepted after it receives au-rand, meaning the oximeter link key database is corrupted. The BT module can demand a new pairing by sending LMP in_rand, or it can refuse the connection and sends LMP detach. The Bluez stack in BT module simply detach the link.
So we need to modify Bluez stack for solving this "No data is transmitted from Oximeter after some time" problem. Bluez need to be modified to demand a new pairing by sending LMP in_rand, if oximeter returns LMP not_accepted in response to LMP au_rand.
Please use 'apport-collect 1019982' to add additional debugging information to this bug report.
Thanks in advance.