BACnet Stack: A tested BACnet Protocol Library for embedded systems

CAS BACnet Stack - BACnet Network Communication | Chipkin Automation Systems

Introduction to the CAS BACnet Stack

BACnet is a standardized communications protocol for Building Automation and Control Networks (BACnet), defined by ASHRAE 135-2020. It facilitates seamless discovery, and communication between devices from different manufacturers within Building Automation Systems (BAS).

Chipkin's CAS BACnet Stack is a royalty-free software library that enables native BACnet integration into your embedded devices or applications. Supporting both BACnet servers (e.g., field devices like power meters, gas detectors) and BACnet clients (e.g., HMIs, data loggers) services, our stack offers the flexibility and reliability required for successful implementation. Chipkin is constantly Improving our Stack and adding BACnet Services. Along with protocol revision 23, the CAS BACnet Stack supports BACnet Profiles B-ASC, B-SA, B-SS, B-GW, B-BBMD, B-GENERAL with more BIBBS than almost any stack on the Market.


Benefit from our 25+ years of BACnet experience!!!


BACnet Logo

Trust Chipkin: A Leader in BACnet Solutions

BACnet is a powerful but complex protocol with hundreds of services, objects, and intricate state machines that must be implemented correctly to ensure interoperability and compliance. Developing a BACnet stack from scratch can take years of engineering time, requiring extensive knowledge of network communication, building automation standards, and certification requirements.

With over 25 years of experience in BACnet and building automation, Chipkin has helped hundreds of companies integrate BACnet into their products, saving them man-years of development every year. Our CAS BACnet Stack is trusted worldwide, powering over 1,000,000 device installations in industries where reliability is paramount, including power plants, military facilities, hospitals, and clean rooms.

Chipkin is committed to quality and compliance. Devices using our stack have successfully passed BTL (BACnet Testing Laboratories) Certification countless times, proving our software meets strict BACnet interoperability and conformance standards. We continuously test and refine our stack through rigorous in-house validation, automated unit tests, and real-world deployments. Chipkin also actively participates in BACnet Plugfest events, collaborating with other industry leaders to ensure seamless interoperability.

By choosing Chipkin’s BACnet Stack, you get a battle-tested solution that meets the highest industry standards, backed by a team that ensures smooth integration and long-term reliability.

Features of the CAS BACnet Stack

  • Protocol Revision 23 Support: Ensures up-to-date compatibility with the latest BACnet standards, enhancing interoperability.
  • Written in C++ with Multi-Language Support: The CAS BACnet Stack is written in C++ but can be integrated with any programming language that supports calling a C API. Adapters are available for TypeScript/Node.js, C#, Python, Rust, GoLang, Java, Delphi, and more.
  • Designed for Maximum Portability: A cross-platform BACnet solution that runs on various architectures, including x86, ARM, AVR, Microchip, and Freescale ColdFire. Ideal for embedded systems, industrial automation, and enterprise applications.
  • Supports a Wide Range of Compilers: Compatible with GCC, Microsoft Visual C++, Borland C++, CodeWarrior, IAR, CrossWorks, and Microchip MPLAB.
  • Supports Decoding BACnet Messages as JSON/XML: Enables easy integration with modern web-based applications and cloud services.
  • Supports BBMD and Foreign Device Registration: Ensures smooth BACnet/IP communication across different subnets.
  • Extensive Unit Testing and Compliance: Undergoes rigorous automated testing with 80%+ test coverage to ensure full compliance with BACnet protocol specifications, guaranteeing stability, reliability, and interoperability.
  • Developer-Friendly API and Documentation: Offers a clean, well-documented API with example code and dedicated support to accelerate implementation and reduce development time.
  • Thread-Safe and Reliable: Designed to be thread-safe for efficient operation in multi-threaded environments, while also supporting systems without threading.
  • Extensive Code Validation and Profiling: Source code is statically analyzed, profiled for performance, and tested with Valgrind to detect memory leaks, threading issues, and performance bottlenecks, ensuring high reliability.
  • Transport-Layer Independence: Supports multiple transport layers, including BACnet/IP, MS/TP (RS-485), BACnet Secure Connect (BACnet/SC), Ethernet, PTP, and ARCnet, offering deployment flexibility.
  • Customizable Transport Layer: Optimizes bandwidth and performance by leveraging resources such as multi-threading and multiple simultaneous connections.
