Index: trunk/psModules/src/config/pmConfigDump.c
===================================================================
--- trunk/psModules/src/config/pmConfigDump.c	(revision 23275)
+++ trunk/psModules/src/config/pmConfigDump.c	(revision 23280)
@@ -54,8 +54,39 @@
     psArray *keep = psStringSplitArray(save, " ,;", false); // List of items to keep
 
-    bool result = configCull(config->recipes, keep); // Result of culling
+    if (!configCull(config->recipes, keep)) {
+        psError(PS_ERR_UNKNOWN, false, "Unable to cull system recipes.");
+        psFree(keep);
+        return false;
+    }
+
+    // Need to cull recipes from all cameras as well
+    psMetadata *cameras = psMetadataLookupMetadata(NULL, config->system, "CAMERAS"); // Known cameras
+    if (!cameras) {
+        psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find CAMERAS in the system configuration.\n");
+        return false;
+    }
+
+    psMetadataIterator *iter = psMetadataIteratorAlloc(cameras, PS_LIST_HEAD, NULL); // Iterator for cameras
+    psMetadataItem *item;               // Item from iteration
+    while ((item = psMetadataGetAndIncrement(iter))) {
+        psAssert(item->type == PS_DATA_METADATA, "Should only be metadata types on the camera list.");
+        psMetadata *camera = item->data.md; // Camera configuration
+        bool mdok;                      // Status of MD lookup
+        psMetadata *recipes = psMetadataLookupMetadata(&mdok, camera, "RECIPES"); // Recipe overrides
+        if (!recipes) {
+            continue;
+        }
+        if (!configCull(recipes, keep)) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to cull recipes for camera %s", item->name);
+            psFree(iter);
+            psFree(keep);
+            return false;
+        }
+    }
+    psFree(iter);
+
     psFree(keep);
 
-    return result;
+    return true;
 }
 
