diff --git a/src/main.rs b/src/main.rs
index f6afd3c..3f92bd5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -90,6 +90,8 @@ async fn main() -> Result<()>{
 
                     let mut serial_interface = serial::SerialInterface::new(path, *baud_rate).context("Couldn't init serial interface")?;
 
+                    serial_interface.drain_buffer();
+
                     serial_interface.send(&request_current_state_packet).context("Failed to send improv packet")?;
 
                     let result_bytes = serial_interface.recv_bytes().context("Couldn't receive any improv packet")?;
@@ -111,6 +113,8 @@ async fn main() -> Result<()>{
 
                     let mut serial_interface = serial::SerialInterface::new(path, *baud_rate).context("Couldn't init serial interface")?;
 
+                    serial_interface.drain_buffer();
+
                     serial_interface.send(&send_wifi_settings_packet).context("Failed to send improv packet")?;
 
                     let result_bytes = serial_interface.recv_bytes().context("Couldn't receive any improv packet")?;
@@ -127,6 +131,8 @@ async fn main() -> Result<()>{
 
                     let mut serial_interface = serial::SerialInterface::new(path, *baud_rate).context("Couldn't init serial interface")?;
 
+                    serial_interface.drain_buffer();
+
                     serial_interface.send(&request_device_information_packet).context("Failed to send improv packet")?;
 
                     let result_bytes = serial_interface.recv_bytes().context("Couldn't receive any improv packet")?;
@@ -143,6 +149,8 @@ async fn main() -> Result<()>{
 
                     let mut serial_interface = serial::SerialInterface::new(path, *baud_rate).context("Couldn't init serial interface")?;
 
+                    serial_interface.drain_buffer();
+
                     serial_interface.send(&request_scanned_wifi_networks_packet).context("Failed to send improv packet")?;
 
                     loop {
diff --git a/src/serial.rs b/src/serial.rs
index 09054ac..adb6f71 100644
--- a/src/serial.rs
+++ b/src/serial.rs
@@ -127,6 +127,11 @@ impl SerialInterface {
         Ok(())
     }
 
+    pub fn drain_buffer(&mut self) {
+        let _ = self.fill_buffer();
+        self.buffer = Vec::new();
+    }
+
     pub fn recv_bytes(&mut self) -> Result<Vec<u8>> {
         let retry_counter = 0;