Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1 octet = 1 byte = 8 bits

Preamble1 octet
Access-Address4 octets
PDU
  • PDU Header = 2 octets
  • PDU Payload = AdvA (6 octets)+AdvData (0...31 octets)
CRS3 octets

There are different PDU types:

...

Configurable settings are shown below:

PropertyDescription
antenna (string; Default: internal)Choose whether to use an internal or an external Bluetooth antenna
name (string; Default: )Descriptive name of Bluetooth chip/interface

random-static-address (MAC address; Default: )

A user-configurable address for the Bluetooth chip

You can monitor chip stats with the command:

...

Configurable settings are shown below:

PropertyDescription
ad-structures (string; Default: )Choose a pre-configured structure for the advertisement packets. For more information see the "AD structures" section.
channel-map (37 | 38 | 39; Default: 37, 38, 39)Channels used for advertising.

disabled (yes | no; Default: yes)

An option to disable or enable the Bluetooth chip to broadcast advertising packets.

max-interval (integer:20..10240; Default: 2560 ms)

The maximal interval for broadcasting advertising packets.

min-interval (integer:20..10240; Default: 1280 ms)

The minimal interval for broadcasting advertising packets.

own-address-type (public | random-static | rpa-fallback-to-public | rpa-fallback-to-random; Default: random-static)

The MAC address that is going to be used in the advertising packet's payload:

  • public →  To use the IEEE registered, permanent address.
  • random-static →  To use user-configurable address (will be changed on the next power-cycle).
  • rpa-fallback-to-public → To use Resolvable Random Private Address (RPA) that can only be resolved if the receiver has our Identity Resolving Key (IRK). If RPA can not be generated, the public address will be used instead.
  • rpa-fallback-to-random → Same as "rpa-fallback-to-public" but if RPA can not be generated, the random-static address will be used instead.

note: Advertising packets will be broadcasted each min-interval <= X <= max-interval milliseconds.

...

Configurable properties are shown below:

PropertyDescription
data (string; Default: )Define advertising packet's AdvData part of the payload
name (string; Default: )Descriptive name of AD structure

type (complete-local-name | manufacturer-data | short-local-name | service-data; Default: )

An option to set AD structure's type:

  • 0x08 "Shortened Local Name"
  • 0x09 "Complete Local Name"
  • 0xFF "Manufacturer Specific Data"
  • 0x20 "Service Data 32-bit"

If, for example, the "Shortened Local Name" type is chosen and the "data" field is configured with "TEST" → AdvData part of the payload is going to look like this:

...

Currenetly, only "central" role is supported. "Pheriperal device" role, "pairing" and "encryption" options are not supported.

Availible sections are:

SectionDescription
async-dataused to view subscribed data.
characteristicsused to view all supported characteristics of the device.
connectused to connect to the device that is in the connactable state.
disconnectused to disconnect from the device.
readused to read characteristics values.
writeused to write characteristics values.
subscribeused to subscribe to a charasteristic value.
unsubscribeused to unsubscribe from a charasteristic value.

In order to connect to a Bluetooth device that is in the connactable state, use the command (where pdev is the device address):

...

Configurable properties are shown below:

PropertyDescription
disabled (yes | no; Default: no)An option to disable or enable the Bluetooth chip to receive advertising reports.
filter-duplicates (keep-newest | keep-oldest | keep-unique | off; Default: off)

An option to discard duplicate advertisements from the same advertiser:

  • keep-newest → Keeps the newest report (discards the oldest). Only the newest PDU from a single AdvA will be kept.
  • keep-oldest → Keeps the oldest report (discards the newest). Only the oldest PDU from a single AdvA will be kept. This type of PDU filtering happens at the controller level and as such it's the most efficient (energy/bandwidth-wise) method of duplicate filtering.
  • keep-unique → Only displays advertisements that have a unique payload. Meaning, if 1+ identical payloads (AdvData) are found, only the first payload is going to be displayed, while the "clones" are discarded/ignored.
  • off → Duplicates are not discarded. All PDUs with the same AdvA will be kept.
Info

A duplicate advertising report is an advertising report sent from the same device address. The actual data ("AdvData" part of the payload) may change/differ and it is not considered significant when determining duplicate advertising reports. Meaning that, for example, if the Bluetooth interface receives 10 payloads (payload after payload with a 1-second interval) from the same tag:

  • if you are using the "keep-oldest" setting → Bluetooth interface will only display the first payload received (9 follow-up payloads will be filtered out) from that tag.
  • if you are using the "keep-newest" setting → Bluetooth interface will only display the last payload received (each follow-up payload will rewrite the previous one) from that tag.


filter-policy (default | whitelist | no; Default: default)

