RF Wireless World

Browse articles, tutorials, tools, and vendors.

CID vs. PSM in BLE: Key Differences & Functions Explained

By RF Wireless Expert Team

In Bluetooth Low Energy (BLE), Channel Identifier (CID) and Protocol/Service Multiplexer (PSM) serve different purposes within the L2CAP layer. A CID identifies a specific L2CAP channel endpoint on a logical link, while a PSM identifies the protocol or service associated with an L2CAP connection request.

Channel Identifier (CID) in BLE

A CID is the local name representing a logical channel endpoint on a device. It is essentially the “address” used by the L2CAP layer to route data packets to the correct place.

Functions and Usage of CIDs in BLE:

  • Packet Routing: Every L2CAP packet (PDU) contains a 2-octet CID field in its Basic L2CAP header as shown in figure-1. When the L2CAP layer receives a packet, it reads this CID to determine which upper-layer protocol or application should receive the Information Payload.

  • Protocol Multiplexing: CIDs allow multiple protocols (like ATT, SMP, and Signaling) to share the exact same physical LE link simultaneously without their data getting mixed up.

  • Fixed vs. Dynamic Operation:

    • Fixed CIDs: Core BLE protocols use permanently assigned CIDs. For example, all Attribute Protocol (ATT) data which powers GATT; is automatically routed through CID “0x0004”. Security Manager Protocol (SMP) data is routed through CID “0x0006”.

    • Dynamic CIDs: For custom data streams (using LE Credit Based Flow Control), devices negotiate a dynamic CID (ranging from “0x0040” to “0x007F” for BLE) to represent that specific connection.

BLE L2CAP PDU Format Connection Oriented Mode Figure:1 BLE L2CAP PDU Connection Oriented

Protocol/Service Multiplexer (PSM / SPSM) in BLE

In BLE, the PSM is officially referred to as the SPSM (Simplified Protocol/Service Multiplexer). It was called the LE_PSM in older Bluetooth versions 4.1 to 5.1. It is a 2-octet identifier (as shown in figure-2) used to specify which service or protocol a device wants to connect to when opening a new, dynamic L2CAP channel.

Functions and Usage of PSM/SPSM in BLE:

  • Service Targeting During Setup: Fixed channels (like ATT) don’t need a PSM/SPSM because their CIDs are hardcoded. However, when a device wants to create a “dynamic L2CAP connection” (e.g. for transferring large, custom data streams using credit based flow control), it sends an “L2CAP_LE_CREDIT_BASED_CONNECTION_REQ” signaling packet. This request contains the SPSM to tell the receiving device: “I want to open a new channel, and it is for the service associated with this SPSM.”

  • Value Ranges:

    • Fixed/SIG Assigned (0x0001 to 0x007F): Used for standardized services defined by the Bluetooth SIG.
    • Dynamic (0x0080 to 0x00FF): Used for custom implementations. A device discovers the correct dynamic SPSM by looking it up in the GATT Server prior to connection.
  • Format Rules: Unlike Classic Bluetooth (BR/EDR) where the PSM is variable in length and must follow strict odd/even mathematical rules, the BLE SPSM is simply a fixed 2-octet value where any bit can be odd or even.

BLE L2CAP PDU Format Connectionless Channel Mode

Differences Between CID and PSM/SPSM (BLE Context)

FeatureCID (Channel Identifier)SPSM / LE_PSM (Simplified Protocol/Service Multiplexer)
Primary PurposeActs as the address/endpoint for routing data packets to the correct layer/buffer once a channel is active.Acts as the service identifier requested before a dynamic channel is created.
Presence in PacketsFound in the Basic L2CAP header of every single data packet transmitted.Found only in signaling setup packets (e.g. “L2CAP_LE_CREDIT_BASED_CONNECTION_REQ”).
Size2 octets (16 bits).2 octets (16 bits, fixed length).
ScopeContinuously, throughout the entire lifespan of the connection.Only once, during the initial L2CAP channel establishment phase.
BLE Value RangesFixed: 0x0004 to 0x0006
Dynamic: 0x0040 to 0x007F
SIG Assigned: 0x0001 to 0x007F
Dynamic (via GATT): 0x0080 to 0x00FF
Analogy with respect to TCPIPIt is like the “Socket / Port Number” actively carrying your data stream.It is like the “Well-known Service Port” (e.g. Port 80 for HTTP) you ask for when requesting a new connection.

References & Further Reading

  1. Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
  2. Bluetooth SIG : Bluetooth Technology Overview

Continue Learning Bluetooth Basic Concepts

Continue Learning Bluetooth Technology

Compare Bluetooth With Other Technologies

Keep Reading