Manufacturer Specific Data null

Hi! I am coding a datafield that should be able to scan nearby devices and get their manufacturer specific data without connecting or pairing. These devices are like beacons, broadcasting data via the Manufacturer section. Since I have developed the code for this beacons, the manufacturer id is a made up one. 

When I try reading the manufacturer specific data, it returns "null". If I try getting the raw data, it works fine and returns 20 bytes. Is there any specific structure that Garmin accepts for Manufacturer Specific Data? (Given that I can modify the sctructure on the MCUs...)

If I use a scanning app like LightBlue, I can definetely see these beacons advertising the data structure under the manufacturer section.

I have been stucked with this for a while, so any advice will be greatly appreciated Slight smile

  • Did you try using an ID of some known manufacturer? Preferably one that you know is recognized by Garmin.

  • You didn't mention it, but sounds like you are using BLE and scanning.

    Garmin CIQ won't see all devices, and even if it does, you wont see everything.

    Try my app, blescan, and you can see exactly what CIQ can see..

    apps.garmin.com/.../9bcc8b66-8385-4afb-b93e-f69e01422284

  • So, I actually tried BleScan, but does your app use the getManufacturerSpecificData() or the getManufacturerSpecificDataIterator()? I can't see any data on my near by devices related to manufacturer data using your BleScan App. I can see the name of the device and RawData but not the Manufacturer data... My devices do appear on your App tho.

    Indeed, I am using Toybox.BluetoothLowEnergy.ScanResult

  • Would try that, I am trying to figure out if there is a list out there for the manufacturers recognized by garmin...

  • Would try that, I am trying to figure out if there is a list out there for the manufacturers recognized by garmin...

    I am not aware of any, but for example Garmin self would be certainly among them Wink And then diverse manufacturers of commonly used sensors and devices, such as Polar, Stryd, and many others.

  • Good call, will test that and report back soon :)

  • If I recall, it's contained in the raw data.  And raw data is already limited. as far as what you can see.

  • First, I could be totally wrong so feel free to correct me :)  I am able to read the manufacturer data from a Samsung device. I can't read it on my beacon and I think it is because the CIQ expects a very specific format to be able to read it. Same thing happens with devices names on the adv packages. If you don't have an Adv. packet with your device name in HEX in a very specific format, the CIQ will return "null" as previously mentioned on other posts and discussions. I will report back when I figure out the specific format required. Would be nice if Garmin would provide that...[edit, I may have found something, so hang in there]

    @jim_m_58 your BleScan gets the Raw data, which in some cases includes the manufcaturer data and for some it gets cut. I think getting a call with the ManufacturerSpecificData would be great. You may have to use the Iterator instead since you won't know the manufacturer id automatically...It could be a great addition!

    Anyway, I will report my findings if I found out anything else.

  • CIQ's BLE is a VERY minimal implementation, where there are things like the max amount of raw data is very limited, as is the amount of data which can be read or sent to a characteristic,

    The limit for raw data seems to be about 30 bytes.  You'll also note you'll never even see the BLE Mac address. (for security reasons)

  • Yes, but if you do two separate calls (one for RawData and another one for the Manufacturing Data) you can actually capture more info about the device. I haven't tried the ManufacturingDataIterator yet, but I noticed that for the CIQ to be able to read the Manufacturer Specific Data, that data has to be in Little-Endian. If the external beacon is advertising it in another format, the CIQ will return null.