diff --git a/platforms/nuttx/src/px4/common/SerialImpl.cpp b/platforms/nuttx/src/px4/common/SerialImpl.cpp index cd9caa4982..f3a9f2389b 100644 --- a/platforms/nuttx/src/px4/common/SerialImpl.cpp +++ b/platforms/nuttx/src/px4/common/SerialImpl.cpp @@ -355,12 +355,15 @@ ssize_t SerialImpl::write(const void *buffer, size_t buffer_size) } int written = ::write(_serial_fd, buffer, buffer_size); - tcdrain(_serial_fd); // Wait until all output is transmitted if (written < 0) { - PX4_ERR("%s write error %d", _port, written); + if (errno != EAGAIN) { + PX4_ERR("%s write error %d", _port, written); + } } + ::fsync(_serial_fd); + return written; } diff --git a/platforms/posix/src/px4/common/SerialImpl.cpp b/platforms/posix/src/px4/common/SerialImpl.cpp index 6d9b64a828..9ad8d62567 100644 --- a/platforms/posix/src/px4/common/SerialImpl.cpp +++ b/platforms/posix/src/px4/common/SerialImpl.cpp @@ -337,13 +337,15 @@ ssize_t SerialImpl::write(const void *buffer, size_t buffer_size) } int written = ::write(_serial_fd, buffer, buffer_size); - ::fsync(_serial_fd); if (written < 0) { - PX4_ERR("%s write error %d", _port, written); - + if (errno != EAGAIN) { + PX4_ERR("%s write error %d", _port, written); + } } + ::fsync(_serial_fd); + return written; } diff --git a/platforms/qurt/src/px4/SerialImpl.cpp b/platforms/qurt/src/px4/SerialImpl.cpp index e176f528c9..c2c88e43b9 100644 --- a/platforms/qurt/src/px4/SerialImpl.cpp +++ b/platforms/qurt/src/px4/SerialImpl.cpp @@ -268,8 +268,9 @@ ssize_t SerialImpl::write(const void *buffer, size_t buffer_size) int ret_write = qurt_uart_write(_serial_fd, (const char *) buffer, buffer_size); if (ret_write < 0) { - PX4_ERR("%s write error %d", _port, ret_write); - + if (errno != EAGAIN) { + PX4_ERR("%s write error %d", _port, ret_write); + } } return ret_write;