diff --git a/boards/omnibus/f4sd/init/rc.board_extras b/boards/omnibus/f4sd/init/rc.board_extras
new file mode 100644
index 0000000000000000000000000000000000000000..b35e2a6dbd982e4b10289f02815c7877c8914bdc
--- /dev/null
+++ b/boards/omnibus/f4sd/init/rc.board_extras
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# OmnibusF4SD specific board extras init
+#------------------------------------------------------------------------------
+
+if ! param compare OSD_ATXXXX_CFG 0
+then
+	atxxxx start
+fi
+
+
diff --git a/src/drivers/osd/CMakeLists.txt b/src/drivers/osd/CMakeLists.txt
index 89dc8a180874f17e331335061fc9a455224e62c7..ae43f71234941c311f2f440033fea90f157ecbf9 100644
--- a/src/drivers/osd/CMakeLists.txt
+++ b/src/drivers/osd/CMakeLists.txt
@@ -1,6 +1,6 @@
 ############################################################################
 #
-#   Copyright (c) 2018 PX4 Development Team. All rights reserved.
+#   Copyright (c) 2019 PX4 Development Team. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -30,10 +30,5 @@
 # POSSIBILITY OF SUCH DAMAGE.
 #
 ############################################################################
-px4_add_module(
-	MODULE drivers__osd
-	MAIN osd
-	SRCS
-		osd.cpp
-	)
-# vim: set noet ft=cmake fenc=utf-8 ff=unix :
\ No newline at end of file
+
+add_subdirectory(atxxxx)
diff --git a/src/drivers/osd/atxxxx/CMakeLists.txt b/src/drivers/osd/atxxxx/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..30dfaa6a0526732113d0ccf1d3a2a654be00e6b3
--- /dev/null
+++ b/src/drivers/osd/atxxxx/CMakeLists.txt
@@ -0,0 +1,38 @@
+############################################################################
+#
+#   Copyright (c) 2018-2019 PX4 Development Team. 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 PX4 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 COPYRIGHT HOLDERS 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
+# COPYRIGHT OWNER 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.
+#
+############################################################################
+px4_add_module(
+	MODULE drivers__atxxxx
+	MAIN atxxxx
+	SRCS
+		atxxxx.cpp
+	)
diff --git a/src/drivers/osd/osd.cpp b/src/drivers/osd/atxxxx/atxxxx.cpp
similarity index 88%
rename from src/drivers/osd/osd.cpp
rename to src/drivers/osd/atxxxx/atxxxx.cpp
index f5fbbbc26b74adaa759168d22a98c4dc16c95024..d6c7e0296b9c4949171799c2eee33c009c59ecf4 100644
--- a/src/drivers/osd/osd.cpp
+++ b/src/drivers/osd/atxxxx/atxxxx.cpp
@@ -32,21 +32,20 @@
  ****************************************************************************/
 
 /**
- * @file osd.cpp
+ * @file atxxxx.cpp
  * @author Daniele Pettenuzzo
  *
  * Driver for the ATXXXX chip on the omnibus fcu connected via SPI.
  */
 
-#include "osd.h"
+#include "atxxxx.h"
 
 
-OSD::OSD(int bus) :
+OSDatxxxx::OSDatxxxx(int bus) :
 	SPI("OSD", OSD_DEVICE_PATH, bus, OSD_SPIDEV, SPIDEV_MODE0, OSD_SPI_BUS_SPEED),
 	_measure_ticks(0),
 	_sample_perf(perf_alloc(PC_ELAPSED, "osd_read")),
 	_comms_errors(perf_alloc(PC_COUNT, "osd_com_err")),
-	_tx_mode(1),
 	_battery_sub(-1),
 	_local_position_sub(-1),
 	_vehicle_status_sub(-1),
@@ -58,18 +57,14 @@ OSD::OSD(int bus) :
 	_arming_state(1),
 	_arming_timestamp(0)
 {
-	// enable debug() calls
-	_debug_enabled = false;
-
-	// get params
-	_p_tx_mode = param_find("OSD_TX_MODE");
-	param_get(_p_tx_mode, (int32_t *)&_tx_mode);
+	_p_tx_mode = param_find("OSD_ATXXXX_CFG");
+	param_get(_p_tx_mode, &_tx_mode);
 
 	// work_cancel in the dtor will explode if we don't do this...
 	memset(&_work, 0, sizeof(_work));
 }
 
