diff --git a/CHANGELOG.md b/CHANGELOG.md
index b06f17fe..71aec1f5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,7 +13,7 @@ The git repositories are hosted at the following sites:
*
*
-## [Unreleased] - 2026-04-01
+## [1.5.0] - 2026-04-16
### Security
diff --git a/bin/readme.txt b/bin/readme.txt
index 700d0c80..cf7001c9 100644
--- a/bin/readme.txt
+++ b/bin/readme.txt
@@ -44,6 +44,12 @@ bacge - BACnet GetEventInformation service
bacco - BACnet CreateObject service
bacdo - BACnet DeleteObject service
bacrr - BACnet ReadRange service
+bacptr - BACnet ConfirmedPrivateTransfer service
+bacapdu - BACnet send arbitrary APDU service
+bacwhoami - BACnet Who-Am-I service
+bacwg - BACnet WriteGroup service
+bacyouare - BACnet You-Are service
+bacdiscover-gtk - BACnet discovery tool with GTK GUI
Client Error/Abort
-----------------
@@ -54,6 +60,18 @@ Server Tools
------------
bacserv - BACnet Device Simulator with example objects
bacpoll - BACnet Device with client polling example
+bacbasic - BACnet Basic Server simulator
+bacmini - BACnet Mini Server simulator
+bacschub - BACnet/SC Hub simulator
+bacgateway - BACnet virtual gateway application
+bacgateway2 - BACnet virtual gateway application 2
+bacdiscover - BACnet server-discovery device simulator
+
+Raspberry-Pi Server Tools
+-------------------------
+
+bacblinkt - BACnet server for Raspberry Pi with Blinkt! LEDs
+bacpiface - BACnet server for Raspberry Pi with PiFace Digital
Router Tools
------------
@@ -62,6 +80,9 @@ bacinitr - BACnet Initialize Router message
bacwir - BACnet Who-Is Router to Network message
bacnni - BACnet Network-Number-Is message
bacwinn - BACnet Who-Is-Network-Number message
+router - BACnet Router
+router-ipv6 - BACnet IPv6 Router
+router-mstp - BACnet MS/TP Router
MS/TP Tools
------------------
@@ -78,9 +99,14 @@ BACnet/IP Tools
bacwbdt - BACnet/IP Write-Distribution-Table message
bacrbdt - BACnet/IP Read-Distribution-Table message
bacrfdt - BACnet/IP Read-Foreign-Device-Table message
+dmbrcap - DMBR capture tool that generates a Wireshark PCAP format file from CreateObject services
Environment Variables
---------------------
+BACNET_DATALINK - sets the active datalink layer (e.g., ether, arcnet, mstp, bip, bip6, bsc, zigbee).
+
+BACNET_INVOKE_ID - specifies the APDU invoke ID to use.
+
BACNET_APDU_TIMEOUT - set this value in milliseconds to change
the APDU timeout. APDU Timeout is how much time a client
waits for a response from a BACnet device. Default is 3000ms.
@@ -115,8 +141,33 @@ BACNET_BDT_MASK_1 - dotted IPv4 mask of the BBMD table
BACNET_IP_NAT_ADDR - dotted IPv4 address of the public facing router
+BACNET_IP_NAT_PORT - UDP port of the public facing router
+
BACNET_IP_BROADCAST_BIND_ADDR - dotted IPv4 address to bind broadcasts
+When the tools are compiled to use BACnet/IPv6 datalink, the following
+environment variables are used:
+
+BACNET_BIP6_PORT - UDP/IP port number for BACnet/IPv6 communications.
+BACNET_BIP6_BROADCAST - IPv6 multicast/broadcast address identifier.
+BACNET_BBMD6_PORT - IPv6 BBMD UDP port.
+BACNET_BBMD6_TIMETOLIVE - IPv6 BBMD time-to-live in seconds.
+BACNET_BBMD6_ADDRESS - IPv6 address of the BBMD or Foreign Device Registrar.
+
+When the tools are compiled to use BACnet/SC (Secure Connect) datalink, the following
+environment variables are used:
+
+BACNET_SC_PRIMARY_HUB_URI - URI for the Primary Hub.
+BACNET_SC_FAILOVER_HUB_URI - URI for the Failover Hub.
+BACNET_SC_HUB_FUNCTION_BINDING - Binding for the local Hub function.
+BACNET_SC_DIRECT_CONNECT_BINDING - URI binding for direct connections.
+BACNET_SC_DIRECT_CONNECT_INITIATE - Set to enable direct connection initiation.
+BACNET_SC_DIRECT_CONNECT_ACCEPT_URLS - Specify acceptable URLs for direct connections.
+BACNET_SC_ISSUER_1_CERTIFICATE_FILE - Path to issuer 1 certificate.
+BACNET_SC_ISSUER_2_CERTIFICATE_FILE - Path to issuer 2 certificate.
+BACNET_SC_OPERATIONAL_CERTIFICATE_FILE - Path to the operational certificate.
+BACNET_SC_OPERATIONAL_CERTIFICATE_PRIVATE_KEY_FILE - Path to the operational private key.
+
When the tools are compiled to use MS/TP datalink, the following
environment variables are used:
@@ -138,6 +189,15 @@ BACNET_IFACE - interface to use for the MS/TP datalink layer
Defaults to /dev/ttyUSB0 on Linux and COM4 on Windows
and /dev/cu.usbserial-7 on macOS.
+Debug Environment Variables
+---------------------------
+BACNET_DATALINK_DEBUG - Enable general datalink debugging.
+BACNET_IP_DEBUG - Enable BACnet/IPv4 debugging.
+BACNET_BIP6_DEBUG - Enable BACnet/IPv6 debugging.
+BACNET_MSTP_DEBUG - Enable BACnet MS/TP debugging.
+BACNET_SC_DEBUG - Enable BACnet/SC debugging.
+BACNET_ZIGBEE_DEBUG - Enable BACnet Zigbee debugging.
+
Example Usage
-------------
You can communicate with the virtual BACnet Device by using the other BACnet
@@ -242,4 +302,45 @@ bacwh - bacnet-stack/apps/whohas
bacwi - bacnet-stack/apps/whois
bacwp - bacnet-stack/apps/writeprop
bacserv - bacnet-stack/apps/server
-etc.
+bacwpm - bacnet-stack/apps/writepropm
+bacale - bacnet-stack/apps/add-list-element
+bacrle - bacnet-stack/apps/remove-list-element
+bacackalarm - bacnet-stack/apps/ack-alarm
+bacevent - bacnet-stack/apps/event
+bacuevent - bacnet-stack/apps/uevent
+baciam - bacnet-stack/apps/iam
+bacge - bacnet-stack/apps/getevent
+bacco - bacnet-stack/apps/create-object
+bacdo - bacnet-stack/apps/delete-object
+bacrr - bacnet-stack/apps/readrange
+bacerror - bacnet-stack/apps/error
+bacabort - bacnet-stack/apps/abort
+bacpoll - bacnet-stack/apps/server-client
+baciamr - bacnet-stack/apps/iamrouter
+bacinitr - bacnet-stack/apps/initrouter
+bacwir - bacnet-stack/apps/whoisrouter
+bacnni - bacnet-stack/apps/netnumis
+bacwinn - bacnet-stack/apps/whatisnetnum
+mstpcap - bacnet-stack/apps/mstpcap
+mstpcrc - bacnet-stack/apps/mstpcrc
+bacwbdt - bacnet-stack/apps/writebdt
+bacrbdt - bacnet-stack/apps/readbdt
+bacrfdt - bacnet-stack/apps/readfdt
+bacptr - bacnet-stack/apps/ptransfer
+bacapdu - bacnet-stack/apps/apdu
+bacwhoami - bacnet-stack/apps/who-am-i
+bacwg - bacnet-stack/apps/writegroup
+bacyouare - bacnet-stack/apps/you-are
+bacbasic - bacnet-stack/apps/server-basic
+bacmini - bacnet-stack/apps/server-mini
+bacschub - bacnet-stack/apps/sc-hub
+bacgateway - bacnet-stack/apps/gateway
+bacgateway2 - bacnet-stack/apps/gateway2
+bacdiscover - bacnet-stack/apps/server-discover
+bacblinkt - bacnet-stack/apps/blinkt
+bacpiface - bacnet-stack/apps/piface
+router - bacnet-stack/apps/router
+router-ipv6 - bacnet-stack/apps/router-ipv6
+router-mstp - bacnet-stack/apps/router-mstp
+dmbrcap - bacnet-stack/apps/dmbrcap
+bacdiscover-gtk - bacnet-stack/apps/gtk-discover
diff --git a/release.sh b/release.sh
index fea040a6..0ef4464c 100755
--- a/release.sh
+++ b/release.sh
@@ -15,7 +15,7 @@ USERNAME='skarg'
if [ -z "$1" ]
then
echo "Usage: `basename $0` 0.0.0"
- echo "Builds the Win32 release files, archives the source, and uploads them to sf.net"
+ echo "Builds Win32 release files. Archives source. Uploads files to sf.net"
exit 1
fi
diff --git a/src/bacnet/version.h b/src/bacnet/version.h
index b2e16841..0f5a01e7 100644
--- a/src/bacnet/version.h
+++ b/src/bacnet/version.h
@@ -15,7 +15,7 @@
#define BACNET_VERSION(x, y, z) (((x) << 16) + ((y) << 8) + (z))
#endif
-#define BACNET_VERSION_TEXT "1.5.0.rc5"
+#define BACNET_VERSION_TEXT "1.5.0"
#define BACNET_VERSION_CODE BACNET_VERSION(1, 5, 0)
#define BACNET_VERSION_MAJOR ((BACNET_VERSION_CODE >> 16) & 0xFF)
#define BACNET_VERSION_MINOR ((BACNET_VERSION_CODE >> 8) & 0xFF)