Type: array

BlueTooth Information Data Exchange Schema (BTIDES!)

No Additional Items

Each item of this array must be:


Type: object

The core information which must be in every element of the base array

Type: string

Bluetooth Device Address (BDADDR) in typical colon-deliminated-hexidecimal format. E.g. "AA:BB:CC:DD:EE:FF", where AA is the most significant byte

Type: enum (of integer)

Set to 1 if the BDADDR is a random address, and 0 if it's a public address. For BT Classic (BR/EDR) BDADDRs it should always be set to 0.

Must be one of:

  • 0
  • 1

Type: array

Capture multiple types of data such as ADV_IND, SCAN_RSP, EIR, etc here.

No Additional Items

Each item of this array must be:

Type: object

Data about a packet seen on an advertising channel (could be *ADV_* or *SCAN_* for BLE or EIR for BR/EDR).

Type: object

Common optional fields that can be included in a record if desired.

Type: object

Optional field to hold timestamps in multiple possible formats.

Type: integer

Unix seconds-since-epoch (1970-01-01 00:00:00 UTC) timestamp, as a 32-bit integer.

Value must be greater or equal to 0 and lesser or equal to 4294967295

Type: integer

Unix milliseconds-since-epoch (1970-01-01 00:00:00 UTC) timestamp, as a 64-bit integer.

Value must be greater or equal to 0 and lesser or equal to 18446744073709551615

Type: string

Time formatted like YYYY-MM-DD-HH-mm-ss. E.g. 2024-01-02-03-14-15 for January 2nd 2024 at 3:14AM.

Must be at least 19 characters long

Must be at most 19 characters long

Type: string

Optional source file where this data came from. Useful for backtracking data when debugging if something was parsed correctly or not.

Type: integer

Which channel frequency this data was observed on, in MHz. Using this instead of channel ID so that this field can be used equally for BLE and BREDR.

Value must be greater or equal to 2402 and lesser or equal to 2480

Type: integer

Received Signal Strength Indicator in dBm (deciBel-milliwatts) at the time this record was collected.
Optional because it may not be available.
But in general if you want to attempt trilateration, you'll need this.

Value must be greater or equal to -128 and lesser or equal to 0

Type: enum (of integer)

What kind of advertisement or response this data appeared in.
0 = ADV_IND
1 = ADV_DIRECT_IND
2 = ADV_NONCONN_IND
3 = ADV_SCAN_IND
10 = AUX_ADV_IND
20 = SCAN_RSP
21 = AUX_SCAN_RSP
50 = Extended Inquiry Response

Must be one of:

  • 0
  • 1
  • 2
  • 3
  • 10
  • 20
  • 21
  • 50

Type: enum (of string)

What kind of advertisement or response this data appeared in, as a string.
ADV_IND
ADV_DIRECT_IND
ADV_NONCONN_IND
ADV_SCAN_IND
AUX_ADV_IND
SCAN_RSP
AUX_SCAN_RSP
EIR

Must be one of:

  • "ADV_IND"
  • "ADV_DIRECT_IND"
  • "ADV_NONCONN_IND"
  • "ADV_SCAN_IND"
  • "AUX_ADV_IND"
  • "SCAN_RSP"
  • "AUX_SCAN_RSP"
  • "EIR"

Type: enum (of integer)

Channel Selection Algorithm (from LL header). 0 = CSA #1, 1 = CSA #2. This can be obtained from pcaps, but is not typically present in HCI logs, thus it is optional.

Must be one of:

  • 0
  • 1

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Type: array

This is the array of 0 or more AdvData types (where "AdvData" is the term used in the Spec definition of packets), like Device Name, Tx Power, Manufacturer-Specific Data (MSD), UUID16/128 lists, etc.

No Additional Items

Each item of this array must be:


Type: object

Structure for AdvData of type 0x01 = "Flags"

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Flags"

Type: const

This should always be exactly == 0x01. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 1

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

Flags field, single byte, stored as a hex string. i.e. 0x1a == string "1a" without any "0x" prefix.
From BT Core Specification Supplement:
bit 0 = 'LE Limited Discoverable Mode'
bit 1 = 'LE General Discoverable Mode'
bit 2 = 'BR/EDR Not Supported.'
bit 3 = 'Simultaneous LE and BR/EDR to Same Device Capable (Controller)'
bit 4 = 'Simultaneous LE and BR/EDR to Same Device Capable (Controller)' (removed in new specs.)

Must be at least 2 characters long

Must be at most 2 characters long

Type: object

Structure for AdvData of type 0x02 = "Incomplete List of 16-bit Service or Service Class UUIDs."

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID16ListIncomplete"

Type: const

This should always be exactly == 0x02. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 2

Type: integer

This is 1 or more. If it's 1, it means they only have space for the type, and have included a 0-length UUID16List. Similarly if it's 3, they didn't include a full UUID16, so UUID16List should still be excluded because it's empty.

Type: array

This is the array of 0 or more UUID16s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: string

UUID16 as hex_str.

Must be at least 4 characters long

Must be at most 4 characters long

Type: object

Structure for AdvData of type 0x03 = "Complete List of 16-bit Service or Service Class UUIDs."

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID16ListComplete"

Type: const

This should always be exactly == 0x03. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 3

Type: integer

This is 1 or more. If it's 1, it means they only have space for the type, and have included a 0-length UUID16List. Similarly if it's 3, they didn't include a full UUID16, so UUID16List should still be excluded because it's empty.

Type: array

This is the array of 0 or more UUID16s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: object

Structure for AdvData of type 0x04 = "Incomplete List of 32-bit Service or Service Class UUIDs."

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID32ListIncomplete"

Type: const

This should always be exactly == 0x04. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 4

Type: integer

This is 1 or more. If it's 1, it means they only have space for the type, and have included a 0-length UUID32List. Similarly if it's 3, they didn't include a full UUID32, so UUID32List should still be excluded because it's empty.

Type: array

This is the array of 0 or more UUID32s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: string

UUID32 as hex_str.

Must be at least 8 characters long

Must be at most 8 characters long

Type: object

Structure for AdvData of type 0x05 = "Complete List of 32-bit Service or Service Class UUIDs."

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID32ListComplete"

Type: const

This should always be exactly == 0x05. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 5

Type: integer

This is 1 or more. If it's 1, it means they only have space for the type, and have included a 0-length UUID32List. Similarly if it's 3, they didn't include a full UUID32, so UUID32List should still be excluded because it's empty.

Type: array

This is the array of 0 or more UUID32s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: object

Structure for AdvData of type 0x06 = "Incomplete List of 128-bit Service or Service Class UUIDs."

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID128ListIncomplete"

Type: const

This should always be exactly == 0x06. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 6

Type: integer

This is 1 or more. If it's 1, it means they only have space for the type, and have included a 0-length UUID128List. Similarly if it's 3, they didn't include a full UUID128, so UUID128List should still be excluded because it's empty.

Type: array

This is the array of 0 or more UUID128s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID128s).

No Additional Items

Each item of this array must be:

Type: object

Structure for AdvData of type 0x07 = "Complete List of 128-bit Service or Service Class UUIDs."

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID128ListComplete"

Type: const

This should always be exactly == 0x07. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 7

Type: integer

This is 1 or more. If it's 1, it means they only have space for the type, and have included a 0-length UUID128List. Similarly if it's 3, they didn't include a full UUID128, so UUID128List should still be excluded because it's empty.

Type: array

This is the array of 0 or more UUID128s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID128s).

No Additional Items

Each item of this array must be:

Type: string

UUID128 as big-endian hex_str. Can be encoded with dashes or without, but it must be exactly 32 (without dashes) or 36 (with dashes) hexadecimal characters long.

Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i5_UUID128List_items
Type: object

Structure for AdvData of type 0x08 = "Shortened Local Name".

Type: string

This is an optional human-readable version of the "Shortened Local Name" string. This string will contain only printable UTF8 characters, whereas the "namehexstr" field contains the exact bytes which were sent for the name (which may not be printable, or which may contain terminating/trailing/padding NULLs). A Short Name is a string where the device is telling you explicitly that it couldn't fit the entire string into the packet.

Must be at least 0 characters long

Must be at most 255 characters long

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "IncompleteName"

Type: const

This should always be exactly == 0x08. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 8

Type: integer

This can be any length, up to the amount of space available in a packet.

Value must be greater or equal to 1 and lesser or equal to 255

Type: string

AKA "Shortened Local Name", as a hex string, to capture the exact bytes the device used, even if they're unencodable. Use utf8_name if you need to display something for a user. A Short Name is a string where the device is telling you explicitly that it couldn't fit the entire string into the packet.

Must be at least 0 characters long

Must be at most 512 characters long

Type: object

Structure for AdvData of type 0x09 = "Complete Local Name".

Type: string

This is an optional human-readable version of the "Complete Local Name" string. This string will contain only printable UTF8 characters, whereas the "namehexstr" field contains the exact bytes which were sent for the name (which may not be printable, or which may contain terminating/trailing/padding NULLs).

Must be at least 0 characters long

Must be at most 255 characters long

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "CompleteName"

Type: const

This should always be exactly == 0x09. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 9

Type: integer

This can be any length, up to the amount of space available in a packet.

Value must be greater or equal to 1 and lesser or equal to 255

Type: string

AKA "Complete Local Name", as a hex string, to capture the exact bytes the device used, even if they're unencodable. Use utf8_name if you need to display something for a user.

Must be at least 0 characters long

Must be at most 512 characters long

Type: object

Structure for AdvData of type 0x0A = "Transmit Power Level" (in dBm).

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "TxPower"

Type: const

This should always be exactly == 0x0A (10). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 10

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: integer

Tx Power field, single byte, stored as a signed integer (-128 to 127)

Value must be greater or equal to -128 and lesser or equal to 127

Type: object

Structure for AdvData of type 0x10 = "DeviceID". Note: Actual definition comes from Device ID Profile document "EIR Transactions to Obtain Device ID Information" section.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "DeviceID"

Type: const

This should always be exactly == 0x10. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 16

Type: enum (of integer)

Must be 1 for Bluetooth SIG, and 2 for USB SIG. Other values are RFU.

Must be one of:

  • 1
  • 2

Type: integer

16-bit ID looked up according to vendoridsource value.

Type: integer

16-bit ID that is set to a value that is meaningful to the vendor themselves.

Type: integer

16-bit ID that is set to a value that is meaningful to the vendor themselves.

Type: object

Structure for AdvData of type 0x0D = "Class of Device".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ClassOfDevice"

