Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    BlueTooth advertising data

    Scheduled Pinned Locked Moved MicroPython
    bluetoothadvertisingproblemsniffer
    2 Posts 2 Posters 2.5k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Z Offline
      zmrzli
      last edited by

      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:

      alt text

      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
      None

      Code 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:

      alt text

      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
      None

      So my question is: How do I receive data contained in Advertising packet (01A8 to 9F01) ???

      bluetooth = Bluetooth()
      bluetooth.start_scan(-1)
      allmessagecount=0

      while True:
      try:
      adv = bluetooth.get_adv()

      if adv:

      if (allmessagecount %2) == 0:
      pycom.rgbled(0x000030)
      else:
      pycom.rgbled(0x00007f)
      allmessagecount=allmessagecount+1

      gc.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()

      J 1 Reply Last reply Reply Quote 0
      • J Offline
        jmarcelino @zmrzli
        last edited by jmarcelino

        @zmrzli

        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.

        1 Reply Last reply Reply Quote 2

        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
        • 1 / 1
        • First post
          Last post

        Pycom on Twitter

        Pycom