diff --git a/boards/common/iotlab/Makefile.include b/boards/common/iotlab/Makefile.include
index 99b3803c74510919836e986b7711e42d0183a3af..c3f9abf595f70356d4195817f8d2ec0c24bfdbe4 100644
--- a/boards/common/iotlab/Makefile.include
+++ b/boards/common/iotlab/Makefile.include
@@ -10,6 +10,10 @@ PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbserial*B)))
 export BAUD = 500000
 include $(RIOTMAKE)/tools/serial.inc.mk
 
+# call a 'reset halt' command before starting the debugger
+# it is required as `connect_assert_srst` is set
+export OPENOCD_DBG_START_CMD = -c 'reset halt'
+
 # this board uses openocd
 include $(RIOTMAKE)/tools/openocd.inc.mk
 
diff --git a/boards/iotlab-a8-m3/dist/openocd.cfg b/boards/iotlab-a8-m3/dist/openocd.cfg
index d9b5985367ff19f0586147107f10e4f17823ecfa..0b9d3c790086f0bf6f7b4d1f2fb0b929e8f99ebb 100644
--- a/boards/iotlab-a8-m3/dist/openocd.cfg
+++ b/boards/iotlab-a8-m3/dist/openocd.cfg
@@ -1,9 +1,8 @@
-interface ftdi
-ftdi_vid_pid 0x0403 0x6010
+source [find interface/ftdi/iotlab-usb.cfg]
+source [find target/stm32f1x.cfg]
 
-ftdi_layout_init 0x0c08 0x0c2b
-ftdi_layout_signal nTRST -data 0x0800
-ftdi_layout_signal nSRST -data 0x0400
+# use combined on interfaces or targets that can't set TRST/SRST separately
+# Using connect_assert_srst removes errors on first flash
+reset_config trst_and_srst connect_assert_srst
 
-source [find target/stm32f1x.cfg]
 $_TARGETNAME configure -rtos auto
diff --git a/boards/iotlab-m3/dist/openocd.cfg b/boards/iotlab-m3/dist/openocd.cfg
index d9b5985367ff19f0586147107f10e4f17823ecfa..0b9d3c790086f0bf6f7b4d1f2fb0b929e8f99ebb 100644
--- a/boards/iotlab-m3/dist/openocd.cfg
+++ b/boards/iotlab-m3/dist/openocd.cfg
@@ -1,9 +1,8 @@
-interface ftdi
-ftdi_vid_pid 0x0403 0x6010
+source [find interface/ftdi/iotlab-usb.cfg]
+source [find target/stm32f1x.cfg]
 
-ftdi_layout_init 0x0c08 0x0c2b
-ftdi_layout_signal nTRST -data 0x0800
-ftdi_layout_signal nSRST -data 0x0400
+# use combined on interfaces or targets that can't set TRST/SRST separately
+# Using connect_assert_srst removes errors on first flash
+reset_config trst_and_srst connect_assert_srst
 
-source [find target/stm32f1x.cfg]
 $_TARGETNAME configure -rtos auto