Type: const

This should always be exactly == 0x0D (13). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 13

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

Class of Device (CoD) field, 24 bits, as hex string.

Must be at least 6 characters long

Must be at most 6 characters long

Type: object

Structure for AdvData of type 0x12 = "Peripheral Connection Interval Range".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "PeripheralConnectionIntervalRange"

Type: const

This should always be exactly == 0x12 (18). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 18

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: integer

Connection interval minimum, 16 bits. Technically the range should be 0x0006 to 0x0C80 (or 0xFFFF) according to the spec, but devices could misbehave, so just record exactly what was seen.

Type: integer

Connection interval maximum, 16 bits. Technically the range should be 0x0006 to 0x0C80 (or 0xFFFF) and >= ConnIntervalMin according to the spec, but devices could misbehave, so just record exactly what was seen.

Type: object

Structure for AdvData of type 0x14 = "List of 16-bit Service Solicitation UUIDs".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID16ListServiceSolicitation"

Type: const

This should always be exactly == 0x14 (20). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 20

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: array

This is the array of 0 or more UUID16s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: object

Structure for AdvData of type 0x1F = "List of 32-bit Service Solicitation UUIDs".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID32ListServiceSolicitation"

Type: const

This should always be exactly == 0x1F (31). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 31

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: array

This is the array of 0 or more UUID32s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: object

Structure for AdvData of type 0x15 = "List of 128-bit Service Solicitation UUIDs".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID128ListServiceSolicitation"

Type: const

This should always be exactly == 0x15 (21). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 21

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: array

This is the array of 0 or more UUID128s. Yes, devices can technically send an array of size 0 (this is seen more commonly with UUID32s).

No Additional Items

Each item of this array must be:

Type: string

UUID128 as big-endian hex_str. Can be encoded with dashes or without, but it must be exactly 32 (without dashes) or 36 (with dashes) hexadecimal characters long.

Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i5_UUID128List_items
Type: object

Structure for AdvData of type 0x16 = "Service Data - 16-bit UUID".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID16ServiceData"

Type: const

This should always be exactly == 0x16 (22). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 22

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: object

Structure for AdvData of type 0x20 = "Service Data - 32-bit UUID".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID32ServiceData"

Type: const

This should always be exactly == 0x20 (32). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 32

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: object

Structure for AdvData of type 0x21 = "Service Data - 128-bit UUID".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "UUID128ServiceData"

Type: const

This should always be exactly == 0x21 (33). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 33

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

UUID128 as big-endian hex_str. Can be encoded with dashes or without, but it must be exactly 32 (without dashes) or 36 (with dashes) hexadecimal characters long.

Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i5_UUID128List_items

Type: object

Structure for AdvData of type 0x17 = "Public Target Address".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "PublicTargetAddress"

Type: const

This should always be exactly == 0x17 (23). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 23

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

Bluetooth Device Address (BDADDR) in typical colon-deliminated-hexidecimal format. E.g. "AA:BB:CC:DD:EE:FF", where AA is the most significant byte

Same definition as bdaddr
Type: object

Structure for AdvData of type 0x18 = "Random Target Address".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "RandomTargetAddress"

Type: const

This should always be exactly == 0x18 (24). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 24

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

Bluetooth Device Address (BDADDR) in typical colon-deliminated-hexidecimal format. E.g. "AA:BB:CC:DD:EE:FF", where AA is the most significant byte

Same definition as bdaddr
Type: object

Structure for AdvData of type 0x19 = "Appearance".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Appearance"

Type: const

This should always be exactly == 0x19 (25). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 25

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

16-bit Appearance value as a hex string.

Must be at least 4 characters long

Must be at most 4 characters long

Type: object

Structure for AdvData of type 0x1A = "Advertising Interval".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "AdvertisingInterval"

Type: const

This should always be exactly == 0x1A (26). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 26

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: integer

16, 24, or 32-bit Advertising Interval in units of 625us

Value must be greater or equal to 0

Type: object

Structure for AdvData of type 0x1B = "LE Bluetooth Device Address".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LE_BDADDR"

Type: const

This should always be exactly == 0x1B (27). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 27

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: enum (of integer)

0 for public, 1 for random

Must be one of:

  • 0
  • 1

Type: string

Bluetooth Device Address (BDADDR) in typical colon-deliminated-hexidecimal format. E.g. "AA:BB:CC:DD:EE:FF", where AA is the most significant byte

Same definition as bdaddr
Type: object

Structure for AdvData of type 0x1C = "LE Role". According to the spec this should only occur in OOB data, but we've seen devices using it for OTA data.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LE_Role"

Type: const

This should always be exactly == 0x1C (28). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 28

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: enum (of integer)

See the CSS for the definition of the 4 possible values.

Must be one of:

  • 0
  • 1
  • 2
  • 3
Type: object

Structure for AdvData of type 0x24 = "URI" (Uniform Resource Identifier).

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "URI"

Type: const

This should always be exactly == 0x24 (36). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 36

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

URI as hex string. Note, there are some encoding rules for shortening the URL, so this can't just be used as a plain UTF-8 string and yield an accurate result.

Type: object

Structure for AdvData of type 0x27 = "LE Supported Features".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LESupportedFeatures"

Type: const

This should always be exactly == 0x27 (39). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 39

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: string

An bit-array of LE supported features, 8 bytes long, defined in spec section "Feature Support" under Link Layer specification. Used by LL_FEATURE_REQ/RSP and as an optional AdvData type.

Must be at least 16 characters long

Must be at most 16 characters long

Type: object

Structure for AdvData of type 0x30 = "Broadcast Name".

Type: string

This is an optional human-readable version of the "Broadcast Name" string. This string will contain only printable UTF8 characters, whereas the "namehexstr" field contains the exact bytes which were sent for the name (which may not be printable, or which may contain terminating/trailing/padding NULLs). A Short Name is a string where the device is telling you explicitly that it couldn't fit the entire string into the packet.

Must be at least 0 characters long

Must be at most 255 characters long

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "BroadcastName"

Type: const

This should always be exactly == 0x30. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 48

Type: integer

This can be any length, up to the amount of space available in a packet.

Value must be greater or equal to 1 and lesser or equal to 255

Type: string

AKA "Broadcast Name", as a hex string, to capture the exact bytes the device used, even if they're unencodable. Use utf8_name if you need to display something for a user. A Short Name is a string where the device is telling you explicitly that it couldn't fit the entire string into the packet.

Must be at least 0 characters long

Must be at most 255 characters long

Type: object

Structure for AdvData of type 0x31 = "Encrypted Advertising Data".

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "EncryptedAdvertisingData"

Type: const

This should always be exactly == 0x31 (49). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 49

Type: integer

You should store whatever value actually came in from the device, because they could be sending malformed data, and if so, you want to capture that.

Type: object

Structure for AdvData of type 0x3d = "3D Information Data".

Type: string

This is an optional human-readable version of the "Broadcast Name" string. This string will contain only printable UTF8 characters, whereas the "namehexstr" field contains the exact bytes which were sent for the name (which may not be printable, or which may contain terminating/trailing/padding NULLs). A Short Name is a string where the device is telling you explicitly that it couldn't fit the entire string into the packet.

Must be at least 0 characters long

Must be at most 255 characters long

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "3DInfoData"

Type: const

