Certification (PICS/PIXIT)
A public-safe summary of the kbox-stack KNX certification profile — System B mask 07B0h, KNX Data Secure S-Mode, supported services and interface objects, deliberate deviations, and the stack-versus-integrator split.
kbox-stack is designed as a certifiable KNX system stack. This page summarizes its certification profile at a high level. It is a description of the stack's capabilities, not a certificate.
Passing internal conformance tests is not KNX certification. Formal certification requires re-running the test suite in a KNX-accredited test lab. Certification also applies to a specific stack build on a specific MCU; a binary ported to another controller must be re-registered with KNX.
Certification profile
| Attribute | Value |
|---|---|
| Device class | KNX TP1 end-device |
| Profile | System B, mask version 07B0h |
| Security | KNX Data Secure (S-Mode) |
| Medium | Twisted-pair TP1 |
| Configuration | System Mode (ETS S-Mode download) |
| Used layers | Application / Transport / Network / Link, as a Server |
The physical layer is platform / transceiver-specific. The reference platform uses a certified NCN5130 transceiver on an STM32F103 MCU. A different transceiver or MCU is a different physical layer and is registered separately — the portable stack above the link layer is unchanged.
Supported services & interface objects
At a high level the stack implements the System B management and group communication surface, plus the Data Secure services.
- Group communication —
A_GroupValue_Read/_Write/_Response(send and receive), fan-out (one group object to many group addresses), all four transmission priority classes, and the full set of group-object config flags. - Device management (server) — individual-address read/write, device descriptor (Type 0 → 07B0h), memory read/write (including extended and user memory), property value and property-description services, function-property (extended) services, restart with master-reset erase codes, and serial-number-based addressing.
- Interface objects — six built-in objects: Device, Address Table, Association Table, Group Object Table, and two Application Program objects, plus a Security Interface Object for Data Secure.
- Realisation types — Address Table Type 7, Association Table Type 6, Group Object Table Type 7, Interface Object Handling Type 1, Load/Run state Type 1.
Two APDU tiers are supported: a default of 55 octets and 254 octets. KNX Data Secure in practice needs the 254-octet tier, because at 55 octets the net secure payload is too small for ETS secure download and extended memory writes.
KNX Data Secure declaration
Data Secure is declared from the start — the stack is tested as secure in a single pass rather than added on later.
- Cryptography — real AES-128 with CCM (4-byte truncated MAC), a 48-bit sequence number with per-peer replay protection, and Sync request/response.
- Coverage — both group and point-to-point security; FDSK-based factory commissioning.
- Security Interface Object — the standard Data Secure PIDs are implemented (security mode, key tables for group / P2P / IA, tool key, security report and report control, 48-bit sending sequence number, GO security flags, role table). Zone Key Table is not applicable on TP1 (LTE-Mode only).
- Application Notes — the Data Secure Application-Note set (data security, extended interface-object addressing, extended memory services, group-object diagnostics, access policies, master reset) is covered. IP-Secure Application Notes are not applicable — KNXnet/IP is not supported.
Deliberate deviations
A few behaviours are intentionally simplified or specialised, and are declared as such. These are the public-safe highlights.
- No effective access protection. The Authorization feature is present pro forma (as System B requires) but always grants access level 0; no resource is key-protected. This must be stated in product documentation.
- Read-on-init defaults to off (opt-in per group object).
- Single security-failure-log entry (latest only), to fit the RAM budget.
- User EEPROM is on-chip flash, protected by a magic + CRC header — there is no physical EEPROM.
- Default individual address is 1.1.1 (not the KNX default 15.15.255).
- A_ADC_Read returns a fixed value with no channel filtering.
- Certain run/load sub-states (e.g. RUN state READY) are never produced, so the corresponding precondition test cases are not applicable.
Stack provides vs integrator supplies
This registration describes the stack. Several values are product-specific: the stack provides the mechanism, the integrator supplies the value, and those values do not bind this registration.
| Mechanism | Stack provides | Integrator supplies |
|---|---|---|
| KNX serial number | Carries / serves PID_SERIAL_NUMBER | Unique 6-byte production value |
| Hardware type | Carries PID_HARDWARE_TYPE | Unique per-product code |
| Generic properties | PropertyStore + property model (PDT, width, access) | Populating the store |
| Property access levels | Fields carried and packed into responses | Assigning the levels |
| Datapoint types (DPT) | Value transport (raw bytes) | Defining DPTs in the ETS product database |
| FDSK / keys | Mechanism + persistence | Key generation, QR / label |