diff --git a/configs/config_mb_2024_0_2__1_mux_2024.py b/configs/config_mb_2024_0_2__1_mux_2024.py
index 77ead14dbed34d1088215e78817dc1d7cc618467..bc7d3a51246d2105085e63fc365cc641e86415fd 100644
--- a/configs/config_mb_2024_0_2__1_mux_2024.py
+++ b/configs/config_mb_2024_0_2__1_mux_2024.py
@@ -36,8 +36,10 @@ HARDWARE_CONFIG = {
                      {'model': 'mux_2024_0_X',
                       'tca_address': None,
                       'tca_channel': 0,
-                      'mcp_0': '0x26',  # TODO : Replace this with pos of jumper on MUX board (address doesn't mean anything for the average user...)
-                      'mcp_1': '0x27',  # TODO : Replace this with pos of jumper on MUX board (address doesn't mean anything for the average user...)
+                      'addr2': 'down', 
+                      'addr1': 'down',
+                      # 'mcp_0': '0x26',
+                      # 'mcp_1': '0x27',
                       'roles': {'A': 'X', 'B': 'Y', 'M': 'XX', 'N': 'YY'},
                       'cabling': {(i+0, j): ('mux_03', i) for j in ['A', 'B', 'M', 'N'] for i in range(1, 9)},
                       'voltage_max': 12.}
diff --git a/ohmpi/hardware_components/mux_2024_0_X.py b/ohmpi/hardware_components/mux_2024_0_X.py
index db16f57b43e1be3afbe29dfe5292c62b2a0143b7..866a4c5a3d46144f4c0e6eca9f898f020346c0e6 100644
--- a/ohmpi/hardware_components/mux_2024_0_X.py
+++ b/ohmpi/hardware_components/mux_2024_0_X.py
@@ -89,9 +89,21 @@ class Mux(MuxAbstract):
             self._tca = adafruit_tca9548a.TCA9548A(self.connection, tca_address)[tca_channel]
 
         # Setup MCPs
-        self._mcp_addresses = (kwargs.pop('mcp_0', '0x22'), kwargs.pop('mcp_1', '0x23'))  # TODO: add assert on valid addresses..
+        self._mcp_jumper_pos = (kwargs.pop('addr2', None), kwargs.pop('addr1', None))
+        self._mcp_addresses = (kwargs.pop('mcp_0', None), kwargs.pop('mcp_1', None))
+        if self._mcp_addresses['mcp_0'] is None and self._mcp_addresses['mcp_1'] is None:
+            if self._mcp_jumper_pos['addr2'] is not None and self._mcp_jumper_pos['addr1'] is not None:
+                self._mcp_jumper_pos_to_addr()
+                self.exec_logger.debug(f'{self.board_id} assigned mcp_addresses {self._mcp_addresses['mcp_0']} and '
+                                       f'{self._mcp_addresses['mcp_1']} from jumper positions.')
+            else:
+                self.exec_logger.debug(f'MCP addresses nor jumper positions for {self.board_id} not in config file...')
+                # TODO: if no addresses defined, should abort or should we set default mcp addresses?
+        for addr in self._mcp_addresses:
+            assert addr in [0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27]
         self._mcp = [None, None]
         self.reset()
+
         if self.addresses is None:
             self._get_addresses()
 
@@ -127,3 +139,9 @@ class Mux(MuxAbstract):
         if state == 'off':
             activate_relay(self._mcp[d['MCP']], d['MCP_GPIO'], False)
             # time.sleep(MUX_CONFIG['release_delay'])  # NOTE: moved to MuxAbstract switch
+
+    def _mcp_jumper_pos_to_addr(self):
+        d = {'up': 0, 'down': 1}
+        mcp_0 = hex(int(f'0100{d[self._mcp_jumper_pos['addr2']]}{d[self._mcp_jumper_pos['addr1']]}0', 2))
+        mcp_1 = hex(int(f'0100{d[self._mcp_jumper_pos['addr2']]}{d[self._mcp_jumper_pos['addr1']]}1', 2))
+        self._mcp_addresses = {'mcp_0': mcp_0, 'mcp_1': mcp_1}
\ No newline at end of file