diff --git a/platform/drivers/baseband/radio_UV3x0.c b/platform/drivers/baseband/radio_UV3x0.c
index 5f4a5486..959647e0 100644
--- a/platform/drivers/baseband/radio_UV3x0.c
+++ b/platform/drivers/baseband/radio_UV3x0.c
@@ -277,7 +277,11 @@ float radio_getRssi(const freq_t rxFreq)
 {
     (void) rxFreq;
 
-    uint16_t val = AT1846S_readRSSI();
-    int8_t rssi   = -151 + (val >> 8);
+    /*
+     * RSSI and SNR are packed in a 16-bit value, with RSSI being the upper
+     * eight bits.
+     */
+    uint16_t val = (AT1846S_readRSSI() >> 8);
+    int16_t rssi   = -151 + ((int16_t) val);
     return ((float) rssi);
 }