diff --git a/Makefile.dep b/Makefile.dep
index 6d14cf96e67c2e6797e752fd94701e6e1d40193a..97650d319af42cb486879a0a1300a2a86f2b9db5 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -31,17 +31,6 @@ ifneq (,$(filter gnrc_uhcpc,$(USEMODULE)))
     USEMODULE += fmt
 endif
 
-ifneq (,$(filter nordic_softdevice_ble,$(USEPKG)))
-    USEMODULE += softdevice_handler
-    USEMODULE += ble_common
-    USEMODULE += ble_6lowpan
-    USEMODULE += gnrc_sixlowpan
-    USEMODULE += gnrc_sixlowpan_iphc
-    USEMODULE += gnrc_ipv6_default
-    USEMODULE += gnrc_netdev2
-    USEMODULE += gnrc_ipv6_netif
-endif
-
 ifneq (,$(filter gnrc_%,$(filter-out gnrc_netapi gnrc_netreg gnrc_netif% gnrc_pktbuf,$(USEMODULE))))
   USEMODULE += gnrc
 endif
diff --git a/boards/nrf52dk/Makefile.dep b/boards/nrf52dk/Makefile.dep
index 27225b7b405afd419c4b84d080a919c820bac6bc..5472bf8b8d8fd463a18815c0f10e5d348f90fe51 100644
--- a/boards/nrf52dk/Makefile.dep
+++ b/boards/nrf52dk/Makefile.dep
@@ -1,7 +1,3 @@
 ifneq (,$(filter saul_default,$(USEMODULE)))
   USEMODULE += saul_gpio
 endif
-
-ifneq (,$(filter gnrc_netdev_default,$(USEMODULE)))
-  USEPKG += nordic_softdevice_ble
-endif
diff --git a/boards/nrf52dk/Makefile.include b/boards/nrf52dk/Makefile.include
index b2404fafa3fd8952b2cca11684d0ffcacc118e88..e16b064a4d57b818b7b5138071b2070e1985c842 100644
--- a/boards/nrf52dk/Makefile.include
+++ b/boards/nrf52dk/Makefile.include
@@ -11,13 +11,6 @@ include $(RIOTBOARD)/$(BOARD)/Makefile.dep
 
 # setup JLink for flashing
 export JLINK_DEVICE := nrf52
-
-# special options when using SoftDevice
-ifneq (,$(filter nordic_softdevice_ble,$(USEPKG)))
-export JLINK_PRE_FLASH := loadfile $(BINDIR)/softdevice.hex
-export JLINK_FLASH_ADDR := 0x1f000
-export LINKER_SCRIPT ?= $(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL)_sd.ld
-endif
 include $(RIOTBOARD)/Makefile.include.jlink
 
 # setup serial terminal
