My Lua BLE dissector is not called for a GATT Read Blob Response

asked 2025-05-08 15:41:25 +0000

I am implementing a set of Lua dissectors in order to dissect a proprietary BLE GATT based protocol.

One of the BLE characteristics to read is too long to fit in a standard HCI frame. The protocol does not use the HCI ACL "Reassemble ACL fragments" option, but does

  1. A GATT Read Request that returns the first 22 bytes
  2. A GATT Read Blob request for the remaining 10 bytes at offset 22

If have a lua dissector p_nexxt_ccdtr to handle these 2 messages and assemble them. It is registered as

local bt_dissector = DissectorTable.get("bluetooth.uuid")
bt_dissector:add(<proprietary 128 bit UUID>", p_nexxt_ccdtr)

This dissector is correctly triggered by the Read response, but not the Read Blob response. Wireshark shows for both response messages the same information on the ATT protocol layer, including the correct UUIDs.

I see in packet-btatt.c:dissect_btatt() that the opcodes 0x0b (Read Response) and 0x0d (Read Blob Response) are treated differently, but could not figure out what is going on.

Why is my "bluetooth.uuid" dissector hit for a Read response, but not a Read Blob response?

edit retag flag offensive close merge delete