diff --git a/firmware/rust1/download_firmware_via_modbus.py b/firmware/rust1/download_firmware_via_modbus.py
index 56b3d86f34d375ba4c78f2837a4339ce5b7ff5d0..e4e6aecb9a6adec640760211c4e52ebb3c4df154 100644
--- a/firmware/rust1/download_firmware_via_modbus.py
+++ b/firmware/rust1/download_firmware_via_modbus.py
@@ -59,8 +59,8 @@ def main():
             #    retry_on_empty=False,
             #    close_comm_on_error=False,
             #    strict=True,
-            #baudrate=19200,
-            baudrate=115200*2,
+            baudrate=19200,
+            #baudrate=115200*2,
             parity="E",
         )
         client.connect()
diff --git a/firmware/rust1/src/bin/heizung.rs b/firmware/rust1/src/bin/heizung.rs
index af64a4fe5b0aea62e8830b96434b1e8760dac685..757e1883449990c49da7060bde7c888c155198d3 100644
--- a/firmware/rust1/src/bin/heizung.rs
+++ b/firmware/rust1/src/bin/heizung.rs
@@ -622,8 +622,8 @@ async fn main2(spawner: Spawner) {
 
     // use 19200 baud in 8E1 mode - not great but it's the Modbus default
     let mut uart_config = uart::Config::default();
-    //uart_config.baudrate = 19200;
-    uart_config.baudrate = 115200*2;
+    uart_config.baudrate = 19200;
+    //uart_config.baudrate = 115200*2;
     uart_config.parity = Parity::ParityEven;
     let rs485 = RS485::new(
         p.UART0, rx, tx, tx_en, interrupt::take!(UART0_IRQ), p.DMA_CH1, uart_config,
diff --git a/firmware/rust1/src/rs485.rs b/firmware/rust1/src/rs485.rs
index 4df0d0df31b9726da6339c8e80870e12e80b58c3..580bf49b6f26d139181a848b861fb6896577cc68 100644
--- a/firmware/rust1/src/rs485.rs
+++ b/firmware/rust1/src/rs485.rs
@@ -417,6 +417,9 @@ impl<H: RS485Handler> RS485<H> {
                 Either4::Fourth(Either3::First(x)) => {
                     drop(rx_future);
                     let rx_char = x.map(|_| -> u8 { rx_buf_one[0] });
+                    if Err(embassy_rp::uart::Error::Overrun) == x {
+                        // We should probably drain the FIFO but I don't see a good way to do this.
+                    }
                     rx_future = DontAbort::new(self.rx.read(&mut rx_buf_one), PanicIfReused);
 
                     if tx_in_progress {