Commit e0215a70 authored by Don Gagne's avatar Don Gagne

Stupid proof Linux serial port use

parent f9874376
......@@ -188,6 +188,45 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
#endif
#ifdef Q_OS_LINUX
#ifndef __mobile__
if (getuid() == 0) {
QMessageBox msgBox;
msgBox.setInformativeText("You are runnning QGroundControl as root. "
"You should not do this since it will cause other issues with QGroundControl. "
"QGroundControl will now exit. "
"If you are having serial port issues, execute the following commands to fix most serial port issues:\n"
"sudo usermod -a -G dialout $USER\n"
"sudo apt-get remove modemmanager");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.exec();
_exit(0);
}
// Determine if we have the correct permissions to access USB serial devices
QFile permFile("/etc/group");
if(permFile.open(QIODevice::ReadOnly)) {
while(!permFile.atEnd()) {
QString line = permFile.readLine();
if (line.contains("dialout") && !line.contains(getenv("USER"))) {
QMessageBox msgBox;
msgBox.setInformativeText("The current user does not have the correct permissions to access serial devices. "
"You should also remove modemmanager since it also interferes. "
"Execute the following commands to fix these issues:\n"
"sudo usermod -a -G dialout $USER\n"
"sudo apt-get remove modemmanager");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.exec();
break;
}
}
permFile.close();
}
#endif
#endif
// Parse command line options
bool fClearSettingsOptions = false; // Clear stored settings
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment