diff --git a/generate_gateware_overlays.py b/generate_gateware_overlays.py
index 145f4882c132ba3049673d76e57d88f2ebf603b4..1c034fd3fb43b43bcf4321f5c5c526cf4cf7d43e 100644
--- a/generate_gateware_overlays.py
+++ b/generate_gateware_overlays.py
@@ -2,6 +2,7 @@ import os
 import struct
 import ctypes
 import sys
+import subprocess
 
 from gather_dtso import gather_dtso
 
@@ -102,13 +103,34 @@ def create_dtbo_info(overlay_dir_path):
     print(dtbo_info[:])
 
 
+def get_gateware_git_version(work_dir):
+    cwd = os.getcwd()
+    gateware_dir = os.path.join(work_dir, '..', 'sources','gateware')
+    os.chdir(gateware_dir)
+    try:
+        git_hash = subprocess.check_output(['git', 'describe', '--tags'])
+    except subprocess.CalledProcessError as e:
+        git_hash = 0
+    os.chdir(cwd)
+    return git_hash.decode('ascii').strip("'").strip("\n")
+
+
+def inject_git_info_into_src_dtso(dtso_file, git_version):
+    with open(dtso_file, "r") as f:
+        dtso = f.read()
+        dtso = dtso.replace('GATEWARE_GIT_VERSION', git_version)
+        with open(dtso_file, "w") as fout:
+            fout.write(dtso)
+
+
 def compile_dtso(work_dir):
     root_dir = os.path.join(work_dir, 'dtbo', 'context-0')
-    cwd = os.getcwd()
+    git_version = get_gateware_git_version(work_dir)
     for root, dirs, files in os.walk(root_dir):
         for file in files:
             if file.endswith(".dtso"):
                 dtso_file = os.path.join(root, file)
+                inject_git_info_into_src_dtso(dtso_file, git_version)
                 dtbo_file = os.path.splitext(dtso_file)[0] + '.dtbo'
                 cmd = 'dtc -O dtb -I dts -o ' + dtbo_file + ' ' + dtso_file
                 os.system(cmd)