diff --git a/drivers/cc110x/cc110x-netdev.c b/drivers/cc110x/cc110x-netdev.c
index 8d4bc1dbdeeb514cd23571d82bccaac727e00092..99f3b58dacd1408304b6947aa0a86fc20b1b4e4d 100644
--- a/drivers/cc110x/cc110x-netdev.c
+++ b/drivers/cc110x/cc110x-netdev.c
@@ -201,7 +201,7 @@ static int _init(netdev_t *dev)
     cc110x_t *cc110x = &((netdev_cc110x_t*) dev)->cc110x;
 
     gpio_init_int(cc110x->params.gdo2, GPIO_IN, GPIO_BOTH,
-            &_netdev_cc110x_isr, (void*)dev);
+                  &_netdev_cc110x_isr, (void*)dev);
 
     gpio_set(cc110x->params.gdo2);
     gpio_irq_disable(cc110x->params.gdo2);
diff --git a/drivers/cc110x/cc110x-rxtx.c b/drivers/cc110x/cc110x-rxtx.c
index 878ccf678cd95855992ec1022de0a8022157cabc..a717e8e1bb3e61b4ed81ed96d0bd686d7fc81e07 100644
--- a/drivers/cc110x/cc110x-rxtx.c
+++ b/drivers/cc110x/cc110x-rxtx.c
@@ -38,11 +38,34 @@
 #include "cpu_conf.h"
 #include "cpu.h"
 
+#ifdef MODULE_OD
+#include "od.h"
+#endif
+
 #include "log.h"
 
 #define ENABLE_DEBUG (0)
 #include "debug.h"
 
+const char *cc110x_state_to_text(uint8_t state)
+{
+    switch (state){
+    case RADIO_IDLE:
+        return "idle";
+    case RADIO_TX_BUSY:
+        return "tx busy";
+    case RADIO_RX:
+        return "rx";
+    case RADIO_RX_BUSY:
+        return "rx busy";
+    case RADIO_PWD:
+        return "pwd";
+    case RADIO_UNKNOWN:
+        return "unknown";
+    }
+    return "invalid";
+}
+
 static void _rx_abort(cc110x_t *dev)
 {
     gpio_irq_disable(dev->params.gdo2);
@@ -61,7 +84,8 @@ static void _rx_start(cc110x_t *dev)
     pkt_buf->pos = 0;
 
     gpio_irq_disable(dev->params.gdo2);
-    cc110x_write_reg(dev, CC110X_IOCFG2, 0x01);
+    cc110x_write_reg(dev, CC110X_IOCFG2,
+                     CC110X_GDO_HIGH_ON_RX_FIFO_FILLED_OR_PKT_END);
     gpio_irq_enable(dev->params.gdo2);
 }
 
