Sound stability test
diff --git a/selfdrive/modeld/test/polyfit/__init__.py b/selfdrive/modeld/test/polyfit/__init__.py
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/selfdrive/ui/test/__init__.py b/selfdrive/ui/test/__init__.py
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/selfdrive/ui/test/test_sound_stability.py b/selfdrive/ui/test/test_sound_stability.py
new file mode 100755
index 00000000000000..f0d51ec960dea1
--- /dev/null
+++ b/selfdrive/ui/test/test_sound_stability.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+import os
+import random
+import subprocess
+import time
+from pathlib import Path
+from common.basedir import BASEDIR
+
+os.environ["LD_LIBRARY_PATH"] = ""
+
+# pull this from the provisioning tests
+play_sound = os.path.join(BASEDIR, "selfdrive/ui/test/play_sound")
+waste = os.path.join(BASEDIR, "scripts/waste")
+sound_path = Path(os.path.join(BASEDIR, "selfdrive/assets/sounds"))
+
+def sound_test():
+
+  # max volume
+  vol = 15
+  sound_files = [p.absolute() for p in sound_path.iterdir() if str(p).endswith(".wav")]
+
+  # start waste
+  p = subprocess.Popen([waste], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+
+  start_time = time.monotonic()
+  frame = 0
+  while True:
+    # start a few processes
+    procs = []
+    for _ in range(random.randint(5, 20)):
+      sound = random.choice(sound_files)
+      p = subprocess.Popen([play_sound, str(sound), str(vol)], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+      procs.append(p)
+      time.sleep(random.uniform(0, 0.75))
+
+    # and kill them
+    time.sleep(random.uniform(0, 5))
+    for p in procs:
+      p.terminate()
+
+    # write stats
+    stats = f"running time {time.monotonic() - start_time}s, cycle {frame}"
+    with open("/tmp/sound_stats.txt", "a") as f:
+      f.write(stats)
+    print(stats)
+    frame +=1
+
+if __name__ == "__main__":
+  sound_test()
