BlueTooth advertising data
-
Tag: Bletooth data
This is maybe easier to see here:
http://bellacon.com/Forum/advertising.html
I am trying to receive content of advertising packet as I am receiving using TI sniffer.
When my adv data is set to test pattern:
010102030405060708090a0b0c0d0e0f1011121314151617
I can clearly see it in TI sniffer:

As well in content of adv.data:
(mac=b'\xb4\x99Ld\xba\xc9', addr_type=0, adv_type=0, rssi=-55, data=b'\x01\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\xca\x00\xf8\xff\xfd?\x1c')
b'\x01\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\xca\x00\xf8\xff\xfd?\x1c'
010102030405060708090a0b0c0d0e0f1011121314151617ca00f8fffd3f1c
NoneCode to print above lines is:
adv = bluetooth.get_adv()
print(adv)
print(adv.data)
print( binascii.hexlify(adv.data).decode("utf-8"))print(bluetooth.resolve_adv_data(adv.data, Bluetooth.ADV_MANUFACTURER_DATA))
When advertising packet data changes to contain my sensor data, there is Scan request performed by WiPy as it is clerly visible on sniffed data below:

and there is no mention of needed data:
01A8681E.....
in WiPy output...:
(mac=b'\xb4\x99Ld\xba\xc9', addr_type=0, adv_type=0, rssi=-54, data=b'\x01h\n\tSensorTag\x05\x12P\x00 \x03\x02\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
b'\x01h\n\tSensorTag\x05\x12P\x00 \x03\x02\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
01680a0953656e736f72546167051250002003020a00000000000000000000
NoneSo my question is: How do I receive data contained in Advertising packet (01A8 to 9F01) ???
bluetooth = Bluetooth()
bluetooth.start_scan(-1)
allmessagecount=0while True:
try:
adv = bluetooth.get_adv()if adv:
if (allmessagecount %2) == 0:
pycom.rgbled(0x000030)
else:
pycom.rgbled(0x00007f)
allmessagecount=allmessagecount+1gc.collect()
print(adv)
print(adv.data)
print( binascii.hexlify(adv.data).decode("utf-8"))mfg_data = bluetooth.resolve_adv_data(adv.data, Bluetooth.ADV_MANUFACTURER_DATA)
print(mfg_data)except Exception as err:
print('MainLoop-ERR#: ',err)
gc.collect() -
Make sure you are sending the correct length and AD types according to the ADVERTISING AND SCAN RESPONSE DATA FORMAT (page 2081 on the Bluetooth 4.2 Core Spec - you can access the specification here https://www.bluetooth.com/specifications/adopted-specifications ).
If you're looking to use BLE advertising packets to send your data you probably want to use AD type 0xFF (Manufacturer Specific Data) followed by the 2 company identifier octets.
So your format should be 1 byte length + 0xFF + <2 bytes company identifier> + your data then filled with 00 until the 31 byte limit.
You can't read improperly formatted advertising data.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login