diff --git a/TimeBaseAOMDriver/blacs_tabs.py b/TimeBaseAOMDriver/blacs_tabs.py
index 1b05b384703791202d6cbcc27cfcc4f977b7230e..6b5098634d45c14ffd94683645a525fb67bf54ca 100644
--- a/TimeBaseAOMDriver/blacs_tabs.py
+++ b/TimeBaseAOMDriver/blacs_tabs.py
@@ -7,7 +7,6 @@ class TimeBaseTab(DeviceTab):
         props = connection.properties
         self.hostname = props["hostname"]
         self.port = props["port"]
-        self.num_AOM = props["num_AOM"]
         # Capabilities
         self.base_units =    {'freq':'Hz',                 'amp':'dBm',}
         self.base_min =      {'freq':props["min_freq"],    'amp':props["min_amp"],}
@@ -17,7 +16,9 @@ class TimeBaseTab(DeviceTab):
         
         # Create DDS Output objects
         dds_prop = {}
-        for i in range(1,self.num_AOM+1):
+        for i in range(1,props["num_AOM"]+1):
+            if connection.find_child(self.device_name,f"CH-{i}") is None:
+                continue
             dds_prop[f"CH-{i}"] = {"gate":{}}
             for subchnl in ['freq', 'amp']:
                 dds_prop[f"CH-{i}"][subchnl] = {'base_unit':self.base_units[subchnl], 
@@ -45,7 +46,7 @@ class TimeBaseTab(DeviceTab):
         self.create_worker(
             "main_worker",
             "user_devices.TimeBaseAOMDriver.blacs_workers.TimeBaseWorker",
-            {"hostname":self.hostname, "port":self.port, "num_AOM":self.num_AOM, "mock":props["mock"]})
+            {"hostname":self.hostname, "port":self.port, "channels":tuple(dds_prop.keys()), "mock":props["mock"]})
         self.primary_worker = "main_worker"
 
 
diff --git a/TimeBaseAOMDriver/blacs_workers.py b/TimeBaseAOMDriver/blacs_workers.py
index 31679e8222422da67b31b3560b70d32d159c91a2..f66f228417c043ef5f776297d8a6b48f9ad00538 100644
--- a/TimeBaseAOMDriver/blacs_workers.py
+++ b/TimeBaseAOMDriver/blacs_workers.py
@@ -26,8 +26,8 @@ class TimeBaseWorker(Worker):
                 continue
             break
         print(self.client.recv(200).decode())
-        self.smart_cache = {f"CH-{i}":{} for i in range(1,self.num_AOM+1)}
-        self.remote_values = {f"CH-{i}":{} for i in range(1,self.num_AOM+1)}
+        self.smart_cache = {channel:{} for channel in self.channels}
+        self.remote_values = {channel:{} for channel in self.channels}
     
     def transition_to_buffered(self, device_name, h5file, initial_values, fresh):
         with h5py.File(h5file,"r") as file:
@@ -69,13 +69,13 @@ class TimeBaseWorker(Worker):
 
     def check_remote_values(self):
         start = time.perf_counter()
-        try:
-            # Call revc in case the TCP server still has some other message queued to send
-            self.client.recv(1000)
-        except socket.timeout:
-            pass # Nothing received
-        for i in range(1,self.num_AOM+1):
-            ch = f"CH-{i}"
+        # I rmoved this block, becasue I don't think it's necessary and when we run shots for long this often triggers an error that requires restarts
+        # try:
+        #     # Call revc in case the TCP server still has some other message queued to send
+        #     self.client.recv(1000)
+        # except socket.timeout:
+        #     pass # Nothing received
+        for ch in self.channels:
             self.client.send(ch.encode()+b"|Gpar\r\n")
             time.sleep(0.2)
             try: