diff --git a/boards/arduino-mkr1000/Makefile b/boards/arduino-mkr1000/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..f8fcbb53a06595771dae356338a7bf2c0673734d
--- /dev/null
+++ b/boards/arduino-mkr1000/Makefile
@@ -0,0 +1,3 @@
+MODULE = board
+
+include $(RIOTBASE)/Makefile.base
diff --git a/boards/arduino-mkr1000/Makefile.dep b/boards/arduino-mkr1000/Makefile.dep
new file mode 100644
index 0000000000000000000000000000000000000000..5472bf8b8d8fd463a18815c0f10e5d348f90fe51
--- /dev/null
+++ b/boards/arduino-mkr1000/Makefile.dep
@@ -0,0 +1,3 @@
+ifneq (,$(filter saul_default,$(USEMODULE)))
+  USEMODULE += saul_gpio
+endif
diff --git a/boards/arduino-mkr1000/Makefile.features b/boards/arduino-mkr1000/Makefile.features
new file mode 100644
index 0000000000000000000000000000000000000000..59999a6fe1becde826b6901803f1a98e3470eb02
--- /dev/null
+++ b/boards/arduino-mkr1000/Makefile.features
@@ -0,0 +1,18 @@
+# Put defined MCU peripherals here (in alphabetical order)
+FEATURES_PROVIDED += periph_adc
+FEATURES_PROVIDED += periph_cpuid
+FEATURES_PROVIDED += periph_gpio
+FEATURES_PROVIDED += periph_i2c
+FEATURES_PROVIDED += periph_pwm
+FEATURES_PROVIDED += periph_rtc
+FEATURES_PROVIDED += periph_rtt
+FEATURES_PROVIDED += periph_spi
+FEATURES_PROVIDED += periph_timer
+FEATURES_PROVIDED += periph_uart
+
+# Various other features (if any)
+FEATURES_PROVIDED += cpp
+FEATURES_PROVIDED += arduino
+
+# The board MPU family (used for grouping by the CI system)
+FEATURES_MCU_GROUP = cortex_m0_2
diff --git a/boards/arduino-mkr1000/Makefile.include b/boards/arduino-mkr1000/Makefile.include
new file mode 100644
index 0000000000000000000000000000000000000000..42923676a3997060b1d651b4785bd7f9100e2906
--- /dev/null
+++ b/boards/arduino-mkr1000/Makefile.include
@@ -0,0 +1,28 @@
+# define the cpu used by Arduino/Genuino MKR1000 board
+export CPU = samd21
+export CPU_MODEL = samd21g18a
+
+#export needed for flash rule
+export PORT_LINUX ?= /dev/ttyACM0
+export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
+
+ifeq ($(PROGRAMMER),jlink)
+    # in case J-Link is attached to SWD pins, use a plain CPU memory model
+    export JLINK_DEVICE := atsamw25
+    include $(RIOTMAKE)/tools/jlink.inc.mk
+else
+    # when BOSSA is used (default), use a different flash map
+    # refer https://github.com/shumatech/BOSSA for this programmer
+    export PROGRAMMER = bossa
+    export LINKER_SCRIPT ?= $(RIOTCPU)/sam0_common/ldscripts/$(CPU_MODEL)_mkr1000.ld
+
+    # define board specific flasher options
+    export FLASHER = $(RIOTBOARD)/$(BOARD)/dist/flash.sh
+    export OFLAGS = -O binary
+endif
+
+# setup serial terminal
+include $(RIOTMAKE)/tools/serial.inc.mk
+
+# setup the boards dependencies
+include $(RIOTBOARD)/$(BOARD)/Makefile.dep
diff --git a/boards/arduino-mkr1000/board.c b/boards/arduino-mkr1000/board.c
new file mode 100644
index 0000000000000000000000000000000000000000..b06f898c8dbcebef2279c421a56b3c579ddc997c
--- /dev/null
+++ b/boards/arduino-mkr1000/board.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C)  2016 Freie Universität Berlin
+ *                2016 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup     boards_arduino-mkr1000
+ * @{
+ *
+ * @file
+ * @brief       Board specific implementations for the Arduino MKR1000 board
+ *
+ * @author      Hauke Pertersen  <hauke.pertersen@fu-berlin.de>
+ * @author      Alexandre Abadie <alexandre.abadie@inria.fr>
+ *
+ * @}
+ */
+
+#include "cpu.h"
+#include "board.h"
+#include "periph/gpio.h"
+
+void board_init(void)
+{
+    /* initialize the CPU */
+    cpu_init();
+    /* initialize the on-board Green "L" LED on pin PA20 */
+    gpio_init(LED0_PIN, GPIO_OUT);
+}
diff --git a/boards/arduino-mkr1000/dist/bossac b/boards/arduino-mkr1000/dist/bossac
new file mode 100755
index 0000000000000000000000000000000000000000..2a4fb679ffd2eb847bd82e416a9dab39777d5d99
Binary files /dev/null and b/boards/arduino-mkr1000/dist/bossac differ
diff --git a/boards/arduino-mkr1000/dist/bossac_osx b/boards/arduino-mkr1000/dist/bossac_osx
new file mode 100755
index 0000000000000000000000000000000000000000..49a20b38a92e713bcc25b15de464642bc257220b
Binary files /dev/null and b/boards/arduino-mkr1000/dist/bossac_osx differ
diff --git a/boards/arduino-mkr1000/dist/flash.sh b/boards/arduino-mkr1000/dist/flash.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8f928de7fd215887dc6800c5a025704ddeaad5c0
--- /dev/null
+++ b/boards/arduino-mkr1000/dist/flash.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# To put the board in update mode, manually double press the reset button before
+# running `make flash`.
+
+if [ `uname` = "Linux" ]; then
+    stty -F "${PORT}" raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
+    "${RIOTBOARD}"/"${BOARD}"/dist/bossac --port=${PORT} -i -b -U true -i -e -w -v "${HEXFILE}" -R
+elif [ `uname` = "Darwin" ]; then
+    stty -f ${PORT} raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
+    "${RIOTBOARD}"/"${BOARD}"/dist/bossac_osx --port=${PORT} -i -b -U true -i -e -w -v "${HEXFILE}" -R
+else
+    echo "CAUTION: No flash tool for your host system found!"
+fi
diff --git a/boards/arduino-mkr1000/include/arduino_board.h b/boards/arduino-mkr1000/include/arduino_board.h
new file mode 100644
index 0000000000000000000000000000000000000000..d95f0e8e3d7aea085bd5c142dc0244ba7022d14a
--- /dev/null
+++ b/boards/arduino-mkr1000/include/arduino_board.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C)  2016 Freie Universität Berlin
+ *                2016 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup     boards_arduino-mkr1000
+ * @{
+ *
+ * @file
+ * @brief       Board specific configuration for the Arduino API
+ *
+ * @author      Hauke Petersen  <hauke.petersen@fu-berlin.de>
+ * @author      Alexandre Abadie  <alexandre.abadie@inria.fr>
+ */
+
+#ifndef ARDUINO_BOARD_H
+#define ARDUINO_BOARD_H
+
+#include "arduino_pinmap.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief   The on-board LED is connected to pin 6 on this board
+ */
+#define ARDUINO_LED         (6)
+
+/**
+ * @brief   Look-up table for the Arduino's digital pins
+ */
+static const gpio_t arduino_pinmap[] = {
+    ARDUINO_PIN_0,
+    ARDUINO_PIN_1,
+    ARDUINO_PIN_2,
+    ARDUINO_PIN_3,
+    ARDUINO_PIN_4,
+    ARDUINO_PIN_5,
+    ARDUINO_PIN_6,
+    ARDUINO_PIN_7,
+    ARDUINO_PIN_8,
+    ARDUINO_PIN_9,
+    ARDUINO_PIN_10,
+    ARDUINO_PIN_11,
+    ARDUINO_PIN_12,
+    ARDUINO_PIN_13,
+    ARDUINO_PIN_14,
+    ARDUINO_PIN_A0,
+    ARDUINO_PIN_A1,
+    ARDUINO_PIN_A2,
+    ARDUINO_PIN_A3,
+    ARDUINO_PIN_A4,
+    ARDUINO_PIN_A5,
+    ARDUINO_PIN_A6,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ARDUINO_BOARD_H */
+/** @} */
diff --git a/boards/arduino-mkr1000/include/arduino_pinmap.h b/boards/arduino-mkr1000/include/arduino_pinmap.h
new file mode 100644
index 0000000000000000000000000000000000000000..f8764779c27e795978b6232d550e966df14181f0
--- /dev/null
+++ b/boards/arduino-mkr1000/include/arduino_pinmap.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C)  2016 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup     boards_arduino-mkr1000
+ * @{
+ *
+ * @file
+ * @brief       Mapping from MCU pins to Arduino pins
+ *
+ * You can use the defines in this file for simplified interaction with the
+ * Arduino specific pin numbers.
+ *
+ * @author      Alexandre Abadie <alexandre.abadie@inria.fr>
+ */
+
+#ifndef ARDUINO_PINMAP_H
+#define ARDUINO_PINMAP_H
+
+#include "periph/gpio.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @name    Mapping of MCU pins to Arduino pins
+ * @{
+ */
+#define ARDUINO_PIN_0           GPIO_PIN(PA, 22) /* TC4-W0 */
+#define ARDUINO_PIN_1           GPIO_PIN(PA, 23) /* TC4-W1 */
+#define ARDUINO_PIN_2           GPIO_PIN(PA, 10) /* TCC0-W2 */
+#define ARDUINO_PIN_3           GPIO_PIN(PA, 11) /* TCC0-W3 */
+#define ARDUINO_PIN_4           GPIO_PIN(PB, 10) /* TCC0-W4 */
+#define ARDUINO_PIN_5           GPIO_PIN(PB, 11) /* TCC0-W5 */
+#define ARDUINO_PIN_6           GPIO_PIN(PA, 20) /* TCC0-W6, on-board LED */
+#define ARDUINO_PIN_7           GPIO_PIN(PA, 21) /* TCC0-W7 */
+
+#define ARDUINO_PIN_8           GPIO_PIN(PA, 16) /* SERCOM1-MOSI */
+#define ARDUINO_PIN_9           GPIO_PIN(PA, 17) /* SERCOM1-SCK */
+#define ARDUINO_PIN_10          GPIO_PIN(PA, 19) /* SERCOM1-MISO */
+#define ARDUINO_PIN_11          GPIO_PIN(PA, 8)  /* SERCOM0-SDA, on-board pull-up */
+#define ARDUINO_PIN_12          GPIO_PIN(PA, 9)  /* SERCOM0-SCL, on-board pull-up */
+#define ARDUINO_PIN_13          GPIO_PIN(PB, 23) /* SERCOM5-RX from MCU */
+#define ARDUINO_PIN_14          GPIO_PIN(PB, 22) /* SERCOM5-TX from MCU */
+
+#define ARDUINO_PIN_A0          GPIO_PIN(PA, 2)  /* AIN0, DAC0 */
+#define ARDUINO_PIN_A1          GPIO_PIN(PB, 2)  /* AIN10 */
+#define ARDUINO_PIN_A2          GPIO_PIN(PB, 3)  /* AIN11 */
+#define ARDUINO_PIN_A3          GPIO_PIN(PA, 4)  /* AIN4 */
+#define ARDUINO_PIN_A4          GPIO_PIN(PA, 5)  /* AIN5 */
+#define ARDUINO_PIN_A5          GPIO_PIN(PA, 6)  /* AIN6 */
+#define ARDUINO_PIN_A6          GPIO_PIN(PA, 7)  /* AIN7 */
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ARDUINO_PINMAP_H */
+/** @} */
diff --git a/boards/arduino-mkr1000/include/board.h b/boards/arduino-mkr1000/include/board.h
new file mode 100644
index 0000000000000000000000000000000000000000..407f5442fbb1971029a4c9f130326508657f04cd
--- /dev/null
+++ b/boards/arduino-mkr1000/include/board.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2016 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @defgroup    boards_arduino-mkr1000 Arduino MKR1000
+ * @ingroup     boards
+ * @brief       Support for the Arduino MKR1000 board.
+ * @{
+ *
+ * @file
+ * @brief       Board specific definitions for the Arduino MKR1000
+ *              board
+ *
+ * @author      Alexandre Abadie <alexandre.abadie@inria.fr>
+ */
+
+#ifndef BOARD_H
+#define BOARD_H
+
+#include "cpu.h"
+#include "periph_conf.h"
+#include "periph_cpu.h"
+#include "arduino_pinmap.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @name   LED pin definitions and handlers
+ * @{
+ */
+#define LED0_PIN            GPIO_PIN(PA, 20)
+
+#define LED_PORT            PORT->Group[PA]
+#define LED0_MASK           (1 << 20)
+
+#define LED0_ON             (LED_PORT.OUTSET.reg = LED0_MASK)
+#define LED0_OFF            (LED_PORT.OUTCLR.reg = LED0_MASK)
+#define LED0_TOGGLE         (LED_PORT.OUTTGL.reg = LED0_MASK)
+/** @} */
+
+/**
+ * @brief Initialize board specific hardware, including clock, LEDs and std-IO
+ */
+void board_init(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BOARD_H */
+/** @} */
diff --git a/boards/arduino-mkr1000/include/gpio_params.h b/boards/arduino-mkr1000/include/gpio_params.h
new file mode 100644
index 0000000000000000000000000000000000000000..dd5f5ecdb88bd914aaf382e890a2a504ec553aa5
--- /dev/null
+++ b/boards/arduino-mkr1000/include/gpio_params.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C)  2016 Freie Universität Berlin
+ *                2016 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup   boards_arduino-mkr1000
+ * @{
+ *
+ * @file
+ * @brief     Board specific configuration of direct mapped GPIOs
+ *
+ * @author    Hauke Petersen <hauke.petersen@fu-berlin.de>
+ * @author    Alexandre Abadie <alexandre.abadie@inria.fr>
+ */
+
+#ifndef GPIO_PARAMS_H
+#define GPIO_PARAMS_H
+
+#include "board.h"
+#include "saul/periph.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief    GPIO pin configuration
+ */
+static const  saul_gpio_params_t saul_gpio_params[] =
+{
+    {
+        .name = "LED(Green)",
+        .pin = LED0_PIN,
+        .mode = GPIO_OUT
+    },
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GPIO_PARAMS_H */
+/** @} */
diff --git a/boards/arduino-mkr1000/include/periph_conf.h b/boards/arduino-mkr1000/include/periph_conf.h
new file mode 100644
index 0000000000000000000000000000000000000000..220ebc68ebcf5c2f655631f1fb1b32e09b463f2d
--- /dev/null
+++ b/boards/arduino-mkr1000/include/periph_conf.h
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C)  2016 Freie Universität Berlin
+ *                2016 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @ingroup     boards_arduino-mkr1000
+ * @{
+ *
+ * @file
+ * @brief       Configuration of CPU peripherals for Arduino MKR1000 board
+ *
+ * @author      Thomas Eichinger <thomas.eichinger@fu-berlin.de>
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
+ * @author      Peter Kietzmann <peter.kietzmann@haw-hamburg.de>
+ * @author      Alexandre Abadie <alexandre.abadie@inria.fr>
+ * @author      Bumsik kim <kbumsik@gmail.com>
+ */
+
+#ifndef PERIPH_CONF_H
+#define PERIPH_CONF_H
+
+#include <stdint.h>
+
+#include "cpu.h"
+#include "periph_cpu.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief   External oscillator and clock configuration
+ *
+ * For selection of the used CORECLOCK, we have implemented two choices:
+ *
+ * - usage of the PLL fed by the internal 8MHz oscillator divided by 8
+ * - usage of the internal 8MHz oscillator directly, divided by N if needed
+ *
+ *
+ * The PLL option allows for the usage of a wider frequency range and a more
+ * stable clock with less jitter. This is why we use this option as default.
+ *
+ * The target frequency is computed from the PLL multiplier and the PLL divisor.
+ * Use the following formula to compute your values:
+ *
+ * CORECLOCK = ((PLL_MUL + 1) * 1MHz) / PLL_DIV
+ *
+ * NOTE: The PLL circuit does not run with less than 32MHz while the maximum PLL
+ *       frequency is 96MHz. So PLL_MULL must be between 31 and 95!
+ *
+ *
+ * The internal Oscillator used directly can lead to a slightly better power
+ * efficiency to the cost of a less stable clock. Use this option when you know
+ * what you are doing! The actual core frequency is adjusted as follows:
+ *
+ * CORECLOCK = 8MHz / DIV
+ *
+ * NOTE: A core clock frequency below 1MHz is not recommended
+ *
+ * @{
+ */
+#define CLOCK_USE_PLL       (1)
+
+#if CLOCK_USE_PLL
+/* edit these values to adjust the PLL output frequency */
+#define CLOCK_PLL_MUL       (47U)               /* must be >= 31 & <= 95 */
+#define CLOCK_PLL_DIV       (1U)                /* adjust to your needs */
+/* generate the actual used core clock frequency */
+#define CLOCK_CORECLOCK     (((CLOCK_PLL_MUL + 1) * 1000000U) / CLOCK_PLL_DIV)
+#else
+/* edit this value to your needs */
+#define CLOCK_DIV           (1U)
+/* generate the actual core clock frequency */
+#define CLOCK_CORECLOCK     (8000000 / CLOCK_DIV)
+#endif
+/** @} */
+
+/**
+ * @name Timer peripheral configuration
+ * @{
+ */
+#define TIMER_NUMOF         (2U)
+#define TIMER_0_EN          1
+#define TIMER_1_EN          1
+
+/* Timer 0 configuration */
+#define TIMER_0_DEV         TC3->COUNT16
+#define TIMER_0_CHANNELS    2
+#define TIMER_0_MAX_VALUE   (0xffff)
+#define TIMER_0_ISR         isr_tc3
+
+/* Timer 1 configuration */
+#define TIMER_1_DEV         TC4->COUNT32
+#define TIMER_1_CHANNELS    2
+#define TIMER_1_MAX_VALUE   (0xffffffff)
+#define TIMER_1_ISR         isr_tc4
+/** @} */
+
+/**
+ * @name UART configuration
+ * @{
+ */
+static const uart_conf_t uart_config[] = {
+    {
+        .dev    = &SERCOM5->USART,
+        .rx_pin = GPIO_PIN(PB,23),  /* ARDUINO_PIN_13, RX Pin */
+        .tx_pin = GPIO_PIN(PB,22),  /* ARDUINO_PIN_14, TX Pin */
+        .mux    = GPIO_MUX_D,
+        .rx_pad = UART_PAD_RX_3,
+        .tx_pad = UART_PAD_TX_2
+    }
+};
+
+/* interrupt function name mapping */
+#define UART_0_ISR          isr_sercom5
+
+#define UART_NUMOF          (sizeof(uart_config) / sizeof(uart_config[0]))
+/** @} */
+
+/**
+ * @name PWM configuration
+ * @{
+ */
+#define PWM_0_EN            1
+#define PWM_1_EN            1
+#define PWM_MAX_CHANNELS    2
+/* for compatibility with test application */
+#define PWM_0_CHANNELS      PWM_MAX_CHANNELS
+#define PWM_1_CHANNELS      PWM_MAX_CHANNELS
+
+/* PWM device configuration */
+static const pwm_conf_t pwm_config[] = {
+#if PWM_0_EN
+    {TCC0, {
+        /* GPIO pin, MUX value, TCC channel */
+        { GPIO_PIN(PA, 8), GPIO_MUX_E,  0 },
+        { GPIO_PIN(PA, 9), GPIO_MUX_E,  1 },
+    }},
+#endif
+#if PWM_1_EN
+    {TCC1, {
+        /* GPIO pin, MUX value, TCC channel */
+        { GPIO_PIN(PA, 6), GPIO_MUX_E, 0 },
+        { GPIO_PIN(PA, 7), GPIO_MUX_E, 1 },
+    }},
+#endif
+};
+
+/* number of devices that are actually defined */
+#define PWM_NUMOF           (2U)
+/** @} */
+
+/**
+ * @name ADC configuration
+ * @{
+ */
+#define ADC_0_EN                           1
+#define ADC_MAX_CHANNELS                   14
+/* ADC 0 device configuration */
+#define ADC_0_DEV                          ADC
+#define ADC_0_IRQ                          ADC_IRQn
+
+/* ADC 0 Default values */
+#define ADC_0_CLK_SOURCE                   0 /* GCLK_GENERATOR_0 */
+#define ADC_0_PRESCALER                    ADC_CTRLB_PRESCALER_DIV512
+
+#define ADC_0_NEG_INPUT                    ADC_INPUTCTRL_MUXNEG_GND
+#define ADC_0_GAIN_FACTOR_DEFAULT          ADC_INPUTCTRL_GAIN_1X
+#define ADC_0_REF_DEFAULT                  ADC_REFCTRL_REFSEL_INT1V
+
+static const adc_conf_chan_t adc_channels[] = {
+    /* port, pin, muxpos */
+    {GPIO_PIN(PA, 2), ADC_INPUTCTRL_MUXPOS_PIN0},     /* A0 */
+    {GPIO_PIN(PB, 2), ADC_INPUTCTRL_MUXPOS_PIN10},    /* A1 */
+    {GPIO_PIN(PB, 3), ADC_INPUTCTRL_MUXPOS_PIN11},    /* A2 */
+    {GPIO_PIN(PA, 4), ADC_INPUTCTRL_MUXPOS_PIN4},     /* A3 */
+    {GPIO_PIN(PA, 5), ADC_INPUTCTRL_MUXPOS_PIN5},     /* A4 */
+    {GPIO_PIN(PA, 6), ADC_INPUTCTRL_MUXPOS_PIN6},     /* A5 */
+    {GPIO_PIN(PA, 7), ADC_INPUTCTRL_MUXPOS_PIN7},     /* A6 */
+};
+
+#define ADC_0_CHANNELS                     (7U)
+#define ADC_NUMOF                          ADC_0_CHANNELS
+/** @} */
+
+/**
+ * @name SPI configuration
+ * @{
+ */
+static const spi_conf_t spi_config[] = {
+    {
+        .dev      = &SERCOM1->SPI,
+        .miso_pin = GPIO_PIN(PA, 19),   /* ARDUINO_PIN_8, SERCOM1-MISO */
+        .mosi_pin = GPIO_PIN(PA, 16),   /* ARDUINO_PIN_10, SERCOM1-MOSI */
+        .clk_pin  = GPIO_PIN(PA, 17),   /* ARDUINO_PIN_9, SERCOM1-SCK */
+        .miso_mux = GPIO_MUX_C,
+        .mosi_mux = GPIO_MUX_C,
+        .clk_mux  = GPIO_MUX_C,
+        .miso_pad = SPI_PAD_MISO_3,
+        .mosi_pad = SPI_PAD_MOSI_0_SCK_1
+    },
+    {   /* SPI Pins connected to WINC1500 wifi module */
+        .dev      = &SERCOM2->SPI,
+        .miso_pin = GPIO_PIN(PA, 15),
+        .mosi_pin = GPIO_PIN(PA, 12),
+        .clk_pin  = GPIO_PIN(PA, 13),
+        .miso_mux = GPIO_MUX_D,
+        .mosi_mux = GPIO_MUX_D,
+        .clk_mux  = GPIO_MUX_D,
+        .miso_pad = SPI_PAD_MISO_3,
+        .mosi_pad = SPI_PAD_MOSI_0_SCK_1
+    }
+};
+
+#define SPI_NUMOF           (sizeof(spi_config) / sizeof(spi_config[0]))
+/** @} */
+
+/**
+ * @name I2C configuration
+ * @{
+ */
+#define I2C_NUMOF          (1U)
+#define I2C_0_EN            1
+#define I2C_1_EN            0
+#define I2C_2_EN            0
+#define I2C_3_EN            0
+#define I2C_IRQ_PRIO        1
+
+#define I2C_0_DEV           SERCOM0->I2CM
+#define I2C_0_IRQ           SERCOM0_IRQn
+#define I2C_0_ISR           isr_sercom0
+/* I2C 0 GCLK */
+#define I2C_0_GCLK_ID       SERCOM0_GCLK_ID_CORE
+#define I2C_0_GCLK_ID_SLOW  SERCOM0_GCLK_ID_SLOW
+/* I2C 0 pin configuration */
+#define I2C_0_SDA           GPIO_PIN(PA, 8) /* SERCOM0-SDA, on-board pull-up */
+#define I2C_0_SCL           GPIO_PIN(PA, 9) /* SERCOM0-SCL, on-board pull-up */
+#define I2C_0_MUX           GPIO_MUX_C
+/** @} */
+
+/**
+ * @name RTC configuration
+ * @{
+ */
+#define RTC_NUMOF           (1U)
+#define RTC_DEV             RTC->MODE2
+/** @} */
+
+/**
+ * @name RTT configuration
+ * @{
+ */
+#define RTT_NUMOF           (1U)
+#define RTT_DEV             RTC->MODE0
+#define RTT_IRQ             RTC_IRQn
+#define RTT_IRQ_PRIO        10
+#define RTT_ISR             isr_rtc
+#define RTT_MAX_VALUE       (0xffffffff)
+#define RTT_FREQUENCY       (32768U)    /* in Hz. For changes see `rtt.c` */
+#define RTT_RUNSTDBY        (1)         /* Keep RTT running in sleep states */
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PERIPH_CONF_H */
+/** @} */
diff --git a/cpu/sam0_common/ldscripts/samd21g18a_mkr1000.ld b/cpu/sam0_common/ldscripts/samd21g18a_mkr1000.ld
new file mode 100644
index 0000000000000000000000000000000000000000..2215f46ee13dad4b9839188119b7fe2c844421bb
--- /dev/null
+++ b/cpu/sam0_common/ldscripts/samd21g18a_mkr1000.ld
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015-2017 Freie Universität Berlin
+ *               2017 Inria
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+/**
+ * @addtogroup      cpu_samd21
+ * @{
+ *
+ * @file
+ * @brief           Memory definitions for the SAMD21DG18A used in Arduino MKR1000 board
+ *
+ * @author          Hauke Petersen <hauke.petersen@fu-berlin.de>
+ * @author          Alexandre Abadie <alexandre.abadie@inria.fr>
+ *
+ * @}
+ */
+
+MEMORY
+{
+    rom (rx)    : ORIGIN = 0x00002000, LENGTH = 256K-0x2000
+    ram (rwx)   : ORIGIN = 0x20000000, LENGTH = 32K
+}
+
+INCLUDE cortexm_base.ld
diff --git a/tests/unittests/Makefile b/tests/unittests/Makefile
index 30a145c4615e8eb44dac15e619742c3092f0fe70..c002b5690159f4892fef8bf2b2372c69dc0dfb27 100644
--- a/tests/unittests/Makefile
+++ b/tests/unittests/Makefile
@@ -4,6 +4,7 @@ include ../Makefile.tests_common
 BOARD_INSUFFICIENT_MEMORY := airfy-beacon \
                              arduino-duemilanove \
                              arduino-mega2560 \
+                             arduino-mkr1000 \
                              arduino-uno \
                              arduino-zero \
                              calliope-mini \
@@ -73,6 +74,7 @@ DISABLE_TEST_FOR_ARM7 := tests-relic tests-cpp_%
 
 ARM_CORTEX_M_BOARDS := airfy-beacon \
                        arduino-due \
+                       arduino-mkr1000 \
                        arduino-zero \
                        cc2538dk \
                        ek-lm4f120xl \