diff --git a/.gitignore b/.gitignore
index a9fe99662eec3becc81698c7500a256e1eaa49fc..25f0ef15fd655ebb77a6d16c88b14d2a1e4003d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
 *.pyc
 *.tlog
 *.tlog.raw
+*.vbrain
 *.zip
 .*.swo
 .*.swp
diff --git a/mk/VRBRAIN/ROMFS/init.d/rc.APM b/mk/VRBRAIN/ROMFS/init.d/rc.APM
new file mode 100644
index 0000000000000000000000000000000000000000..d55d21b58fed6eb748c3ecbc682408a534bc0c5c
--- /dev/null
+++ b/mk/VRBRAIN/ROMFS/init.d/rc.APM
@@ -0,0 +1,148 @@
+#!nsh
+
+# APM startup script for NuttX on VRBRAIN
+
+# To disable APM startup add a /fs/microsd/APM/nostart file
+
+# check for an old file called APM, caused by 
+# a bug in an earlier firmware release
+if [ -f /fs/microsd/APM ]
+then
+   echo "[APM] APM file found - renaming"
+   mv /fs/microsd/APM /fs/microsd/APM.old
+fi
+
+if [ -f /fs/microsd/APM/nostart ]
+then
+   echo "[APM] APM/nostart found - skipping APM startup"
+   sh /etc/init.d/rc.error
+fi
+
+# mount binfs so we can find the built-in apps
+if [ -f /bin/reboot ]
+then
+	echo "[APM] binfs already mounted"
+else
+	echo "[APM] Mounting binfs"
+    if mount -t binfs /dev/null /bin
+    then
+        echo "[APM] binfs mounted OK"
+    else
+        sh /etc/init.d/rc.error
+    fi
+fi
+
+if rm /fs/microsd/APM/boot.log
+then
+   echo "[APM] Removed old boot.log"
+fi
+set logfile /fs/microsd/APM/BOOT.LOG
+
+if [ ! -f /bin/ArduPilot ]
+then
+   echo "[APM] /bin/ArduPilot not found"
+   sh /etc/init.d/rc.error
+fi
+
+if mkdir /fs/microsd/APM > /dev/null
+then
+     echo "[APM] Created APM directory"
+fi
+
+echo "[APM] Starting UORB"
+if uorb start
+then
+    echo "[APM] UORB started OK"
+else
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APM] Starting ADC"
+if adc start
+then
+    echo "[APM] ADC started OK"
+else
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APM] Starting APM sensors"
+if ms5611 start
+then
+    echo "[APM] MS5611 started OK"
+else
+    echo "[APM] MS5611 start failed"
+    sh /etc/init.d/rc.error
+fi
+
+if hmc5883 start
+then
+    echo "[APM] HMC5883 started OK"
+else
+    echo "[APM] HMC5883 start failed"
+    sh /etc/init.d/rc.error
+fi
+
+if mpu6000 start
+then
+    echo "[APM] MPU6000 started OK"
+else
+    echo "[APM] MPU6000 start failed"
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APM] Starting MTD driver"
+if mtd start /fs/mtd
+then
+    echo "[APM] MTD driver started OK"
+else
+    echo "[APM] MTD driver start failed"
+    sh /etc/init.d/rc.error           
+fi
+
+echo "[APM] MTD driver read test"
+if mtd readtest /fs/mtd
+then
+    echo "[APM] MTD driver readtest OK"
+else
+    echo "[APM] MTD driver failed to read"
+    sh /etc/init.d/rc.error           
+fi
+
+echo "[APM] Starting VROUTPUT driver"
+vroutput mode_pwm
+#if vroutput mode_pwm
+#then
+#    echo "[APM] VROUTPUT driver started OK"
+#else
+#    echo "[APM] VROUTPUT driver start failed"
+#    sh /etc/init.d/rc.error           
+#fi
+
+echo "[APM] Starting VRINPUT driver"
+vrinput start
+#if vrinput start
+#then
+#    echo "[APM] VRINPUT driver started OK"
+#else
+#    echo "[APM] VRINPUT driver start failed"
+#    sh /etc/init.d/rc.error           
+#fi
+
+set sketch NONE
+set deviceA /dev/ttyACM0
+set deviceC /dev/ttyS2
+
+echo "[APM] Starting ArduPilot" $deviceA $deviceC
+if ArduPilot -d $deviceA -d2 $deviceC start
+then
+    echo "[APM] ArduPilot started OK"
+else
+    echo "[APM] ArduPilot start failed"
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APM] Exiting from nsh shell"
+exit
+
+echo "[APM] Script finished"
+
diff --git a/mk/VRBRAIN/ROMFS/init.d/rc.APMNS b/mk/VRBRAIN/ROMFS/init.d/rc.APMNS
new file mode 100644
index 0000000000000000000000000000000000000000..c90a5ad8da403cfc7f00a30c82277025ca6724d0
--- /dev/null
+++ b/mk/VRBRAIN/ROMFS/init.d/rc.APMNS
@@ -0,0 +1,121 @@
+#!nsh
+
+# APM startup script for NuttX on VRBRAIN
+
+# mount binfs so we can find the built-in apps
+if [ -f /bin/reboot ]
+then
+	echo "[APMNS] binfs already mounted"
+else
+	echo "[APMNS] Mounting binfs"
+    if mount -t binfs /dev/null /bin
+    then
+        echo "[APMNS] binfs mounted OK"
+    else
+        sh /etc/init.d/rc.error
+    fi
+fi
+
+if [ ! -f /bin/ArduPilot ]
+then
+   echo "[APMNS] /bin/ArduPilot not found"
+   sh /etc/init.d/rc.error
+fi
+
+echo "[APMNS] Starting UORB"
+if uorb start
+then
+    echo "[APMNS] UORB started OK"
+else
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APMNS] Starting ADC"
+if adc start
+then
+    echo "[APMNS] ADC started OK"
+else
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APMNS] Starting APM sensors"
+if ms5611 start
+then
+    echo "[APMNS] MS5611 started OK"
+else
+    echo "[APMNS] MS5611 start failed"
+    sh /etc/init.d/rc.error
+fi
+
+if hmc5883 start
+then
+    echo "[APMNS] HMC5883 started OK"
+else
+    echo "[APMNS] HMC5883 start failed"
+    sh /etc/init.d/rc.error
+fi
+
+if mpu6000 start
+then
+    echo "[APMNS] MPU6000 started OK"
+else
+    echo "[APMNS] MPU6000 start failed"
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APMNS] Starting MTD driver"
+if mtd start /fs/mtd
+then
+    echo "[APMNS] MTD driver started OK"
+else
+    echo "[APMNS] MTD driver start failed"
+    sh /etc/init.d/rc.error           
+fi
+
+echo "[APMNS] MTD driver read test"
+if mtd readtest /fs/mtd
+then
+    echo "[APMNS] MTD driver readtest OK"
+else
+    echo "[APMNS] MTD driver failed to read"
+    sh /etc/init.d/rc.error           
+fi
+
+echo "[APMNS] Starting VROUTPUT driver"
+vroutput mode_pwm
+#if vroutput mode_pwm
+#then
+#    echo "[APMNS] VROUTPUT driver started OK"
+#else
+#    echo "[APMNS] VROUTPUT driver start failed"
+#    sh /etc/init.d/rc.error           
+#fi
+
+echo "[APMNS] Starting VRINPUT driver"
+vrinput start
+#if vrinput start
+#then
+#    echo "[APMNS] VRINPUT driver started OK"
+#else
+#    echo "[APMNS] VRINPUT driver start failed"
+#    sh /etc/init.d/rc.error           
+#fi
+
+set sketch NONE
+set deviceA /dev/ttyACM0
+set deviceC /dev/ttyS2
+
+echo "[APMNS] Starting ArduPilot" $deviceA $deviceC
+if ArduPilot -d $deviceA -d2 $deviceC start
+then
+    echo "[APMNS] ArduPilot started OK"
+else
+    echo "[APMNS] ArduPilot start failed"
+    sh /etc/init.d/rc.error
+fi
+
+echo "[APMNS] Exiting from nsh shell"
+exit
+
+echo "[APMNS] Script finished"
+
diff --git a/mk/VRBRAIN/ROMFS/init.d/rc.error b/mk/VRBRAIN/ROMFS/init.d/rc.error
new file mode 100644
index 0000000000000000000000000000000000000000..d1c195daa4045a33754560cbfc9c87526952e782
--- /dev/null
+++ b/mk/VRBRAIN/ROMFS/init.d/rc.error
@@ -0,0 +1,14 @@
+echo "Error in startup"
+
+tone_alarm MNCC
+
+
+
+
+
+
+nshterm /dev/ttyACM0 &
+sleep 1
+nshterm /dev/ttyS0 &
+sleep 1
+exit
diff --git a/mk/VRBRAIN/ROMFS/init.d/rcS b/mk/VRBRAIN/ROMFS/init.d/rcS
new file mode 100644
index 0000000000000000000000000000000000000000..303159a99dcf30ed973120845e7193064c7bbe92
--- /dev/null
+++ b/mk/VRBRAIN/ROMFS/init.d/rcS
@@ -0,0 +1,97 @@
+#!nsh
+#
+# VRBRAIN startup script.
+#
+# This script is responsible for:
+#
+# - mounting the microSD card (if present)
+# - running the user startup script from the microSD card (if present)
+# - detecting the configuration of the system and picking a suitable
+#   startup script to continue with
+#
+# Note: DO NOT add configuration-specific commands to this script;
+#       add them to the per-configuration scripts instead.
+#
+
+#
+# Default to auto-start mode.  An init script on the microSD card
+# can change this to prevent automatic startup of the flight script.
+#
+set MODE autostart
+set USB autoconnect
+
+#
+# Try to mount the microSD card.
+#
+echo "[init] looking for microSD..."
+if mount -t vfat /dev/mmcsd0 /fs/microsd
+then
+	echo "[init] card mounted at /fs/microsd"
+        set HAVE_MICROSD 1
+	# Start playing the startup tune
+	tone_alarm start
+else
+	echo "[init] no microSD card found"
+        set HAVE_MICROSD 0
+	# Play SOS
+	tone_alarm 2
+fi
+
+#
+# Look for an init script on the microSD card.
+#
+# To prevent automatic startup in the current flight mode,
+# the script should set MODE to some other value.
+#
+if [ -f /fs/microsd/etc/rc ]
+then
+	echo "[init] reading /fs/microsd/etc/rc"
+	sh /fs/microsd/etc/rc
+fi
+# Also consider rc.txt files
+if [ -f /fs/microsd/etc/rc.txt ]
+then
+	echo "[init] reading /fs/microsd/etc/rc.txt"
+	sh /fs/microsd/etc/rc.txt
+fi
+
+#
+# Check for USB host
+#
+if [ $USB != autoconnect ]
+then
+	echo "[init] not connecting USB"
+else
+	if sercon
+	then
+		echo "[init] USB interface connected"
+	else
+		echo "[init] No USB connected"
+	fi
+fi
+
+if [ $HAVE_MICROSD == 1 ]
+then
+	if [ ! -f /fs/microsd/APM/nostart ]
+	then
+		if [ -f /etc/init.d/rc.APM ]
+		then
+			echo "[init] Running rc.APM"
+			# if APM startup is successful then nsh will exit
+			sh /etc/init.d/rc.APM
+		else
+	        nshterm /dev/ttyACM0 &
+		fi
+	else
+        nshterm /dev/ttyACM0 &
+	fi
+else
+	if [ -f /etc/init.d/rc.APMNS ]
+	then
+		echo "[init] Running rc.APM without SD"
+		# if APM startup is successful then nsh will exit
+		sh /etc/init.d/rc.APMNS
+	else
+        nshterm /dev/ttyACM0 &
+	fi
+fi