diff --git a/boards/nrf52dk/include/periph_conf.h b/boards/nrf52dk/include/periph_conf.h
index 2975d5968f1fa624e06ebe8dadb22eb296b50195..753d740749d4d8ab16d4cb5b707b0a2926951fcf 100644
--- a/boards/nrf52dk/include/periph_conf.h
+++ b/boards/nrf52dk/include/periph_conf.h
@@ -44,10 +44,10 @@ extern "C" {
  */
 static const timer_conf_t timer_config[] = {
     /* dev, channels, width, IRQn */
-    { NRF_TIMER1, 3, TIMER_BITMODE_BITMODE_32Bit, TIMER1_IRQn }
+    { NRF_TIMER0, 3, TIMER_BITMODE_BITMODE_32Bit, TIMER0_IRQn }
 };
 
-#define TIMER_0_ISR         isr_timer1
+#define TIMER_0_ISR         isr_timer0
 
 #define TIMER_NUMOF         (sizeof(timer_config) / sizeof(timer_config[0]))
 /** @} */
@@ -57,9 +57,9 @@ static const timer_conf_t timer_config[] = {
  * @{
  */
 #define RTT_NUMOF           (1U)
-#define RTT_DEV             NRF_RTC1
-#define RTT_IRQ             RTC1_IRQn
-#define RTT_ISR             isr_rtc1
+#define RTT_DEV             NRF_RTC0
+#define RTT_IRQ             RTC0_IRQn
+#define RTT_ISR             isr_rtc0
 #define RTT_MAX_VALUE       (0xffffff)
 #define RTT_FREQUENCY       (10)            /* in Hz */
 #define RTT_PRESCALER       (3275U)         /* run with 10 Hz */
diff --git a/cpu/Makefile.include.cortexm_common b/cpu/Makefile.include.cortexm_common
index a76ab6ecee754021a45a1bdc46006dad57f80507..74b23276a9eb35915c8b2a740ce9984091562c61 100644
--- a/cpu/Makefile.include.cortexm_common
+++ b/cpu/Makefile.include.cortexm_common
@@ -15,9 +15,8 @@ export CFLAGS_OPT  ?= -Os
 export CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
 
 export ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG)
-export LINKER_SCRIPT ?= $(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL).ld
 export LINKFLAGS += -L$(RIOTCPU)/$(CPU)/ldscripts -L$(RIOTCPU)/cortexm_common/ldscripts
-export LINKFLAGS += -T$(LINKER_SCRIPT) -Wl,--fatal-warnings
+export LINKFLAGS += -T$(RIOTCPU)/$(CPU)/ldscripts/$(CPU_MODEL).ld -Wl,--fatal-warnings
 export LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -nostartfiles
 export LINKFLAGS += -Wl,--gc-sections
 
diff --git a/cpu/nrf52/cpu.c b/cpu/nrf52/cpu.c
index 173531915d3cd0c881da5311905abeea1bd05cb9..9e72b02264ae552da7f0128af83cf42b454e1a12 100644
--- a/cpu/nrf52/cpu.c
+++ b/cpu/nrf52/cpu.c
@@ -20,8 +20,6 @@
  * @}
  */
 
-#define DONT_OVERRIDE_NVIC
-
 #include "cpu.h"
 #include "periph_conf.h"
 
@@ -30,16 +28,14 @@ static bool ftpan_32(void);
 static bool ftpan_37(void);
 static bool ftpan_36(void);
 
-#ifdef SOFTDEVICE_PRESENT
-#include "softdevice_handler.h"
-uint8_t _ble_evt_buffer[BLE_STACK_EVT_MSG_BUF_SIZE];
-#endif
-
 /**
  * @brief   Initialize the CPU, set IRQ priorities
  */
 void cpu_init(void)
 {
+    /* set pendSV interrupt to lowest possible priority */
+    NVIC_SetPriority(PendSV_IRQn, 0xff);
+
     /* Workaround for FTPAN-32
      * "DIF: Debug session automatically enables TracePort pins." */
     if (ftpan_32()) {
@@ -68,20 +64,6 @@ void cpu_init(void)
 
     while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
 #endif
-
-    /* softdevice needs to be enabled from ISR context */
-#ifdef SOFTDEVICE_PRESENT
-    softdevice_handler_init(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, &_ble_evt_buffer,
-            BLE_STACK_EVT_MSG_BUF_SIZE, NULL);
-#endif
-    /* call cortexm default initialization */
-    cortexm_init();
-
-#ifdef SOFTDEVICE_PRESENT
-    /* fixup swi0 (used as softdevice PendSV trampoline) */
-    NVIC_EnableIRQ(SWI0_EGU0_IRQn);
-    NVIC_SetPriority(SWI0_EGU0_IRQn, 6);
-#endif
 }
 
 /**
diff --git a/cpu/nrf52/include/cpu_conf.h b/cpu/nrf52/include/cpu_conf.h
index 5a60cae047abda0173328768695f63bfb6831d6f..066b1cfbcac7258015ed753084c37ced470fa3da 100644
--- a/cpu/nrf52/include/cpu_conf.h
+++ b/cpu/nrf52/include/cpu_conf.h
@@ -32,24 +32,11 @@ extern "C" {
  * @brief   ARM Cortex-M specific CPU configuration
  * @{
  */
-#define CPU_DEFAULT_IRQ_PRIO            (2U)
-#define CPU_IRQ_NUMOF                   (38U)
+#define CPU_DEFAULT_IRQ_PRIO            (1U)
+#define CPU_IRQ_NUMOF                   (38)
 #define CPU_FLASH_BASE                  (0x00000000)
 /** @} */
 
-/**
- * @brief   SoftDevice settings
- * @{
- */
-#ifdef SOFTDEVICE_PRESENT
-#ifndef DONT_OVERRIDE_NVIC
-#include "nrf_soc.h"
-#undef NVIC_SetPriority
-#define NVIC_SetPriority    sd_nvic_SetPriority
-#endif /* DONT_OVERRIDE_NVIC */
-#endif /* SOFTDEVICE_PRESENT */
-/** @} */
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/cpu/nrf52/ldscripts/nrf52xxaa_sd.ld b/cpu/nrf52/ldscripts/nrf52xxaa_sd.ld
deleted file mode 100644
index 1b9f09172267e7ef6c02999dee41ddd305e88d64..0000000000000000000000000000000000000000
--- a/cpu/nrf52/ldscripts/nrf52xxaa_sd.ld
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2016 Freie Universität Berlin
- *
- * 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_nrf52
- * @{
- *
- * @file
- * @brief           Memory definitions for the NRF52832XXAA
- *
- * @author          Hauke Petersen <hauke.petersen@fu-berlin.de>
- *
- * @}
- */
-
-MEMORY
-{
-  rom (rx) : ORIGIN = 0x1f000, LENGTH = 0x61000
-  ram (rwx) :  ORIGIN = 0x20002800, LENGTH = 0xD800
-}
-
-INCLUDE cortexm_base.ld
diff --git a/cpu/nrf52/vectors.c b/cpu/nrf52/vectors.c
index 0cb88e47e11bae2e2bbc7e17ebff2be0d3b9ad3c..20e043de679131b721dbc47cdfcffa75a897ff86 100644
--- a/cpu/nrf52/vectors.c
+++ b/cpu/nrf52/vectors.c
@@ -58,21 +58,7 @@ WEAK_DEFAULT void isr_wdt(void);
 WEAK_DEFAULT void isr_rtc1(void);
 WEAK_DEFAULT void isr_qdec(void);
 WEAK_DEFAULT void isr_lpcomp(void);
-
-#ifndef SOFTDEVICE_PRESENT
 WEAK_DEFAULT void isr_swi0(void);
-#else
-/* For unknown reasons, setting PendSV pending within
- * the softdevice ISRs leads to a crash. This workaround
- * uses swi0 as trampoline.
- */
-extern void thread_arch_yield(void);
-void isr_swi0(void)
-{
-    thread_arch_yield();
-}
-#endif
-
 WEAK_DEFAULT void isr_swi1(void);
 WEAK_DEFAULT void isr_swi2(void);
 WEAK_DEFAULT void isr_swi3(void);
@@ -90,10 +76,6 @@ WEAK_DEFAULT void isr_rtc2(void);
 WEAK_DEFAULT void isr_i2s(void);
 
 
-#ifdef SOFTDEVICE_PRESENT
-extern void SWI2_EGU2_IRQHandler(void);
-#endif
-
 /* interrupt vector table */
 ISR_VECTORS const void *interrupt_vector[] = {
     /* Exception stack pointer */
@@ -139,14 +121,10 @@ ISR_VECTORS const void *interrupt_vector[] = {
     (void *) isr_lpcomp,            /* lpcomp */
     (void *) isr_swi0,              /* swi0 */
     (void *) isr_swi1,              /* swi1 */
-#ifdef SOFTDEVICE_PRESENT
-    (void *) SWI2_EGU2_IRQHandler,  /* softdevice swi handler */
-#else
     (void *) isr_swi2,              /* swi2 */
-#endif
-    (void *) (0UL),              /* swi3 */
-    (void *) (0UL),              /* swi4 */
-    (void *) (0UL),              /* swi5 */
+    (void *) isr_swi3,              /* swi3 */
+    (void *) isr_swi4,              /* swi4 */
+    (void *) isr_swi5,              /* swi5 */
     (void *) isr_timer3,            /* timer 3 */
     (void *) isr_timer4,            /* timer 4 */
     (void *) isr_pwm0,              /* pwm 0 */
diff --git a/pkg/nordic_softdevice_ble/Makefile b/pkg/nordic_softdevice_ble/Makefile
deleted file mode 100644
index 0e44c05d940fd15f431eda1a0903bc0f1f3b8516..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-PKG_NAME = nordic_softdevice_ble
-PKG_VERSION = 3288530
-PKG_FILE = nrf5_iot_sdk_$(PKG_VERSION).zip
-PKG_URL = https://developer.nordicsemi.com/nRF5_IoT_SDK/nRF5_IoT_SDK_v0.9.x/$(PKG_FILE)
-PKG_DIR=$(CURDIR)
-PKG_BUILDDIR=$(BINDIRBASE)/pkg/$(BOARD)/$(PKG_NAME)
-PKG_SRCDIR=$(PKG_BUILDDIR)/src
-
-SOFTDEVICE := components/softdevice/s1xx_iot/s1xx-iot-prototype3_nrf52_softdevice.hex
-BLE_6LOWPAN_LIB := components/iot/ble_6lowpan/lib/ble_6lowpan.a
-MODULE_MAKEFILE := $(PKG_DIR)/Makefile.module
-
-.PHONY: all clean distclean
-
-all: $(BINDIR)/ble_6lowpan.a $(BINDIR)/softdevice.hex
-
-$(BINDIR)/ble_6lowpan.a: $(PKG_SRCDIR)/.extracted
-	cp $(PKG_SRCDIR)/$(BLE_6LOWPAN_LIB) $@
-
-$(BINDIR)/softdevice.hex: $(PKG_SRCDIR)/.extracted
-	cp $(PKG_SRCDIR)/$(SOFTDEVICE) $@
-
-$(PKG_SRCDIR)/.extracted: $(PKG_BUILDDIR)/$(PKG_FILE)
-	rm -rf $(@D)
-	mkdir -p $(@D)
-	$(AD)cd $(@D) && $(UNZIP_HERE) $(PKG_BUILDDIR)/$(PKG_FILE)
-
-# this file doesn't compile with RIOT, but is not needed either
-	rm $(PKG_BUILDDIR)/src/components/ble/common/ble_conn_params.c
-
-# setup RIOT module makefiles for nordic SDK components
-	cat $(MODULE_MAKEFILE) > $(PKG_SRCDIR)/components/softdevice/common/softdevice_handler/Makefile
-
-	echo "MODULE=ble_common" > $(PKG_SRCDIR)/components/ble/common/Makefile
-	cat $(MODULE_MAKEFILE) >> $(PKG_SRCDIR)/components/ble/common/Makefile
-
-	cat $(MODULE_MAKEFILE) > $(PKG_SRCDIR)/components/iot/ble_ipsp/Makefile
-
-	touch $@
-
-$(PKG_BUILDDIR)/$(PKG_FILE):
-	@mkdir -p $(@D)
-	$(AD)$(DOWNLOAD_TO_FILE) $@ $(PKG_URL)
-
-clean::
-	rm -rf $(PKG_SRCDIR)/
-
-distclean::
-	rm -rf $(PKG_BUILDDIR)/
diff --git a/pkg/nordic_softdevice_ble/Makefile.include b/pkg/nordic_softdevice_ble/Makefile.include
deleted file mode 100644
index 138595464e1ef3ad6a4ef729130a91b76f94110f..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/Makefile.include
+++ /dev/null
@@ -1,32 +0,0 @@
-NORDIC_SRCS := $(BINDIRBASE)/pkg/$(BOARD)/nordic_softdevice_ble/src
-
-INCLUDES += \
-			-I$(RIOTBASE)/pkg/nordic_softdevice_ble/src \
-			-I$(NORDIC_SRCS)/components/ble/common \
-			-I$(NORDIC_SRCS)/components/device \
-			-I$(NORDIC_SRCS)/components/iot/ble_6lowpan \
-			-I$(NORDIC_SRCS)/components/iot/ble_ipsp \
-			-I$(NORDIC_SRCS)/components/iot/common \
-			-I$(NORDIC_SRCS)/components/libraries/scheduler \
-			-I$(NORDIC_SRCS)/components/libraries/util \
-			-I$(NORDIC_SRCS)/components/softdevice/common/softdevice_handler \
-			-I$(NORDIC_SRCS)/components/softdevice/s1xx_iot/headers \
-			-I$(NORDIC_SRCS)/components/softdevice/s1xx_iot/headers/nrf52 \
-			-I$(NORDIC_SRCS)/components/toolchain
-
-CFLAGS += -DNRF52 \
-		  -DBLE_STACK_SUPPORT_REQD \
-		  -DISR_STACKSIZE=8192 \
-		  -DSOFTDEVICE_PRESENT \
-		  -DS132
-
-# Nordic's ble_6lowpan.a is compiled with hard-float
-# so set this, otherwise linking fails
-CFLAGS_FPU := -mfloat-abi=hard -mfpu=fpv4-sp-d16
-
-DIRS += \
-		$(RIOTBASE)/pkg/nordic_softdevice_ble/src \
-		$(NORDIC_SRCS)/components/softdevice/common/softdevice_handler \
-		$(NORDIC_SRCS)/components/ble/common \
-		$(NORDIC_SRCS)/components/iot/ble_ipsp
-
diff --git a/pkg/nordic_softdevice_ble/Makefile.module b/pkg/nordic_softdevice_ble/Makefile.module
deleted file mode 100644
index 48422e909a47d7cd428d10fa73825060ccc8d8c2..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/Makefile.module
+++ /dev/null
@@ -1 +0,0 @@
-include $(RIOTBASE)/Makefile.base
diff --git a/pkg/nordic_softdevice_ble/README-BLE-6LoWPAN.md b/pkg/nordic_softdevice_ble/README-BLE-6LoWPAN.md
deleted file mode 100644
index 3ac44423697df4f5e9830c4059ddfea6038ac9b0..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/README-BLE-6LoWPAN.md
+++ /dev/null
@@ -1,100 +0,0 @@
-This README contains information how to establish an IPv6 connecton between
-Linux BLE router and an IPSP enabled BLE device.
-
-Prerequisites
-=============
-In general, any device capable of running Linux operating system, can be used
-as a BLE router provided the following conditions are met:
-
-* Linux Kernel >3.18 is used
-* bluez, libcap-ng0, radvd tools are present.
-
-If a built-in Bluetooth device is not available then Bluetooth 4.0 compatible
-USB dongle can be used.
-
-The following procedures have been tested on Ubuntu 15.10.
-
-Establishing an IPv6 connection
-===============================
-Use the following procedure to establish a connection between an nRF52 device
-and Linux router:
-
-First enable 6LoWPAN module. This is neccessary only once per session:
-
-	# Log in as a root user.
-	sudo su
-	
-	# Mount debugfs file system.
-	mount -t debugfs none /sys/kernel/debug
-	
-	# Load 6LoWPAN module.
-	modprobe bluetooth_6lowpan
-	
-	# Enable the bluetooth 6lowpan module.
-	echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable
-	
-	# Look for available HCI devices.
-	hciconfig
-	
-	# Reset HCI device - for example hci0 device.
-	hciconfig hci0 reset
-	
-	# Read 00:AA:BB:XX:YY:ZZ address of the nRF5x device.
-	hcitool lescan
-	
-If you see device name and address in lescan output then you can connect to the
-device:
-	
-	echo "connect 00:AA:BB:XX:YY:ZZ 1" > /sys/kernel/debug/bluetooth/6lowpan_control
-	
-If above is successful then LED1 will stop blinking and LED2 will switch on.
-You can then check the connection using the following commands:
-
-	# Check if bt0 interface is present and up
-	ifconfig
-	
-	# Try to ping the device using its link-local address, for example, on bt0 interface.
-	ping6 fe80::2aa:bbff:fexx:yyzz%bt0
-	
-If you'd like to learn more about the procedure please refer to
-[Connecting devices to the router].
-
-Distributing routable IPv6 prefix
-=================================
-In Linux, Router Advertisement Daemon (RADVD) can be used to distribute prefixes
-in the network, hance configure routable IPv6 address.
-
-To configure RADVD create `/etc/radvd.conf` file and paste the following contents:
-
-	interface bt0
-	{
-	    AdvSendAdvert on;
-	    prefix 2001:db8::/64
-	    {
-	        AdvOnLink off;
-	        AdvAutonomous on;
-	        AdvRouterAddr on;
-	    };
-	};
-
-Next, start RADVD daemon:
-
-	# Set IPv6 forwarding (must be present).
-	sudo echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
-	# Run radvd daemon.
-	sudo service radvd restart
-	
-If successfull then all devices connected to the host will receive
-a routable `2001:db8` prefix.
-
-This can be verified by sending echo request to the full address:
-
-	ping6 -I bt0 2001:db8::2aa:bbff:fexx:yyzz
-
-where `aa:bbff:fexx:yyzz` is device Bluetooth address.
-
-If you'd like to learn more about the procedure please refer to
-[Distributing a global IPv6 prefix].
-
-* [Connecting devices to the router]: http://developer.nordicsemi.com/nRF5_IoT_SDK/doc/0.9.0/html/a00089.html
-* [Distributing a global IPv6 prefix]: http://developer.nordicsemi.com/nRF5_IoT_SDK/doc/0.9.0/html/a00090.html
diff --git a/pkg/nordic_softdevice_ble/README.md b/pkg/nordic_softdevice_ble/README.md
deleted file mode 100644
index 3cb357d3635e7382b4a1fbd4aa5d3ee4321a3cc1..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Overview
-
-This package provides necessary Makefiles and glue code to use the Nordic S132
-SoftDevice as Bluetooth BLE transport for RIOT's 6lowpan stack.
-
-# Usage
-
-"gnrc_netdev_default" has a dependency to "nordic_softdevice_ble", so all
-examples automatically download the SDK and compile / link / flash all needed
-code.
-
-If you want to manually set up included modules, add "USEPKG +=
-nordic_softdevice_ble" to your application's Makefile.
-
-See README-BLE-6LoWPAN.md for instructions on how to set up 6lowpan over BLE on
-Linux.
-
-# Known issues
-
-- floating point ABI mismatch
-
-The Nordic binaries are compiled using hard float ABI, which RIOT currently
-doesn't support (RIOT's context switching code doesn't preserve the floating
-point registers).  If the softdevice is compiled in, RIOT will be compiled with
-hard float ABI in order for the linking to succeed.  This works for some
-application, but will lead to serious and hard-to-find bugs for code using
-floating point instructions.
-
-Hopefully, either the RIOT community adds hard-float support, or Nordic
-releases a soft-float version of the used binaries.
diff --git a/pkg/nordic_softdevice_ble/src/Makefile b/pkg/nordic_softdevice_ble/src/Makefile
deleted file mode 100644
index d8f0fd1b273ae6dca09955778a8553ebec50fb3e..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-MODULE = nordic_softdevice_ble
-include $(RIOTBASE)/Makefile.base
diff --git a/pkg/nordic_softdevice_ble/src/app_error.c b/pkg/nordic_softdevice_ble/src/app_error.c
deleted file mode 100644
index cb3d928334833aa96a2e8b3edc3062a66b6a1f6e..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/app_error.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "app_error.h"
-
-#define ENABLE_DEBUG    (0)
-#include "debug.h"
-
-void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t *p_file_name)
-{
-    puts("nordic softdevice app_error_handler()");
-}
diff --git a/pkg/nordic_softdevice_ble/src/ble-core.c b/pkg/nordic_softdevice_ble/src/ble-core.c
deleted file mode 100644
index 7c02da95e5c8356ec950f1621d638745cc0daa09..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/ble-core.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2016, Nordic Semiconductor
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-/**
- * @addtogroup cpu
- * @{
- *
- * @addtogroup nrf52832
- * @{
- *
- * @addtogroup nrf52832-ble Bluetooth Low Energy drivers
- * @{
- *
- * @file
- *         Basic BLE functions.
- * @author
- *         Wojciech Bober <wojciech.bober@nordicsemi.no>
- *         Kaspar Schleiser <kaspar@schleiser.de>
- *
- */
-#include <stdbool.h>
-#include <stdint.h>
-
-//#include "boards.h"
-//#include "nordic_common.h"
-//#include "nrf_delay.h"
-#include "nrf_sdm.h"
-#include "ble_advdata.h"
-#include "ble_srv_common.h"
-#include "ble_ipsp.h"
-#include "softdevice_handler.h"
-#include "app_error.h"
-#include "iot_defines.h"
-#include "ble-core.h"
-
-#define ENABLE_DEBUG (0)
-#include "debug.h"
-
-#define IS_SRVC_CHANGED_CHARACT_PRESENT 1
-#define APP_ADV_TIMEOUT                 0                                  /**< Time for which the device must be advertising in non-connectable mode (in seconds). 0 disables timeout. */
-#define APP_ADV_ADV_INTERVAL            MSEC_TO_UNITS(333, UNIT_0_625_MS)  /**< The advertising interval. This value can vary between 100ms to 10.24s). */
-
-static ble_gap_adv_params_t m_adv_params; /**< Parameters to be passed to the stack when starting advertising. */
-
-static void
-ble_evt_dispatch(ble_evt_t * p_ble_evt);
-/*---------------------------------------------------------------------------*/
-/**
- * @brief Initialize and enable the BLE stack.
- */
-void
-ble_stack_init(void)
-{
-  uint32_t err_code;
-
-  // Enable BLE stack.
-  ble_enable_params_t ble_enable_params;
-  memset(&ble_enable_params, 0, sizeof(ble_enable_params));
-  ble_enable_params.gatts_enable_params.attr_tab_size =
-  BLE_GATTS_ATTR_TAB_SIZE_DEFAULT;
-  ble_enable_params.gatts_enable_params.service_changed =
-  IS_SRVC_CHANGED_CHARACT_PRESENT;
-  err_code = sd_ble_enable(&ble_enable_params);
-  APP_ERROR_CHECK(err_code);
-
-  // Register with the SoftDevice handler module for BLE events.
-  err_code = softdevice_ble_evt_handler_set(ble_evt_dispatch);
-  APP_ERROR_CHECK(err_code);
-
-  // Setup address
-  ble_gap_addr_t ble_addr;
-  err_code = sd_ble_gap_address_get(&ble_addr);
-  APP_ERROR_CHECK(err_code);
-
-  ble_addr.addr[5] = 0x00;
-  ble_addr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC;
-
-  err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE, &ble_addr);
-  APP_ERROR_CHECK(err_code);
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @brief Return device EUI64 MAC address
- * @param addr pointer to a buffer to store the address
- */
-void
-ble_get_mac(uint8_t addr[8])
-{
-  uint32_t err_code;
-  ble_gap_addr_t ble_addr;
-
-  err_code = sd_ble_gap_address_get(&ble_addr);
-  APP_ERROR_CHECK(err_code);
-
-  IPV6_EUI64_CREATE_FROM_EUI48(addr, ble_addr.addr, ble_addr.addr_type);
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @brief Initialize BLE advertising data.
- * @param name Human readable device name that will be advertised
- */
-void
-ble_advertising_init(const char *name)
-{
-  uint32_t err_code;
-  ble_advdata_t advdata;
-  uint8_t flags = BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED;
-  ble_gap_conn_sec_mode_t sec_mode;
-
-  BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);
-
-  err_code = sd_ble_gap_device_name_set(&sec_mode, (const uint8_t *)name,
-                                        strlen(name));
-  APP_ERROR_CHECK(err_code);
-
-  ble_uuid_t adv_uuids[] = {{BLE_UUID_IPSP_SERVICE, BLE_UUID_TYPE_BLE}};
-
-  // Build and set advertising data.
-  memset(&advdata, 0, sizeof(advdata));
-
-  advdata.name_type = BLE_ADVDATA_FULL_NAME;
-  advdata.flags = flags;
-  advdata.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
-  advdata.uuids_complete.p_uuids = adv_uuids;
-
-  err_code = ble_advdata_set(&advdata, NULL);
-  APP_ERROR_CHECK(err_code);
-
-  // Initialize advertising parameters (used when starting advertising).
-  memset(&m_adv_params, 0, sizeof(m_adv_params));
-
-  m_adv_params.type = BLE_GAP_ADV_TYPE_ADV_IND;
-  m_adv_params.p_peer_addr = NULL; // Undirected advertisement.
-  m_adv_params.fp = BLE_GAP_ADV_FP_ANY;
-  m_adv_params.interval = APP_ADV_ADV_INTERVAL;
-  m_adv_params.timeout = APP_ADV_TIMEOUT;
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @brief Start BLE advertising.
- */
-void
-ble_advertising_start(void)
-{
-  uint32_t err_code;
-
-  err_code = sd_ble_gap_adv_start(&m_adv_params);
-  APP_ERROR_CHECK(err_code);
-
-  DEBUG("ble-core: advertising started\n");
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @brief Print GAP address.
- * @param addr a pointer to address
- */
-void
-ble_gap_addr_print(const ble_gap_addr_t *addr)
-{
-  unsigned int i;
-  for(i = 0; i < sizeof(addr->addr); i++) {
-    if(i > 0) {
-      DEBUG(":");
-    }DEBUG("%02x", addr->addr[i]);
-  }DEBUG(" (%d)", addr->addr_type);
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @brief Function for handling the Application's BLE Stack events.
- * @param[in]   p_ble_evt   Bluetooth stack event.
- */
-static void
-on_ble_evt(ble_evt_t *p_ble_evt)
-{
-  switch(p_ble_evt->header.evt_id) {
-    case BLE_GAP_EVT_CONNECTED:
-      DEBUG("ble-core: connected [handle:%d, peer: ", p_ble_evt->evt.gap_evt.conn_handle);
-      ble_gap_addr_print(&(p_ble_evt->evt.gap_evt.params.connected.peer_addr));
-      DEBUG("]\n");
-      sd_ble_gap_rssi_start(p_ble_evt->evt.gap_evt.conn_handle,
-                            BLE_GAP_RSSI_THRESHOLD_INVALID,
-                            0);
-      break;
-
-    case BLE_GAP_EVT_DISCONNECTED:
-      DEBUG("ble-core: disconnected [handle:%d]\n", p_ble_evt->evt.gap_evt.conn_handle);
-      ble_advertising_start();
-      break;
-    default:
-      break;
-  }
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @brief SoftDevice BLE event callback.
- * @param[in]   p_ble_evt   Bluetooth stack event.
- */
-static void
-ble_evt_dispatch(ble_evt_t *p_ble_evt)
-{
-  ble_ipsp_evt_handler(p_ble_evt);
-  on_ble_evt(p_ble_evt);
-}
-/*---------------------------------------------------------------------------*/
-/**
- * @}
- * @}
- * @}
- */
diff --git a/pkg/nordic_softdevice_ble/src/ble-core.h b/pkg/nordic_softdevice_ble/src/ble-core.h
deleted file mode 100644
index 84c181d2eff4dd41250e184a4c0f14bfdcb70680..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/ble-core.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2015, Nordic Semiconductor
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-/**
- * \addtogroup cpu
- * @{
- *
- * \addtogroup nrf52832
- * @{
- *
- * \addtogroup nrf52832-ble Bluetooth Low Energy drivers
- * @{
- *
- * \file
- *         Basic BLE functions.
- * \author
- *         Wojciech Bober <wojciech.bober@nordicsemi.no>
- */
-#ifndef DEV_BLE_H_
-#define DEV_BLE_H_
-
-#include <stdint.h>
-
-void ble_stack_init(void);
-void ble_advertising_init(const char *name);
-void ble_advertising_start(void);
-void ble_get_mac(uint8_t addr[8]);
-
-#endif /* DEV_BLE_H_ */
-
-/**
- * @}
- * @}
- * @}
- */
diff --git a/pkg/nordic_softdevice_ble/src/ble-mac.c b/pkg/nordic_softdevice_ble/src/ble-mac.c
deleted file mode 100644
index e77d564ec9c2944859c8b3207d8e854d33424f3e..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/ble-mac.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (c) 2016, Nordic Semiconductor
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#include <stdint.h>
-#include <string.h>
-
-#define DONT_OVERRIDE_NVIC
-
-#include "ble-core.h"
-#include "ble_ipsp.h"
-#include "ble_gap.h"
-
-#include "ble-mac.h"
-
-#define ENABLE_DEBUG (0)
-#include "debug.h"
-
-#if defined(MODULE_OD) && ENABLE_DEBUG
-#include "od.h"
-#endif
-
-#ifndef BLE_MAC_MAX_INTERFACE_NUM
-#define BLE_MAC_MAX_INTERFACE_NUM (1U)  /**< Maximum number of interfaces, i.e.,
-                                             connection to master devices */
-#endif
-
-typedef struct {
-  uint8_t peer_addr[8];
-  ble_ipsp_handle_t handle;
-} ble_mac_interface_t;
-
-static ble_mac_interface_t interfaces[BLE_MAC_MAX_INTERFACE_NUM];
-
-volatile int ble_mac_busy_tx;
-volatile int ble_mac_busy_rx;
-
-static ble_mac_inbuf_t inbuf;
-static ble_mac_callback_t _callback;
-
-/**
- * @brief Lookup interface by IPSP connection.
- *
- * @param[in] handle    a pointer to IPSP handle.
- * @return a pointer to interface structure
- * @return NULL if no interface has been found for a given handle
- */
-static ble_mac_interface_t *ble_mac_interface_lookup(ble_ipsp_handle_t *handle)
-{
-    for (int i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) {
-        if (interfaces[i].handle.conn_handle == handle->conn_handle &&
-            interfaces[i].handle.cid == handle->cid) {
-            return &interfaces[i];
-        }
-    }
-    return NULL;
-}
-
-/**
- * @brief Add IPSP connection to the interface table.
- *
- * This function binds IPSP connection with peer address.
- *
- * @param[in] peer      a pointer to eui64 address
- * @param[in] handle    a pointer to IPSP handle
- *
- * @return  a pointer to an interface structure on success
- * @return  NULL if interface table is full
- */
-static ble_mac_interface_t *ble_mac_interface_add(uint8_t peer[8],
-                                                  ble_ipsp_handle_t *handle)
-{
-    DEBUG("ble_mac_interface_add()");
-    for (int i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) {
-        if (interfaces[i].handle.conn_handle == 0 && interfaces[i].handle.cid == 0) {
-            memcpy(&interfaces[i].handle, handle, sizeof(ble_ipsp_handle_t));
-            memcpy(&interfaces[i].peer_addr, peer, 8);
-
-            /* notify handler thread */
-            /* msg_t m = { .type = BLE_IFACE_ADDED, .content.ptr = &interfaces[i] }; */
-            /* msg_send(&m, gnrc_nordic_ble_6lowpan_pid); */
-
-            return &interfaces[i];
-        }
-    }
-    return NULL;
-}
-
-/**
- * @brief       Remove interface from the interface table.
- * @param[in]   interface a pointer to interface
- */
-static void ble_mac_interface_delete(ble_mac_interface_t *interface)
-{
-    DEBUG("ble_mac_interface_delete()");
-    memset(interface, 0, sizeof(ble_mac_interface_t));
-}
-
-/**
- * @brief Lookup IPSP handle by peer address.
- *
- * @param[in] addr a pointer to eui64 address.
- * @retval a pointer to IPSP handle on success
- * @retval NULL if an IPSP handle for given address haven't been found
- */
-static ble_ipsp_handle_t *_find_handle(const uint8_t *addr)
-{
-    for (int i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) {
-        if (memcmp(interfaces[i].peer_addr, addr, BLE_SIXLOWPAN_L2_ADDR_LEN) == 0) {
-            return &interfaces[i].handle;
-        }
-    }
-    return NULL;
-}
-
-/**
- * @brief Send packet on a given IPSP handle.
- *
- * @param[in] handle a pointer to IPSP handle.
- * @return 1 on success, 0 otherwise
- */
-static int _send_to_peer(ble_ipsp_handle_t *handle, void *data, size_t len)
-{
-  DEBUG("ble-mac: sending packet[GAP handle:%d CID:0x%04X]\n",
-          handle->conn_handle, handle->cid);
-  return ble_ipsp_send(handle, data, len);
-}
-
-static int _is_broadcast(uint8_t dest[8])
-{
-    uint32_t *_dest = (uint32_t*)dest;
-    for (int i = 0; i < 2; i++) {
-        if (_dest[i]) {
-            return 0;
-        }
-    }
-    return 1;
-}
-
-int ble_mac_send(uint8_t dest[8], void *data, size_t len)
-{
-    DEBUG("ble_mac_send(): sending pkt with len %u\n", (unsigned)len);
-
-#if defined(MODULE_OD) && ENABLE_DEBUG
-    od_hex_dump(dest, 8, OD_WIDTH_DEFAULT);
-    od_hex_dump(data, len, OD_WIDTH_DEFAULT);
-#endif
-
-    int i;
-    ble_ipsp_handle_t *handle;
-    int ret = -1;
-
-    if ((!dest) || _is_broadcast(dest)) {
-        DEBUG("broadcast\n");
-        for (i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) {
-            if (interfaces[i].handle.cid != 0 && interfaces[i].handle.conn_handle != 0) {
-                ret = _send_to_peer(&interfaces[i].handle, data, len);
-                DEBUG("ret=%i\n", ret);
-            }
-        }
-    }
-    else if ((handle = _find_handle(dest)) != NULL) {
-        DEBUG("unicast\n");
-        ret = _send_to_peer(handle, data, len);
-    }
-    else {
-        DEBUG("ble-mac: no connection found for peer\n");
-    }
-
-    if (ret == NRF_SUCCESS) {
-        ble_mac_busy_tx = 1;
-        return 0;
-    }
-    else {
-        DEBUG("ble-mac: send error: %i\n", ret);
-        return -1;
-    }
-}
-
-static uint32_t ble_mac_ipsp_evt_handler_irq(ble_ipsp_handle_t *p_handle, ble_ipsp_evt_t *p_evt)
-{
-    uint32_t retval = NRF_SUCCESS;
-
-    ble_mac_interface_t *p_instance = NULL;
-
-    p_instance = ble_mac_interface_lookup(p_handle);
-
-    if (p_handle) {
-        DEBUG("ble-mac: IPSP event [handle:%d CID 0x%04X]\n", p_handle->conn_handle, p_handle->cid);
-    }
-
-    switch (p_evt->evt_id) {
-        case BLE_IPSP_EVT_CHANNEL_CONNECTED: {
-            uint8_t peer_addr[8];
-
-            DEBUG("ble-mac: channel connected\n");
-            ble_eui64_from_eui48(peer_addr, p_evt->evt_param->params.ch_conn_request.peer_addr.addr,
-                                 p_evt->evt_param->params.ch_conn_request.peer_addr.addr_type ==
-                                 BLE_GAP_ADDR_TYPE_PUBLIC);
-
-            p_instance = ble_mac_interface_add(peer_addr, p_handle);
-
-            if (p_instance != NULL) {
-                DEBUG("ble-mac: added new IPSP interface\n");
-            }
-            else {
-                DEBUG("ble-mac: cannot add new interface. Table is full\n");
-                ble_ipsp_disconnect(p_handle);
-            }
-            break;
-        }
-
-        case BLE_IPSP_EVT_CHANNEL_DISCONNECTED: {
-            DEBUG("ble-mac: channel disconnected\n");
-            if (p_instance != NULL) {
-                DEBUG("ble-mac: removed IPSP interface\n");
-                ble_mac_interface_delete(p_instance);
-            }
-            break;
-        }
-
-        case BLE_IPSP_EVT_CHANNEL_DATA_RX: {
-            DEBUG("ble-mac: data received\n");
-            if (p_instance != NULL) {
-                if (ble_mac_busy_rx) {
-                    DEBUG("ble-mac: packet dropped as input buffer is busy\n");
-                    break;
-                }
-
-                if (p_evt->evt_param->params.ch_rx.len > BLE_SIXLOWPAN_MTU) {
-                    DEBUG("ble-mac: packet buffer is too small!\n");
-                    break;
-                }
-
-                ble_mac_busy_rx = 1;
-
-                inbuf.len = p_evt->evt_param->params.ch_rx.len;
-                memcpy(inbuf.payload, p_evt->evt_param->params.ch_rx.p_data, inbuf.len);
-                memcpy(inbuf.src, p_instance->peer_addr, 8);
-                sd_ble_gap_rssi_get(p_handle->conn_handle, &inbuf.rssi);
-
-                _callback(BLE_EVENT_RX_DONE, &inbuf);
-            }
-            else {
-                DEBUG("ble-mac: got data to unknown interface!\n");
-            }
-            break;
-        }
-
-        case BLE_IPSP_EVT_CHANNEL_DATA_TX_COMPLETE: {
-            DEBUG("ble-mac: data transmitted\n");
-            ble_mac_busy_tx = 0;
-            //_callback(BLE_EVENT_TX_DONE, NULL);
-            break;
-        }
-    }
-
-    if (sched_context_switch_request) {
-        NVIC_SetPendingIRQ( SWI0_EGU0_IRQn );
-    }
-
-    return retval;
-}
-
-void ble_mac_init(ble_mac_callback_t callback)
-{
-    assert(callback);
-
-    uint32_t res;
-    ble_ipsp_init_t ipsp_init_params = {
-        .evt_handler = ble_mac_ipsp_evt_handler_irq
-    };
-
-    _callback = callback;
-
-    res = ble_ipsp_init(&ipsp_init_params);
-    DEBUG("ble_ipsp_init() res = %" PRIu32 "\n", res);
-    (void)res;
-}
diff --git a/pkg/nordic_softdevice_ble/src/ble-mac.h b/pkg/nordic_softdevice_ble/src/ble-mac.h
deleted file mode 100644
index 19eaefb03ab9caa827f24c0f08eb2b7ea76d9881..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/ble-mac.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef BLE_MAC_H
-#define BLE_MAC_H
-
-typedef enum {
-    BLE_EVENT_RX_DONE = 20000,
-} ble_mac_event_enum_t;
-
-#define BLE_IFACE_ADDED             (10000)
-
-#define BLE_SIXLOWPAN_MTU           (1280U)
-#define BLE_SIXLOWPAN_L2_ADDR_LEN   (8)
-
-#define IPV6_IID_FLIP_VALUE         (0x02)
-
-#include "net/eui64.h"
-
-static inline void ble_eui64_from_eui48(uint8_t eui64[8], uint8_t eui48[6], int _public)
-{
-    eui64[0] = eui48[5];
-    eui64[1] = eui48[4];
-    eui64[2] = eui48[3];
-    eui64[3] = 0xFF;
-    eui64[4] = 0xFE;
-    eui64[5] = eui48[2];
-    eui64[6] = eui48[1];
-    eui64[7] = eui48[0];
-    if (_public) {
-        eui64[0] &= ~(IPV6_IID_FLIP_VALUE);
-    }
-    else {
-        eui64[0] |= IPV6_IID_FLIP_VALUE;
-    }
-}
-
-typedef struct {
-    uint8_t src[8];
-    uint8_t payload[BLE_SIXLOWPAN_MTU];
-    uint16_t len;
-    int8_t rssi;
-} ble_mac_inbuf_t;
-
-typedef void (*ble_mac_callback_t)(ble_mac_event_enum_t event, void*arg);
-void ble_mac_init(ble_mac_callback_t callback);
-int ble_mac_send(uint8_t dest[8], void *data, size_t len);
-
-extern volatile int ble_mac_busy_tx;    /**< Flag is set to 1 when the driver
-                                             is busy transmitting a packet. */
-extern volatile int ble_mac_busy_rx;    /**< Flag is set to 1 when there is a
-                                             received packet pending. */
-#endif /* BLE_MAC_H */
diff --git a/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c b/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c
deleted file mode 100644
index 156c2289d0e61a42316bd16d665340cfdea12df9..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (c) 2016, Nordic Semiconductor
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-/**
- * @{
- * @ingroup     net
- * @file
- * @brief       Glue for Nordic's SoftDevice BLE 6lowpan blob to netapi
- *
- * @author      Kaspar Schleiser <kaspar@schleiser.de>
- * @}
- */
-
-#include <assert.h>
-#include <errno.h>
-
-#include "msg.h"
-#include "thread.h"
-
-#include "net/gnrc.h"
-#include "net/gnrc/nettype.h"
-
-#include "ble-core.h"
-#include "softdevice_handler.h"
-
-#include "ble-mac.h"
-
-#define ENABLE_DEBUG    (0)
-#include "debug.h"
-
-#if defined(MODULE_OD) && ENABLE_DEBUG
-#include "od.h"
-#endif
-
-#define BLE_NETAPI_MSG_QUEUE_SIZE   (8U)
-#define BLE_PRIO                    (THREAD_PRIORITY_MAIN - 1)
-
-kernel_pid_t gnrc_nordic_ble_6lowpan_pid;
-static char _stack[(THREAD_STACKSIZE_DEFAULT + DEBUG_EXTRA_STACKSIZE)];
-
-static uint8_t _own_mac_addr[BLE_SIXLOWPAN_L2_ADDR_LEN];
-
-static uint8_t _sendbuf[BLE_SIXLOWPAN_MTU];
-
-static void _ble_mac_callback(ble_mac_event_enum_t event, void* arg)
-{
-    msg_t m = { .type=event, .content.ptr=arg };
-
-    if (!msg_send_int(&m, gnrc_nordic_ble_6lowpan_pid)) {
-        puts("_ble_mac_callback(): possibly lost interrupt");
-    }
-}
-
-static void _handle_raw_sixlowpan(ble_mac_inbuf_t *inbuf)
-{
-    gnrc_pktsnip_t *pkt = NULL;
-
-    pkt = gnrc_pktbuf_add(NULL, inbuf->payload,
-            inbuf->len,
-            GNRC_NETTYPE_SIXLOWPAN);
-
-    if(!pkt) {
-        DEBUG("_handle_raw_sixlowpan(): no space left in packet buffer.\n");
-        return;
-    }
-
-    /* create netif header */
-    gnrc_pktsnip_t *netif_hdr;
-    netif_hdr = gnrc_pktbuf_add(NULL, NULL,
-            sizeof(gnrc_netif_hdr_t) + (2 * sizeof(eui64_t)),
-            GNRC_NETTYPE_NETIF);
-
-    if (netif_hdr == NULL) {
-        DEBUG("_handle_raw_sixlowpan(): no space left in packet buffer.\n");
-        gnrc_pktbuf_release(pkt);
-        return;
-    }
-
-    gnrc_netif_hdr_init(netif_hdr->data, BLE_SIXLOWPAN_L2_ADDR_LEN, BLE_SIXLOWPAN_L2_ADDR_LEN);
-    gnrc_netif_hdr_set_src_addr(netif_hdr->data, inbuf->src, BLE_SIXLOWPAN_L2_ADDR_LEN);
-    gnrc_netif_hdr_set_dst_addr(netif_hdr->data, _own_mac_addr, BLE_SIXLOWPAN_L2_ADDR_LEN);
-    ((gnrc_netif_hdr_t *)netif_hdr->data)->if_pid = gnrc_nordic_ble_6lowpan_pid;
-
-    DEBUG("_handle_raw_sixlowpan(): received packet from %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x "
-            "of length %d\n",
-            inbuf->src[0], inbuf->src[1], inbuf->src[2], inbuf->src[3], inbuf->src[4],
-            inbuf->src[5], inbuf->src[6], inbuf->src[7], inbuf->len);
-#if defined(MODULE_OD) && ENABLE_DEBUG
-    od_hex_dump(inbuf->payload, inbuf->len, OD_WIDTH_DEFAULT);
-#endif
-
-    LL_APPEND(pkt, netif_hdr);
-
-    /* throw away packet if no one is interested */
-    if (!gnrc_netapi_dispatch_receive(pkt->type, GNRC_NETREG_DEMUX_CTX_ALL, pkt)) {
-        DEBUG("_handle_raw_sixlowpan: unable to forward packet of type %i\n", pkt->type);
-        gnrc_pktbuf_release(pkt);
-    }
-}
-
-static int _send(gnrc_pktsnip_t *pkt)
-{
-    gnrc_netif_hdr_t *netif_hdr;
-    gnrc_pktsnip_t *payload = pkt->next;
-    uint8_t *dst;
-
-    if (ble_mac_busy_tx) {
-        DEBUG("_send(): ble_mac_busy_tx\n");
-        return -EBUSY;
-    }
-
-    uint8_t *buf = _sendbuf;
-    unsigned len = 0;
-
-    if (pkt == NULL) {
-        DEBUG("_send_ble: pkt was NULL\n");
-        return -EINVAL;
-    }
-    if (pkt->type != GNRC_NETTYPE_NETIF) {
-        DEBUG("_send_ble: first header is not generic netif header\n");
-        return -EBADMSG;
-    }
-
-    netif_hdr = pkt->data;
-
-    /* prepare destination address */
-    if (netif_hdr->flags &
-        (GNRC_NETIF_HDR_FLAGS_BROADCAST | GNRC_NETIF_HDR_FLAGS_MULTICAST)) {
-        dst = NULL;
-    }
-    else {
-        dst = gnrc_netif_hdr_get_dst_addr(netif_hdr);
-    }
-
-    /* prepare packet for sending */
-    while (payload) {
-        memcpy(buf, payload->data, payload->size);
-        len += payload->size;
-        buf +=  payload->size;
-        payload = payload->next;
-    }
-
-    gnrc_pktbuf_release(pkt);
-
-    if (ble_mac_send(dst, _sendbuf, len) == -1) {
-        return -EBADMSG;
-    }
-
-    return 0;
-}
-static int _handle_get(gnrc_netapi_opt_t *_opt)
-{
-    int res = -ENOTSUP;
-    uint8_t *value = _opt->data;
-
-    switch (_opt->opt) {
-        case NETOPT_ACK_REQ:
-        case NETOPT_CHANNEL:
-        case NETOPT_NID:
-        case NETOPT_ADDRESS:
-            /* -ENOTSUP */
-            break;
-        case NETOPT_ADDRESS_LONG:
-            assert(_opt->data_len >= BLE_SIXLOWPAN_L2_ADDR_LEN);
-            memcpy(value, _own_mac_addr, BLE_SIXLOWPAN_L2_ADDR_LEN);
-            value[0] = IPV6_IID_FLIP_VALUE;
-            res = BLE_SIXLOWPAN_L2_ADDR_LEN;
-            break;
-        case NETOPT_ADDR_LEN:
-        case NETOPT_SRC_LEN:
-            assert(_opt->data_len == sizeof(uint16_t));
-            *((uint16_t *)value) = BLE_SIXLOWPAN_L2_ADDR_LEN;
-            res = sizeof(uint16_t);
-            break;
-#ifdef MODULE_GNRC
-        case NETOPT_PROTO:
-            assert(_opt->data_len == sizeof(gnrc_nettype_t));
-            *((gnrc_nettype_t *)value) = GNRC_NETTYPE_SIXLOWPAN;
-            res = sizeof(gnrc_nettype_t);
-            break;
-#endif
-/*        case NETOPT_DEVICE_TYPE:
-            assert(_opt->data_len == sizeof(uint16_t));
-            *((uint16_t *)value) = NETDEV2_TYPE_IEEE802154;
-            res = sizeof(uint16_t);
-            break;*/
-        case NETOPT_IPV6_IID:
-            memcpy(value, _own_mac_addr, BLE_SIXLOWPAN_L2_ADDR_LEN);
-            value[0] = IPV6_IID_FLIP_VALUE;
-            res = BLE_SIXLOWPAN_L2_ADDR_LEN;
-            break;
-        default:
-            break;
-    }
-    return res;
-}
-
-/**
- * @brief   Startup code and event loop of the gnrc_nordic_ble_6lowpan layer
- *
- * @return          never returns
- */
-static void *_gnrc_nordic_ble_6lowpan_thread(void *args)
-{
-    (void)args;
-
-    DEBUG("gnrc_nordic_ble_6lowpan: starting thread\n");
-
-    gnrc_nordic_ble_6lowpan_pid = thread_getpid();
-
-    gnrc_netapi_opt_t *opt;
-    int res;
-    msg_t msg, reply, msg_queue[BLE_NETAPI_MSG_QUEUE_SIZE];
-
-    /* setup the message queue */
-    msg_init_queue(msg_queue, BLE_NETAPI_MSG_QUEUE_SIZE);
-
-    /* initialize BLE stack */
-    assert((unsigned)softdevice_handler_isEnabled());
-
-    ble_stack_init();
-    ble_get_mac(_own_mac_addr);
-
-    ble_mac_init(_ble_mac_callback);
-
-    ble_advertising_init("RIOT BLE");
-    ble_advertising_start();
-
-    /* register the device to the network stack*/
-    gnrc_netif_add(thread_getpid());
-
-    /* start the event loop */
-    while (1) {
-//        DEBUG("gnrc_nordic_ble_6lowpan: waiting for incoming messages\n");
-        msg_receive(&msg);
-        /* dispatch NETDEV and NETAPI messages */
-        switch (msg.type) {
-            case BLE_EVENT_RX_DONE:
-                {
-                    DEBUG("ble rx:\n");
-                    _handle_raw_sixlowpan(msg.content.ptr);
-                    ble_mac_busy_rx = 0;
-                    break;
-                }
-            case GNRC_NETAPI_MSG_TYPE_SND:
-                DEBUG("gnrc_nordic_ble_6lowpan: GNRC_NETAPI_MSG_TYPE_SND received\n");
-                _send(msg.content.ptr);
-                break;
-            case GNRC_NETAPI_MSG_TYPE_SET:
-                /* read incoming options */
-                opt = msg.content.ptr;
-                DEBUG("gnrc_nordic_ble_6lowpan: GNRC_NETAPI_MSG_TYPE_SET received. opt=%s\n",
-                      netopt2str(opt->opt));
-                /* set option for device driver */
-                res = ENOTSUP;
-                DEBUG("gnrc_nordic_ble_6lowpan: response of netdev->set: %i\n", res);
-                /* send reply to calling thread */
-                reply.type = GNRC_NETAPI_MSG_TYPE_ACK;
-                reply.content.value = (uint32_t)res;
-                msg_reply(&msg, &reply);
-                break;
-            case GNRC_NETAPI_MSG_TYPE_GET:
-                /* read incoming options */
-                opt = msg.content.ptr;
-                DEBUG("gnrc_nordic_ble_6lowpan: GNRC_NETAPI_MSG_TYPE_GET received. opt=%s\n",
-                      netopt2str(opt->opt));
-                res = _handle_get(opt);
-                DEBUG("gnrc_nordic_ble_6lowpan: response of netdev->get: %i\n", res);
-                /* send reply to calling thread */
-                reply.type = GNRC_NETAPI_MSG_TYPE_ACK;
-                reply.content.value = (uint32_t)res;
-                msg_reply(&msg, &reply);
-                break;
-            default:
-                DEBUG("gnrc_nordic_ble_6lowpan: Unknown command %" PRIu16 "\n", msg.type);
-                break;
-        }
-    }
-    /* never reached */
-    return NULL;
-}
-
-void gnrc_nordic_ble_6lowpan_init(void)
-{
-    kernel_pid_t res = thread_create(_stack, sizeof(_stack), BLE_PRIO,
-                        THREAD_CREATE_STACKTEST,
-                        _gnrc_nordic_ble_6lowpan_thread, NULL,
-                        "ble");
-    assert(res > 0);
-    (void)res;
-}
diff --git a/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.h b/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.h
deleted file mode 100644
index 27dde2fd1a3c9c20b35d336f02e3d3e67de04e34..0000000000000000000000000000000000000000
--- a/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2016, Nordic Semiconductor
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-#ifndef GNRC_NORDIC_BLE_6LOWPAN_H
-#define GNRC_NORDIC_BLE_6LOWPAN_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void gnrc_nordic_ble_6lowpan_init(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GNRC_NORDIC_BLE_6LOWPAN_H */
diff --git a/sys/auto_init/auto_init.c b/sys/auto_init/auto_init.c
index 44f75bf3a8ff551f73228f034974a0b53424c005..63c9e6ec0050dfef1dafcd6e84ca91fe74162602 100644
--- a/sys/auto_init/auto_init.c
+++ b/sys/auto_init/auto_init.c
@@ -225,11 +225,6 @@ void auto_init(void)
     auto_init_netdev2_tap();
 #endif
 
-#ifdef MODULE_NORDIC_SOFTDEVICE_BLE
-    extern void gnrc_nordic_ble_6lowpan_init(void);
-    gnrc_nordic_ble_6lowpan_init();
-#endif
-
 #endif /* MODULE_AUTO_INIT_GNRC_NETIF */
 
 #ifdef MODULE_GNRC_IPV6_NETIF