diff --git a/.gitattributes b/.gitattributes
index d3fd8652db84d7849afe03528077c07597971792..dd093894668c60c5514e50f5aacad069a7833083 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3727,6 +3727,7 @@ MAC/Services/test/tPipelineControl.sh eol=lf
 MAC/TBB/bin/tbb_freeze -text
 MAC/TBB/bin/tbb_load_firmware -text
 MAC/TBB/bin/tbb_release_recording -text
+MAC/TBB/bin/tbb_restart_recording -text
 MAC/TBB/bin/tbb_set_storage -text
 MAC/TBB/bin/tbb_start_recording -text
 MAC/TBB/bin/tbb_upload_to_cep -text
@@ -3735,6 +3736,7 @@ MAC/TBB/lib/tbb_config.py -text
 MAC/TBB/lib/tbb_freeze.py -text
 MAC/TBB/lib/tbb_load_firmware.py -text
 MAC/TBB/lib/tbb_release_recording.py -text
+MAC/TBB/lib/tbb_restart_recording.py -text
 MAC/TBB/lib/tbb_set_storage.py -text
 MAC/TBB/lib/tbb_start_recording.py -text
 MAC/TBB/lib/tbb_upload_to_cep.py -text
diff --git a/MAC/TBB/bin/CMakeLists.txt b/MAC/TBB/bin/CMakeLists.txt
index a62388e6afa78c547869f72b0d46056f718065c5..d85e9d070554df808a2e0c06bfb1c020a8494f9c 100644
--- a/MAC/TBB/bin/CMakeLists.txt
+++ b/MAC/TBB/bin/CMakeLists.txt
@@ -4,6 +4,7 @@ lofar_add_bin_scripts(
   tbb_freeze
   tbb_load_firmware
   tbb_release_recording
+  tbb_restart_recording
   tbb_set_storage
   tbb_start_recording
   tbb_upload_to_cep
diff --git a/MAC/TBB/bin/tbb_restart_recording b/MAC/TBB/bin/tbb_restart_recording
new file mode 100755
index 0000000000000000000000000000000000000000..05523f3d11e1a2622a7b5929f6f30ea1c7012d6e
--- /dev/null
+++ b/MAC/TBB/bin/tbb_restart_recording
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+########################################################################
+#
+# Restart TBB recording on a bunch of stations
+#
+########################################################################
+
+import logging
+from lofar.mac.tbb.tbb_restart_recording import main
+
+
+if __name__ == '__main__':
+    format = '%(asctime)-15s | %(message)s'
+    logging.basicConfig(format=format, level=logging.INFO)
+    main()
diff --git a/MAC/TBB/lib/CMakeLists.txt b/MAC/TBB/lib/CMakeLists.txt
index 03e7806f7884d3c9310f326c50a5fb4d2a61d658..58308c268fa8f7721c7d500d0652b47cc3611e60 100644
--- a/MAC/TBB/lib/CMakeLists.txt
+++ b/MAC/TBB/lib/CMakeLists.txt
@@ -8,6 +8,7 @@ python_install(
   tbb_freeze.py
   tbb_load_firmware.py
   tbb_release_recording.py
+  tbb_restart_recording.py
   tbb_set_storage.py
   tbb_start_recording.py
   tbb_upload_to_cep.py
diff --git a/MAC/TBB/lib/tbb_restart_recording.py b/MAC/TBB/lib/tbb_restart_recording.py
new file mode 100755
index 0000000000000000000000000000000000000000..47952eb1a8040ff4f1077e2012e57030d4cee3eb
--- /dev/null
+++ b/MAC/TBB/lib/tbb_restart_recording.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+########################################################################
+#
+# Restart TBB recording on a bunch of stations
+#
+########################################################################
+
+import argparse
+import logging
+from lofar.mac.tbb.tbb_config import supported_modes
+from lofar.mac.tbb.tbb_release_recording import release_tbb
+from lofar.mac.tbb.tbb_start_recording import start_tbb
+ 
+
+def main():
+    parser = argparse.ArgumentParser("This script will restart TBB recording on a bunch of stations.")
+    parser.add_argument('-s', '--stations', dest='stations', help="comma-separated list of station LCUs (e.g. cs030c,cs031c; also accepts lcurun aliases like 'today', 'nl', ...)", default='today')
+    parser.add_argument('-m', '--mode', dest='mode', help="supported tbb modes: %s" % supported_modes, default='subband')
+    parser.add_argument('-b', '--subbands', dest='subbands', help='Subband range, e.g. 10:496', default='10:496')
+    args = parser.parse_args()
+
+    if args.mode not in supported_modes:
+        raise ValueError('Mode must be one of %s' % supported_modes)
+
+    release_tbb(args.stations)
+    start_tbb(args.stations, args.mode, args.subbands)