diff --git a/driver_library/include/ethosu.hpp b/driver_library/include/ethosu.hpp
index 4dba469..491dc28 100644
--- a/driver_library/include/ethosu.hpp
+++ b/driver_library/include/ethosu.hpp
@@ -40,6 +40,10 @@
 
 namespace EthosU {
 
+constexpr uint32_t DRIVER_LIBRARY_VERSION_MAJOR = 1;
+constexpr uint32_t DRIVER_LIBRARY_VERSION_MINOR = 0;
+constexpr uint32_t DRIVER_LIBRARY_VERSION_PATCH = 0;
+
 constexpr uint32_t MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION = 1;
 constexpr uint32_t MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION = 1;
 
@@ -75,6 +79,8 @@
 
 std::ostream &operator<<(std::ostream &out, const SemanticVersion &v);
 
+const SemanticVersion getLibraryVersion();
+
 /*
  * Hardware Identifier
  * @versionStatus:             Version status
diff --git a/driver_library/python/src/ethosu_driver/__init__.py b/driver_library/python/src/ethosu_driver/__init__.py
index a804c13..20c5f52 100644
--- a/driver_library/python/src/ethosu_driver/__init__.py
+++ b/driver_library/python/src/ethosu_driver/__init__.py
@@ -2,6 +2,9 @@
 # SPDX-License-Identifier: Apache-2.0
 
 from ._generated.driver import Device, Inference, Network, Buffer, \
-        MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION, MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION
+        MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION, MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION, \
+        DRIVER_LIBRARY_VERSION_MAJOR, DRIVER_LIBRARY_VERSION_MINOR, DRIVER_LIBRARY_VERSION_PATCH, \
+        getLibraryVersion
+
 from ._utilities import open_device, load_model, populate_buffers, \
                         allocate_buffers, get_results, InferenceRunner
diff --git a/driver_library/python/src/ethosu_driver/swig/driver.i b/driver_library/python/src/ethosu_driver/swig/driver.i
index 558c22e..1ff8ded 100644
--- a/driver_library/python/src/ethosu_driver/swig/driver.i
+++ b/driver_library/python/src/ethosu_driver/swig/driver.i
@@ -38,6 +38,10 @@
 namespace EthosU
 {
 
+constexpr uint32_t DRIVER_LIBRARY_VERSION_MAJOR;
+constexpr uint32_t DRIVER_LIBRARY_VERSION_MINOR;
+constexpr uint32_t DRIVER_LIBRARY_VERSION_PATCH;
+
 constexpr uint32_t MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION;
 constexpr uint32_t MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION;
 
@@ -65,6 +69,15 @@
 
 %feature("docstring",
 "
+    Return driver library version information.
+
+    Returns:
+        SemanticVersion: driver library version.
+") getLibraryVersion;
+const SemanticVersion getLibraryVersion();
+
+%feature("docstring",
+"
 Hardware Identifier which consists of version status, version revision, product revision and architecture revision.
 ") HardwareId;
 class HardwareId {
diff --git a/driver_library/python/test/test_driver.py b/driver_library/python/test/test_driver.py
index e4e276a..28d0a29 100644
--- a/driver_library/python/test/test_driver.py
+++ b/driver_library/python/test/test_driver.py
@@ -188,3 +188,10 @@
     assert driver.MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION
     assert driver.MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION
 
+def test_driver_library_version():
+    version = driver.getLibraryVersion()
+    expected_version = [driver.DRIVER_LIBRARY_VERSION_MAJOR,
+                        driver.DRIVER_LIBRARY_VERSION_MINOR,
+                        driver.DRIVER_LIBRARY_VERSION_PATCH]
+    # Validate that the expected version was returned
+    assert expected_version == [version.major, version.minor, version.patch]
diff --git a/driver_library/src/ethosu.cpp b/driver_library/src/ethosu.cpp
index 1758b07..64aee4d 100644
--- a/driver_library/src/ethosu.cpp
+++ b/driver_library/src/ethosu.cpp
@@ -96,6 +96,11 @@
 } // namespace
 
 namespace EthosU {
+
+const SemanticVersion getLibraryVersion() {
+    return {DRIVER_LIBRARY_VERSION_MAJOR, DRIVER_LIBRARY_VERSION_MINOR, DRIVER_LIBRARY_VERSION_PATCH};
+}
+
 __attribute__((weak)) int eioctl(int fd, unsigned long cmd, void *data = nullptr) {
     int ret = ::ioctl(fd, cmd, data);
     if (ret < 0) {
diff --git a/utils/inference_runner/inference_runner.cpp b/utils/inference_runner/inference_runner.cpp
index d53ab8c..569fda6 100644
--- a/utils/inference_runner/inference_runner.cpp
+++ b/utils/inference_runner/inference_runner.cpp
@@ -210,8 +210,10 @@
     }
 
     try {
+        cout << "Driver library version:" << getLibraryVersion() << endl;
+
         Device device;
-        cout << "Driver version:" << device.getDriverVersion() << endl;
+        cout << "Kernel driver version:" << device.getDriverVersion() << endl;
 
         cout << "Send Ping" << endl;
         device.ioctl(ETHOSU_IOCTL_PING);
