CID vs. PSM in BLE: Key Differences & Functions Explained
Advertisement
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.
-
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.

Differences Between CID and PSM/SPSM (BLE Context)
| Feature | CID (Channel Identifier) | SPSM / LE_PSM (Simplified Protocol/Service Multiplexer) |
|---|---|---|
| Primary Purpose | Acts 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 Packets | Found 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”). |
| Size | 2 octets (16 bits). | 2 octets (16 bits, fixed length). |
| Scope | Continuously, throughout the entire lifespan of the connection. | Only once, during the initial L2CAP channel establishment phase. |
| BLE Value Ranges | Fixed: 0x0004 to 0x0006 Dynamic: 0x0040 to 0x007F | SIG Assigned: 0x0001 to 0x007F Dynamic (via GATT): 0x0080 to 0x00FF |
| Analogy with respect to TCPIP | It 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
- Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
- Bluetooth SIG : Bluetooth Technology Overview
Continue Learning Bluetooth Basic Concepts
- What are new features in Bluetooth 6.3 Version
- Bluetooth GATT Vs. ATT Vs. GAP : Key Comparison
- Bluetooth Service Vs. Characteristic Vs. Descriptor
- Bluetooth Central Vs. Peripheral : Key Differences
- Bluetooth Notifications Vs. Indications
- Bluetooth Channel Sounding Vs. RSSI
- Bluetooth Direction Finding Methods : AoA Vs. AoD
- Bluetooth Error Codes Guide : Meanings, Causes & Fixes
- Bluetooth L2CAP and HCI : Key Differences
Continue Learning Bluetooth Technology
- Bluetooth Basics Tutorial
- Bluetooth Low Energy (BLE) Basics Tutorial
- Bluetooth Protocol Stack & Device State Diagram
- Bluetooth Physical Layer Modules
- Bluetooth MAC Layer Overview
- Bluetooth Channel Frequency List
- Bluetooth Network Security
- Bluetooth Low Energy (BLE) Connection Establishment Procedure
- Bluetooth Profiles: HFP, HSP, A2DP, AVRCP, PBAP & MAP
- Bluetooth Mesh Node Types & Protocol Stack Layer Functions
