DA3
AI-Generated Content
This page was generated with the assistance of AI and may contain inaccuracies. It is intended as a placeholder for future human verification. If you spot issues ahead of its initial review, please report them on GitHub!
Standard
DA3 (Tertiary Device Attributes) is a CSI sequence that queries the terminal for its unit identification string.
Syntax
CSI = c DA3 request (query)
DCS ! | Pu ST DA3 response
Formal syntax
(* Request *)
DA3-request = 0x1b, "[", "=", [ "0" ], "c" ;
(* Response *)
DA3-response = 0x1b, "P", "!", "|", unit-id, 0x1b, "" ;
unit-id = hex-char, { hex-char } ;
hex-char = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7"
| "8" | "9" | "A" | "B" | "C" | "D" | "E" | "F" ;Description
Per the VT510 manual, the host sends CSI = c to request tertiary device attributes. The terminal responds with a DCS (Device Control String) containing a unit identification code as hexadecimal characters.
On DEC hardware terminals, the unit ID was a unique factory-assigned identifier for each physical terminal. On modern terminal emulators, the response varies:
- XTerm responds with
DCS ! | 0 0 0 0 0 0 0 0 ST(eight zero characters) - Some terminals respond with a hex-encoded identifier string
- Many terminals do not implement DA3 at all
DA3 is the least commonly supported of the three Device Attributes queries and has limited practical use in modern environments.
Examples
printf '\e[=c'
# Typical XTerm response: ESC P ! | 00000000 ESC \
Specifications
| Specification | Section |
|---|---|
| VT510 Reference | — |
Terminal support
| Terminal | Support | Version | Notes |
|---|---|---|---|
| Terminal Emulators | |||
| Alacritty | ✗ | No | |
| Bobcat | ✓ | 0.9.0 | Supported via TerminalCtrl library |
| contour | ✓ | v0.1.0 | Returns hardcoded unit ID C0000000 |
| foot | ✓ | Yes | Implemented at csi.c:1854-1872, responds with 'FOOT' as unit ID |
| Ghostty | ✓ | v1.0.0 | |
| iTerm2 | ✓ | Yes | Tertiary device attributes (DA3) implemented with VT100CSI_DA3 token type. Requires VT level 400+ (iTermEmulationLevel400). |
| Kitty | ✗ | No | |
| Konsole | ✓ | Yes | Reports tertiary attributes with '~KDE' identifier via DCS ! | 7E4B4445 ST |
| mintty | ✗ | No | No implementation found for CSI = c (tertiary device attributes). |
| mlterm | ✓ | rel-3_6_2 | Returns DCS ! | 000000 ST |
| PuTTY | ✗ | No | Tertiary DA (CSI = c) not implemented |
| Rio | ✗ | No | |
| rxvt-unicode | ✗ | No | |
| st | ✗ | No | CSI = c not handled; only ? prefix supported in parser |
| terminology | ✓ | v1.10.0 | Reports device ID as ~~TY in hex |
| VT100 | ✗ | No | |
| VTE | ✓ | Yes | Reports terminal ID as '~VTE' encoded in hexadecimal |
| WezTerm | ✓ | Yes | RequestTertiaryDeviceAttributes returns DCS format |
| Windows Terminal | ✓ | Yes | Reports terminal ID as 00000000 |
| xterm | ✓ | Yes | VT400+ feature for Terminal Unit ID |
| xterm.js | ✗ | No | Not implemented |
| Multiplexers | |||
| cy | ✗ | No | |
| GNU Screen | ✗ | No | CSI = c not implemented |
| tmux | ✗ | No | CSI = c not implemented in parser |
| tuios | ✗ | No | |
| Zellij | ✗ | No | Tertiary device attributes (CSI = c) are not implemented |
See also
- DA1 — Primary Device Attributes — Terminal class and features
- DA2 — Secondary Device Attributes — Terminal type and version