diff --git a/tools/dfu.py b/tools/dfu.py
index 54b602438b38119c87e8a3a834faf174c6e56efa..ee89c7541e3a789b585f26a2aeedc19e03bf3cfd 100755
--- a/tools/dfu.py
+++ b/tools/dfu.py
@@ -60,6 +60,10 @@ def build(file,targets,device=DEFAULT_DEVICE):
   for t,target in enumerate(targets):
     tdata = b''
     for image in target:
+      # pad image to 8 bytes (needed at least for L476)
+      pad = (8 - len(image['data']) % 8 ) % 8
+      image['data'] = image['data'] + bytes(bytearray(8)[0:pad])
+      #
       tdata += struct.pack('<2I',image['address'],len(image['data']))+image['data']
     tdata = struct.pack('<6sBI255s2I',b'Target',0,1, b'ST...',len(tdata),len(target)) + tdata
     data += tdata