diff --git a/mavlink-core/src/embedded.rs b/mavlink-core/src/embedded.rs
index 96917e506c12b1771312a188c096650ce6dbc44b..3d1e7e5e145931823192e212a250da2312bfb383 100644
--- a/mavlink-core/src/embedded.rs
+++ b/mavlink-core/src/embedded.rs
@@ -5,6 +5,10 @@ const _: () = panic!("Only one of 'embedded' and 'embedded-hal-02' features can
 
 /// Replacement for std::io::Read + byteorder::ReadBytesExt in no_std envs
 pub trait Read {
+    fn read(&mut self, buf: &mut [u8]) -> Result<usize, MessageReadError> {
+        self.read_exact(buf).map(|_| buf.len())
+    }
+
     fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), MessageReadError>;
 }
 
diff --git a/mavlink-core/src/error.rs b/mavlink-core/src/error.rs
index 49394f8d64a3ae21baacea81d4d39ca66b5addc4..08e0bed744408d84f30307d2309fd837c14df7d1 100644
--- a/mavlink-core/src/error.rs
+++ b/mavlink-core/src/error.rs
@@ -37,6 +37,15 @@ pub enum MessageReadError {
     Parse(ParserError),
 }
 
+impl MessageReadError {
+    pub fn eof() -> Self {
+        #[cfg(feature = "std")]
+        return Self::Io(std::io::ErrorKind::UnexpectedEof.into());
+        #[cfg(any(feature = "embedded", feature = "embedded-hal-02"))]
+        return Self::Io;
+    }
+}
+
 impl Display for MessageReadError {
     fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
         match self {
diff --git a/mavlink-core/src/peek_reader.rs b/mavlink-core/src/peek_reader.rs
index b67da6a32b14e9e18a80c969cff8254a2c0e3c6e..ec3c1de20bb0ec6760c7cb2739fca7b23ebf66a4 100644
--- a/mavlink-core/src/peek_reader.rs
+++ b/mavlink-core/src/peek_reader.rs
@@ -135,9 +135,7 @@ impl<R: Read, const BUFFER_SIZE: usize> PeekReader<R, BUFFER_SIZE> {
             let bytes_read = self.reader.read(&mut buf[..bytes_to_read])?;
 
             if bytes_read == 0 {
-                return Err(MessageReadError::Io(
-                    std::io::ErrorKind::UnexpectedEof.into(),
-                ));
+                return Err(MessageReadError::eof());
             }
 
             // if some bytes were read, add them to the buffer