This should always be exactly == 0x3d. (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 61

Type: integer

This can be any length, up to the amount of space available in a packet.

Value must be greater or equal to 1 and lesser or equal to 255

Type: integer

This is the first byte of data, which contains multiple single-bit fields and RFU bits. See the 3D Synchronization Profile.

Type: integer

This is the first byte of data, which contains multiple single-bit fields and RFU bits. See the 3D Synchronization Profile.

Type: object

Structure for AdvData of type 0xFF = "Manufacturer Specific Data" (MSD)

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ManufacturerSpecificData"

Type: const

This should always be exactly == 0xFF (255). (Per the assigned numbers document, "Common Data Type" table.)

Specific value: 255

Type: integer

Length of the MSD (including company ID), from packet.

Type: string

First 2 bytes of the MSD, interpreted as a little-endian company ID. e.g. first 2 bytes were 0x4C 0x00 it should be "004C" (Apple). Note however that some vendors (including Apple) sometimes put their ID big endian instead of little endian. So you may sometimes have to try IDs both ways to find a match, and even if you find a match it might be spurious.

Must be at least 4 characters long

Must be at most 4 characters long

Type: string

This is the remainder of the MSD, after the first 2 bytes which are interpreted per above as the company_id_hex_str.

Type: array
No Additional Items

Each item of this array must be:


Type: object

Structure for LL_CONNECTION_UPDATE_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Must be one of:

  • 0
  • 1

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_CONNECTION_UPDATE_IND"

Type: const

This should always be 0. This is required to differentiate from other data types in an array.

Specific value: 0

Type: integer

The transmit window size used in the CONNECT_IND packet. (Multiplied by 1.25ms). This should technically be only between 1 and 255, but put in whatever was actually used (i.e. accept 0).

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The transmit window offset used in the CONNECT_IND packet. (Multiplied by 1.25ms). "The transmitWindowOffset shall be a multiple of 1.25 ms in the range 0 ms to connInterval." according to the spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The connection interval used in the CONNECT_IND packet. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The Peripheral latency used in the CONNECT_IND packet. "The value of connSubrateFactor shall be in the range 1 to 500 and shall be set to 1 for a new connection" to be valid according to the spec, but put whatever value was actually found in the packet.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The connection timeout used in the CONNECT_IND packet. (Multiplied by 10ms). "The connSupervisionTimeout shall be a multiple of 10 ms in the range 100 ms to 32.0s and it shall be larger than (1 + connPeripheralLatency) × connSubrateFactor × connInterval × 2." (so 1-3200)according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

What instant (connection event from start of connection, indexed from 0) the update will occur at.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_CONNECTION_UPDATE_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_CONNECTION_UPDATE_IND"

Type: const

This should always be 0. This is required to differentiate from other data types in an array.

Specific value: 0

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_CHANNEL_MAP_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_CHANNEL_MAP_IND"

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: string

The (5-byte) channel map used in the CONNECT_IND packet, as a hex string.

Must be at least 10 characters long

Must be at most 10 characters long

Type: integer

What instant (connection event from start of connection, indexed from 0) the update will occur at.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_CHANNEL_MAP_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_CHANNEL_MAP_IND"

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_TERMINATE_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

Optional human-readable string describing the error.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_TERMINATE_IND"

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: integer

One byte value indicating the reason for termination.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LL_TERMINATE_IND packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_TERMINATE_IND"

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_ENC_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_ENC_REQ"

Type: const

This should always be 3. This is required to differentiate from other data types in an array.

Specific value: 3

Type: integer

8 byte random value provided by host.

Value must be greater or equal to 0 and lesser or equal to 18446744073709551615

Type: integer

2 byte encrypted diversifier.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

8 byte session key diversifier from Central.

Value must be greater or equal to 0 and lesser or equal to 18446744073709551615

Type: integer

4 byte initialization vector from Central.

Value must be greater or equal to 0 and lesser or equal to 4294967295

Type: object

Structure for LL_ENC_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_ENC_REQ"

Type: const

This should always be 3. This is required to differentiate from other data types in an array.

Specific value: 3

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_ENC_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_ENC_RSP"

Type: const

This should always be 4. This is required to differentiate from other data types in an array.

Specific value: 4

Type: integer

8 byte session key diversifier from Perpheral.

Value must be greater or equal to 0 and lesser or equal to 18446744073709551615

Type: integer

4 byte initialization vector from Perpheral.

Value must be greater or equal to 0 and lesser or equal to 4294967295

Type: object

Structure for LL_ENC_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_ENC_RSP"

Type: const

This should always be 4. This is required to differentiate from other data types in an array.

Specific value: 4

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_START_ENC_REQ packet. (This has no payload, only the opcode.)

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_START_ENC_REQ"

Type: const

This should always be 5. This is required to differentiate from other data types in an array.

Specific value: 5
Type: object

Structure for LL_START_ENC_RSP packet. (This has no payload, only the opcode.)

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_START_ENC_RSP"

Type: const

This should always be 6. This is required to differentiate from other data types in an array.

Specific value: 6
Type: object

Structure for LL_UNKNOWN_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_UNKNOWN_RSP"

Type: const

This should always be 7. This is required to differentiate from other data types in an array.

Specific value: 7

Type: integer

One byte value indicating the LL opcode of a message received that the device does not understand.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LL_UNKNOWN_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_UNKNOWN_RSP"

Type: const

This should always be 7. This is required to differentiate from other data types in an array.

Specific value: 7

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_FEATURE_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_FEATURE_REQ"

Type: const

This should always be 8. This is required to differentiate from other data types in an array.

Specific value: 8

Type: string

An bit-array of LE supported features, 8 bytes long, defined in spec section "Feature Support" under Link Layer specification. Used by LL_FEATURE_REQ/RSP and as an optional AdvData type.

Same definition as le_features_hex_str
Type: object

Structure for LL_FEATURE_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_FEATURE_REQ"

Type: const

This should always be 8. This is required to differentiate from other data types in an array.

Specific value: 8

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_FEATURE_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_FEATURE_RSP"

Type: const

This should always be 9. This is required to differentiate from other data types in an array.

Specific value: 9

Type: string

An bit-array of LE supported features, 8 bytes long, defined in spec section "Feature Support" under Link Layer specification. Used by LL_FEATURE_REQ/RSP and as an optional AdvData type.

Same definition as le_features_hex_str
Type: object

Structure for LL_FEATURE_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_FEATURE_RSP"

Type: const

This should always be 9. This is required to differentiate from other data types in an array.

Specific value: 9

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_VERSION_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_VERSION_IND"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This should always be 12. This is required to differentiate from other data types in an array.

Specific value: 12

Type: integer

One byte value indicating version of the BT Core Specification that this device comforms to.
e.g. 0x06 = 4.0, 0x08 = 4.2, 0x09 = 5.0, 0x0D = 5.4 etc. See Assigned Numbers document.
Only setting an upper bound to enforce sanity checking that this is a single byte value.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

Company ID as assigned by Bluetooth SIG. See assigned_numbers/company_identifiers/company_identifiers.yaml from https://bitbucket.org/bluetooth-SIG/public.
Only setting an upper bound to enforce sanity checking that this is a two-byte value.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

This is nominally the sub-version of the BT controller itself (i.e. hardware). This value is arbitrary, and picked by the hardware maker.
The correspondance of certain values to certain hardware is known for some vendors like Broadcom, but is unknown for most vendors.
Only setting an upper bound to enforce sanity checking that this is a two-byte value.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_VERSION_IND packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This should always be 12. This is required to differentiate from other data types in an array.

Specific value: 12

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_REJECT_IND packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

Optional human-readable string describing the error.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_REJECT_IND"

Type: const

This should always be 13. This is required to differentiate from other data types in an array.

Specific value: 13

Type: integer

One byte value indicating the reason for rejection.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LL_REJECT_IND packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_REJECT_IND"

Type: const

This should always be 13. This is required to differentiate from other data types in an array.

Specific value: 13

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_PERIPHERAL_FEATURE_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PERIPHERAL_FEATURE_REQ"

Type: const

This should always be 14. This is required to differentiate from other data types in an array.

Specific value: 14

Type: string

An bit-array of LE supported features, 8 bytes long, defined in spec section "Feature Support" under Link Layer specification. Used by LL_FEATURE_REQ/RSP and as an optional AdvData type.

Same definition as le_features_hex_str
Type: object

Structure for LL_PERIPHERAL_FEATURE_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PERIPHERAL_FEATURE_REQ"

Type: const

This should always be 14. This is required to differentiate from other data types in an array.

Specific value: 14

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_CONNECTION_PARAM_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_CONNECTION_PARAM_REQ"

Type: const

This should always be 15. This is required to differentiate from other data types in an array.

Specific value: 15

Type: integer

The minimum connection interval. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The maximum connection interval. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The Peripheral latency (how many connection events the Peripheral can skip replying to.). "The value of connSubrateFactor shall be in the range 1 to 500 and shall be set to 1 for a new connection" to be valid according to the spec, but put whatever value was actually found in the packet.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The connection timeout. (Multiplied by 10ms). "The connSupervisionTimeout shall be a multiple of 10 ms in the range 100 ms to 32.0s and it shall be larger than (1 + connPeripheralLatency) × connSubrateFactor × connInterval × 2." (so 1-3200)according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

Multiplied by 1.25ms. 'The PreferredPeriodicity field shall be set to indicate a value the connInterval is preferred to be a multiple of.'

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

'The ReferenceConnEventCount field shall be set to indicate the value of the connEventCounter relative to which all the valid Offset0 to Offset5 fields have been calculated.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_CONNECTION_PARAM_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PERIPHERAL_FEATURE_REQ"

Type: const

This should always be 15. This is required to differentiate from other data types in an array.

Specific value: 15

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_CONNECTION_PARAM_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_CONNECTION_PARAM_RSP"

Type: const

This should always be 16. This is required to differentiate from other data types in an array.

Specific value: 16

Type: integer

The minimum connection interval. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Same definition as interval_min

Type: integer

The maximum connection interval. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Same definition as interval_max

Type: integer

The Peripheral latency (how many connection events the Peripheral can skip replying to.). "The value of connSubrateFactor shall be in the range 1 to 500 and shall be set to 1 for a new connection" to be valid according to the spec, but put whatever value was actually found in the packet.

Same definition as latency

Type: integer

The connection timeout. (Multiplied by 10ms). "The connSupervisionTimeout shall be a multiple of 10 ms in the range 100 ms to 32.0s and it shall be larger than (1 + connPeripheralLatency) × connSubrateFactor × connInterval × 2." (so 1-3200)according to the spec, but put in whatever was actually used.

Same definition as timeout

Type: integer

Multiplied by 1.25ms. 'The PreferredPeriodicity field shall be set to indicate a value the connInterval is preferred to be a multiple of.'

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

'The ReferenceConnEventCount field shall be set to indicate the value of the connEventCounter relative to which all the valid Offset0 to Offset5 fields have been calculated.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

'The Offset0, Offset1, Offset2, Offset3, Offset4, and Offset5 fields shall be set to indicate the possible values of the position of the anchor points of the LE connection with the updated connection parameters relative to the ReferenceConnEventCount.' + 'A value of 0xFFFF means not valid.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_CONNECTION_PARAM_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PERIPHERAL_FEATURE_RSP"

Type: const

This should always be 16. This is required to differentiate from other data types in an array.

Specific value: 16

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_REJECT_EXT_IND packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

Optional human-readable string describing the error.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_REJECT_EXT_IND"

Type: const

This should always be 17. This is required to differentiate from other data types in an array.

Specific value: 17

Type: integer

The LL opcode that was rejected.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

One byte value indicating the reason for termination.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LL_REJECT_EXT_IND packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_REJECT_EXT_IND"

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 17

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_PING_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PING_REQ"

Type: const

This should always be 18. This is required to differentiate from other data types in an array.

Specific value: 18
Type: object

Structure for LL_PING_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PING_RSP"

Type: const

This should always be 19. This is required to differentiate from other data types in an array.

Specific value: 19
Type: object

Structure for LL_LENGTH_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_LENGTH_REQ"

Type: const

This should always be 20. This is required to differentiate from other data types in an array.

Specific value: 20

Type: integer

2-byte MaxRxOctets from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte MaxRxTime from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte MaxTxOctets from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte MaxTxTime from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_LENGTH_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_LENGTH_REQ"

Type: const

This should always be 20. This is required to differentiate from other data types in an array.

Specific value: 20

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_LENGTH_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_LENGTH_RSP"

Type: const

This should always be 21. This is required to differentiate from other data types in an array.

Specific value: 21

Type: integer

2-byte MaxRxOctets from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte MaxRxTime from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte MaxTxOctets from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte MaxTxTime from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_LENGTH_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_LENGTH_RSP"

Type: const

This should always be 21. This is required to differentiate from other data types in an array.

Specific value: 21

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_PHY_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PHY_REQ"

Type: const

This should always be 22. This is required to differentiate from other data types in an array.

Specific value: 22

Type: integer

1-byte TX_PHYS from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

1-byte RX_PHYS from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LL_PHY_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PHY_REQ"

Type: const

This should always be 22. This is required to differentiate from other data types in an array.

Specific value: 22

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_PHY_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PHY_RSP"

Type: const

This should always be 23. This is required to differentiate from other data types in an array.

Specific value: 23

Type: integer

1-byte TX_PHYS from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

1-byte RX_PHYS from BT Core Spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LL_PHY_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PHY_RSP"

Type: const

This should always be 23. This is required to differentiate from other data types in an array.

Specific value: 23

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LL_PHY_UPDATE_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PHY_UPDATE_IND"

Type: const

This should always be 24. This is required to differentiate from other data types in an array.

Specific value: 24

Type: integer

'PHYCTO_P shall be set to indicate the PHY that shall be used for packets sent from the Central to the Peripheral.'

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

'PHYPTO_C shall be set to indicate the PHY that shall be used for packets sent from the Peripheral to the Central.'

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

What instant (connection event from start of connection, indexed from 0) the update will occur at.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for LL_PHY_UPDATE_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_PHY_UPDATE_IND"

Type: const

This should always be 24. This is required to differentiate from other data types in an array.

Specific value: 24

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for packets using opcode 0xFF, which is out of spec and therefore indicative of some sort of custom protocol

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LL_UNKNOWN_CUSTOM"

Type: const

This should always be 255. This is required to differentiate from other data types in an array.

Specific value: 255

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str

Type: array
No Additional Items

Each item of this array must be:


Type: object

Data from an HCI "Remote Name Request Complete" event.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "HCI_Remote_Name_Request_Complete"

Type: const

This should always be 7. This is required to differentiate from other data types in an array.

Specific value: 7

Type: integer

0 for success, other values for failure.

Value must be greater or equal to 0 and lesser or equal to 255

Type: string

The full device name, without fragmentation, as a hex string.

Type: string

This is an optional human-readable version of the remotenamehexstr string. This string will contain only printable UTF8 characters, whereas the "namehex_str" field contains the exact bytes which were sent for the name (which may not be printable, or which may contain terminating/trailing/padding NULLs).

Must be at least 0 characters long

Must be at most 255 characters long

Type: array
No Additional Items

Each item of this array must be:


Type: object

Structure for L2CAP_CONNECTION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'psm' field if it's a SIG-asigned value) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_CONNECTION_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 2.

Specific value: 2

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

2-byte "Data Length" field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Protocol/Service Multiplexer (PSM)" field from spec. Two ranges, one SIG-assigned, one dynamic.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Source CID (Channel ID)" field from spec. Indicates an L2CAP channel ID on the source where data can be sent. Should be from the dynamically allocated range of CIDs for ACL-U logical links (0x0040 to 0xFFFF).

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for L2CAP_CONNECTION_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'result' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: string

This optional field (interpretation of 'status' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_CONNECTION_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 3.

Specific value: 3

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "Destination CID (Channel ID)" field from spec. Indicates an L2CAP channel ID on the destination (i.e. not the one who initiated the connection) where data can be sent. Should be from the dynamically allocated range of CIDs for ACL-U logical links (0x0040 to 0xFFFF).

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Source CID (Channel ID)" field from spec. Copied by the destination device from the L2CAPCONNECTIONREQ packet's Source CID field.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Result" field from spec. 'The result field indicates the outcome of the connection request.' As of Core Spec v5.4 there are values 1-7 defined.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Status" field from spec. 'Only defined for Result = Pending.' Contains information about pending statuses (e.g. Authentication or Authorization pending.)

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for L2CAP_CONFIGURATION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_CONFIGURATION_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 4.

Specific value: 4

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "Destination CID (Channel ID)" field from spec. 'channel endpoint on the device receiving this Request packet'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Flags" field from spec. 'Only one flag is defined, the Continuation flag (C)' (bit 0) 'When used in the L2CAPCONFIGURATIONREQ packet, the continuation flag indicates the responder should expect to receive multiple request packets.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: string

Variable-length "Configuration Options" field from spec. 'A list of the parameters and their values to be negotiated shall be provided in the Configuration Options field. These are defined in Section 5; in addition, as described in that section, an implementation shall be prepared to receive any number of unknown options. A L2CAPCONFIGURATIONREQ may contain no options (referred to as an empty or null configuration request) and can be used to request a response. For an empty configuration request the length field is set to 0x0004.'

Type: object

Structure for L2CAP_CONFIGURATION_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'result' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: string

This optional field (interpretation of 'status' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_CONFIGURATION_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 5.

Specific value: 5

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "Source CID (Channel ID)" field from spec. 'This field contains the channel endpoint on the device receiving this Response packet.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Flags" field from spec. 'Only one flag is defined, the Continuation flag (C)' (bit 0) 'More L2CAPCONFIGURATIONREQ packets will follow when C is set to one. This flag indicates that the parameters included in the response are a partial subset of parameters being sent by the device sending the Response packet.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Result" field from spec. 'The Result field indicates whether or not the Request was acceptable. See Table 4.8 for possible result codes.' As of Core Spec v5.4 there are values 0-5 defined.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: string

Variable-length "Configuration Options" field from spec (given as "Config" in the diagram due to lack of space.). 'A list of the parameters and their values to be negotiated shall be provided in the Configuration Options field. These are defined in Section 5; in addition, as described in that section, an implementation shall be prepared to receive any number of unknown options. A L2CAPCONFIGURATIONREQ may contain no options (referred to as an empty or null configuration request) and can be used to request a response. For an empty configuration request the length field is set to 0x0004.' (That seems like an error in the spec as the minimum size would be 6. 2 for Source CID, 2 for flags, 2 for result.)

Type: object

Structure for L2CAP_DISCONNECTION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'psm' field if it's a SIG-asigned value) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_DISCONNECTION_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 6.

Specific value: 6

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "Destination CID (Channel ID)" field from spec. 'This field specifies the endpoint of the channel to be disconnected on the device receiving this request.'

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Source CID (Channel ID)" field from spec. 'This field specifies the endpoint of the channel to be disconnected on the device sending this request.'.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for L2CAP_DISCONNECTION_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'result' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: string

This optional field (interpretation of 'status' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_DISCONNECTION_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 7.

Specific value: 7

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "Destination CID (Channel ID)" field from spec. 'This field identifies the channel endpoint on the device sending the L2CAPDISCONNECTIONRSP packet.' (This should be copied from the REQ.)

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Source CID (Channel ID)" field from spec. 'This field identifies the channel endpoint on the device receiving the L2CAPDISCONNECTIONRSP packet'. (This should be copied from the REQ.)

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for L2CAP_INFORMATION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_INFORMATION_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 10.

Specific value: 10

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "InfoType" field from spec. Technically only values 1-3 are defined (as "Connectionless MTU", "Extended features supported", and "Fixed channels supported over BR/EDR"), but allow capturing any value so we can capture invalid packets which may be used in the wild.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for L2CAP_INFORMATION_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_INFORMATION_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 11.

Specific value: 11

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "InfoType" field from spec. Technically only values 1-3 are defined, but allow capturing any value so we can capture invalid packets which may be used in the wild.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Result" field from spec. 'The Result contains information about the success of the request. If result is "Success" the data field contains the information as specified in Table 4.11.' (Based on Core Spec v5.4)

Value must be greater or equal to 0 and lesser or equal to 65535

Type: string

The "Info" field could be absent / 0 bytes (if result is not "Success"), or 2 bytes if InfoType = 0x0001 (Connectionless MTU), or 4 bytes if InfoType = 0x0002 (Extended Features Mask), or 8 bytes if InfoType = 0x0003 (Fixed Channels Supported). Then maxLength is that * 2 for hex_str encoding.

Must be at least 4 characters long

Must be at most 16 characters long

Type: object

Structure for L2CAP_CONNECTION_PARAMETER_UPDATE_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'psm' field if it's a SIG-asigned value) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_CONNECTION_PARAMETER_UPDATE_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 18.

Specific value: 18

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

The minimum connection interval. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Same definition as interval_min

Type: integer

The maximum connection interval. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Same definition as interval_max

Type: integer

The Peripheral latency (how many connection events the Peripheral can skip replying to.). "The value of connSubrateFactor shall be in the range 1 to 500 and shall be set to 1 for a new connection" to be valid according to the spec, but put whatever value was actually found in the packet.

Same definition as latency

Type: integer

The connection timeout. (Multiplied by 10ms). "The connSupervisionTimeout shall be a multiple of 10 ms in the range 100 ms to 32.0s and it shall be larger than (1 + connPeripheralLatency) × connSubrateFactor × connInterval × 2." (so 1-3200)according to the spec, but put in whatever was actually used.

Same definition as timeout
Type: object

Structure for L2CAP_CONNECTION_PARAMETER_UPDATE_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'result' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_CONNECTION_PARAMETER_UPDATE_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

The L2CAP code for this packet type. Must always be 19.

Specific value: 19

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "Result" field from spec. 'The result field indicates the response to the request. The result value of 0x0000 indicates that the Central’s Host has accepted the connection parameters while 0x0001 indicates that the Central’s Host has rejected the connection parameters.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for L2CAP_LE_CREDIT_BASED_CONNECTION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "L2CAP_LE_CREDIT_BASED_CONNECTION_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

Optional field just if you don't want to look up the "code" (term used in the spec, rather than opcode) for this packet type.

Specific value: 20

Type: integer

1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as id

Type: integer

2-byte "Data Length" field from spec.

Same definition as data_len

Type: integer

2-byte "SPSM" (Simplified Protocol Service Multiplexer) field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Source CID" ((L2CAP) Channel ID) field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "MTU" (Maximum Transmission Unit) field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "MPS" (Maximum PDU Payload Size) field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "Initial Credits" field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: array
No Additional Items

Each item of this array must be:


Type: object

Structure for SMP Pairing Request packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Request"

Type: const

The SMP opcode for this packet type. Must always be 1.

Specific value: 1

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: enum (of integer)

IO Capabilities. Used for determining pairing method (i.e. Just Works vs. Passkey Entry vs. Numeric Comparison).
0x00 = DisplayOnly
0x01 = DisplayYesNo
0x02 = KeyboardOnly
0x03 = NoInputNoOutput
0x04= KeyboardDisplay
Other values RFU

Must be one of:

  • 0
  • 1
  • 2
  • 3
  • 4

Type: enum (of integer)

The "Out of band (OOB) data flag" field from the spec.
0x00 = "OOB Authentication data not present"
0x01 = "OOB Authentication data from remote device present"

Must be one of:

  • 0
  • 1

Type: integer

The "AuthReq" field from the spec. This has numerous bit-field sub-fields such as Bonding, MITM, Secure Connections, etc

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The "Maximum Encryption Key Size" field from the spec. To be valid this should technically always be > 7 and <= 16, but someone could be sending invalid data that you want to capture accurately, so just use whatever value was in the packet.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The "Initiator Key Distribution" field from the spec. An indication of which keys will be distributed by the initiator during Transport-Specific Key Distribution phase of pairing.
bit 0 = EncKey
bit 1 = IdKey
bit 2 = SignKey
bit 3 = LinkKey
other bits RFU.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The "Responder Key Distribution" field from the spec. An indication of which keys are requested by the initiator to be distributed by the responder during Transport-Specific Key Distribution phase of pairing.
bit 0 = EncKey
bit 1 = IdKey
bit 2 = SignKey
bit 3 = LinkKey
other bits RFU.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for SMP Pairing Response packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Response"

Type: const

The SMP opcode for this packet type. Must always be 2.

Specific value: 2

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: enum (of integer)

IO Capabilities. Used for determining pairing method (i.e. Just Works vs. Passkey Entry vs. Numeric Comparison).
0x00 = DisplayOnly
0x01 = DisplayYesNo
0x02 = KeyboardOnly
0x03 = NoInputNoOutput
0x04= KeyboardDisplay
Other values RFU

Same definition as io_cap

Type: enum (of integer)

The "Out of band (OOB) data flag" field from the spec.
0x00 = "OOB Authentication data not present"
0x01 = "OOB Authentication data from remote device present"

Same definition as oob_data

Type: integer

The "AuthReq" field from the spec. This has numerous bit-field sub-fields such as Bonding, MITM, Secure Connections, etc

Same definition as auth_req

Type: integer

The "Maximum Encryption Key Size" field from the spec. To be valid this should technically always be > 7 and <= 16, but someone could be sending invalid data that you want to capture accurately, so just use whatever value was in the packet.

Same definition as max_key_size

Type: integer

The "Initiator Key Distribution" field from the spec. An indication of which keys are requested by the responder to be distributed by the initiator during Transport-Specific Key Distribution phase of pairing.
bit 0 = EncKey
bit 1 = IdKey
bit 2 = SignKey
bit 3 = LinkKey
other bits RFU.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The "Responder Key Distribution" field from the spec. An indication of which keys will be distributed by the responder during Transport-Specific Key Distribution phase of pairing.
bit 0 = EncKey
bit 1 = IdKey
bit 2 = SignKey
bit 3 = LinkKey
other bits RFU.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for SMP Pairing Confirm packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Confirm"

Type: const

The SMP opcode for this packet type. Must always be 3.

Specific value: 3

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the packet-byte-ordered value of the 16 bytes that were sent for the Pairing Confirm value, as a hex string.

Must be at least 32 characters long

Must be at most 32 characters long

Type: object

Structure for SMP Pairing Random packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Random"

Type: const

The SMP opcode for this packet type. Must always be 4.

Specific value: 4

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the packet-byte-ordered value of the 16 bytes that were sent for the Pairing Random value, as a hex string.

Must be at least 32 characters long

Must be at most 32 characters long

Type: object

Structure for SMP Pairing Failed packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Failed"

Type: const

The SMP opcode for this packet type. Must always be 5.

Specific value: 5

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

The error code specifying the reason why pairing failed.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for SMP Security Request packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Security Request"

Type: const

The SMP opcode for this packet type. Must always be 11.

Specific value: 11

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

The "AuthReq" field from the spec. This has numerous bit-field sub-fields such as Bonding, MITM, Secure Connections, etc

Same definition as auth_req
Type: object

Structure for SMP Pairing Public Key packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Public Key"

Type: const

The SMP opcode for this packet type. Must always be 12.

Specific value: 12

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the little-endian 32 bytes that were sent for the Pairing Public Key X value, as a hex string.

Must be at least 64 characters long

Must be at most 64 characters long

Type: string

This is the little-endian 32 bytes that were sent for the Pairing Public Key Y value, as a hex string.

Must be at least 64 characters long

Must be at most 64 characters long

Type: object

Structure for SMP Pairing DHKey Check packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing DHKey Check"

Type: const

The SMP opcode for this packet type. Must always be 13.

Specific value: 13

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the little-endian 16 bytes that were sent for the DHKey Check (E) value, as a hex string.

Must be at least 32 characters long

Must be at most 32 characters long

Type: object

Structure for SMP Pairing Keypress Notification packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "Pairing Keypress Notification"

Type: const

The SMP opcode for this packet type. Must always be 14.

Specific value: 14

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

The keypress notification type.

Value must be greater or equal to 0 and lesser or equal to 255

Type: array
No Additional Items

Each item of this array must be:


Type: object

An array of all known ATT handle number/UUID pairs.

Type: array

Each entry is a handle and UUID

No Additional Items

Each item of this array must be:

Type: object

Structure for ATT enumeration array.

Type: integer

2-byte ATT handle number. (Handle 0 is invalid.)

Value must be greater or equal to 1 and lesser or equal to 65535

Type: object

Structure for ATT_EXCHANGE_MTU_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_EXCHANGE_MTU_REQ"

Type: const

ATT packet opcode.

Specific value: 2

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

2-byte "Client Rx MTU" from spec. Maximum number of bytes the ATT Client can receive via ATT.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for ATT_EXCHANGE_MTU_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_EXCHANGE_MTU_REQ"

Type: const

ATT packet opcode.

Specific value: 2

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_EXCHANGE_MTU_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

ATT packet opcode.

Specific value: "ATT_EXCHANGE_MTU_RSP"

Type: const

ATT packet opcode.

Specific value: 3

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

2-byte "Server Rx MTU" from spec. Maximum number of bytes the ATT Server can receive via ATT.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for ATT_EXCHANGE_MTU_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_EXCHANGE_MTU_RSP"

Type: const

Optional field just if you don't want to look up the opcode for this packet type.

Specific value: 3

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_FIND_INFORMATION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_FIND_INFORMATION_REQ"

Type: const

ATT packet opcode.

Specific value: 4

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

First requested handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

Last requested handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for ATT_FIND_INFORMATION_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_FIND_INFORMATION_REQ"

Type: const

ATT packet opcode.

Specific value: 4

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_FIND_INFORMATION_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_FIND_INFORMATION_RSP"

Type: const

ATT packet opcode.

Specific value: 5

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: enum (of integer)

Format of the information data (1 = handles and 16-bit UUIDs, 2 = handles and 128-bit UUIDs).

Must be one of:

  • 1
  • 2

Type: array of object

List of handle and UUID (16 or 128) pairs.

No Additional Items

Each item of this array must be:

Type: object

Type: integer

Handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for ATT_FIND_INFORMATION_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_FIND_INFORMATION_RSP"

Type: const

ATT packet opcode.

Specific value: 5

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_READ_BY_TYPE_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_BY_TYPE_REQ"

Type: const

ATT packet opcode.

Specific value: 8

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

First requested handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

Last requested handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

2-byte or 16-byte Attribute type UUID to find.

Same definition as UUID
Type: object

Structure for ATT_READ_BY_TYPE_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_BY_TYPE_RSP"

Type: const

ATT packet opcode.

Specific value: 9

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: integer

Size of each attribute handle-value pair

Value must be greater or equal to 0 and lesser or equal to 255

Type: array of object

List of attribute data.

No Additional Items

Each item of this array must be:

Type: object

The following properties are required:

  • handle
  • value

Type: integer

Attribute handle.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: string

This is an optional human-readable version of the read value of the attribute.

Must be at least 0 characters long

Must be at most 255 characters long

Type: object

Structure for ATT_READ_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

ATT packet opcode.

Specific value: 10

Type: integer

Handle being read from.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for ATT_READ_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_REQ"

Type: const

ATT packet opcode.

Specific value: 10

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_READ_RSP packet.

The following properties are required:

  • handle

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

ATT packet opcode.

Specific value: 11

Type: string

Value read from a handle, as a hex string.

Type: object

Structure for ATT_READ_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_RSP"

Type: const

ATT packet opcode.

Specific value: 11

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_READ_BY_GROUP_TYPE_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_BY_GROUP_TYPE_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

ATT packet opcode.

Specific value: 16

Type: integer

First requested handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

Last requested handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

2-byte or 16-byte UUID to find.

Same definition as UUID
Type: object

Structure for ATT_READ_BY_GROUP_TYPE_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_BY_GROUP_TYPE_REQ"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

ATT packet opcode.

Specific value: 16

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for ATT_READ_BY_GROUP_TYPE_RSP packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_BY_GROUP_TYPE_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

ATT packet opcode.

Specific value: 17

Type: integer

Size of each attribute data.

Value must be greater or equal to 0 and lesser or equal to 255

Type: array of object

List of attribute data.

No Additional Items

Each item of this array must be:

Type: object

Type: integer

Attribute handle (effectively the handle representing the start of the group.)

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

End group handle number.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

"Value for the attribute" according to the spec, but in practice because ATTREADBYGROUPTYPE_RSP can only be called on group types 0x2800 (primary service) and 0x2801 (secondary service), this is the UUID of the service, and it's just incidental to the larger point of finding the beginning and end handles that bound the service.)

Same definition as UUID
Type: object

Structure for ATT_READ_BY_GROUP_TYPE_RSP packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "ATT_READ_BY_GROUP_TYPE_RSP"

Type: enum (of integer)

Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).

Same definition as direction

Type: const

ATT packet opcode.

Specific value: 17

Type: integer

Size of each attribute data.

Value must be greater or equal to 0 and lesser or equal to 255

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str

Type: array

Array of GATT Services

No Additional Items

Each item of this array must be:


Type: object

Structure for GATT Primary Service ("attribute type" UUID always 0x2800). Use UUID for brevity, and type_str for readability.

Type: const

Optional field to indicate that the given service or characteristic is a placeholder to hold data lower down in the hierarchy, and the service or characteristic itself shouldn't be imported into storage like a database, or printed as if it's real data.

Specific value: true

Type: const

Optional field to make JSON instance more readable.

Specific value: "Primary Service"

Type: const

UUID type hex string. Alternative to type_str for brevity.

Specific value: "2800"

Type: object

Must include UUID in either of the following formats

Same definition as UUID

Type: integer

2-byte ATT handle number. (Handle 0 is invalid.)

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

2-byte ATT handle number. (Handle 0 is invalid.)

Value must be greater or equal to 1 and lesser or equal to 65535

Type: array

0 or more Characteristics. While every service should technically have characteristics, this data may have been sourced in such a way that that information is not available.

No Additional Items

Each item of this array must be:

Type: object

Structure for GATT Characteristic ("attribute type" UUID always 0x2803). Use UUID for brevity, and type_str for readability.

Type: const

Optional field to indicate that the given service or characteristic is a placeholder to hold data lower down in the hierarchy, and the service or characteristic itself shouldn't be imported into storage like a database, or printed as if it's real data.

Same definition as placeholder_entry

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic"

Type: const

UUID type alternative to type_str for brevity.

Specific value: "2803"

Type: integer

2-byte ATT handle number of the "Characteristic" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

1-byte "Characteristic Properties", which encodes characteristic permission and properties in bits.
0x01 (bit 0) = Broadcast
0x02 (bit 1) = Read
0x04 (bit 2) = Write without response
0x08 (bit 3) = Write (with response)
0x10 (bit 4) = Notify
0x20 (bit 5) = Indicate
0x04 (bit 6) = Authenticated signed writes
0x80 (bit 7) = Extended Properties Characteristic Descriptor should be present

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

2-byte ATT handle number of the "Characteristic Value" attribute, that this Characteristic points to.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: object

Structure for GATT Characteristic ("attribute type" UUID always 0x2803). Optional io_array captures input/output seen to/from this Characteristic Value.

Type: integer

2-byte ATT handle number of the "Characteristic" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: array

This optional field is used if you want to capture a log of all the values you've seen for intput/output via reads, writes, notification, indication, or broadcast.

No Additional Items

Each item of this array must be:

Type: object

Structure for capturing GATT Input/Output.

Type: enum (of string)

Optional field to make JSON more human-readable if the iotype is 1(ATTERROR_RSP)

Must be one of:

  • "Invalid Handle"
  • "Read Not Permitted"
  • "Write Not Permitted"
  • "Invalid PDU"
  • "Insufficient Authentication"
  • "Request Not Supported"
  • "Invalid Offset"
  • "Insufficient Authorization"
  • "Prepare Queue Full"
  • "Attribute Not Found"
  • "Attribute Not Long"
  • "Encryption Key Size Too Short"
  • "Invalid Attribute Value Length"
  • "Unlikely Error"
  • "Insufficient Encryption"
  • "Unsupported Group Type"
  • "Insufficient Resources"
  • "Database Out of Sync"
  • "Value Not Allowed"
  • "Unknown Application Error 0x80"
  • "Unknown Application Error 0x81"
  • "Unknown Application Error 0x82"
  • "Unknown Application Error 0x83"
  • "Unknown Application Error 0x84"
  • "Unknown Application Error 0xf1"
  • "Unknown Application Error 0xf2"
  • "Unknown Application Error 0xf7"
  • "Write Request Rejected"
  • "Client Characteristic Configuration Descriptor Improperly Configured"
  • "Procedure Already in Progress"
  • "Out of Range"

Type: enum (of string)

Optional field to make JSON more human-readable.

Must be one of:

  • "Error - ATT_ERROR_RSP"
  • "Read - ATT_FIND_INFORMATION_RSP"
  • "Read - ATT_FIND_BY_TYPE_VALUE_RSP"
  • "Read - ATT_READ_BY_TYPE_RSP"
  • "Read - ATT_READ_RSP"
  • "Read - ATT_READ_BLOB_RSP"
  • "Read - ATT_READ_MULTIPLE_RSP"
  • "Read - ATT_READ_BY_GROUP_TYPE_RSP"
  • "Read - ATT_READ_MULTIPLE_VARIABLE_RSP"
  • "Write with response - ATT_WRITE_REQ"
  • "Write with response - ATT_PREPARE_WRITE_REQ"
  • "Write without response - ATT_WRITE_CMD"
  • "Write without response - ATT_SIGNED_WRITE_CMD"
  • "Notification - ATT_HANDLE_VALUE_NTF"
  • "Notification - ATT_MULTIPLE_HANDLE_VALUE_NTF"
  • "Indication - ATT_HANDLE_VALUE_IND"

Type: enum (of integer)

What type of IO does this value correspond to? Using the ATT opcode values for the non-error values (and grouping according to the strings for Read vs. Write with response, etc).

Must be one of:

  • 1
  • 5
  • 7
  • 9
  • 11
  • 13
  • 15
  • 17
  • 33
  • 18
  • 22
  • 82
  • 210
  • 27
  • 35
  • 29

Type: string

The uninterpreted literal data seen, as a hex_str (i.e. least significant bytes 0x86 0x75 0x30 0x99 stored as string "86753099".

Type: array

Any of the optional Characteristic Descriptors which can be associated with a Characteristic.

No Additional Items

Each item of this array must be:


Type: object

"Characteristic Descriptor: Characteristic Extended Properties" data type ("attribute type" UUID always 0x2900).

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic Descriptor: Characteristic Extended Properties"

Type: const

This is just here to make it more clear which object this in the Characteristic->descriptors array.

Specific value: "2900"

Type: integer

2-byte ATT handle number of the "Characteristic Descriptor: Characteristic Extended Properties" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

2-byte "Characteristic Properties", which encodes characteristic permission and properties in bits.
bit 0 = Reliable Write
bit 1 = Writable Auxilaries.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

"Characteristic Descriptor: Characteristic User Description" data type ("attribute type" UUID always 0x2901).

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic Descriptor: Characteristic User Description"

Type: const

This is just here to make it more clear which object this in the Characteristic->descriptors array.

Specific value: "2901"

Type: integer

2-byte ATT handle number of the "Characteristic Descriptor: Characteristic User Description" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: string

String which describes the associated Characteristic to users, as a hex string.

Type: string

Optional UTF8 form of human-readable string which describes the associated Characteristic to users.

Type: object

"Characteristic Descriptor: Client Characteristic Configuration" data type ("attribute type" UUID always 0x2902).

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic Descriptor: Client Characteristic Configuration"

Type: const

This is just here to make it more clear which object this in the Characteristic->descriptors array.

Specific value: "2902"

Type: integer

2-byte ATT handle number of the "Characteristic Descriptor: Client Characteristic Configuration" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

2-byte bit field read from or written to by the Client to view or control Server Notification and Indication status for this Characteristic. Only honored if the Characteristic properties also says it support Notification or Indication.
bit 0 set = Notification enabled
bit 1 set = Indication enabled

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

"Characteristic Descriptor: Server Characteristic Configuration" data type ("attribute type" UUID always 0x2903).

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic Descriptor: Server Characteristic Configuration"

Type: const

This is just here to make it more clear which object this in the Characteristic->descriptors array.

Specific value: "2903"

Type: integer

2-byte ATT handle number of the "Server Characteristic Configuration" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

2-byte bit field read from or written to by the Client to view or control Server Notification and Indication status for this Characteristic. Only honored if the Characteristic properties also says it support Broadcast.
This Descriptor is shared by all clients (unlike Client Characteristic Configuration).
If Broadcast is enabled, the value for this Characteristic is broadcast as part of the "Service Data" type in advertisements, if there is space in the advertisements.
bit 0 set = Broadcast enabled

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

"Characteristic Descriptor: Characteristic Presentation Format" data type ("attribute type" UUID always 0x2904).

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic Descriptor: Characteristic Presentation Format"

Type: const

This is just here to make it more clear which object this in the Characteristic->descriptors array.

Specific value: "2904"

Type: integer

2-byte ATT handle number of the "Characteristic Descriptor: Client Characteristic Configuration" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

1-byte "Format" field from spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

1-byte "Exponent" field from spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

2-byte "Unit" field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

1-byte "Name Space" field from spec.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

2-byte "Description" field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

"Characteristic Descriptor: Characteristic Aggregate Format" data type ("attribute type" UUID always 0x2905).

Type: const

Optional field to make JSON instance more readable

Specific value: "Characteristic Descriptor: Characteristic Aggregate Format"

Type: const

This is just here to make it more clear which object this in the Characteristic->descriptors array.

Specific value: "2905"

Type: integer

2-byte ATT handle number of the "Characteristic Descriptor: Characteristic Aggregate Format" attribute itself.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: array of integer

From spec: "List of Attribute Handles for the Characteristic Presentation Format Declarations".

No Additional Items

Each item of this array must be:

Type: object

Structure for GATT Secondary Service ("attribute type" UUID always 0x2801). Use UUID for brevity, and type_str for readability

Type: const

Optional field to indicate that the given service or characteristic is a placeholder to hold data lower down in the hierarchy, and the service or characteristic itself shouldn't be imported into storage like a database, or printed as if it's real data.

Same definition as placeholder_entry

Type: const

Optional field to make JSON instance more readable

Specific value: "Secondary Service"

Type: const

UUID type hex string. Alternative to type_str for brevity.

Specific value: "2801"

Type: object

Must include UUID in either of the following formats

Same definition as UUID

Type: integer

2-byte ATT handle number. (Handle 0 is invalid.)

Value must be greater or equal to 1 and lesser or equal to 65535

Type: integer

2-byte ATT handle number. (Handle 0 is invalid.)

Value must be greater or equal to 1 and lesser or equal to 65535

Type: array

0 or more Characteristics. While every service should technically have characteristics, this data may have been sourced in such a way that that information is not available.

No Additional Items

Each item of this array must be:

Type: object

Structure for GATT Characteristic ("attribute type" UUID always 0x2803). Use UUID for brevity, and type_str for readability.

Same definition as items_anyOf_i0_GATTArray_items_anyOf_i0_characteristics_items

Type: array
No Additional Items

Each item of this array must be:


Type: object

Page Scan Reptition Mode value from a FHS/EIR packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: enum (of integer)

2-bit page scan reptition mode. 0 for R0, 1 for R1, 2 fr R2, 3 is RFU. (But allow it anyway because it was seen in the wild.)

Must be one of:

  • 0
  • 1
  • 2
  • 3
Type: object

Class Of Device (CoD) value from a FHS/EIR packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: string

Class of Device (CoD) field, 24 bits, as hex string.

Same definition as CoD_hex_str

Type: array
No Additional Items

Each item of this array must be:


Type: object

Structure for LMP_NAME_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NAME_REQ"

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: integer

1-byte value signifying the offset within the name to retrieve from.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LMP_NAME_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NAME_REQ"

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LMP_NAME_RES packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NAME_RES"

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: integer

1-byte value signifying the offset within the name to retrieve from.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

1-byte value signifying the total length of the device name. (Used to determine if the name_fragment is the full name or there's more to retrieve.)

Value must be greater or equal to 0 and lesser or equal to 255

Type: string

A portion of the device name, as single raw hex string..

Type: object

Structure for LMP_NAME_RES packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NAME_RES"

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: string

This is the original full packet data (starting from the {LL/LMP} header / access address) as a hex string (i.e. bytes 0x12 0x34 0x56 represented as string "123456" where byte 0x12 has the lowest address in the packet). Formatted as in the order and endianness outlined in the spec.
This is just for if you want to exhange the information in an un-parsed form (and slightly save space due to less JSON overhead. Note though that we're not trying to optimize for space yet.)

Same definition as full_pkt_hex_str
Type: object

Structure for LMP_ACCEPTED packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_ACCEPTED"

Type: const

This should always be 3. This is required to differentiate from other data types in an array.

Specific value: 3

Type: integer

One byte value indicating the opcode of the LMP command being accepted or not accepted.

Value must be greater or equal to 0 and lesser or equal to 255

Type: string

Optional string version of the rcvd_opcode (e.g. like 'LMP_ACCEPTED').

Type: object

Structure for LMP_ACCEPTED packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_ACCEPTED"

Type: const

This should always be 3. This is required to differentiate from other data types in an array.

Specific value: 3

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 1 byte / 2 hex characters.

Must be at least 2 characters long

Must be at most 2 characters long

Type: object

Structure for LMP_NOT_ACCEPTED packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NOT_ACCEPTED"

Type: const

This should always be 4. This is required to differentiate from other data types in an array.

Specific value: 4

Type: integer

One byte value indicating the opcode of the LMP command being accepted or not accepted.

Same definition as rcvd_opcode

Type: string

Optional string version of the rcvd_opcode (e.g. like 'LMP_ACCEPTED').

Same definition as rcvd_opcode_str

Type: integer

One byte value indicating the reason for rejection.

Value must be greater or equal to 0 and lesser or equal to 255

Type: string

Optional string version of the error_code (e.g. like 'Synchronous Connection Limit To A Device Exceeded').

Type: object

Structure for LMP_NOT_ACCEPTED packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NOT_ACCEPTED"

Type: const

This should always be 4. This is required to differentiate from other data types in an array.

Specific value: 4

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 2 bytes / 4 hex characters.

Must be at least 4 characters long

Must be at most 4 characters long

Type: object

Structure for LMP_DETACH packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_DETACH"

Type: const

This should always be 7. This is required to differentiate from other data types in an array.

Specific value: 7

Type: integer

One byte value indicating the reason for rejection.

Same definition as error_code

Type: string

Optional string version of the error_code (e.g. like 'Synchronous Connection Limit To A Device Exceeded').

Same definition as error_code_str
Type: object

Structure for LMP_DETACH packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_DETACH"

Type: const

This should always be 7. This is required to differentiate from other data types in an array.

Specific value: 7

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 1 bytes / 2 hex characters.

Must be at least 2 characters long

Must be at most 2 characters long

Type: object

Structure for LMP_AUTO_RATEpacket (which is defined as only an opcode, no payload).

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_AUTO_RATE"

Type: const

This should always be 35. This is required to differentiate from other data types in an array.

Specific value: 35
Type: object

Structure for LMP_PREFERRED_RATE packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_PREFERRED_RATE"

Type: const

This should always be 36. This is required to differentiate from other data types in an array.

Specific value: 36

Type: integer

1-byte value indicating the preferred data rate. Different interpretations when using BR vs. EDR. (See spec.)

Type: object

Structure for LMP_PREFERRED_RATE packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_PREFERRED_RATE"

Type: const

This should always be 36. This is required to differentiate from other data types in an array.

Specific value: 36

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 1 byte / 2 hex characters.

Must be at least 2 characters long

Must be at most 2 characters long

Type: object

Structure for LMP_VERSION_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_VERSION_REQ"

Type: const

This should always be 37. This is required to differentiate from other data types in an array.

Specific value: 37

Type: integer

One byte value indicating version of the BT Core Specification that this device comforms to.
e.g. 0x06 = 4.0, 0x08 = 4.2, 0x09 = 5.0, 0x0D = 5.4 etc. See Assigned Numbers document.
Only setting an upper bound to enforce sanity checking that this is a single byte value.

Same definition as version

Type: integer

Company ID as assigned by Bluetooth SIG. See assigned_numbers/company_identifiers/company_identifiers.yaml from https://bitbucket.org/bluetooth-SIG/public.
Only setting an upper bound to enforce sanity checking that this is a two-byte value.

Same definition as company_id

Type: integer

This is nominally the sub-version of the BT controller itself (i.e. hardware). This value is arbitrary, and picked by the hardware maker.
The correspondance of certain values to certain hardware is known for some vendors like Broadcom, but is unknown for most vendors.
Only setting an upper bound to enforce sanity checking that this is a two-byte value.

Same definition as subversion
Type: object

Structure for LMP_VERSION_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_VERSION_REQ"

Type: const

This should always be 37. This is required to differentiate from other data types in an array.

Specific value: 37

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 5 bytes / 10 hex characters.

Must be at least 10 characters long

Must be at most 10 characters long

Type: object

Structure for LMP_VERSION_RES packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_VERSION_RES"

Type: const

This should always be 38. This is required to differentiate from other data types in an array.

Specific value: 38

Type: integer

One byte value indicating version of the BT Core Specification that this device comforms to.
e.g. 0x06 = 4.0, 0x08 = 4.2, 0x09 = 5.0, 0x0D = 5.4 etc. See Assigned Numbers document.
Only setting an upper bound to enforce sanity checking that this is a single byte value.

Same definition as version

Type: integer

Company ID as assigned by Bluetooth SIG. See assigned_numbers/company_identifiers/company_identifiers.yaml from https://bitbucket.org/bluetooth-SIG/public.
Only setting an upper bound to enforce sanity checking that this is a two-byte value.

Same definition as company_id

Type: integer

This is nominally the sub-version of the BT controller itself (i.e. hardware). This value is arbitrary, and picked by the hardware maker.
The correspondance of certain values to certain hardware is known for some vendors like Broadcom, but is unknown for most vendors.
Only setting an upper bound to enforce sanity checking that this is a two-byte value.

Same definition as subversion
Type: object

Structure for LMP_VERSION_RES packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_VERSION_RES"

Type: const

This should always be 38. This is required to differentiate from other data types in an array.

Specific value: 38

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 5 bytes / 10 hex characters.

Must be at least 10 characters long

Must be at most 10 characters long

Type: object

Structure for LMP_FEATURES_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_REQ"

Type: const

Optional field just if you don't want to look up the opcode for this packet type.

Specific value: 39

Type: string

8-byte value as hex string.

Must be at least 16 characters long

Must be at most 16 characters long

Type: object

Structure for LMP_FEATURES_REQ packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_REQ"

Type: const

This should always be 39. This is required to differentiate from other data types in an array.

Specific value: 39

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 8 bytes / 16 hex characters.

Must be at least 16 characters long

Must be at most 16 characters long

Type: object

Structure for LMP_FEATURES_RES packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_RES"

Type: const

This should always be 40. This is required to differentiate from other data types in an array.

Specific value: 40

Type: object

Structure for LMP_FEATURES_RES packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_RES"

Type: const

This should always be 40. This is required to differentiate from other data types in an array.

Specific value: 40

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 8 bytes / 16 hex characters.

Must be at least 16 characters long

Must be at most 16 characters long

Type: object

Structure for LMP_TIMING_ACCURACY_REQ packet (which is defined as only an opcode, no payload).

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_TIMING_ACCURACY_REQ"

Type: const

This should always be 47. This is required to differentiate from other data types in an array.

Specific value: 47
Type: object

Structure for LMP_TIMING_ACCURACY_RES packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_TIMING_ACCURACY_RES"

Type: const

This should always be 48. This is required to differentiate from other data types in an array.

Specific value: 48

Type: integer

1-byte value indicating the maximum clock drift in clock tick ppm (parts per million). (Spec default is 250.)

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

1-byte value indicating the maximum jitter in microseconds. (Spec default is 10.)

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LMP_TIMING_ACCURACY_RES packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_TIMING_ACCURACY_RES"

Type: const

This should always be 48. This is required to differentiate from other data types in an array.

Specific value: 48

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 2 bytes / 4 hex characters.

Must be at least 4 characters long

Must be at most 4 characters long

Type: object

Structure for LMP_SETUP_COMPLETE packet (which is defined as only an opcode, no payload).

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_SETUP_COMPLETE"

Type: const

This should always be 49. This is required to differentiate from other data types in an array.

Specific value: 49
Type: object

Structure for LMP_ACCEPTED_EXT packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Specific value: 127

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_ACCEPTED_EXT"

Type: integer

The 'escape' opcode which was used for the extended LMP command that's being accepted or not accepted.

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The opcode which was used for the extended LMP command that's being accepted or not accepted.

Value must be greater or equal to 0 and lesser or equal to 255

Type: string

Optional string version of the rcvdextendedopcode (e.g. like 'LMP_ACCEPTED_EXT').

Type: object

Structure for LMP_ACCEPTED_EXT packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 1. This is required to differentiate from other data types in an array.

Specific value: 1

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_ACCEPTED_EXT"

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 2 bytes / 4 hex characters.

Must be at least 4 characters long

Must be at most 4 characters long

Type: object

Structure for LMP_NOT_ACCEPTED_EXT packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NOT_ACCEPTED_EXT"

Type: integer

The 'escape' opcode which was used for the extended LMP command that's being accepted or not accepted.

Same definition as rcvd_escape_opcode

Type: integer

The opcode which was used for the extended LMP command that's being accepted or not accepted.

Same definition as rcvd_extended_opcode

Type: string

Optional string version of the rcvdextendedopcode (e.g. like 'LMP_ACCEPTED_EXT').

Same definition as rcvd_extended_opcode_str

Type: integer

One byte value indicating the reason for rejection.

Same definition as error_code

Type: string

Optional string version of the error_code (e.g. like 'Synchronous Connection Limit To A Device Exceeded').

Same definition as error_code_str
Type: object

Structure for LMP_NOT_ACCEPTED_EXT packet, as single raw hex string.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 2. This is required to differentiate from other data types in an array.

Specific value: 2

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_NOT_ACCEPTED_EXT"

Type: string

This should exclude the opcode byte. Therefore it will always be exactly 3 bytes / 6 hex characters.

Must be at least 6 characters long

Must be at most 6 characters long

Type: object

Structure for LMP_FEATURES_REQ_EXT packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 3. This is required to differentiate from other data types in an array.

Specific value: 3

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_REQ_EXT"

Type: integer

Which page of features this corresponds to.

Type: integer

The maximum supported page (64-bit chunk) which contains non-zero features.

Type: object

Structure for LMP_FEATURES_REQ_EXT packet, as single raw hex string..

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 3. This is required to differentiate from other data types in an array.

Specific value: 3

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_REQ_EXT"

Type: string

This should exclude the escape byte and opcode byte. Therefore it will always be exactly 10 bytes / 20 hex characters.

Must be at least 20 characters long

Must be at most 20 characters long

Type: object

Structure for LMP_FEATURES_RES_EXT packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 4. This is required to differentiate from other data types in an array.

Specific value: 4

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_RES_EXT"

Type: integer

Which page of features this corresponds to.

Type: integer

The maximum supported page (64-bit chunk) which contains non-zero features.

Type: object

Structure for LMP_FEATURES_RES_EXT packet, as single raw hex string..

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 4. This is required to differentiate from other data types in an array.

Specific value: 4

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_FEATURES_RES_EXT"

Type: string

This should exclude the escape byte and opcode byte. Therefore it will always be exactly 10 bytes / 20 hex characters.

Must be at least 20 characters long

Must be at most 20 characters long

Type: object

Structure for LMP_CHANNEL_CLASSIFICATION packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 17. This is required to differentiate from other data types in an array.

Specific value: 17

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_CHANNEL_CLASSIFICATION"

Type: string

10-byte value (2 bit classifier * 40 channels) as hex string.

Must be at least 20 characters long

Must be at most 20 characters long

Type: object

Structure for LMP_CHANNEL_CLASSIFICATION packet, as single raw hex string..

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 17. This is required to differentiate from other data types in an array.

Specific value: 17

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_CHANNEL_CLASSIFICATION"

Type: string

This should exclude the escape byte and opcode byte. Therefore it will always be exactly 10 bytes / 20 hex characters.

Must be at least 20 characters long

Must be at most 20 characters long

Type: object

Structure for LMP_POWER_CONTROL_REQ packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 31. This is required to differentiate from other data types in an array.

Specific value: 31

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_POWER_CONTROL_REQ"

Type: integer

Request to increment, decrement, or increase to maximu the transmit power level.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LMP_POWER_CONTROL_REQ packet, as single raw hex string..

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 31. This is required to differentiate from other data types in an array.

Specific value: 31

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_POWER_CONTROL_REQ"

Type: string

This should exclude the escape byte and opcode byte. Therefore it will always be exactly 1 byte / 2 hex characters.

Must be at least 2 characters long

Must be at most 2 characters long

Type: object

Structure for LMP_POWER_CONTROL_RES packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 32. This is required to differentiate from other data types in an array.

Specific value: 32

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_POWER_CONTROL_RES"

Type: integer

Array of 4 2-bit values, for GFSK, π/4-DQPSK, 8DPSK & reserved, indicating whether to change the TX power by 1 step or move to min or max power.

Value must be greater or equal to 0 and lesser or equal to 255

Type: object

Structure for LMP_POWER_CONTROL_RES packet, as single raw hex string..

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

The 'escape' opcode of 127 (0x7F) that's used at the offset that would normally be the LMP opcode. Used for extended LMP commands (suffixed with _EXT).

Same definition as escape_127

Type: const

This should always be 32. This is required to differentiate from other data types in an array.

Specific value: 32

Type: const

This optional field is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "LMP_POWER_CONTROL_RES"

Type: string

This should exclude the escape byte and opcode byte. Therefore it will always be exactly 1 byte / 2 hex characters.

Must be at least 2 characters long

Must be at most 2 characters long

Type: array
No Additional Items

Each item of this array must be:


Type: object

Structure for SDP_ERROR_RSP packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

This optional field (interpretation of 'error_code' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_ERROR_RSP"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 1.

Specific value: 1

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "ParameterLength" field from spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte "ErrorCode" value from the spec. As of BT Core Spec v5.4 only types 1-6 are defined.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object

Structure for SDP_SERVICE_SEARCH_REQ packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_SERVICE_SEARCH_REQ"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 2.

Specific value: 2

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as transaction_id

Type: integer

2-byte "ParameterLength" field from spec.

Same definition as param_len

Type: string

Because the SDP data can be variable-length lists, and because Scapy doesn't parse it currently, for now I'm just saving this as the raw data which I'll put into the DB and then parse with TellMeEverything.py

Type: object

Structure for SDP_SERVICE_SEARCH_RSP packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_SERVICE_SEARCH_RSP"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 3.

Specific value: 3

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as transaction_id

Type: integer

2-byte "ParameterLength" field from spec.

Same definition as param_len

Type: string

Because the SDP data can be variable-length lists, and because Scapy doesn't parse it currently, for now I'm just saving this as the raw data which I'll put into the DB and then parse with TellMeEverything.py

Type: object

Structure for SDP_SERVICE_ATTR_REQ packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_SERVICE_ATTR_REQ"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 4.

Specific value: 4

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as transaction_id

Type: integer

2-byte "ParameterLength" field from spec.

Same definition as param_len

Type: string

Because the SDP data can be variable-length lists, and because Scapy doesn't parse it currently, for now I'm just saving this as the raw data which I'll put into the DB and then parse with TellMeEverything.py

Type: object

Structure for SDP_SERVICE_ATTR_RSP packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_SERVICE_ATTR_RSP"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 5.

Specific value: 5

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as transaction_id

Type: integer

2-byte "ParameterLength" field from spec.

Same definition as param_len

Type: string

Because the SDP data can be variable-length lists, and because Scapy doesn't parse it currently, for now I'm just saving this as the raw data which I'll put into the DB and then parse with TellMeEverything.py

Type: object

Structure for SDP_SERVICE_SEARCH_ATTR_REQ packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_SERVICE_SEARCH_ATTR_REQ"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 6.

Specific value: 6

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as transaction_id

Type: integer

2-byte "ParameterLength" field from spec.

Same definition as param_len

Type: string

Because the SDP data can be variable-length lists, and because Scapy doesn't parse it currently, for now I'm just saving this as the raw data which I'll put into the DB and then parse with TellMeEverything.py

Type: object

Structure for SDP_SERVICE_SEARCH_ATTR_RSP packet.

The following properties are required:

  • direction

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: const

This optional field (interpretation of 'pdu_id' field) is just for if you don't care about json file size and you want more human-readable JSON output.

Specific value: "SDP_SERVICE_SEARCH_ATTR_RSP"

Type: integer

2-byte length field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

2-byte Channel ID (CID) field from the enclosing L2CAP header. Not 100% sure yet whether we should include this in SDP but including it just in case.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: const

The L2CAP code for this packet type. Must always be 7.

Specific value: 7

Type: integer

2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.

Same definition as transaction_id

Type: integer

2-byte "ParameterLength" field from spec.

Same definition as param_len

Type: string

Because the SDP data can be variable-length lists, and because Scapy doesn't parse it currently, for now I'm just saving this as the raw data which I'll put into the DB and then parse with TellMeEverything.py

Type: array

Array of GPS records.

No Additional Items

Each item of this array must be:

Type: object

Time and GPS coordinates (as floats), with RSSI optional (but desired). src_file also optional.

Type: integer

Received Signal Strength Indicator in dBm (deciBel-milliwatts) at the time this record was collected.
Optional because it may not be available.
But in general if you want to attempt trilateration, you'll need this.

Same definition as items_anyOf_i0_AdvChanArray_items_std_optional_fields_anyOf_i3

Type: string

Optional source file where this data came from. Useful for backtracking data when debugging if something was parsed correctly or not.

Same definition as items_anyOf_i0_AdvChanArray_items_std_optional_fields_anyOf_i1

Type: object

Optional field to hold timestamps in multiple possible formats.

Same definition as items_anyOf_i0_AdvChanArray_items_std_optional_fields_anyOf_i0

Type: number

Latitude as floating point number. E.g. 38.9612369.

Value must be greater or equal to -90 and lesser or equal to 90

Type: number

Longitude as floating point number. E.g. -76.835567.

Value must be greater or equal to -180 and lesser or equal to 180

Type: object

The core information which must be in every element of the base array

Type: object

The data within a BLE CONNECT_IND packet.

Type: object

Common optional fields that can be included in a record if desired.

Same definition as std_optional_fields

Type: string

The Central device's Bluetooth Device Address.

Same definition as bdaddr

Type: enum (of integer)

Whether the Central device's BDADDR is public (0) or random (1).

Same definition as bdaddr_rand

Type: string

The Peripheral device's Bluetooth Device Address.

Same definition as bdaddr

Type: enum (of integer)

Whether the Peripheral device's BDADDR is public (0) or random (1).

Same definition as bdaddr_rand

Type: integer

The Access Address sent as part of a CONNECT_IND, and used after two devices make a successful connection.

Value must be greater or equal to 0 and lesser or equal to 4294967295

Type: string

The 3-byte CRC initialization value used in the CONNECT_IND packet, as a hex string.

Must be at least 6 characters long

Must be at most 6 characters long

Type: integer

The transmit window size used in the CONNECT_IND packet. (Multiplied by 1.25ms). This should technically be only between 1 and 255, but put in whatever was actually used (i.e. accept 0).

Value must be greater or equal to 0 and lesser or equal to 255

Type: integer

The transmit window offset used in the CONNECT_IND packet. (Multiplied by 1.25ms). "The transmitWindowOffset shall be a multiple of 1.25 ms in the range 0 ms to connInterval." according to the spec.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The connection interval used in the CONNECT_IND packet. (Multiplied by 1.25ms). This should technically be only between 7.5ms to 4.0s (6-3200) according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The peripheral latency used in the CONNECT_IND packet. "The value of connSubrateFactor shall be in the range 1 to 500 and shall be set to 1 for a new connection" to be valid according to the spec, but put whatever value was actually found in the packet.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: integer

The connection timeout used in the CONNECT_IND packet. (Multiplied by 10ms). "The connSupervisionTimeout shall be a multiple of 10 ms in the range 100 ms to 32.0s and it shall be larger than (1 + connPeripheralLatency) × connSubrateFactor × connInterval × 2." (so 1-3200)according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: string

The (5-byte) channel map used in the CONNECT_IND packet, as a hex string.

Must be at least 10 characters long

Must be at most 10 characters long

Type: integer

The (5-bit) hop increment used in the CONNECT_IND packet. This should technically be only between 5-16 according to the spec, but put in whatever was actually used.

Value must be greater or equal to 0 and lesser or equal to 31

Type: integer

The (3-bit) sleep clock accuracy used in the CONNECT_IND packet.

Value must be greater or equal to 0 and lesser or equal to 7

Type: array

Capture multiple types of data such as ADV_IND, SCAN_RSP, EIR, etc here.

Same definition as AdvChanArray

Type: array

Array of GATT Services

Same definition as GATTArray

Type: array

Array of GPS records.

Same definition as GPSArray