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

Device information service issue

Why does the value of characteristic Firmware Revision, Model Number and Serial Number all have the same value?

Did update value for characteristic <CBCharacteristic: 0x282b1f9c0, UUID = Model Number String, properties = 0x2, value = {length = 19, bytes = 0xffffffffffffffffffffffff48a51234cfa3c8}, notifying = YES>, new value: 19 bytes, error: nil

Did update value for characteristic <CBCharacteristic: 0x282b1fa20, UUID = Serial Number String, properties = 0x2, value = {length = 11, bytes = 0xffffffff48a51234cfa3c8}, notifying = YES>, new value: 11 bytes, error: nil

Did update value for characteristic <CBCharacteristic: 0x282b1fa80, UUID = Firmware Revision String, properties = 0x2, value = {length = 15, bytes = 0xffffffffffffffff48a51234cfa3c8}, notifying = YES>, new value: 15 bytes, error: nil

What am I doing wrong?

And decoding the UTF-8 string does not give me the same string as I get in nRFConnect? In nRFConnect I do get the right ASCII string values.

 

Parents
  • Hi,

    Do you have some context for where you get this log or data dump, what you are doing, etc.?

    All values of the device information service being the same sounds very strange, yes. If it is correctly read in nRF Connect, then it sounds like there is something wrong with the implementation of the tool giving you that data. What tool is it?

    A sniffer log may shed some light on what is actually getting sent over the air, indicating what end of the connection is at fault.

    Regards,
    Terje

  • Hi Terje,

    I get the data from my iOS app. It is a simple service discovery and a characteristic value read. It is very standard. It works correctly with my custom service. And it seems that the UUID's for characteristics of DI-service are correct. For example <CBCharacteristic: 0x282b1fa80, UUID = Firmware Revision String, properties = 0x2, value = {length = 15, bytes = 0xffffffffffffffff48a51234cfa3c8}, notifying = YES> is a readout from Swift 5 Bluetooth Core library

    Though the length of the value is different (as you can see). And the UUID's are different.

    I am curious to know how you read the values in nRFConnect. I know you will not release the code, but could you please let me know how you read the value? Which Swift call do you use to read the UTF-8 value?

    Regards
    Jens

  • HI,

    I am afraid that we do not share the nRF Connect for iOS  code. However, one of our iOS developers may have a look and see what we do differently, if you wish to share your code with us (e.g. through a private ticket if you want the confidentiality).

    One thing that you could try, is to turn Bluetooth off and on again, from the iOS device's Settings. (It has to be done through settings, other ways will not have the same effect.) This will reset the cache. We are talking about the Device Information Service, which is specified by Bluetooth SIG, and for which iOS might assume the values never change (thereby reusing values previously read from a device using the same Bluetooth address, instead of actually reading them from the device.)

    Regards,
    Terje

Reply
  • HI,

    I am afraid that we do not share the nRF Connect for iOS  code. However, one of our iOS developers may have a look and see what we do differently, if you wish to share your code with us (e.g. through a private ticket if you want the confidentiality).

    One thing that you could try, is to turn Bluetooth off and on again, from the iOS device's Settings. (It has to be done through settings, other ways will not have the same effect.) This will reset the cache. We are talking about the Device Information Service, which is specified by Bluetooth SIG, and for which iOS might assume the values never change (thereby reusing values previously read from a device using the same Bluetooth address, instead of actually reading them from the device.)

    Regards,
    Terje

Children
No Data
Related