Inverse Corner
Automation Checkmark

Real-World Applications Using the CAS BACnet Stack

Companies across varying industries use the CAS BACnet Stack to bring their devices into the world of building automation in mission-critical environments where reliability, security, and efficiency are essential. Below are a small list of real-world applications where our stack has been successfully embedded:

HVAC HVAC Controller for a Commercial Equipment OEM

A large HVAC equipment manufacturer integrated the CAS BACnet Stack into their embedded controller, allowing building automation systems to remotely monitor and control heating modes, fan speeds, and setpoints via BACnet/IP. The stack is now part of their standard product line used in commercial and industrial buildings.

Temperature Ultra-Low Temperature Freezers

A company specializing in ultra-cold medical storage embedded our BACnet Server stack into a Linux-based controller using a TI AM335x processor. This allowed environmental monitoring and compliance reporting over BACnet/IP in research labs and hospitals.

Fan Coil Fan Coil Unit Control in Hotels and Apartments

An embedded developer built a BACnet MSTP server into their fan coil system, enabling central monitoring and control in multi-room buildings. The system uses an STM32 microcontroller running on RTOS and now communicates directly with central BMS systems.

Light Bulb Lighting and Shading Control via Proprietary Bus

A manufacturer of lighting and shading control modules needed to connect their proprietary I2D-based protocol to building automation. They used a DIN-rail mounted ESP32 device running our BACnet Server to act as a bridge, exposing data to BMS systems via BACnet/IP.

Air Curtain Air Curtain Manufacturer’s Next-Gen Controller

To meet customer demand, an air curtain manufacturer added BACnet/IP and MSTP support to their new controller built on embedded Linux. The CAS BACnet Stack made it easy to integrate with BMS platforms for temperature-based activation and monitoring.

Air Disinfection IoT-Based Air Disinfection Device

An IoT air purification manufacturer used our BACnet stack to report sensor data like temperature and occupancy to BMS systems to AWS IoT for control and data reporting. Built on ESP32 with FreeRTOS, it initially supports 10 BACnet objects with potential to scale up to 70. It is designed for fast integration with limited memory.

Compressor Compressor Fleet Management

A compressor manufacturer embedded our stack into a custom ARM-based controller to allow monitoring and control over BACnet/IP. The system connects to SCADA platforms, exposing analog and digital I/O for configuration and status tracking—scaling up to 5,000 BACnet objects depending on the site.

Data Centers Digital Twin for Data Centers

A data center software company used our BACnet API in their digital twin platform to collect real-time data from CRAC units, power systems, and sensors. This allowed comparison between simulated and live data, improving predictive analytics for IT infrastructure.

These applications demonstrate the flexibility, performance, and reliability of the CAS BACnet Stack—whether you’re working with embedded Linux, microcontrollers, or custom industrial platforms.

BACnet Secure Connect (BACnet/SC) and Security Features

Security is a growing concern in building automation, and BACnet Secure Connect (BACnet/SC) is the next-generation solution for encrypted and authenticated BACnet communications. The CAS BACnet Stack supports BACnet/SC, ensuring secure, encrypted communication while maintaining compatibility with legacy BACnet networks. It meets modern cybersecurity standards.


Source Code and Code Quality

The CAS BACnet Stack is built on clean, well-structured code with full source access, making it easy to customize and integrate. The stack undergoes extensive static analysis, unit testing, and performance profiling to detect issues. It is validated using industry-standard tools like Valgrind, Coverity, and Clang Static Analyzer to ensure reliability, security, and compliance. With a modular architecture and well-documented API, developers can quickly integrate BACnet functionality without the overhead of debugging or workarounds.

BACnet Stack Layers

             *Area in the border is provided by the BACnet Stack. The area outside is provided by the client.

Requirements and dependency

The CAS BACnet stack is designed to have minimum requirements to maximize the portability of the source code across as many platforms and architectures as possible. It has the ability to run on devices with very low resources by disabling BACnet services to reduce the required resources and dependencies

Minimum Requirements:

  • A relative millisecond timer: A real-time clock is NOT required.
  • C++/11 Compiler: Compatible with GCC and other standard compilers.
  • Standard Template Library (STL): Required for efficient development.
  • Networking:
    • BACnet/IP: Requires a UDP socket.
    • BACnet Secure Connect (BACnet/SC): Requires TCP/WS.
    • BACnet MS/TP: Requires RS485 serial.

