OpenLCB Specifications

This page provides access to the OpenLCB™ Standards and Technical Note documents.

OpenLCB is not a formal standards-making body, but we are interested in making it clear what’s required and not required for interoperation between OpenLCB nodes. Therefore, we are creating a series of “standards” and corresponding explanatory “technical notes” as specific documents. “Standards” are normative, to the extent that anything this bunch of happy campers does can be proscriptive. “Technical Notes” are coupled statements of explanations and additional information that go with each standard. For more information on the conventions used when writing OpenLCB standards and technical notes, please see the separate “conventions” page.

For background information, informal and development documents, etc, please see the “documentation” index page.

These documents describe the current version of the OpenLCB protocols.

Layered View

OpenLCB has been created as a layered family of protocols. The basic structure is along the lines of the wildly successful architecture of the ARPA TCP/IP family of protocols. For use on e.g. Controller Area Network (CAN), OpenLCB has to deal with lower-level concepts than the TCP/IP stack does, so OpenLCB is structured like a hybrid of the TCP/IP with the lower-level physical-layer and data-link-layer concepts of the ISO model.

In the following, items marked in light green are complete and adopted. Uncolored links are solid drafts, with the next step being discussion and adoption. The right two columns list the corresponding ISO and TCP/IP layer names, and are not part of OpenLCB.

(We need a strong technical, non-normative introduction of some sort. It’s not clear where it goes in this view of the table of contents. See the prior “Technical Introduction” development document for an example of possible content.)

Common CAN TCP/IP OSI Model Layer TCP/IP Model Layer
Display Protocol [dev note]Remote Button Protocol [draft TN (.pdf)]Ident Method [dev note]Event Teaching/Learning Protocol [dev note 1] [dev note 2] [dev note 3] Application Application
Simple Node Identification Protocol [Std(.pdf)][TN (.pdf)][Draft Standard pdf][Draft TN pdf]

Configuration Description Information [Std (.pdf)]
[TN (.pdf)] 
[Draft Standard pdf][Draft TN pdf]

Memory Configuration Protocol [Std (.pdf)]
[TN (.pdf)]
[Draft Standard pdf][Draft TN pdf]

Broadcast Time Protocol [Standard pdf][Technical Node pdf

Firmware Upgrade Protocol [Standard pdf][Technical Node pdf]

Traction Protocol [draft Std (.pdf)[draft TN(.pdf)]

Function Description Information [draft Std (.pdf)] [draft TN (.pdf)]

Train Search Protocol [preliminary Std (.pdf)]

Stream Transport OpenLCB-CAN Stream
Transport [dev note]
[preliminary Standard .pdf Technical Note .pdf]
OpenLCB-TCP/IP Stream Transport Transport Transport
Datagram Transport
[Standard .pdf]
[Technical Note .pdf]

Event Transport
[Standard .pdf]
[Technical Note .pdf]
Event Identifiers [Standard .pdf][Technical Node .pdf] Updated Draft [Standard .pdf] Technical Node .pdf]
Message Network
[Standard .pdf]
[Technical Note .pdf]

Updated Draft [Standard .pdf][Technical Note .pdf]
[MTI allocations (.pdf)]
Network Internet/Network
Unique Identifiers
[Standard .pdf]
[Technical Note .pdf]

Updated Draft [Standard .pdf][Technical Note .pdf]
Frame Transfer
[Standard .pdf]
[Technical Note .pdf]

Updated Draft [Standard .pdf][Technical Note (.pdf)] Bit Timing Spreadsheet (.pdf)(.ods)
OpenLCB-TCP Transfer
[prelim Std .pdf][prelim TN .pdf]
Data Link Network Interface/Subnetwork
Physical Layer
[Standard .pdf]
[Technical Note .pdf]

Updated Draft [Standard .pdf][Technical Note .pdf]
(none) Physical Interface
Common Information TN (.pdf)

Glossary of OpenLCB terms

Background Info Background Info

Other Documents


We need a strong technical, non-normative introduction of some
sort. See the prior “Technical
Introduction” development document

Documentation conventions and general background information on
data types, etc, can be found in the “Common
Information TN”: (.pdf)

Glossary of OpenLCB terms: (.pdf)

Allocation Tables

Various numbers have to be allocated and recorded in OpenLCB. This
section documents those.

Unique IDs and Node

OpenLCB node IDs are a form of unique identifier which are
allocated as described in an adopted
[Standard (.pdf)]
and [Technical Note (.pdf)]

Specific values are recorded and make available via OpenLCB web

Message Type
Indicators (MTIs)

OpenLCB Message Type Indicators (MTIs) are allocated as described
in the message-level documentation. The specific assigned values are
tracked in a [spreadsheet (.pdf)].

Event IDs

The specific values are assigned in the Event Identifiers Standard [(.pdf)]

Protocol ID numbers

Protocol ID bits are defined at the Protocol Identification
Request message of the Message Network specification. [(.pdf)]

Datagram protocol IDs

The specific assigned values are tracked in a spreadsheet

Stream protocol IDs

The specific assigned values are tracked in a spreadsheet

Memory Spaces

The Memory Configuration Protocol defines memory spaces, some of
which are reserved for specific uses. [(.pdf)]


TCP/IP model

OSI model