Tel: +1-617-350-7550


uBACstac - BACnet Protocol stack for small devices

Collections: BACnet, BACstac

Type: Unknown Type

This product is only available upon request. Contact us for a quote.

              • The Cimetrics uBACstac saves man-years of development when your company needs to develop low volume or high volume BACnet-compliant applications that run on small devices with or without OS! BACstac with source code will provide you with example programs and reference ports to three hardware platforms with or without Free RTOS - ATmega, ARM-7, Cortex-M4.

                Many Building Automation and Controls manufacturers use a Cimetrics uBACstac protocol stack because of our reputation for delivering high-quality software and excellent technical support. Cimetrics does the heavy lifting of testing the uBACstac on different hardware platforms and implementing the new Addenda approved by the BACnet Committee in a timely fashion. We keep our customers UP-TO-DATE with the latest BACnet features and make sure that the code is compatible with a growing number of hardware platforms. 

                uBACstac features:

                • A small-footprint BACnet stack for small devices with or without OS.Implements state-of-the-art MS/TP and BACnet/IP with - - Foreign Device. A single firmware image may support both data links.
                • Provides truly portable code—the same core uBACstac library, the portable MS/TP implementation and the example application run on all platforms unmodified, including bare-metal microcontrollers and embedded OSs.
                • Supports a wide range of processors, from entry level 8-bit AVR to powerful 32-bit ARM7 and Cortex-M, or even more powerful 64-bit processors running Linux. Supports little-endian and big-endian architectures.
                • Provides the stack in source code form, with example programs and reference ports to a few hardware platforms, both with embedded OS and without OS. Also, for ease of application development, includes a port to Linux and even Linux-on-Windows as an "instrumental" platform.
                • Implements a modular design, with clean separation between platform-dependent and portable code.
                • Provides highly configurable source code: unwanted features can be turned off, decreasing the executable memory footprint.
                • Makes it possible to implement a device conforming to the BACnet B-SS, B-SA, B-ASC, and B-AAC profiles, optionally with COV notifications and more.
                • Provided example programs support the following BACnet application services:
                • RP/RPM/WP/WPM/Who-Is/Who-Has/DCC/ReinitializeDevice/EventNotification/AcknowledgeAlarm/GetEventInformation/TimeSync/GetEventInformation/COV notifications/COV subscription/ File transfer/ Confirmed and Unconfirmed Private Transfer.1
                • Supports BACnet segmentation on receive and transmit. Supports initiation and execution of confirmed and unconfirmed requests.
                • Customers may enhance the source code to implement additional BACnet functionality.
                • Includes detailed documentation, including a User's Guide and a Porting Guide.


                  BACnet Building Blocks supported in the current example: DS-RP-B, DS-RPM-B, DS-WP-B, DS-WPM-B, DM-DDB-B, DM-DOB-A,B, DM-DCC-B, AE-N-I-B, AE-ACK-B, AE-INFO-B, SCHED-I-B, DM-TS-B, DM-UTC-B, DM-RD-B, DS-RP-A, DS-WP-A (it is also possible to implement other services and building blockse.g. COV/COVP/Add-remove list element/file transfer etc..)
                  BACnet objects types supported in the current example: Accumulator, Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Device, File, Multi-state Input, Multi-state Value, Multi-state Output, Notification Class, Calendar, Schedule.  

                  • BACstac Comparison Chart: Check which BACstac is right for you!

                    This is a BACnet protocol stack designed for the development of low and high volume BACnet-compliant devices with or without OS. It allows a simple, easy and quick way porting on a new hardware. You can make a device with B-AAC profile and more. Supports following device profiles: BSS, BSA, B-ASC, B-AAC.

                    Data links: BACnet/IP, MS/TP. 

                    Support for Foreign Device operation in BACnet/IP Data Link.

                    Hardware platforms supported: Support for any platforms from 8, 32 to 64 bit processor from 8MHz frequency and more. If you use hardware without OS it should have at least 32K program memory and 3KB RAM is sufficient. If you use hardware with OS then you need more memory. For MS/TP use you need EIA-485 transceiver. Also if you use hardware with OS for MS/TP then you need Real Time Operating System. The OS should have TCP/IP supports.

                    Our example runs on these platforms:

                    1. ATmega2560 (Arduino Mega 2560 with DFRobot RS485 Shield) - 8 bit

                    2. ATmel ARM7 (AT91SAM7SE256-EK evaluation board), with and without FreeRTOS - 32 bit

                    3. ARM Cortex-M4 (STM32F429ZI evaluation board DFRobot RS485 Shield) running FreeRTOS+lwIP, supports MS/TP and BACnet/IP in one image - 32 bit.

                    4. Linux and Linux-on-Windows, - 32 and 64 bit, Little or Big Endian, Intel, ARM or MIPS.

                    Tested on the following platforms: Ubuntu and Debian Linux on Intel desktop, Raspberry Pi, BeagleBone Black (will also work on BeagleBone Green, BeagleBone Blue, BeagleBone-xM, BeagleBone-x15); Linux-on-Windows (Windows Subsystem for Linux a.k.a. WSL); Linux on MIPS emulator (QEMU) and more.


                    Development environment supported: GNU toolchain (gcc, gnu Make). 

                    Code provided: Source code for all libraries (MS/TP and BACnet/IP datalinks, Transaction State Machines, ASN.1 encoders/decoders). Also a full-fledged BACnet device source code is provided as an example. All code is written in portable C language. Source code for different platforms is also provided (in C language).

                    BACnet Building Blocks supported in the example: DS-RP-B, DS-RPM-B, DS-WP-B, DS-WPM-B, DM-DDB-A,B, DM-DOB-B, DM-DCC-B, AE-N-I-B, AE-ACK-B, AE-INFO-B, SCHED-I-B, SCHED-WS-I-B, DM-TS-B, DM-UTC-B, DM-RD-B, DM-R-B, DS-COV-B, DS-COVU-B, DS-RP-A, DS-WP-A..

                    BACnet objects types supported in the supplied example Device implementation: Accumulator, Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Device, File, Multi-state Input, Multi-state Value, Multi-state Output, Notification Class, Calendar, Schedule. (it is possible to  implement any other BACnet objects in your device)

                    Documentation provided: User's Guide, and Porting Guide

                  • Join the BACnet Global Community! Do not spend countless hours, months and years developing your product. Use Cimetrics uBACstac!

                    You can create devices for the embedded systems including small footprint BACnet Devices and Application Specific Controllers and Advanced Application Controller, especially ones with MS/TP. You can also add BACnet support to existing products, including hardware platforms with OS and TCP/IP protocol. Different platforms have different memory requirements but the good rule of thumb is to have at least 40KB program memory (FLASH) and 4K RAM for uBACstac. Processor capacity depends on the platform too. E.g. ATMega (an 8-bit microprocessor running at 16MHz) is capable of supporting all standard MS/TP baud rates including 115200bps.


                    BACnet Booth


                    More than 150 manufacturers are registered members of the BACnet community.  This group includes prestigious companies like SiemensHoneywellSecomJVCTrane,  KMC ControlsLG ElectronicsPrivaLoytec, Matsushita, Matrikon, Mitsubishi, Samsung, Sauter, Trend, Wago, and many more.

                    ALL of these companies mentioned using the Cimetrics BACstac!

                    Our role in the industry is to keep these well-known companies UP-TO-DATE with the latest BACnet features and to make sure that this code is compatible with the more and more hardware platforms.


                  • pdf icon uBACstac Data Sheet
                    icon Porting Guide (included with purchase)
                    pdf icon User's Guide (included with purchase)


      Product Q&A

      Ask a Question
      Q: Does uBACstac support BACnet COV?

      A: It does support COV - DS-COV-B. uBACstac can receive COV subscriptions and can send confirmed and unconfirmed COV. The user will just need to integrate his/her code which changes Present Value value and values of other relevant properties, like Reliability. COV is already implemented in an example.

      Q: Can I use Arduino IDE for programming?

      A: Probably yes, but you will have to adjust your project properties accordingly. Specifically, list new *.c files and list paths to include files (*.h). Also, you will have to wrap the .h files which are included in your C++ code with extern "C" { declaration. _and_C++_code

      Q: Do I need I to install a new programming software? I only familiar with Arduino IDE and a little bit with Kiel Arm.

      A: uBACstac should be compatible with Keil Arm. It does not use gcc-specific directives on Arduino platform, so it should compile. However, we did not try it. Our customers use Atmel Studio 7. Using IDE requires proper configuration of the project, so that the IDE finds all required files, and if your project is written in C++, you will have to use 'extern "C"' wrapping. wrap the .h files which are included in your C++ code with extern "C" { declaration.

      Q: Does it port to Python V3 and compiled on Raspberry Pi ? and to what extent does it support BACnet calendars/schedules? as in read or write or both.

      A: uBACstac is written in C language. Yes, it can be built for Raspberry Pi, as for any other Linux platform. Calendar / schedule is supported in the minimum amount required for certification as B-AAC.

      Q: Hello - I saw stack requires 32K Flash and 3KB RAM which is pretty good amount for embedded system. I wondered this is for everything but not necessary optimized for B-AAC feature. Platform we plan to migrate is Cortex M4F w/FreeRTOS, BACnet over Wi-Fi (IP). Can you share required foot print of Flash and RAM and pricing information ?Thanks,Dai

      A: The amount of memory primarily depends on the number of BACnet objects in the device. The port that comes with uBACstac implements B-AAC, runs on Cortex-M4 / FreeRTOS, contains one object for each supported type, and uses 64K ROM and 24K RAM.