diff --git a/src/FactSystem/ParameterLoader.cc b/src/FactSystem/ParameterLoader.cc
index 165ef96..dcc65db 100644
--- a/src/FactSystem/ParameterLoader.cc
+++ b/src/FactSystem/ParameterLoader.cc
@@ -29,6 +29,7 @@
 #include "QGCLoggingCategory.h"
 #include "QGCApplication.h"
 #include "QGCMessageBox.h"
+#include "UASMessageHandler.h"
 
 #include <QFile>
 #include <QDebug>
@@ -752,14 +753,37 @@ void ParameterLoader::_checkInitialLoadComplete(void)
         }
     }
     
+    // Check for any errors during vehicle boot
+    
+    UASMessageHandler* msgHandler = UASMessageHandler::instance();
+    if (msgHandler->getErrorCountTotal()) {
+        QString errors;
+        
+        msgHandler->lockAccess();
+        foreach (UASMessage* msg, msgHandler->messages()) {
+            if (msg->severityIsError()) {
+                errors += msg->getText();
+                errors += "\n";
+            }
+        }
+        msgHandler->unlockAccess();
+        
+        QGCMessageBox::critical("Vehicle startup errors",
+                                QString("Errors were detected during vehicle startup:\n"
+                                        "%1"
+                                        "You should resolve these prior to flight.").arg(errors));
+    }
+    
+    // Warn of parameter load failure
+    
     if (initialLoadFailures) {
         QGCMessageBox::critical("Parameter Load Failure",
-                                QString("QGroundControl was unable to retrieve the full set of parameters from the vehicle. "
-                                        "This will cause QGroundControl to be unable to display it's full user interface. "
-                                        "This usually indicates an error in the vehicle's firmware. "
-                                        "Please upgrade your firmware to the latest version if possible. "
-                                        "If that doesn't work, notify the firmware developers of this error. "
-                                        "The following parameter indices could not be loaded after the maximum number of retries: %1.").arg(indexList));
+                                "QGroundControl was unable to retrieve the full set of parameters from the vehicle. "
+                                "This will cause QGroundControl to be unable to display it's full user interface. "
+                                "If you are using modified firmware, you may need to resolve any vehicle startup errors to resolve the issue. "
+                                "If you are using standard firmware, you may need to upgrade to a newer version to resolve the issue.");
+        qCWarning(ParameterLoaderLog) << "The following parameter indices could not be loaded after the maximum number of retries: " << indexList;
+
     } else {
         // No failed parameters, ok to signal ready
         _parametersReady = true;
@@ -767,4 +791,4 @@ void ParameterLoader::_checkInitialLoadComplete(void)
         _setupGroupMap();
         emit parametersReady();
     }
-}
\ No newline at end of file
+}
diff --git a/src/uas/UASMessageHandler.cc b/src/uas/UASMessageHandler.cc
index db2b1be..69ddbfa 100644
--- a/src/uas/UASMessageHandler.cc
+++ b/src/uas/UASMessageHandler.cc
@@ -38,12 +38,26 @@ UASMessage::UASMessage(int componentid, int severity, QString text)
     _text     = text;
 }
 
+bool UASMessage::severityIsError()
+{
+    switch (_severity) {
+        case MAV_SEVERITY_EMERGENCY:
+        case MAV_SEVERITY_ALERT:
+        case MAV_SEVERITY_CRITICAL:
+        case MAV_SEVERITY_ERROR:
+            return true;
+        default:
+            return false;
+    }
+}
+
 IMPLEMENT_QGC_SINGLETON(UASMessageHandler, UASMessageHandler)
 
 UASMessageHandler::UASMessageHandler(QObject *parent)
     : QGCSingleton(parent)
     , _activeUAS(NULL)
     , _errorCount(0)
+    , _errorCountTotal(0)
     , _warningCount(0)
     , _normalCount(0)
 {
@@ -112,6 +126,7 @@ void UASMessageHandler::handleTextMessage(int, int compId, int severity, QString
         //Use set RGB values from given color from QGC
         style = QString("color: rgb(%1, %2, %3); font-weight:bold").arg(QGC::colorRed.red()).arg(QGC::colorRed.green()).arg(QGC::colorRed.blue());
         _errorCount++;
+        _errorCountTotal++;
         break;
     case MAV_SEVERITY_NOTICE:
     case MAV_SEVERITY_WARNING:
@@ -163,22 +178,21 @@ void UASMessageHandler::handleTextMessage(int, int compId, int severity, QString
     message->_setFormatedText(QString("<p style=\"color:#CCCCCC\">[%2 - COMP:%3]<font style=\"%1\">%4 %5</font></p>").arg(style).arg(dateString).arg(compId).arg(severityText).arg(text));
     _messages.append(message);
     int count = _messages.count();
-    switch (severity)
-    {
-    case MAV_SEVERITY_EMERGENCY:
-    case MAV_SEVERITY_ALERT:
-    case MAV_SEVERITY_CRITICAL:
-    case MAV_SEVERITY_ERROR:
+    if (message->severityIsError()) {
         _latestError = severityText + " " + text;
-        break;
-    default:
-        break;
     }
     _mutex.unlock();
     emit textMessageReceived(message);
     emit textMessageCountChanged(count);
 }
 
+int UASMessageHandler::getErrorCountTotal() {
+    _mutex.lock();
+    int c = _errorCountTotal;
+    _mutex.unlock();
+    return c;
+}
+
 int UASMessageHandler::getErrorCount() {
     _mutex.lock();
     int c = _errorCount;
diff --git a/src/uas/UASMessageHandler.h b/src/uas/UASMessageHandler.h
index da1d2b4..082ec07 100644
--- a/src/uas/UASMessageHandler.h
+++ b/src/uas/UASMessageHandler.h
@@ -63,6 +63,11 @@ public:
      * @brief Get (html) formatted text (in the form: "[11:44:21.137 - COMP:50] Info: [pm] sending list")
      */
     QString getFormatedText()   { return _formatedText; }
+    /**
+     * @return true: This message is a of a severity which is considered an error
+     */
+    bool severityIsError();
+    
 private:
     UASMessage(int componentid, int severity, QString text);
     void _setFormatedText(const QString formatedText) { _formatedText = formatedText; }
@@ -100,6 +105,10 @@ public:
      */
     int getErrorCount();
     /**
+     * @brief Get error message count (never reset)
+     */
+    int getErrorCountTotal();
+    /**
      * @brief Get warning message count (Resets count once read)
      */
     int getWarningCount();
@@ -142,6 +151,7 @@ private:
     QVector<UASMessage*> _messages;
     QMutex _mutex;
     int _errorCount;
+    int _errorCountTotal;
     int _warningCount;
     int _normalCount;
     QString _latestError;