The amount of ram that the Chipkin BACnet stack requires depends on several factors including; BACnet Services supported, Object types supported, Object count, COV limits, etc...

Example Source Code

Example source code projects for many common use cases can be found on our public Github page >https://github.com/chipkin

See below for a simplified example of creating a BACnet IP server.

Why Choose CAS BACnet Stack Over Open-Source Solutions?

When implementing BACnet functionality in your devices or systems, the choice of stacks can significantly impact your development timeline, certification process, and long-term success. CAS BACnet Stack—engineered for faster integration, guaranteed BTL certification compliance, and backed by industry-leading support to get your BACnet devices to market in weeks, not years.

  • Certified Compliance: Open-source solutions often require extra effort to pass BTL Certification, while the CAS BACnet Stack is designed from the ground up to meet compliance and certification requirements.
  • Faster Integration: Our team can integrate the BACnet Stack into your product in weeks instead of months to years.
  • Comprehensive Support & Consulting: We provide expert-level support through remote desktop sessions, email, phone calls, and direct consulting to assist with integration, troubleshooting, and optimization. Our engineers work with you throughout the process to ensure a smooth deployment.
  • Reliability and Performance: Designed and tested for high-demand applications where failure is not an option.

BACnet services supported!

The CAS BACnet Stack supports more BIBBs than almost any other BACnet Stack on the market.

Supported BACnet device profiles:

  • B-ASC: BACnet Application Specific Controller
  • B-SA: BACnet Smart Actuator
  • B-SS: BACnet Smart Sensors
  • B-GW: BACnet Gateway
  • B-BBMD: BACnet BBMD
  • B-GENERAL: Basic BACnet functionality
  • B-EM: BACnet Elevator Monitor

Supported BIBBs:

  • DS-RP-A: Data Sharing - ReadProperty-A
  • DS-RP-B: Data Sharing - ReadProperty-B
  • DS-RPM-A: Data Sharing - ReadPropertyMultiple-A
  • DS-RPM-B: Data Sharing - ReadPropertyMultiple-B
  • DS-WP-A: Data Sharing - WriteProperty-A
  • DS-WP-B: Data Sharing - WriteProperty-B
  • DS-WPM-A: Data Sharing - WritePropertyMultiple-A
  • DS-WPM-B: Data Sharing - WritePropertyMultiple-B
  • DS-COV-A: Data Sharing - Change Of Value-A
  • DS-COV-B: Data Sharing - Change Of Value-B
  • DS-COVP-A: Data Sharing - Change Of Value Property-A
  • DS-COVP-B: Data Sharing - Change Of Value Property-B
  • DS-COVU-A: Data Sharing - Change Of Value Unsubscribed-A
  • DS-COVU-B: Data Sharing - Change Of Value Unsubscribed-B
  • DS-V-A: Data Sharing - View-A
  • DS-AV-A: Data Sharing - Advanced View-A
  • DS-M-A: Data Sharing - Modify-A
  • DS-AM-A Data Sharing - Advanced Modify-A
  • DS-COVM-B Data Sharing - Change Of Value Multiple-B
  • AE-N-I-B Alarm and Event Management - Notification-Internal-B
  • AE-ACK-B Alarm and Event Management - Acknowledge-B
  • AE-INFO-B Alarm and Event Management - Information-B
  • T-VMT-I-B Trending - Viewing and Modifying Trends-Internal-B
  • T-VMMV-I-B Trending - Viewing/Modifying Multiple Values-Internal-B
  • T-V-A Trending - View-A
  • DM-DDB-A Device Management - Dynamic Device Binding-A
  • DM-DDB-B Device Management - Dynamic Device Binding-B
  • DM-DOB-A Device Management - Dynamic Object Binding-A
  • DM-DOB-B Device Management - Dynamic Object Binding-B
  • DM-DCC-A Device Management - DeviceCommunicationControl-A
  • DM-DCC-B Device Management - DeviceCommunicationControl-B
  • DM-TM-A Device Management - Text Message-A
  • DM-TM-B Device Management - Text Message-B
  • DM-TS-A Device Management - TimeSynchronization-A
  • DM-TS-B Device Management - TimeSynchronization-B
  • DM-UTC-A Device Management - UTCTimeSynchronization-A
  • DM-UTC-B Device Management - UTCTimeSynchronization-B
  • DM-RD-A Device Management - ReinitializeDevice-A
  • DM-RD-B Device Management - ReinitializeDevice-B
  • DM-OCD-A Device Management - Object Creation and Deletion-A
  • DM-OCD-B Device Management - Object Creation and Deletion-B
  • DM-ANM-A Device Management - Automatic Network Mapping-A
  • DM-ADM-A Device Management - Automatic Device Mapping-A
  • DM-MTS-A Device Management - Manual Time Synchronization-A
  • NM-BBMDC-B Network Management - Router Configuration-B
  • NM-FDR-A Network Management - Foreign Device Registration-A
  • GW-VN-B Gateway - Virtual Network-B
  • GW-EO-B Gateway - Embedded Objects-B

