diff --git a/src/drivers/boards/crazyflie/board_config.h b/src/drivers/boards/crazyflie/board_config.h
index 582169c207149d04ad6c1acef038a6005d1ae8c9..04b7c693b77153638556f142b989bf8368335634 100644
--- a/src/drivers/boards/crazyflie/board_config.h
+++ b/src/drivers/boards/crazyflie/board_config.h
@@ -75,9 +75,11 @@ __BEGIN_DECLS
 #define GPIO_LED_RED_R       (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|\
 			      GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN3)
 
-/* Blinking while charging */
-#define GPIO_LED_BLUE_L		(GPIO_OUTPUT|GPIO_PORTD|GPIO_PIN2)
+/* PX4: armed state indicator ; Stock FW: Blinking while charging */
+#define GPIO_LED_BLUE_L		(GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN2)
 
+#define LED_TX 4
+#define LED_RX 5
 
 #define GPIO_FSYNC_MPU9250		(GPIO_OUTPUT|GPIO_PORTC|GPIO_PIN14) // Needs to be set low
 #define GPIO_DRDY_MPU9250		(GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTC|GPIO_PIN13)
diff --git a/src/drivers/boards/crazyflie/crazyflie_init.c b/src/drivers/boards/crazyflie/crazyflie_init.c
index 3dcb228c90b292dbeadb61ca0aea4a514c742827..f22bc488381ed9d74771c32e427c2339cc7553ce 100644
--- a/src/drivers/boards/crazyflie/crazyflie_init.c
+++ b/src/drivers/boards/crazyflie/crazyflie_init.c
@@ -94,6 +94,19 @@
 #  endif
 #endif
 
+/*
+ * Ideally we'd be able to get these from up_internal.h,
+ * but since we want to be able to disable the NuttX use
+ * of leds for system indication at will and there is no
+ * separate switch, we need to build independent of the
+ * CONFIG_ARCH_LEDS configuration switch.
+ */
+__BEGIN_DECLS
+extern void led_init(void);
+extern void led_on(int led);
+extern void led_off(int led);
+__END_DECLS
+
 /****************************************************************************
  * Protected Functions
  ****************************************************************************/
@@ -169,6 +182,14 @@ __EXPORT int nsh_archinitialize(void)
 		       (hrt_callout)stm32_serial_dma_poll,
 		       NULL);
 
+	/* initial LED state */
+	drv_led_start();
+	led_off(LED_RED);
+	led_off(LED_GREEN);
+	led_off(LED_BLUE);
+	led_off(LED_TX);
+	led_off(LED_RX);
+
 
 
 	result = board_i2c_initialize();
diff --git a/src/drivers/boards/crazyflie/crazyflie_led.c b/src/drivers/boards/crazyflie/crazyflie_led.c
index e0e3736862a3627e818424a0ddd9aaf241e1e009..1c70e4766c7c458e816b03edcbc509af680e4690 100644
--- a/src/drivers/boards/crazyflie/crazyflie_led.c
+++ b/src/drivers/boards/crazyflie/crazyflie_led.c
@@ -37,7 +37,7 @@
  * Crazyflie LED backend.
  */
 
-#include <nuttx/config.h>
+#include <px4_config.h>
 
 #include <stdbool.h>
 
@@ -60,37 +60,42 @@ extern void led_off(int led);
 extern void led_toggle(int led);
 __END_DECLS
 
