Implement access levels in BLE characteristics

Hi,

I have a BLE interface with services and characteristics and I want to have different level accesses for my characteristics with for example two levels:

  • level user: I can only read the characteristics
  • level technician: I can read and write the characteristics

Is there a way to do that ?

Thanks

Parents
  • Hi ,

    Is it planned to implement this service ?

    Where can I find the list of all implemented BLE services ?

    Is it possible to implement it on my own ? (Not sure I will do it though)

  • To implement your own characteristic I suggest you go through the Bluetooth Low Energy Fundamentals course in the Nordic DevAcademy.

    I don't have any roadmap details, but I doubt that implementing this service is something that will come from us any time soon. Although I don't think there is anything magic about this service in particular, other than that it may be used by other devices as well, since it has a dedicated UUID. You would still need to handle it's behavior in your application.

    As I see it, you have two options:

    1: Go through with pairing/bonding only the technician. The rest can have an unencrypted connection, and these limitations will then not allow them to write to the characteristics that you specify. 

    2: Implement some custom service characteristic with a "password". Then, only if the user have entered the correct password, the device will stop ignoring what is written to the characteristic.

    For 2: Do note that if they are unencrypted, then someone can pick up the password by sniffing the packets over the air.

    What I mean by "ignoring" is something like:

    Everyone can read characteristic Service 1 characteristic A (1A). But only the ones who have written the correct password to Serivce 2 Characteristic A (2A) can successfully write to Service 1 characteristic B (1B). If anyone else tries to write to 1B, it will be ignored. If the technician has done it, your application will copy the content of 1B to 1A, so that everyone can read it.

    Noone can read characteristic 1B. It is a write only characteristic.

    Best regards,

    Edvin

Reply
  • To implement your own characteristic I suggest you go through the Bluetooth Low Energy Fundamentals course in the Nordic DevAcademy.

    I don't have any roadmap details, but I doubt that implementing this service is something that will come from us any time soon. Although I don't think there is anything magic about this service in particular, other than that it may be used by other devices as well, since it has a dedicated UUID. You would still need to handle it's behavior in your application.

    As I see it, you have two options:

    1: Go through with pairing/bonding only the technician. The rest can have an unencrypted connection, and these limitations will then not allow them to write to the characteristics that you specify. 

    2: Implement some custom service characteristic with a "password". Then, only if the user have entered the correct password, the device will stop ignoring what is written to the characteristic.

    For 2: Do note that if they are unencrypted, then someone can pick up the password by sniffing the packets over the air.

    What I mean by "ignoring" is something like:

    Everyone can read characteristic Service 1 characteristic A (1A). But only the ones who have written the correct password to Serivce 2 Characteristic A (2A) can successfully write to Service 1 characteristic B (1B). If anyone else tries to write to 1B, it will be ignored. If the technician has done it, your application will copy the content of 1B to 1A, so that everyone can read it.

    Noone can read characteristic 1B. It is a write only characteristic.

    Best regards,

    Edvin

Children
No Data
Related