@@ -69,7 +93,7 @@ static void _rx_read_data(cc110x_t *dev, void(*callback)(void*), void*arg)
 {
     int fifo = cc110x_get_reg_robust(dev, 0xfb);
 
-    if (fifo & 0x80) {
+    if (fifo & RXFIFO_OVERFLOW) {
         DEBUG("%s:%s:%u rx overflow\n", RIOT_FILE_RELATIVE, __func__, __LINE__);
         _rx_abort(dev);
         return;
@@ -120,11 +144,10 @@ static void _rx_read_data(cc110x_t *dev, void(*callback)(void*), void*arg)
         int crc_ok = (status[I_LQI] & CRC_OK) >> 7;
 
         if (crc_ok) {
-                    LOG_DEBUG("cc110x: received packet from=%u to=%u payload "
-                            "len=%u\n",
-                    (unsigned)pkt_buf->packet.phy_src,
-                    (unsigned)pkt_buf->packet.address,
-                    pkt_buf->packet.length-3);
+            LOG_DEBUG("cc110x: received packet from=%u to=%u payload len=%u\n",
+                      (unsigned)pkt_buf->packet.phy_src,
+                      (unsigned)pkt_buf->packet.address,
+                      pkt_buf->packet.length - 3);
             /* let someone know that we've got a packet */
             callback(arg);
 
@@ -133,6 +156,10 @@ static void _rx_read_data(cc110x_t *dev, void(*callback)(void*), void*arg)
         else {
             DEBUG("%s:%s:%u crc-error\n", RIOT_FILE_RELATIVE, __func__, __LINE__);
             dev->cc110x_statistic.packets_in_crc_fail++;
+#if defined(MODULE_OD) && ENABLE_DEBUG
+            od_hex_dump(pkt_buf->packet.data, pkt_buf->packet.length - 3,
+                        OD_WIDTH_DEFAULT);
+#endif
             _rx_abort(dev);
         }
     }
@@ -140,7 +167,6 @@ static void _rx_read_data(cc110x_t *dev, void(*callback)(void*), void*arg)
 
 static void _rx_continue(cc110x_t *dev, void(*callback)(void*), void*arg)
 {
-
     if (dev->radio_state != RADIO_RX_BUSY) {
         DEBUG("%s:%s:%u _rx_continue in invalid state\n", RIOT_FILE_RELATIVE,
                 __func__, __LINE__);
@@ -177,9 +203,9 @@ static void _tx_continue(cc110x_t *dev)
         return;
     }
 
-    int fifo = 64 - cc110x_get_reg_robust(dev, 0xfa);
+    int fifo = CC110X_FIFO_LENGTH - cc110x_get_reg_robust(dev, 0xfa);
 
-    if (fifo & 0x80) {
+    if (fifo & TXFIFO_UNDERFLOW) {
         DEBUG("%s:%s:%u tx underflow!\n", RIOT_FILE_RELATIVE, __func__, __LINE__);
         _tx_abort(dev);
         return;
@@ -205,11 +231,12 @@ static void _tx_continue(cc110x_t *dev)
     if (to_send < left) {
         /* set GDO2 to 0x2 -> will deassert at TX FIFO below threshold */
         gpio_irq_enable(dev->params.gdo2);
-        cc110x_write_reg(dev, CC110X_IOCFG2, 0x02);
+        cc110x_write_reg(dev, CC110X_IOCFG2,
+                         CC110X_GDO_LOW_ON_TX_FIFO_BELOW_THRESHOLD);
     }
     else {
         /* set GDO2 to 0x6 -> will deassert at packet end */
-        cc110x_write_reg(dev, CC110X_IOCFG2, 0x06);
+        cc110x_write_reg(dev, CC110X_IOCFG2, CC110X_GDO_HIGH_ON_SYNC_WORD);
         gpio_irq_enable(dev->params.gdo2);
     }
 }
@@ -281,7 +308,8 @@ int cc110x_send(cc110x_t *dev, cc110x_pkt_t *packet)
     cc110x_hook_tx();
 #endif
 
-    cc110x_write_reg(dev, CC110X_IOCFG2, 0x02);
+    cc110x_write_reg(dev, CC110X_IOCFG2,
+                     CC110X_GDO_LOW_ON_TX_FIFO_BELOW_THRESHOLD);
 
     /* Put CC110x in IDLE mode to flush the FIFO */
     cc110x_strobe(dev, CC110X_SIDLE);
diff --git a/drivers/cc110x/cc110x.c b/drivers/cc110x/cc110x.c
index d66d222d7c4b257423355d36f7fb58b0048c5cbe..8230f948734ba253965a04f3ed064884ceab1a4d 100644
--- a/drivers/cc110x/cc110x.c
+++ b/drivers/cc110x/cc110x.c
@@ -151,7 +151,7 @@ void cc110x_switch_to_rx(cc110x_t *dev)
 
     dev->radio_state = RADIO_RX;
 
-    cc110x_write_reg(dev, CC110X_IOCFG2, 0x6);
+    cc110x_write_reg(dev, CC110X_IOCFG2, CC110X_GDO_HIGH_ON_SYNC_WORD);
     cc110x_strobe(dev, CC110X_SRX);
 
     gpio_irq_enable(dev->params.gdo2);
diff --git a/drivers/cc110x/gnrc_cc110x/gnrc_cc110x.c b/drivers/cc110x/gnrc_cc110x/gnrc_cc110x.c
index 83db2cef2cc51dac1f6c3ca27a45f25ab717c7ed..d7432196decc6b869383ff1fbf17cc413c157ef8 100644
--- a/drivers/cc110x/gnrc_cc110x/gnrc_cc110x.c
+++ b/drivers/cc110x/gnrc_cc110x/gnrc_cc110x.c
@@ -103,7 +103,10 @@ static int _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
             "length %u\n",
             (unsigned)cc110x_pkt.phy_src,
             (unsigned)cc110x_pkt.address,
-            (unsigned)cc110x_pkt.length);
+            (unsigned)payload_len);
+#if defined(MODULE_OD) && ENABLE_DEBUG
+    od_hex_dump(cc110x_pkt.data, payload_len, OD_WIDTH_DEFAULT);
+#endif
 
     return dev->driver->send(dev, &iolist);
 }
diff --git a/drivers/cc110x/include/cc110x-defines.h b/drivers/cc110x/include/cc110x-defines.h
index 069076b58da1398e71dfdbd07b67cc3e69d1e021..6eac9fafb264a6a601aa0d40a344914b0a2d82b0 100644
--- a/drivers/cc110x/include/cc110x-defines.h
+++ b/drivers/cc110x/include/cc110x-defines.h
@@ -208,6 +208,42 @@ extern "C" {
 #define CC110X_RXFIFO       (0x3F)      /**< RX FIFO: Read operations read from the RX FIFO (SB: +0x80; BURST: +0xC0) */
 /** @} */
 
+
+/**
+ * @name GDO configuration values
+ *
+ * Values that can be written to the GDO0, GDO1 and GDO2 configuration registers
+ * @{
+ */
+
+/** @brief GDO goes high when RX FIFO is filled at or above threshold */
+#define CC110X_GDO_HIGH_ON_RX_FIFO_ABOVE_THRESHOLD   (0x00)
+/**
+ * @brief GDO goes high when RX FIFO is filled at or above threshold or when
+ *        packet is fully received
+ */
+#define CC110X_GDO_HIGH_ON_RX_FIFO_FILLED_OR_PKT_END (0x01)
+/** @brief GDO goes low when TX FIFO is filled less than threshold */
+#define CC110X_GDO_LOW_ON_TX_FIFO_BELOW_THRESHOLD    (0x02)
+/** @brief  GDO goes low when TX FIFO becomes empty */
+#define CC110X_GDO_LOW_ON_TX_FIFO_EMPTY              (0x03)
+/** @brief  GDO goes high when RX FIFO overflows */
+#define CC110X_GDO_HIGH_ON_RX_FIFO_OVERFLOW          (0x04)
+/** @brief GDO goes high when TX FIFO underflows */
+#define CC110X_GDO_HIGH_ON_TX_FIFO_UNDERFLOW         (0x05)
+/**
+ * @brief GDO goes high when sync word was just received until the packet is
+ *        fully received, or when sync word has been send until packet is fully
+ *        send
+ */
+#define CC110X_GDO_HIGH_ON_SYNC_WORD                 (0x06)
+/**
+ * @brief GDO goes high when a packet is received and CRC is correct.
+ *        Goes back to low when first byte of RX fifo has been read
+ */
+#define CC110X_GDO_HIGH_ON_PACKET_RECEIVED           (0x07)
+/** @} */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/drivers/cc110x/include/cc110x-interface.h b/drivers/cc110x/include/cc110x-interface.h
index 02f0b20692a20af9aa7247ea882c7e37c8e1b984..4e77b94789920f95d4184706263e7d567b56b6ba 100644
--- a/drivers/cc110x/include/cc110x-interface.h
+++ b/drivers/cc110x/include/cc110x-interface.h
@@ -35,7 +35,7 @@ extern "C" {
  * @{
  */
 char *cc110x_get_marc_state(cc110x_t *dev);
-char *cc110x_state_to_text(uint8_t state);
+const char *cc110x_state_to_text(uint8_t state);
 int cc110x_rd_set_mode(cc110x_t *dev, int mode);
 uint8_t cc110x_get_buffer_pos(cc110x_t *dev);
 void cc110x_isr_handler(cc110x_t *dev, void(*callback)(void*), void*arg);
diff --git a/drivers/cc110x/include/cc110x-internal.h b/drivers/cc110x/include/cc110x-internal.h
index a6e64f09d7b082a59fc30560382dae8acff78581..0875be83e1ff39abaeb4922c56100db0ffdd157b 100644
--- a/drivers/cc110x/include/cc110x-internal.h
+++ b/drivers/cc110x/include/cc110x-internal.h
@@ -29,6 +29,7 @@ extern "C" {
 #endif
 
 #define CC110X_RXBUF_SIZE           (2)
+#define CC110X_FIFO_LENGTH          (64)
 #define CC110X_MAX_DATA_LENGTH      (58+64)
 
 #define CC110X_HEADER_LENGTH        (3)     /**< Header covers SRC, DST and
diff --git a/drivers/include/cc110x.h b/drivers/include/cc110x.h
index 17f02d29344feafc97f59807e2cebaa90e363372..f915f8bfc0debc3e279062c06da75cf101b961b0 100644
--- a/drivers/include/cc110x.h
+++ b/drivers/include/cc110x.h
@@ -33,11 +33,11 @@ extern "C" {
  * @brief   Struct for holding cc110x IO parameters
  */
 typedef struct cc110x_params {
-    spi_t spi;          /**< what */
-    gpio_t cs;          /**< does */
-    gpio_t gdo0;        /**< this */
-    gpio_t gdo1;        /**< look */
-    gpio_t gdo2;        /**< like */
+    spi_t spi;          /**< SPI bus the CC110x is connected to */
+    gpio_t cs;          /**< GPIO connected to the chip select pin of the CC110x */
+    gpio_t gdo0;        /**< GPIO connected to the GDO0 pin of the CC110x */
+    gpio_t gdo1;        /**< GPIO connected to the GDO1 pin of the CC110x */
+    gpio_t gdo2;        /**< GPIO connected to the GDO2 pin of the CC110x */
 } cc110x_params_t;
 
 /**