diff --git a/ebpfcat/serial.py b/ebpfcat/serial.py
index 8ef0f0378a7f86acc5d62f1794e4831693d788cb..2044fd590cc76a1e32d9e2c779ad43164d107639 100644
--- a/ebpfcat/serial.py
+++ b/ebpfcat/serial.py
@@ -81,15 +81,14 @@ class Serial(Device):
             nonlocal remainder
             s = remainder
             size = len(remainder)
-            while not self.buffer.empty() or size == 0:
-                if size + len(s) > 22:
-                    remainder = s[22-size:]
-                    yield s[:22-size]
+
+            while True:
+                remainder = s[22-size:]
+                yield s[:22-size]
+                size += len(s)
+                if (self.buffer.empty() and size > 0) or size > 22:
                     return
-                else:
-                    yield s
-                    size += len(s)
-                    s = await self.buffer.get()
+                s = await self.buffer.get()
 
         while True:
             ta = self.transmit_accept