diff --git a/examples/NonArduino/ESP-IDF/main/EspHal.h b/examples/NonArduino/ESP-IDF/main/EspHal.h
index a4f64d1c..340adbd6 100644
--- a/examples/NonArduino/ESP-IDF/main/EspHal.h
+++ b/examples/NonArduino/ESP-IDF/main/EspHal.h
@@ -285,7 +285,7 @@ class EspHal : public RadioLibHal {
       // repeats clock div, mode and bit order configuration
     }
 
-    uint8_t spiTransfer(uint8_t b) {
+    uint8_t spiTransferByte(uint8_t b) {
       this->spi->mosi_dlen.usr_mosi_dbitlen = 7;
       this->spi->miso_dlen.usr_miso_dbitlen = 7;
       this->spi->data_buf[0] = b;
@@ -294,6 +294,12 @@ class EspHal : public RadioLibHal {
       return(this->spi->data_buf[0] & 0xFF);
     }
 
+    void spiTransfer(uint8_t* out, size_t len, uint8_t* in) {
+      for(size_t i = 0; i < len; i++) {
+        in[i] = this->spiTransferByte(out[i]);
+      }
+    }
+
     void spiEndTransaction() {
       // nothing needs to be done here
     }
diff --git a/examples/NonArduino/Raspberry/PiHal.h b/examples/NonArduino/Raspberry/PiHal.h
index 5a94fe8d..695dc523 100644
--- a/examples/NonArduino/Raspberry/PiHal.h
+++ b/examples/NonArduino/Raspberry/PiHal.h
@@ -128,10 +128,8 @@ class PiHal : public RadioLibHal {
 
     void spiBeginTransaction() {}
 
-    uint8_t spiTransfer(uint8_t b) {
-      char ret;
-      spiXfer(_spiHandle, (char*)&b, &ret, 1);
-      return(ret);
+    void spiTransfer(uint8_t* out, size_t len, uint8_t* in) {
+      spiXfer(_spiHandle, (char*)out, in, len);
     }
 
     void spiEndTransaction() {}