def METHOD_NAME(self):
    """
    Connect to scrcpy server, there will be two sockets, video and control socket.
    Raises:
        ScrcpyError:
    """
    logger.hr('Scrcpy server start')
    commands = ScrcpyOptions.command_v120(jar_path=self.config.SCRCPY_FILEPATH_REMOTE)
    self._scrcpy_server_stream: AdbConnection = self.adb.shell(
        commands,
        stream=True,
    )
    logger.info('Create server stream')
    ret = self._scrcpy_server_stream.read(10)
    # b'Aborted \r\n'
    # Probably because file not exists
    if b'Aborted' in ret:
        raise ScrcpyError('Aborted')
    if ret == b'[server] E':
        # [server] ERROR: ...
        ret += recv_all(self._scrcpy_server_stream)
        logger.error(ret)
        # java.lang.IllegalArgumentException: The server version (1.25) does not match the client (...)
        if b'does not match the client' in ret:
            raise ScrcpyError('Server version does not match the client')
        else:
            raise ScrcpyError('Unknown scrcpy error')
    else:
        # [server] INFO: Device: ...
        ret += self._scrcpy_receive_from_server_stream()
        logger.info(ret)
        pass
    logger.info('Create video socket')
    timeout = Timer(3).start()
    while 1:
        if timeout.reached():
            raise ScrcpyError('Connect scrcpy-server timeout')
        try:
            self._scrcpy_video_socket = self.adb.create_connection(
                Network.LOCAL_ABSTRACT, "scrcpy"
            )
            break
        except AdbError:
            sleep(0.1)
    dummy_byte = self._scrcpy_video_socket.recv(1)
    if not len(dummy_byte) or dummy_byte != b"\x00":
        raise ScrcpyError('Did not receive Dummy Byte from video stream')
    logger.info('Create control socket')
    self._scrcpy_control_socket = self.adb.create_connection(
        Network.LOCAL_ABSTRACT, "scrcpy"
    )
    logger.info('Fetch device info')
    device_name = self._scrcpy_video_socket.recv(64).decode("utf-8").rstrip("\x00")
    if len(device_name):
        logger.attr('Scrcpy Device', device_name)
    else:
        raise ScrcpyError('Did not receive Device Name')
    ret = self._scrcpy_video_socket.recv(4)
    self._scrcpy_resolution = struct.unpack(">HH", ret)
    logger.attr('Scrcpy Resolution', self._scrcpy_resolution)
    self._scrcpy_video_socket.setblocking(False)
    self._scrcpy_alive = True
    logger.info('Start video stream loop thread')
    self._scrcpy_stream_loop_thread = threading.Thread(
        target=self._scrcpy_stream_loop, daemon=True
    )
    self._scrcpy_stream_loop_thread.start()
    while 1:
        if self._scrcpy_stream_loop_thread is not None and self._scrcpy_stream_loop_thread.is_alive():
            break
        self.sleep(0.001)
    logger.info('Scrcpy server is up')