BACnet objects supported

Our BACnet stack fully supports most commonly used BACnet objects, and partially supports some of the rarely used, advanced BACnet objects. See the list below:

Fully Supports

  • Analog Input
  • Analog Output
  • Analog Value
  • Binary Input
  • Binary Output
  • Binary Value
  • Device
  • Multi-state Input
  • Multi-state Output
  • Multi-state Value
  • Character String Value
  • DateTime Value
  • Large Analog Value
  • BitString Value
  • OctetString Value
  • Time Value
  • Integer Value
  • Positive Integer Value
  • Date Value
  • Network Port
  • Elevator Group
  • Lift
  • Escalator
  • Trend Log
  • Trend Log Multiple

Partially supports

  • Averaging
  • Calendar
  • Command
  • Event Enrollment
  • File
  • Group
  • Life Safety Point
  • Life Safety Zone
  • Loop
  • Notification Class
  • Program
  • Pulse Converter
  • Schedule
  • Access Door
  • Event Log
  • Load Control
  • Structured View
  • Access Point
  • Access Zone
  • Access User
  • Access Rights
  • Access Credential
  • Credential Data Input
  • DateTime Pattern Value
  • Time Pattern Value
  • Date Pattern Value
  • Network Security
  • Global Group
  • Notification Forwarder
  • Alert Enrollment
  • Channel
  • Lighting Output
  • Binary Lighting Output
  • Timer
  • Accumulator

Contact Us – Start Your BACnet Integration Today

Choosing the right BACnet stack is a critical decision, and we’re here to help. Whether you need guidance on integration, certification, or implementation, our team of experts is ready to assist you every step of the way.

  • Free Consultation – Speak directly with our BACnet specialists to discuss your project needs.
  • Fast Integration Assistance – Get up and running in weeks instead of months, saving you years of development time.
  • Comprehensive Support – We offer remote desktop sessions, phone support, email consulting, and hands-on integration assistance.
  • Custom Solutions – Need a tailored BACnet implementation? Our engineers can work with you to create a solution that fits your exact requirements.

Call UsCall us today 1-866-383-1657 or contact our sales department to get started. Let's make your BACnet integration seamless and efficient!

Please answer the following General questions 1) What does the device do? 2) Is your device a BACnet Server or BACnet client or Both? 3) Do you want to support BACnet IP or BACnet MSTP or Both? 4) Do you need BACnet SC (BACnet Secure Connect) ? 5) What hardware and architecture is being used for this project? 6) How much ram (Memory) and code space (Flash) is available on the device? 7) What programming language and compiler are you using (C/C++, Python, NodeJS, etc..)? 8) Do you need BTL certification? see program: https://btl.org/btl-certification-program/ Chipkin offers BACnet BTL Pretesting https://store.chipkin.com/services/stacks/bacnet-btl-pre-testing 9) What is the project timeline? Answer if you require BACnet Server 1. How many objects (points, variables, properties, fields) do you want to BACnet? 2. What kind of objects do you want to expose? AI, AO, BI, BO, etc… 3. Are there any specific BACnet BIBBs that you require?

Contact Us

Contact us via phone (+1 866-383-1657) or leave a detailed message below for sales, support, or any other needs

*Required Field
*Required Field
I'd like to receive the newsletter. *Check email for confirmation.
*Required Field
8:00am - 12:00pm 12:00pm - 5:00pm
Message Sent Successfully