BlueTooth Information Data Exchange Schema (BTIDES!)
No Additional ItemsThe core information which must be in every element of the base array
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
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.
Capture multiple types of data such as ADV_IND, SCAN_RSP, EIR, etc here.
No Additional ItemsData about a packet seen on an advertising channel (could be *ADV_* or *SCAN_* for BLE or EIR for BR/EDR).
Common optional fields that can be included in a record if desired.
Optional field to hold timestamps in multiple possible formats.
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
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
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
Optional source file where this data came from. Useful for backtracking data when debugging if something was parsed correctly or not.
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
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
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
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.
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.)
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 ItemsStructure for AdvData of type 0x01 = "Flags"
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"
This should always be exactly == 0x01. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:1
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.
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
Structure for AdvData of type 0x02 = "Incomplete List of 16-bit Service or Service Class UUIDs."
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"
This should always be exactly == 0x02. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:2
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.
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 ItemsUUID16 as hex_str.
Must be at least 4 characters long
Must be at most 4 characters long
Structure for AdvData of type 0x03 = "Complete List of 16-bit Service or Service Class UUIDs."
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"
This should always be exactly == 0x03. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:3
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.
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 ItemsUUID16 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i1_UUID16List_itemsStructure for AdvData of type 0x04 = "Incomplete List of 32-bit Service or Service Class UUIDs."
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"
This should always be exactly == 0x04. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:4
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.
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 ItemsUUID32 as hex_str.
Must be at least 8 characters long
Must be at most 8 characters long
Structure for AdvData of type 0x05 = "Complete List of 32-bit Service or Service Class UUIDs."
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"
This should always be exactly == 0x05. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:5
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.
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 ItemsUUID32 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i3_UUID32List_itemsStructure for AdvData of type 0x06 = "Incomplete List of 128-bit Service or Service Class UUIDs."
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"
This should always be exactly == 0x06. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:6
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.
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 ItemsUUID128 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.
Structure for AdvData of type 0x07 = "Complete List of 128-bit Service or Service Class UUIDs."
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"
This should always be exactly == 0x07. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:7
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.
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 ItemsUUID128 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_itemsStructure for AdvData of type 0x08 = "Shortened Local Name".
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
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"
This should always be exactly == 0x08. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:8
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
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
Structure for AdvData of type 0x09 = "Complete Local Name".
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
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"
This should always be exactly == 0x09. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:9
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
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
Structure for AdvData of type 0x0A = "Transmit Power Level" (in dBm).
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"
This should always be exactly == 0x0A (10). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:10
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.
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
Structure for AdvData of type 0x10 = "DeviceID". Note: Actual definition comes from Device ID Profile document "EIR Transactions to Obtain Device ID Information" section.
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"
This should always be exactly == 0x10. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:16
Must be 1 for Bluetooth SIG, and 2 for USB SIG. Other values are RFU.
16-bit ID looked up according to vendoridsource value.
16-bit ID that is set to a value that is meaningful to the vendor themselves.
16-bit ID that is set to a value that is meaningful to the vendor themselves.
Structure for AdvData of type 0x0D = "Class of Device".
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"
This should always be exactly == 0x0D (13). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:13
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.
Class of Device (CoD) field, 24 bits, as hex string.
Must be at least 6 characters long
Must be at most 6 characters long
Structure for AdvData of type 0x12 = "Peripheral Connection Interval Range".
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"
This should always be exactly == 0x12 (18). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:18
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.
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.
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.
Structure for AdvData of type 0x14 = "List of 16-bit Service Solicitation UUIDs".
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"
This should always be exactly == 0x14 (20). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:20
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.
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 ItemsUUID16 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i1_UUID16List_itemsStructure for AdvData of type 0x1F = "List of 32-bit Service Solicitation UUIDs".
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"
This should always be exactly == 0x1F (31). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:31
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.
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 ItemsUUID32 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i3_UUID32List_itemsStructure for AdvData of type 0x15 = "List of 128-bit Service Solicitation UUIDs".
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"
This should always be exactly == 0x15 (21). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:21
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.
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 ItemsUUID128 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_itemsStructure for AdvData of type 0x16 = "Service Data - 16-bit UUID".
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"
This should always be exactly == 0x16 (22). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:22
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.
UUID16 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i1_UUID16List_itemsThe raw service data as a hex string.
Structure for AdvData of type 0x20 = "Service Data - 32-bit UUID".
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"
This should always be exactly == 0x20 (32). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:32
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.
UUID32 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i3_UUID32List_itemsThe raw service data as a hex string.
Structure for AdvData of type 0x21 = "Service Data - 128-bit UUID".
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"
This should always be exactly == 0x21 (33). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:33
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.
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_itemsThe raw service data as a hex string.
Structure for AdvData of type 0x17 = "Public Target Address".
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"
This should always be exactly == 0x17 (23). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:23
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.
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 bdaddrStructure for AdvData of type 0x18 = "Random Target Address".
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"
This should always be exactly == 0x18 (24). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:24
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.
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 bdaddrStructure for AdvData of type 0x19 = "Appearance".
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"
This should always be exactly == 0x19 (25). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:25
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.
16-bit Appearance value as a hex string.
Must be at least 4 characters long
Must be at most 4 characters long
Structure for AdvData of type 0x1A = "Advertising Interval".
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"
This should always be exactly == 0x1A (26). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:26
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.
16, 24, or 32-bit Advertising Interval in units of 625us
Value must be greater or equal to 0
Structure for AdvData of type 0x1B = "LE Bluetooth Device Address".
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"
This should always be exactly == 0x1B (27). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:27
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.
0 for public, 1 for random
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 bdaddrStructure 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.
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"
This should always be exactly == 0x1C (28). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:28
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.
See the CSS for the definition of the 4 possible values.
Structure for AdvData of type 0x24 = "URI" (Uniform Resource Identifier).
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"
This should always be exactly == 0x24 (36). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:36
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.
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.
Structure for AdvData of type 0x27 = "LE Supported Features".
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"
This should always be exactly == 0x27 (39). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:39
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.
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
Structure for AdvData of type 0x30 = "Broadcast Name".
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
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"
This should always be exactly == 0x30. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:48
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
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
Structure for AdvData of type 0x31 = "Encrypted Advertising Data".
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"
This should always be exactly == 0x31 (49). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:49
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.
Encrypted data as a hex string.
Structure for AdvData of type 0x3d = "3D Information Data".
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
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"
This should always be exactly == 0x3d. (Per the assigned numbers document, "Common Data Type" table.)
Specific value:61
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
This is the first byte of data, which contains multiple single-bit fields and RFU bits. See the 3D Synchronization Profile.
This is the first byte of data, which contains multiple single-bit fields and RFU bits. See the 3D Synchronization Profile.
Structure for AdvData of type 0xFF = "Manufacturer Specific Data" (MSD)
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"
This should always be exactly == 0xFF (255). (Per the assigned numbers document, "Common Data Type" table.)
Specific value:255
Length of the MSD (including company ID), from packet.
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
This is the remainder of the MSD, after the first 2 bytes which are interpreted per above as the company_id_hex_str.
Structure for LL_CONNECTION_UPDATE_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
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"
This should always be 0. This is required to differentiate from other data types in an array.
Specific value:0
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
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
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
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
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
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
Structure for LL_CONNECTION_UPDATE_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 0. This is required to differentiate from other data types in an array.
Specific value:0
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.)
Structure for LL_CHANNEL_MAP_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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
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
Structure for LL_CHANNEL_MAP_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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.)
Structure for LL_TERMINATE_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionOptional human-readable string describing the error.
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"
This should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
One byte value indicating the reason for termination.
Value must be greater or equal to 0 and lesser or equal to 255
Structure for LL_TERMINATE_IND packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
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.)
Structure for LL_ENC_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 3. This is required to differentiate from other data types in an array.
Specific value:3
8 byte random value provided by host.
Value must be greater or equal to 0 and lesser or equal to 18446744073709551615
2 byte encrypted diversifier.
Value must be greater or equal to 0 and lesser or equal to 65535
8 byte session key diversifier from Central.
Value must be greater or equal to 0 and lesser or equal to 18446744073709551615
4 byte initialization vector from Central.
Value must be greater or equal to 0 and lesser or equal to 4294967295
Structure for LL_ENC_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 3. This is required to differentiate from other data types in an array.
Specific value:3
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.)
Structure for LL_ENC_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 4. This is required to differentiate from other data types in an array.
Specific value:4
8 byte session key diversifier from Perpheral.
Value must be greater or equal to 0 and lesser or equal to 18446744073709551615
4 byte initialization vector from Perpheral.
Value must be greater or equal to 0 and lesser or equal to 4294967295
Structure for LL_ENC_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 4. This is required to differentiate from other data types in an array.
Specific value:4
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.)
Structure for LL_START_ENC_REQ packet. (This has no payload, only the opcode.)
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 5. This is required to differentiate from other data types in an array.
Specific value:5
Structure for LL_START_ENC_RSP packet. (This has no payload, only the opcode.)
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 6. This is required to differentiate from other data types in an array.
Specific value:6
Structure for LL_UNKNOWN_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 7. This is required to differentiate from other data types in an array.
Specific value:7
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
Structure for LL_UNKNOWN_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 7. This is required to differentiate from other data types in an array.
Specific value:7
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.)
Structure for LL_FEATURE_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 8. This is required to differentiate from other data types in an array.
Specific value:8
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_strStructure for LL_FEATURE_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 8. This is required to differentiate from other data types in an array.
Specific value:8
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.)
Structure for LL_FEATURE_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 9. This is required to differentiate from other data types in an array.
Specific value:9
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_strStructure for LL_FEATURE_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 9. This is required to differentiate from other data types in an array.
Specific value:9
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.)
Structure for LL_VERSION_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis should always be 12. This is required to differentiate from other data types in an array.
Specific value:12
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
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
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
Structure for LL_VERSION_IND packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis should always be 12. This is required to differentiate from other data types in an array.
Specific value:12
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.)
Structure for LL_REJECT_IND packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionOptional human-readable string describing the error.
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"
This should always be 13. This is required to differentiate from other data types in an array.
Specific value:13
One byte value indicating the reason for rejection.
Value must be greater or equal to 0 and lesser or equal to 255
Structure for LL_REJECT_IND packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 13. This is required to differentiate from other data types in an array.
Specific value:13
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.)
Structure for LL_PERIPHERAL_FEATURE_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 14. This is required to differentiate from other data types in an array.
Specific value:14
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_strStructure for LL_PERIPHERAL_FEATURE_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 14. This is required to differentiate from other data types in an array.
Specific value:14
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.)
Structure for LL_CONNECTION_PARAM_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 15. This is required to differentiate from other data types in an array.
Specific value:15
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
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
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
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
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
'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
'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
'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
'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
'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
'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
'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
Structure for LL_CONNECTION_PARAM_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 15. This is required to differentiate from other data types in an array.
Specific value:15
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.)
Structure for LL_CONNECTION_PARAM_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 16. This is required to differentiate from other data types in an array.
Specific value:16
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_minThe 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_maxThe 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 latencyThe 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 timeoutMultiplied 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
'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
'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
'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
'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
'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
'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
'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
Structure for LL_CONNECTION_PARAM_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 16. This is required to differentiate from other data types in an array.
Specific value:16
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.)
Structure for LL_REJECT_EXT_IND packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionOptional human-readable string describing the error.
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"
This should always be 17. This is required to differentiate from other data types in an array.
Specific value:17
The LL opcode that was rejected.
Value must be greater or equal to 0 and lesser or equal to 255
One byte value indicating the reason for termination.
Value must be greater or equal to 0 and lesser or equal to 255
Structure for LL_REJECT_EXT_IND packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 2. This is required to differentiate from other data types in an array.
Specific value:17
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.)
Structure for LL_PING_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 18. This is required to differentiate from other data types in an array.
Specific value:18
Structure for LL_PING_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 19. This is required to differentiate from other data types in an array.
Specific value:19
Structure for LL_LENGTH_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 20. This is required to differentiate from other data types in an array.
Specific value:20
2-byte MaxRxOctets from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte MaxRxTime from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte MaxTxOctets from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte MaxTxTime from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for LL_LENGTH_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 20. This is required to differentiate from other data types in an array.
Specific value:20
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.)
Structure for LL_LENGTH_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 21. This is required to differentiate from other data types in an array.
Specific value:21
2-byte MaxRxOctets from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte MaxRxTime from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte MaxTxOctets from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte MaxTxTime from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for LL_LENGTH_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 21. This is required to differentiate from other data types in an array.
Specific value:21
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.)
Structure for LL_PHY_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 22. This is required to differentiate from other data types in an array.
Specific value:22
1-byte TX_PHYS from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 255
1-byte RX_PHYS from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 255
Structure for LL_PHY_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 22. This is required to differentiate from other data types in an array.
Specific value:22
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.)
Structure for LL_PHY_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 23. This is required to differentiate from other data types in an array.
Specific value:23
1-byte TX_PHYS from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 255
1-byte RX_PHYS from BT Core Spec.
Value must be greater or equal to 0 and lesser or equal to 255
Structure for LL_PHY_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 23. This is required to differentiate from other data types in an array.
Specific value:23
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.)
Structure for LL_PHY_UPDATE_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 24. This is required to differentiate from other data types in an array.
Specific value:24
'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
'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
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
Structure for LL_PHY_UPDATE_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 24. This is required to differentiate from other data types in an array.
Specific value:24
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.)
Structure for packets using opcode 0xFF, which is out of spec and therefore indicative of some sort of custom protocol
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsDirection of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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"
This should always be 255. This is required to differentiate from other data types in an array.
Specific value:255
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.)
Data from an HCI "Remote Name Request Complete" event.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 7. This is required to differentiate from other data types in an array.
Specific value:7
0 for success, other values for failure.
Value must be greater or equal to 0 and lesser or equal to 255
The full device name, without fragmentation, as a hex 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
Structure for L2CAP_CONNECTION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 2.
Specific value:2
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
2-byte "Data Length" field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
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
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
Structure for L2CAP_CONNECTION_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 3.
Specific value:3
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
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
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
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
Structure for L2CAP_CONFIGURATION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 4.
Specific value:4
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
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
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.'
Structure for L2CAP_CONFIGURATION_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 5.
Specific value:5
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
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
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
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.)
Structure for L2CAP_DISCONNECTION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 6.
Specific value:6
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
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
Structure for L2CAP_DISCONNECTION_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 7.
Specific value:7
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
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
Structure for L2CAP_INFORMATION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 10.
Specific value:10
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
Structure for L2CAP_INFORMATION_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 11.
Specific value:11
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
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
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
Structure for L2CAP_CONNECTION_PARAMETER_UPDATE_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 18.
Specific value:18
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as idThe 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_minThe 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_maxThe 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 latencyThe 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 timeoutStructure for L2CAP_CONNECTION_PARAMETER_UPDATE_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe L2CAP code for this packet type. Must always be 19.
Specific value:19
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-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
Structure for L2CAP_LE_CREDIT_BASED_CONNECTION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionOptional 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
1-byte "identifier" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as id2-byte "SPSM" (Simplified Protocol Service Multiplexer) field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte "Source CID" ((L2CAP) Channel ID) field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte "MTU" (Maximum Transmission Unit) field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte "MPS" (Maximum PDU Payload Size) field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
2-byte "Initial Credits" field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for SMP Pairing Request packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 1.
Specific value:1
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe "Out of band (OOB) data flag" field from the spec.
0x00 = "OOB Authentication data not present"
0x01 = "OOB Authentication data from remote device present"
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
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
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
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
Structure for SMP Pairing Response packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 2.
Specific value:2
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionIO 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
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"
The "AuthReq" field from the spec. This has numerous bit-field sub-fields such as Bonding, MITM, Secure Connections, etc
Same definition as auth_reqThe "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_sizeThe "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
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
Structure for SMP Pairing Confirm packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 3.
Specific value:3
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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
Structure for SMP Pairing Random packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 4.
Specific value:4
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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
Structure for SMP Pairing Failed packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis optional field is just for if you don't care about json file size and you want more human-readable JSON output.
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"
The SMP opcode for this packet type. Must always be 5.
Specific value:5
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe error code specifying the reason why pairing failed.
Value must be greater or equal to 0 and lesser or equal to 255
Structure for SMP Security Request packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 11.
Specific value:11
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe "AuthReq" field from the spec. This has numerous bit-field sub-fields such as Bonding, MITM, Secure Connections, etc
Same definition as auth_reqStructure for SMP Pairing Public Key packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 12.
Specific value:12
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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
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
Structure for SMP Pairing DHKey Check packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
The SMP opcode for this packet type. Must always be 13.
Specific value:13
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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
Structure for SMP Pairing Keypress Notification packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis optional field is just for if you don't care about json file size and you want more human-readable JSON output.
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"
The SMP opcode for this packet type. Must always be 14.
Specific value:14
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThe keypress notification type.
Value must be greater or equal to 0 and lesser or equal to 255
An array of all known ATT handle number/UUID pairs.
Each entry is a handle and UUID
No Additional ItemsStructure for ATT enumeration array.
2-byte ATT handle number. (Handle 0 is invalid.)
Value must be greater or equal to 1 and lesser or equal to 65535
Must include UUID in either of the following formats
UUID16 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i1_UUID16List_itemsUUID128 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_itemsStructure for ATT_EXCHANGE_MTU_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:2
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as direction2-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
Structure for ATT_EXCHANGE_MTU_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:2
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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.)
Structure for ATT_EXCHANGE_MTU_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsATT packet opcode.
Specific value:"ATT_EXCHANGE_MTU_RSP"
ATT packet opcode.
Specific value:3
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as direction2-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
Structure for ATT_EXCHANGE_MTU_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Optional field just if you don't want to look up the opcode for this packet type.
Specific value:3
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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.)
Structure for ATT_FIND_INFORMATION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:4
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionFirst requested handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Last requested handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for ATT_FIND_INFORMATION_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:4
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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.)
Structure for ATT_FIND_INFORMATION_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:5
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionFormat of the information data (1 = handles and 16-bit UUIDs, 2 = handles and 128-bit UUIDs).
List of handle and UUID (16 or 128) pairs.
No Additional ItemsHandle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for ATT_FIND_INFORMATION_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:5
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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.)
Structure for ATT_READ_BY_TYPE_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:8
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionFirst requested handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Last requested handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for ATT_READ_BY_TYPE_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:9
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionSize of each attribute handle-value pair
Value must be greater or equal to 0 and lesser or equal to 255
List of attribute data.
No Additional ItemsAttribute handle.
Value must be greater or equal to 0 and lesser or equal to 65535
Attribute value as a hex 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
Structure for ATT_READ_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionATT packet opcode.
Specific value:10
Handle being read from.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for ATT_READ_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:10
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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.)
Structure for ATT_READ_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionATT packet opcode.
Specific value:11
Value read from a handle, as a hex string.
Structure for ATT_READ_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
ATT packet opcode.
Specific value:11
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionThis 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.)
Structure for ATT_READ_BY_GROUP_TYPE_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionATT packet opcode.
Specific value:16
First requested handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Last requested handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
Structure for ATT_READ_BY_GROUP_TYPE_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionATT packet opcode.
Specific value:16
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.)
Structure for ATT_READ_BY_GROUP_TYPE_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionATT packet opcode.
Specific value:17
Size of each attribute data.
Value must be greater or equal to 0 and lesser or equal to 255
List of attribute data.
No Additional ItemsAttribute handle (effectively the handle representing the start of the group.)
Value must be greater or equal to 0 and lesser or equal to 65535
End group handle number.
Value must be greater or equal to 0 and lesser or equal to 65535
"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 UUIDStructure for ATT_READ_BY_GROUP_TYPE_RSP packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Direction of the packet. 0 = Central to Peripheral (C2P), 1 = Peripheral to Central (P2C).
Same definition as directionATT packet opcode.
Specific value:17
Size of each attribute data.
Value must be greater or equal to 0 and lesser or equal to 255
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.)
Array of GATT Services
No Additional ItemsStructure for GATT Primary Service ("attribute type" UUID always 0x2800). Use UUID for brevity, and type_str for readability.
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
Optional field to make JSON instance more readable.
Specific value:"Primary Service"
UUID type hex string. Alternative to type_str for brevity.
Specific value:"2800"
2-byte ATT handle number. (Handle 0 is invalid.)
Value must be greater or equal to 1 and lesser or equal to 65535
2-byte ATT handle number. (Handle 0 is invalid.)
Value must be greater or equal to 1 and lesser or equal to 65535
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 ItemsStructure for GATT Characteristic ("attribute type" UUID always 0x2803). Use UUID for brevity, and type_str for readability.
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_entryOptional field to make JSON instance more readable
Specific value:"Characteristic"
UUID type alternative to type_str for brevity.
Specific value:"2803"
2-byte ATT handle number of the "Characteristic" attribute itself.
Value must be greater or equal to 1 and lesser or equal to 65535
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
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
Structure for GATT Characteristic ("attribute type" UUID always 0x2803). Optional io_array captures input/output seen to/from this Characteristic Value.
2-byte ATT handle number of the "Characteristic" attribute itself.
Value must be greater or equal to 1 and lesser or equal to 65535
UUID for this "Characteristic Value" attribute, as a hex string.
UUID16 as hex_str.
Same definition as items_anyOf_i0_AdvChanArray_items_AdvDataArray_items_anyOf_i1_UUID16List_itemsUUID128 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_itemsThis 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 ItemsStructure for capturing GATT Input/Output.
Optional field to make JSON more human-readable if the iotype is 1(ATTERROR_RSP)
Optional field to make JSON more human-readable.
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).
The uninterpreted literal data seen, as a hex_str (i.e. least significant bytes 0x86 0x75 0x30 0x99 stored as string "86753099".
Any of the optional Characteristic Descriptors which can be associated with a Characteristic.
No Additional Items"Characteristic Descriptor: Characteristic Extended Properties" data type ("attribute type" UUID always 0x2900).
Optional field to make JSON instance more readable
Specific value:"Characteristic Descriptor: Characteristic Extended Properties"
This is just here to make it more clear which object this in the Characteristic->descriptors array.
Specific value:"2900"
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
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
"Characteristic Descriptor: Characteristic User Description" data type ("attribute type" UUID always 0x2901).
Optional field to make JSON instance more readable
Specific value:"Characteristic Descriptor: Characteristic User Description"
This is just here to make it more clear which object this in the Characteristic->descriptors array.
Specific value:"2901"
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
String which describes the associated Characteristic to users, as a hex string.
Optional UTF8 form of human-readable string which describes the associated Characteristic to users.
"Characteristic Descriptor: Client Characteristic Configuration" data type ("attribute type" UUID always 0x2902).
Optional field to make JSON instance more readable
Specific value:"Characteristic Descriptor: Client Characteristic Configuration"
This is just here to make it more clear which object this in the Characteristic->descriptors array.
Specific value:"2902"
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
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
"Characteristic Descriptor: Server Characteristic Configuration" data type ("attribute type" UUID always 0x2903).
Optional field to make JSON instance more readable
Specific value:"Characteristic Descriptor: Server Characteristic Configuration"
This is just here to make it more clear which object this in the Characteristic->descriptors array.
Specific value:"2903"
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
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
"Characteristic Descriptor: Characteristic Presentation Format" data type ("attribute type" UUID always 0x2904).
Optional field to make JSON instance more readable
Specific value:"Characteristic Descriptor: Characteristic Presentation Format"
This is just here to make it more clear which object this in the Characteristic->descriptors array.
Specific value:"2904"
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
1-byte "Format" field from spec.
Value must be greater or equal to 0 and lesser or equal to 255
1-byte "Exponent" field from spec.
Value must be greater or equal to 0 and lesser or equal to 255
2-byte "Unit" field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
1-byte "Name Space" field from spec.
Value must be greater or equal to 0 and lesser or equal to 255
2-byte "Description" field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
"Characteristic Descriptor: Characteristic Aggregate Format" data type ("attribute type" UUID always 0x2905).
Optional field to make JSON instance more readable
Specific value:"Characteristic Descriptor: Characteristic Aggregate Format"
This is just here to make it more clear which object this in the Characteristic->descriptors array.
Specific value:"2905"
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
From spec: "List of Attribute Handles for the Characteristic Presentation Format Declarations".
No Additional ItemsValue must be greater or equal to 1 and lesser or equal to 65535
Structure for GATT Secondary Service ("attribute type" UUID always 0x2801). Use UUID for brevity, and type_str for readability
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_entryOptional field to make JSON instance more readable
Specific value:"Secondary Service"
UUID type hex string. Alternative to type_str for brevity.
Specific value:"2801"
2-byte ATT handle number. (Handle 0 is invalid.)
Value must be greater or equal to 1 and lesser or equal to 65535
2-byte ATT handle number. (Handle 0 is invalid.)
Value must be greater or equal to 1 and lesser or equal to 65535
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 ItemsStructure 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_itemsPage Scan Reptition Mode value from a FHS/EIR packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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.)
Class Of Device (CoD) value from a FHS/EIR packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
Structure for LMP_NAME_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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
Structure for LMP_NAME_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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.)
Structure for LMP_NAME_RES packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
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
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
A portion of the device name, as single raw hex string..
Structure for LMP_NAME_RES packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
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.)
Structure for LMP_ACCEPTED packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 3. This is required to differentiate from other data types in an array.
Specific value:3
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
Optional string version of the rcvd_opcode (e.g. like 'LMP_ACCEPTED').
Structure for LMP_ACCEPTED packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 3. This is required to differentiate from other data types in an array.
Specific value:3
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
Structure for LMP_NOT_ACCEPTED packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 4. This is required to differentiate from other data types in an array.
Specific value:4
One byte value indicating the opcode of the LMP command being accepted or not accepted.
Same definition as rcvd_opcodeOptional string version of the rcvd_opcode (e.g. like 'LMP_ACCEPTED').
Same definition as rcvd_opcode_strOne byte value indicating the reason for rejection.
Value must be greater or equal to 0 and lesser or equal to 255
Optional string version of the error_code (e.g. like 'Synchronous Connection Limit To A Device Exceeded').
Structure for LMP_NOT_ACCEPTED packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 4. This is required to differentiate from other data types in an array.
Specific value:4
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
Structure for LMP_DETACH packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 7. This is required to differentiate from other data types in an array.
Specific value:7
Optional string version of the error_code (e.g. like 'Synchronous Connection Limit To A Device Exceeded').
Same definition as error_code_strStructure for LMP_DETACH packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 7. This is required to differentiate from other data types in an array.
Specific value:7
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
Structure for LMP_AUTO_RATEpacket (which is defined as only an opcode, no payload).
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 35. This is required to differentiate from other data types in an array.
Specific value:35
Structure for LMP_PREFERRED_RATE packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 36. This is required to differentiate from other data types in an array.
Specific value:36
1-byte value indicating the preferred data rate. Different interpretations when using BR vs. EDR. (See spec.)
Structure for LMP_PREFERRED_RATE packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 36. This is required to differentiate from other data types in an array.
Specific value:36
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
Structure for LMP_VERSION_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 37. This is required to differentiate from other data types in an array.
Specific value:37
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.
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.
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.
Structure for LMP_VERSION_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 37. This is required to differentiate from other data types in an array.
Specific value:37
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
Structure for LMP_VERSION_RES packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 38. This is required to differentiate from other data types in an array.
Specific value:38
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.
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.
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.
Structure for LMP_VERSION_RES packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 38. This is required to differentiate from other data types in an array.
Specific value:38
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
Structure for LMP_FEATURES_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
Optional field just if you don't want to look up the opcode for this packet type.
Specific value:39
8-byte value as hex string.
Must be at least 16 characters long
Must be at most 16 characters long
Structure for LMP_FEATURES_REQ packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 39. This is required to differentiate from other data types in an array.
Specific value:39
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
Structure for LMP_FEATURES_RES packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 40. This is required to differentiate from other data types in an array.
Specific value:40
Structure for LMP_FEATURES_RES packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 40. This is required to differentiate from other data types in an array.
Specific value:40
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
Structure for LMP_TIMING_ACCURACY_REQ packet (which is defined as only an opcode, no payload).
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 47. This is required to differentiate from other data types in an array.
Specific value:47
Structure for LMP_TIMING_ACCURACY_RES packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 48. This is required to differentiate from other data types in an array.
Specific value:48
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
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
Structure for LMP_TIMING_ACCURACY_RES packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 48. This is required to differentiate from other data types in an array.
Specific value:48
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
Structure for LMP_SETUP_COMPLETE packet (which is defined as only an opcode, no payload).
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
This should always be 49. This is required to differentiate from other data types in an array.
Specific value:49
Structure for LMP_ACCEPTED_EXT packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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
This should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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"
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
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
Optional string version of the rcvdextendedopcode (e.g. like 'LMP_ACCEPTED_EXT').
Structure for LMP_ACCEPTED_EXT packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 1. This is required to differentiate from other data types in an array.
Specific value:1
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"
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
Structure for LMP_NOT_ACCEPTED_EXT packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
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"
The 'escape' opcode which was used for the extended LMP command that's being accepted or not accepted.
Same definition as rcvd_escape_opcodeThe opcode which was used for the extended LMP command that's being accepted or not accepted.
Same definition as rcvd_extended_opcodeOptional string version of the rcvdextendedopcode (e.g. like 'LMP_ACCEPTED_EXT').
Same definition as rcvd_extended_opcode_strOptional string version of the error_code (e.g. like 'Synchronous Connection Limit To A Device Exceeded').
Same definition as error_code_strStructure for LMP_NOT_ACCEPTED_EXT packet, as single raw hex string.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 2. This is required to differentiate from other data types in an array.
Specific value:2
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"
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
Structure for LMP_FEATURES_REQ_EXT packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 3. This is required to differentiate from other data types in an array.
Specific value:3
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"
Which page of features this corresponds to.
The maximum supported page (64-bit chunk) which contains non-zero features.
Structure for LMP_FEATURES_REQ_EXT packet, as single raw hex string..
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 3. This is required to differentiate from other data types in an array.
Specific value:3
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"
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
Structure for LMP_FEATURES_RES_EXT packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 4. This is required to differentiate from other data types in an array.
Specific value:4
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"
Which page of features this corresponds to.
The maximum supported page (64-bit chunk) which contains non-zero features.
Structure for LMP_FEATURES_RES_EXT packet, as single raw hex string..
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 4. This is required to differentiate from other data types in an array.
Specific value:4
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"
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
Structure for LMP_CHANNEL_CLASSIFICATION packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 17. This is required to differentiate from other data types in an array.
Specific value:17
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"
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
Structure for LMP_CHANNEL_CLASSIFICATION packet, as single raw hex string..
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 17. This is required to differentiate from other data types in an array.
Specific value:17
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"
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
Structure for LMP_POWER_CONTROL_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 31. This is required to differentiate from other data types in an array.
Specific value:31
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"
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
Structure for LMP_POWER_CONTROL_REQ packet, as single raw hex string..
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 31. This is required to differentiate from other data types in an array.
Specific value:31
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"
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
Structure for LMP_POWER_CONTROL_RES packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 32. This is required to differentiate from other data types in an array.
Specific value:32
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"
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
Structure for LMP_POWER_CONTROL_RES packet, as single raw hex string..
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThe '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_127This should always be 32. This is required to differentiate from other data types in an array.
Specific value:32
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"
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
Structure for SDP_ERROR_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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.
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"
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
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
The L2CAP code for this packet type. Must always be 1.
Specific value:1
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
2-byte "ParameterLength" field from spec.
Value must be greater or equal to 0 and lesser or equal to 65535
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
Structure for SDP_SERVICE_SEARCH_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
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
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
The L2CAP code for this packet type. Must always be 2.
Specific value:2
2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as transaction_idBecause 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
Structure for SDP_SERVICE_SEARCH_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
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
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
The L2CAP code for this packet type. Must always be 3.
Specific value:3
2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as transaction_idBecause 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
Structure for SDP_SERVICE_ATTR_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
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
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
The L2CAP code for this packet type. Must always be 4.
Specific value:4
2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as transaction_idBecause 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
Structure for SDP_SERVICE_ATTR_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
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
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
The L2CAP code for this packet type. Must always be 5.
Specific value:5
2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as transaction_idBecause 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
Structure for SDP_SERVICE_SEARCH_ATTR_REQ packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
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
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
The L2CAP code for this packet type. Must always be 6.
Specific value:6
2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as transaction_idBecause 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
Structure for SDP_SERVICE_SEARCH_ATTR_RSP packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsThis 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"
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
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
The L2CAP code for this packet type. Must always be 7.
Specific value:7
2-byte "Transaction ID" field from spec. Arbitrary value, just used to match requests to responses.
Same definition as transaction_idBecause 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
Array of GPS records.
No Additional ItemsTime and GPS coordinates (as floats), with RSSI optional (but desired). src_file also optional.
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.
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_i1Optional field to hold timestamps in multiple possible formats.
Same definition as items_anyOf_i0_AdvChanArray_items_std_optional_fields_anyOf_i0Latitude as floating point number. E.g. 38.9612369.
Value must be greater or equal to -90 and lesser or equal to 90
Longitude as floating point number. E.g. -76.835567.
Value must be greater or equal to -180 and lesser or equal to 180
The core information which must be in every element of the base array
The data within a BLE CONNECT_IND packet.
Common optional fields that can be included in a record if desired.
Same definition as std_optional_fieldsWhether the Central device's BDADDR is public (0) or random (1).
Same definition as bdaddr_randWhether the Peripheral device's BDADDR is public (0) or random (1).
Same definition as bdaddr_randThe 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
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
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
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
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
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
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
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
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
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
Capture multiple types of data such as ADV_IND, SCAN_RSP, EIR, etc here.
Same definition as AdvChanArray