TR369.org: Knowledge Center for TR-369 USP
While we were building our USP controller we kept notes on the parts of TR-369 that took longest to get right. When the notes got long enough to be useful to other people, we put them on a website. That is TR369.org. It is free, it has no sign-up, and we keep adding to it.
It covers
- How to implement each part, from the point of view of someone who did
- Real request and response pairs, as JSON and as Protobuf
- Every message type, one page each
- Every error code, with what usually causes it
- Corrections from readers, which we welcome
The main sections
USP records
The USP Record is the envelope: it carries the sender, the receiver and optionally an end-to-end security layer, and the message sits inside it. People confuse records and messages constantly. This section fixes that.
USP messages
What a controller and an agent actually say to each other: the header, the body, requests and responses and errors, and how they map onto the Protobuf definitions.
Requests and responses
For each operation, a request and the response it gets back, captured from a real controller and a real agent, with the fields explained.
Message types
Get, Set, Add, Delete, Operate, Notify, GetSupportedDM, GetInstances, GetSupportedProtocol. One page each, with when to use it and what goes wrong.
OB-USP-Agent
The Broadband Forum's open-source agent, usually called obuspa. How to build it, configure it, point it at a controller and read its logs. If you are testing a controller, this is the agent you will use first.
Error codes
Every code the specification defines, what it means, and in our experience what usually caused it. The page we look at most ourselves.
Good places to start
The front page
Home pageEverything is linked from here, roughly in the order the specification presents it.
View on TR369.orgTR-369 USP message types
Message typesOne page per message type, with examples. The most-read section of the site.
View on TR369.orgOperate request and response structure
Operate messageOperate is the message that runs commands on a device, and the one with the most moving parts. Worked through with examples.
View on TR369.org