Skip to content

Connect to a network

Pick the data link your devices use, then the program that owns it: the CLI, a Python client or server, or a Rust owner. The guides in this section set up each link; transport boundaries keeps the evidence behind each one.

Path How to start Important boundary
BACnet/IP CLI, Python client, or Rust client Direct reads, discovery, and routed traffic are distinct tests; settings, other subnets, NAT, multicast
BACnet/IPv6 CLI --ipv6, Python, or Rust feature path Requires appropriate IPv6 addressing/interface and network validation; targets are VMACs (bip6:<instance>), which the CLI resolves from [ip]:port and Python from resolve_vmac; setup
BACnet/SC SC-enabled CLI, Python, or Rust Certificate trust, local identities, and hub behavior must be configured; setup
MS/TP Rust serial path, or Python transport="mstp" and MstpEndpoint The CLI joins with --mstp in the Linux release executables, or a source build with the serial feature. Qualify the actual serial hardware; setup, real-time on Linux
Ethernet/802.3 Advanced Rust transport path Platform/privilege evidence is incomplete; not a general CLI tutorial

This is a guide to entry points, not a formal supported-platform or conformance matrix.

Separate BACnet/IP, BACnet/SC, and MS/TP topology examples.
Different transports, different topologies

Separate BACnet/IP, BACnet/SC, and MS/TP topology examples.

Different transports, different topologies

Separate BACnet/IP, BACnet/SC, and MS/TP topology examples.

Separate BACnet/IP, BACnet/SC, and MS/TP topology examples.

Data link Entry points Setup and important boundary
B/IP, NORMAL Rust/Python standalone client and server; shared endpoint Explicit local IPv4 interface and UDP port; selected Network Port registration is a separate opt-in
B/IP, BBMD or foreign Rust client, server and endpoint builders (.mode(BipMode::…)); Python bbmd= and foreign_device=; CLI --foreign-bbmd BDT/FDT or configured BBMD; one transport is never both; shared-endpoint Number evidence does not qualify every administrative operation. Reach devices on other subnets
B/IP, BBMD behind NAT BbmdOptions::nat (Rust); Python Bbmd(nat_global_address=…) Configured global address and a port-forwarding router; two-hop BDT listing every site’s global address; loopback NAT emulation in tests, real routers only in the manual Docker check (examples/docker/nat). BACnet/IP across NAT
B/IP multicast (B/IP-M) node Rust client, server and endpoint builders (.multicast(…)); Python multicast=Multicast(…); CLI --bip-multicast Explicit interface (no 0.0.0.0), class D group, TTL 1 unless the group spans routers; broadcasts only from the group; NORMAL mode, or a BBMD that serves the group (J.8.3) with an all-ones own BDT row; not a foreign device; loopback evidence on Linux and macOS, Windows untested. Join a B/IP multicast group
B/IPv6 Standalone Rust/Python client and server; Rust shared endpoint composed over a Bip6Transport; Rust and Python configured foreign-device mode (foreign_device= in Python) Select one usable interface/address; peers are named by 3-octet VMAC (bip6:<instance>); a registered Network Port needs the transport’s VMAC built from the served Device’s instance; no endpoint builder and no Python endpoint. Connect over BACnet/IPv6
BACnet/SC Rust/Python standalone owners and shared endpoint Operational credentials, explicit CA and durable UUID/VMAC configuration; Rust TLS paths require sc-tls
MS/TP Rust transport/server/endpoint; Python standalone and endpoint paths Serial adapter, station, baud and token participation; do not infer physical timing from simulation
Ethernet Linux Rust standalone client and server AF_PACKET raw socket permissions; no shared endpoint builder or Python Ethernet API

The CLI has its own configuration surface. A Rust transport does not imply a matching CLI command or Python constructor. For exact feature gates, use the crate manifests and Rust API; do not enable every feature merely to discover which one you need.

Release v0.15.0 ·Build and integrate. Pre-1.0 APIs; partial conformance.Support & limitations