An option to set up a filtering policy (controller-level advertisement filtering):

  • default → When this policy is enabled, the scanner will only accept ADV_IND, ADV_NOCONN_IND, ADV_SCAN_IND, SCAN_RSP, and ADV_DIRECT_IND (where TargetA is the scanner's own Bluetooth address) PDU types.
  • whitelist → When this policy is enabled, the scanner will only accept ADV_IND, ADV_NOCONN_IND, ADV_SCAN_IND, SCAN_RSP PDU types that are broadcasted by the advertiser, whose address is configured in the "Whitelist" section, and ADV_DIRECT_IND type PDU (where TargetA is the scanner's own Bluetooth address).

interval (integer:3..10240; Default: 10 ms)

Time after which scanner will start scanning the next advertisement channel.

own-address-type (public | random-static | rpa-fallback-to-public | rpa-fallback-to-random; Default: random-static)

Address type used in scan requests (if active scanning type is used):

  • public →  To use the IEEE registered, permanent address.
  • random-static →  To use user-configurable address (will be changed on the next power-cycle).
  • rpa-fallback-to-public → To use Resolvable Random Private Address (RPA) that can only be resolved with our Identity Resolving Key (IRK). If RPA can not be generated, the public address will be used instead.
  • rpa-fallback-to-random → Same as "rpa-fallback-to-public" but if RPA can not be generated, the random-static address will be used instead.

type (active | passive; Default: passive)

Defines the scanner's type:

  • active → Scanner can send scan requests if it receives a scannable advertisement. The scanner can send a SCAN_REQ in order to acquire a SCAN_RSP response.
  • passive → Scanner will only listen for advertisements, no data (e.g. scan requests) will be sent.
window (integer:3..10240; Default: 10 ms)The time that the scanner will spend scanning a single advertisement channel.

For example, if the scanner interval is set to 20ms, it means that only after 20ms, the device will begin scanning the next channel in line. If the scanner window is set to 10ms, it means that the device will scan each channel only during that 10ms window. Meaning, it will scan channel 37 for 10ms (window time) and begin scanning the next channel after 10 more ms (20ms[interval]-10ms[window]). It will take 10ms to scan channel 38, and after 10 more ms, the device will begin scanning channel 39.

...

Possible filters (you can filter the list of advertising reports with the help of the following parameters):

FilterDescription
addressBluetooth advertisers address
address-typeAdvertisers address type (for example, public or random)

data

Advertisement data in hex format (AdvData payload)
deviceBluetooth chip/interface name
epochMilliseconds since Unix Epoch
filter-commentComment of the matching whitelist filter
lengthAdvertisement data length
pdu-typeAdvertisement PDU type
rssiSignal strength
timeTime of the advertisement packet reception

Whitelist

In this tab, it is possible to configure a whitelist that is going to be used in the filter policy in the "Scanners" section. In other words, an option to specify which Bluetooth addresses are going to be scanned (displayed in the "Advertising reports").

...

Code Block
languageros
/iot bluetooth whitelist print
Columns: DEVICE, ADDRESS-TYPE, ADDRESS
# DEVICE  ADDRESS-TYPE  ADDRESS    
0 bt1     
0any bt1     public        08:55:31:CF:F3:9C*:*:*:*:*:*

You can add a new whitelist entry with the command:

Code Block
languageros
/iot bluetooth whitelist add 

Configurable properties:

PropertyDescription
address (MAC address; Default: )Advertiser's address
address-type (any | public | random; Default:)Advertiser's address type

comment (string; Default: )

Short description of the whitelisted entry
copy-fromAn option to copy an entry - for more information check the console documentation
device (bt1; Default: )Select the Bluetooth interface/chip name
disabled (yes | no; Default: )An option to disable or to enable the entry


Info
Only 8 whitelisted entries can be added prior to 7.14beta8 version.
Starting with 7.14beta8 version, whitelist is no longer limited to 8 entries and address field supports asterisk wildcards.

If, for example, you want to whitelist all MAC addresses that begin with "DC:2C:..." octets, add an entry using wildcard asterisk characters:

Code Block
languageros
/iot bluetooth whitelist add address=DC:2C:*:*:*:*

Wildcard asterisk can not be used in-between specific octets, like "AA:*:*:BB:*:*" (it is an invaldi entry).

Valid entries would be:

  • AA:BB:CC:DD:*:*
  • AA:BB:CC:DD:EE:*
  • AA:*:*:*:*:*

Peripheral Devices

This section displays decoded Eddystone TLM, Eddystone UID, iBeacon and MikroTik Bluetooth payloads. If the "Peripheral Devices" captures other beacon types, they will not be decoded.

...