diff --git a/src/serial.rs b/src/serial.rs
index c66f74c2d6e2b4ebdb7a8567b0592004947003a1..55fde7caf36d43d06f520766eca9fdb1bcc3439f 100644
--- a/src/serial.rs
+++ b/src/serial.rs
@@ -67,9 +67,13 @@ impl SerialManager {
         let mut buf = vec![0; n];
         // implement a read exact to allow better error messages
         let mut filled = 0;
-        let timeout = Instant::now() + port.read_timeout;
         while filled < n {
-            match port.reader_ch.as_ref().unwrap().recv_deadline(timeout) {
+            match port
+                .reader_ch
+                .as_ref()
+                .unwrap()
+                .recv_timeout(port.read_timeout)
+            {
                 Ok(b) => {
                     buf[filled] = b;
                     filled += 1;