code: def _parse_conn_string(self, conn_string):
          disconnection_required = False
          if conn_string is None or 'device' not in conn_string:
              if self._default_device_info is not None and self._device_info != self._default_device_info:
                  disconnection_required = True
                  self._device_info = self._default_device_info
          if conn_string is None or len(conn_string) == 0:
              return disconnection_required
          if '@' in conn_string:
              raise ArgumentError("Configuration files are not yet supported as part of a connection string argument",
                                  conn_string=conn_string)
          pairs = conn_string.split(';')
          for pair in pairs:
              name, _, value = pair.partition('=')
              if len(name) == 0 or len(value) == 0:
                  continue
              name = name.strip()
              value = value.strip()
              if name == 'device':
                  if value in DEVICE_ALIASES:
                      device_name = DEVICE_ALIASES[value]
                  if device_name in KNOWN_DEVICES:
                      device_info = KNOWN_DEVICES.get(device_name)
                      if self._device_info != device_info:
                          self._device_info = device_info
                          disconnection_required = True
                  else:
                      raise ArgumentError("Unknown device name or alias, please select from known_devices",
                                          device_name=value, known_devices=[x for x in DEVICE_ALIASES.keys()])
              elif name == 'channel':
                  if self._mux_func is not None:
                      if self._channel != int(value):
                          self._channel = int(value)
                          disconnection_required = True
                  else:
                      print("Warning: multiplexing architecture not selected, channel will not be set")
          return disconnection_required