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