add version string to binary info
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3dcfe1e..7eeb2e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,6 +47,18 @@
 
 target_include_directories(debugprobe PRIVATE src)
 
+# add version
+add_custom_target(version
+        ${CMAKE_SOURCE_DIR}/get-version.sh
+        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+)
+
+target_include_directories(debugprobe PRIVATE
+        ${CMAKE_BINARY_DIR}/generated
+        )
+
+add_dependencies(debugprobe version)
+
 target_compile_definitions (debugprobe PRIVATE
 	PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1
 )
diff --git a/get-version.sh b/get-version.sh
new file mode 100755
index 0000000..535d91f
--- /dev/null
+++ b/get-version.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+if command -v git &>/dev/null
+then
+    VERSION=$(git describe --exact-match --tags 2> /dev/null || git rev-parse --short HEAD)   
+else
+    VERSION="unknown"
+fi
+
+if [ ! -e generated/probe ]
+then
+    mkdir -p generated/probe
+fi
+
+cat > generated/probe/version.h << EOF
+#ifndef _PROBE_VERSION_H
+#define _PROBE_VERSION_H
+
+#define PROBE_VERSION "${VERSION}"
+
+#endif
+EOF
diff --git a/src/probe_config.c b/src/probe_config.c
index eeef0a4..88c48f3 100644
--- a/src/probe_config.c
+++ b/src/probe_config.c
@@ -1,6 +1,6 @@
 #include "probe_config.h"
 #include "pico/binary_info.h"
-
+#include "probe/version.h"
 
 #define STR_HELPER(x) #x
 #define STR(x) STR_HELPER(x)
@@ -8,6 +8,7 @@
 
 void bi_decl_config()
 {
+    bi_decl(bi_program_version_string(PROBE_VERSION));
 #ifdef PROBE_PIN_RESET
     bi_decl(bi_1pin_with_name(PROBE_PIN_RESET, "PROBE RESET"));
 #endif