-OSD::~OSD()
+OSDatxxxx::~OSDatxxxx()
 {
 	/* make sure we are truly inactive */
 	stop();
@@ -81,7 +76,7 @@ OSD::~OSD()
 
 
 int
-OSD::init()
+OSDatxxxx::init()
 {
 	/* do SPI init (and probe) first */
 	if (SPI::init() != PX4_OK) {
@@ -115,7 +110,7 @@ fail:
 
 
 int
-OSD::probe()
+OSDatxxxx::probe()
 {
 	uint8_t data = 0;
 	int ret = PX4_OK;
@@ -131,12 +126,12 @@ OSD::probe()
 }
 
 int
-OSD::init_osd()
+OSDatxxxx::init_osd()
 {
 	int ret = PX4_OK;
 	uint8_t data = OSD_ZERO_BYTE;
 
-	if (_tx_mode) {
+	if (_tx_mode == 2) {
 		data |= OSD_PAL_TX_MODE;
 	}
 
@@ -155,20 +150,20 @@ OSD::init_osd()
 
 
 int
-OSD::ioctl(device::file_t *filp, int cmd, unsigned long arg)
+OSDatxxxx::ioctl(device::file_t *filp, int cmd, unsigned long arg)
 {
 	return -1;
 }
 
 ssize_t
-OSD::read(device::file_t *filp, char *buffer, size_t buflen)
+OSDatxxxx::read(device::file_t *filp, char *buffer, size_t buflen)
 {
 	return -1;
 }
 
 
 int
-OSD::readRegister(unsigned reg, uint8_t *data, unsigned count)
+OSDatxxxx::readRegister(unsigned reg, uint8_t *data, unsigned count)
 {
 	uint8_t cmd[5]; 					// read up to 4 bytes
 	int ret;
@@ -191,7 +186,7 @@ OSD::readRegister(unsigned reg, uint8_t *data, unsigned count)
 
 
 int
-OSD::writeRegister(unsigned reg, uint8_t data)
+OSDatxxxx::writeRegister(unsigned reg, uint8_t data)
 {
 	uint8_t cmd[2]; 						// write 1 byte
 	int ret;
@@ -212,7 +207,7 @@ OSD::writeRegister(unsigned reg, uint8_t data)
 }
 
 int
-OSD::add_character_to_screen(char c, uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_character_to_screen(char c, uint8_t pos_x, uint8_t pos_y)
 {
 
 	uint16_t position = (OSD_CHARS_PER_ROW * pos_y) + pos_x;
@@ -235,13 +230,13 @@ OSD::add_character_to_screen(char c, uint8_t pos_x, uint8_t pos_y)
 }
 
 int
-OSD::add_battery_symbol(uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_battery_symbol(uint8_t pos_x, uint8_t pos_y)
 {
 	return add_character_to_screen(146, pos_x, pos_y);
 }
 
 int
-OSD::add_battery_info(uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_battery_info(uint8_t pos_x, uint8_t pos_y)
 {
 	char buf[5];
 	int ret = PX4_OK;
@@ -268,13 +263,13 @@ OSD::add_battery_info(uint8_t pos_x, uint8_t pos_y)
 }
 
 int
-OSD::add_altitude_symbol(uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_altitude_symbol(uint8_t pos_x, uint8_t pos_y)
 {
 	return add_character_to_screen(154, pos_x, pos_y);
 }
 
 int
-OSD::add_altitude(uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_altitude(uint8_t pos_x, uint8_t pos_y)
 {
 	char buf[5];
 	int ret = PX4_OK;
@@ -291,13 +286,13 @@ OSD::add_altitude(uint8_t pos_x, uint8_t pos_y)
 }
 
 int
-OSD::add_flighttime_symbol(uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_flighttime_symbol(uint8_t pos_x, uint8_t pos_y)
 {
 	return add_character_to_screen(112, pos_x, pos_y);
 }
 
 int
-OSD::add_flighttime(float flight_time, uint8_t pos_x, uint8_t pos_y)
+OSDatxxxx::add_flighttime(float flight_time, uint8_t pos_x, uint8_t pos_y)
 {
 	char buf[6];
 	int ret = PX4_OK;
@@ -312,7 +307,7 @@ OSD::add_flighttime(float flight_time, uint8_t pos_x, uint8_t pos_y)
 }
 
 int
-OSD::enable_screen()
+OSDatxxxx::enable_screen()
 {
 	uint8_t data;
 	int ret = PX4_OK;
@@ -324,7 +319,7 @@ OSD::enable_screen()
 }
 
 int
-OSD::disable_screen()
+OSDatxxxx::disable_screen()
 {
 	uint8_t data;
 	int ret = PX4_OK;
@@ -337,7 +332,7 @@ OSD::disable_screen()
 
 
 int
-OSD::update_topics()//TODO have an argument to choose what to update and return validity
+OSDatxxxx::update_topics()//TODO have an argument to choose what to update and return validity
 {
 	struct battery_status_s battery = {};
 	// struct vehicle_local_position_s local_position = {};
@@ -419,7 +414,7 @@ OSD::update_topics()//TODO have an argument to choose what to update and return
 
 
 int
-OSD::update_screen()
+OSDatxxxx::update_screen()
 {
 	int ret = PX4_OK;
 
@@ -447,20 +442,20 @@ OSD::update_screen()
 
 
 void
-OSD::start()
+OSDatxxxx::start()
 {
 	/* schedule a cycle to start things */
-	work_queue(LPWORK, &_work, (worker_t)&OSD::cycle_trampoline, this, USEC2TICK(OSD_US));
+	work_queue(LPWORK, &_work, (worker_t)&OSDatxxxx::cycle_trampoline, this, USEC2TICK(OSD_US));
 }
 
 void
-OSD::stop()
+OSDatxxxx::stop()
 {
 	work_cancel(LPWORK, &_work);
 }
 
 int
-OSD::reset()
+OSDatxxxx::reset()
 {
 	int ret = writeRegister(0x00, 0x02);
 	usleep(100);
@@ -469,15 +464,15 @@ OSD::reset()
 }
 
 void
-OSD::cycle_trampoline(void *arg)
+OSDatxxxx::cycle_trampoline(void *arg)
 {
-	OSD *dev = (OSD *)arg;
+	OSDatxxxx *dev = (OSDatxxxx *)arg;
 
 	dev->cycle();
 }
 
 void
-OSD::cycle()
+OSDatxxxx::cycle()
 {
 	update_topics();
 
@@ -488,14 +483,14 @@ OSD::cycle()
 	/* schedule a fresh cycle call when the measurement is done */
 	work_queue(LPWORK,
 		   &_work,
-		   (worker_t)&OSD::cycle_trampoline,
+		   (worker_t)&OSDatxxxx::cycle_trampoline,
 		   this,
 		   USEC2TICK(OSD_UPDATE_RATE));
 
 }
 
 void
-OSD::print_info()
+OSDatxxxx::print_info()
 {
 	perf_print_counter(_sample_perf);
 	perf_print_counter(_comms_errors);
@@ -513,7 +508,7 @@ OSD::print_info()
 namespace osd
 {
 
-OSD	*g_dev;
+OSDatxxxx	*g_dev;
 
 int	start(int spi_bus);
 int	stop();
@@ -535,7 +530,7 @@ start(int spi_bus)
 	}
 
 	/* create the driver */
-	g_dev = new OSD(spi_bus);
+	g_dev = new OSDatxxxx(spi_bus);
 
 	if (g_dev == nullptr) {
 		goto fail;
@@ -606,7 +601,7 @@ info()
  */
 void usage()
 {
-	PX4_INFO("usage: osd {start|stop|status'}");
+	PX4_INFO("usage: atxxxx {start|stop|status'}");
 	PX4_INFO("    [-b SPI_BUS]");
 }
 
@@ -614,7 +609,7 @@ void usage()
 
 
 int
-osd_main(int argc, char *argv[])
+atxxxx_main(int argc, char *argv[])
 {
 	if (argc < 2) {
 		osd::usage();
diff --git a/src/drivers/osd/osd.h b/src/drivers/osd/atxxxx/atxxxx.h
similarity index 96%
rename from src/drivers/osd/osd.h
rename to src/drivers/osd/atxxxx/atxxxx.h
index ba9c32a854db87e38a2845539e1d755afe7e67f0..90c9e2c49cef42e55d89d4e1fdff6e22d26ad701 100644
--- a/src/drivers/osd/osd.h
+++ b/src/drivers/osd/atxxxx/atxxxx.h
@@ -34,7 +34,7 @@
 #pragma once
 
 /**
- * @file osd.h
+ * @file atxxxx.h
  * @author Daniele Pettenuzzo
  *
  * Driver for the ATXXXX chip on the omnibus fcu connected via SPI.
@@ -92,12 +92,12 @@
 # error This requires CONFIG_SCHED_WORKQUEUE.
 #endif
 
-class OSD : public device::SPI
+class OSDatxxxx : public device::SPI
 {
 public:
-	OSD(int bus = OSD_BUS);
+	OSDatxxxx(int bus = OSD_BUS);
 
-	virtual ~OSD();
+	virtual ~OSDatxxxx();
 
 	virtual int init();
 
@@ -196,4 +196,4 @@ private:
 /*
  * Driver 'main' command.
  */
-extern "C" __EXPORT int osd_main(int argc, char *argv[]);
+extern "C" __EXPORT int atxxxx_main(int argc, char *argv[]);
diff --git a/src/drivers/osd/osd_params.c b/src/drivers/osd/atxxxx/params.c
similarity index 84%
rename from src/drivers/osd/osd_params.c
rename to src/drivers/osd/atxxxx/params.c
index 5b6802cfd40f4486b8a1c58e42d1cd1c204092d5..9e67a7f58ffae1a32853bf6e6cd2ffcbffe7d1b7 100644
--- a/src/drivers/osd/osd_params.c
+++ b/src/drivers/osd/atxxxx/params.c
@@ -1,6 +1,6 @@
 /****************************************************************************
  *
- *   Copyright (c) 2018 PX4 Development Team. All rights reserved.
+ *   Copyright (c) 2018-2019 PX4 Development Team. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -32,14 +32,16 @@
  ****************************************************************************/
 
 /**
-* ATXXX OSD Chip
+* Enable/Disable the ATXXX OSD Chip
 *
-* Select Transmission Standard
+* Configure the ATXXXX OSD Chip (mounted on the OmnibusF4SD board) and
+* select the transmission standard.
 *
-* @value 0 NTSC
-* @value 1 PAL
+* @value 0 Disabled
+* @value 1 NTSC
+* @value 2 PAL
 *
 * @reboot_required true
 *
 */
-PARAM_DEFINE_INT32(OSD_TX_MODE, 0);
+PARAM_DEFINE_INT32(OSD_ATXXXX_CFG, 0);