+static uint32_t g_ledmap[] = {
+	GPIO_LED_BLUE_L,  // Indexed by LED_BLUE
+	GPIO_LED_RED_R,   // Indexed by LED_RED, LED_AMBER
+	0,				  // Indexed by LED_SAFETY
+	GPIO_LED_GREEN_R, // Indexed by LED_GREEN
+	GPIO_LED_RED_L,   // Indexed by LED_TX
+	GPIO_LED_GREEN_L  // Indexed by LED_RX
+};
+
+
 __EXPORT void led_init()
 {
 	/* Configure LED1 GPIO for output */
-
-	stm32_configgpio(GPIO_LED_RED_L);
+	for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) {
+		px4_arch_configgpio(g_ledmap[l]);
+	}
 }
 
 __EXPORT void led_on(int led)
 {
-	if (led == 1) {
-		/* Pull down to switch on */
-		stm32_gpiowrite(GPIO_LED_RED_L, false);
-	}
+	/* Pull down to switch on */
+	px4_arch_gpiowrite(g_ledmap[led], g_ledmap[led] & GPIO_OUTPUT_SET ? true : false);
 }
 
 __EXPORT void led_off(int led)
 {
-	if (led == 1) {
-		/* Pull up to switch off */
-		stm32_gpiowrite(GPIO_LED_RED_L, true);
-	}
+	/* Pull up to switch off */
+	px4_arch_gpiowrite(g_ledmap[led], g_ledmap[led] & GPIO_OUTPUT_SET ? false : true);
 }
 
 __EXPORT void led_toggle(int led)
 {
-	if (led == 1) {
-		if (stm32_gpioread(GPIO_LED_RED_L)) {
-			stm32_gpiowrite(GPIO_LED_RED_L, false);
+	if (px4_arch_gpioread(g_ledmap[led])) {
+		px4_arch_gpiowrite(g_ledmap[led], false);
 
-		} else {
-			stm32_gpiowrite(GPIO_LED_RED_L, true);
-		}
+	} else {
+		px4_arch_gpiowrite(g_ledmap[led], true);
 	}
 }
diff --git a/src/drivers/boards/crazyflie/crazyflie_timer_config.c b/src/drivers/boards/crazyflie/crazyflie_timer_config.c
index 936896297c3acb96a4a869af8d333d0966f19ca7..1f746dee1a9dbf394b276fa1c1fc1fd448b99bdf 100644
--- a/src/drivers/boards/crazyflie/crazyflie_timer_config.c
+++ b/src/drivers/boards/crazyflie/crazyflie_timer_config.c
@@ -75,6 +75,7 @@ __EXPORT const io_timers_t io_timers[MAX_IO_TIMERS] = {
 
 __EXPORT const timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {
 	{
+		// M1
 		.gpio_out = GPIO_TIM2_CH2OUT,
 		.gpio_in = GPIO_TIM2_CH2IN,
 		.timer_index = 0,
@@ -83,14 +84,7 @@ __EXPORT const timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {
 		.masks  = GTIM_SR_CC2IF | GTIM_SR_CC2OF
 	},
 	{
-		.gpio_out = GPIO_TIM2_CH4OUT,
-		.gpio_in = GPIO_TIM2_CH4IN,
-		.timer_index = 0,
-		.timer_channel = 4,
-		.ccr_offset = STM32_GTIM_CCR4_OFFSET,
-		.masks  = GTIM_SR_CC4IF | GTIM_SR_CC4OF
-	},
-	{
+		// M3
 		.gpio_out = GPIO_TIM2_CH1OUT,
 		.gpio_in = GPIO_TIM2_CH1IN,
 		.timer_index = 0,
@@ -99,11 +93,21 @@ __EXPORT const timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {
 		.masks  = GTIM_SR_CC1IF | GTIM_SR_CC1OF
 	},
 	{
+		// M4
 		.gpio_out = GPIO_TIM4_CH4OUT,
 		.gpio_in = GPIO_TIM4_CH4IN,
 		.timer_index = 1,
 		.timer_channel = 4,
 		.ccr_offset = STM32_GTIM_CCR4_OFFSET,
 		.masks  = GTIM_SR_CC4IF | GTIM_SR_CC4OF
-	}
+	},
+	{
+		// M2
+		.gpio_out = GPIO_TIM2_CH4OUT,
+		.gpio_in = GPIO_TIM2_CH4IN,
+		.timer_index = 0,
+		.timer_channel = 4,
+		.ccr_offset = STM32_GTIM_CCR4_OFFSET,
+		.masks  = GTIM_SR_CC4IF | GTIM_SR_CC4OF
+	},
 };
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index 3d96dee758799d20fdb79dafe7fb72f84def493c..63768eb3269fedc7dd543ef5555127bb5900e22d 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -2982,7 +2982,7 @@ control_status_leds(vehicle_status_s *status_local, const actuator_armed_s *actu
 		}
 	}
 
-#if defined (CONFIG_ARCH_BOARD_PX4FMU_V1) || defined (CONFIG_ARCH_BOARD_PX4FMU_V4)
+#if defined (CONFIG_ARCH_BOARD_PX4FMU_V1) || defined (CONFIG_ARCH_BOARD_PX4FMU_V4) || defined (CONFIG_ARCH_BOARD_CRAZYFLIE)
 
 	/* this runs at around 20Hz, full cycle is 16 ticks = 10/16Hz */
 	if (actuator_armed->armed) {