This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

BLE UART example pairing? password?

I noticed when using the UART BLE Example that there is no password or pairing request to connect to and use the device. 

Everything works fine, and I even implemented my own little password thing that has to present a password over the active connection before itll start sending data over the UART connection. 

The trouble is, there is no paring password or code, or password in order to connect. I cant figure out how to fix that situation, any ideas? 

This is causing me a problem in the Denial of Service area. Someone can connect to the device, and just leave it idle and connected, preventing an authorized user from connecting. This is starting to happen to me in school situations because of nefarious students. 

Parents Reply Children
  • Ok. So, I downloaded the 15.2 SDK along with your example, I compiled it and ran it as-is without modifications just so I can start with a known good baseline. It still allows me to connect without pairing to the device so something is wrong somewhere. Also when running in the debugger, it randomly encounters Fatal Errors and the BT module needs reset. Alot.... 

    Then when I do go to pair it, I get this output in the debugger:

    <info> peer_manager_handler: Connection security failed: role: Peripheral, conn_handle: 0x0, procedure: Bonding, error: 132

    Thoughts? 

  • So, I did a full erase and it seems to have solved most of it. But, once I pair it, if I unpair it for any reason, I cant ever re-pair it. 

    Debug log spits out:<info> peer_manager_handler: Connection security failed: role: Peripheral, conn_handle: 0x0, procedure: Bonding, error: 133

    When attempting to pair again. 

    Also I noticed that the device is not discoverable in iOS now. the BLE Apps wont pick it up, and neither will the bluetooth settings window. It used to. (prior to this).

    Also when it idles for around 10 maybe 15 minutes, it will encounter a fatal error code 0x2006. I had to comment out the enter sleep mode subroutine, but itll eventually stop advertising instead. 

    Ugh. Any ideas? 

    Edit: Now its back to its old shenanigans. it allows connections without pairing, and when you try to pair, I get error codes that range from 132 to 136. Bonding error. I am at a loss. 

  • Check out this answer, which shows you how to allow repairing.

    Best regards,

    Simon

  • Thanks for the direction, I will toy with it. The last concern is the bonding storage. I am also using storage for AT commands to be able to change the name, password, etc... and I dont want those two to collide. Any thoughts on how to avoid that? Thanks. 

  • So I gave up after beating my head against the wall with this. its too unstable, and the API doesnt really help because its kind of cryptic. It finally decided to start working with re-pairing on android, but iOS would never ask to pair. Which is important because iOS is my target for this bluetooth setup. So I shitcanned the whole project and went a different direction with my older file/SDK by implementing an App Timer to check the state of authorization, if I dont send a password within a certain amount of time it will boot the connection as someone else suggested. 

Related