BLE - UART Characteristics Stop Showing Up After A Long Local Name

Hello,

I’ve been working on BLE and the guides and examples provided by particle. All is working well but I found a really weird characteristic. I am trying advertise as a UART capable peripheral and loading up the UART example works perfectly well (https://docs.particle.io/tutorials/device-os/bluetooth-le/#uart-peripheral).

However, this UART Capable “tag” seems to disappear after I append a local name which is >=9 characters long. Now I’ve read https://docs.particle.io/reference/device-os/firmware/argon/#appendlocalname- and it mentions:

" The name takes up the length of the name plus two bytes (type and length). The total advertising data is limited to 31 bytes ( BLE_MAX_ADV_DATA_LEN ), and if you include service identifiers there isn’t much left space for the name."

Is this maybe a limitation due to the advertising data limit?

This doesn’t seem to affect functionality but I would like the UART tag since I am trying to filter and only view surrounding devices with this tag.

This can be replicated by just adding a local name to the UART peripheral project. The device I am using is a Boron 3G device on OS 1.4.4. Example:

    BleAdvertisingData data;
    data.appendLocalName("Doug_Devi"); // This name stops the UART characteristics from showing up
    data.appendServiceUUID(serviceUuid);
    BLE.advertise(&data);
    BleAdvertisingData data;
    data.appendLocalName("Doug_Dev"); // UART Characteristics still show up
    data.appendServiceUUID(serviceUuid);
    BLE.advertise(&data);

See screen shots of the Bluefruit app I am using to check this:

Articles/Posts I’ve read:

I’m no expert on BLE - but my guess would be that all advertising packets count up to the 31 byte limit - so if one exceeds that limit, you kill the packet.
Oddly though, I can’t get my Xenon to display your localname - can you send the full code so I can replicate? I can test with my BLE scanner to get some more information - it’s funny that I have all these tools, but I claim to not be an expert :upside_down_face:
(I’ve played with it a ton, but it’s a really complex protocol)

Oddly though, the default LocalName is rather long, and UART does not show either.Screenshot 2020-03-20 at 14.04.19

@no1089 thanks for the reply and feedback. My guess was that as well but I am no expert either. I’ve worked around the issue by just not filtering and checking all scanned BLE devices so this is post is now just for curiousity and not to solve a problem I have anymore.

The full code I am running is acrtually just the UART peripheral tutorial from https://docs.particle.io/tutorials/device-os/bluetooth-le/#uart-peripheral. The only difference is I added the local name in the setup{} function as per the opening post. Can you try loading the tutorial as it as onto your Xenon just to double check everything? Once thats done try adding the 1 line (i.e. data.appendLocalName).

You did bring up a good point that the default name is long as well which is probably longer than the local name I tried so set. I am pretty sure the default name showed UART capabilities but let me double check to make sure. I am heading off for the night but will try this tomorrow or on the weekend.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.