diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index d42f7b4..e3c59b4 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -824,9 +824,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */
arg *= SD_BLOCK_SIZE;

- if(!send_cmd(drive, cmd, arg, MCI_NO_RESP, NULL))
- panicf("%s multiple blocks failed", write ? "write" : "read");
-
if(write)
dma_enable_channel(0, dma_buf, MCI_FIFO, DMA_PERI_SD,
DMAC_FLOWCTRL_PERI_MEM_TO_PERI, true, false, 0, DMA_S8, NULL);
@@ -834,6 +831,10 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
dma_enable_channel(0, MCI_FIFO, dma_buf, DMA_PERI_SD,
DMAC_FLOWCTRL_PERI_PERI_TO_MEM, false, true, 0, DMA_S8, NULL);

+ unsigned long dummy;
+ if(!send_cmd(drive, cmd, arg, MCI_RESP, &dummy))
+ panicf("%s multiple blocks failed", write ? "write" : "read");
+
wakeup_wait(&transfer_completion_signal, TIMEOUT_BLOCK);

MCI_MASK &= ~(MCI_DATA_ERROR | MCI_INT_DTO);
@@ -904,14 +905,7 @@ int sd_write_sectors(IF_MD2(int drive,) unsigned long start, int count,
(void) buf;
return -1;
#else
- //return sd_transfer_sectors(IF_MD2(drive,) start, count, (void*)buf, true);
-#ifdef HAVE_MULTIDRIVE
- (void)drive;
-#endif
- (void)start;
- (void)count;
- (void)buf;
- return -1; /* not working, seems to cause FIFO overruns */
+ return sd_transfer_sectors(IF_MD2(drive,) start, count, (void*)buf, true);
#endif /* defined(BOOTLOADER) */
}