diff --git a/src/main/io/serial.c b/src/main/io/serial.c index bf7a229f83..ddfbd87418 100644 --- a/src/main/io/serial.c +++ b/src/main/io/serial.c @@ -346,13 +346,14 @@ bool isSerialConfigValid(serialConfig_t *serialConfigToCheck) (portConfig->identifier == SERIAL_PORT_SOFTSERIAL2)) { // Ensure MSP or serial RX is not enabled on soft serial ports serialConfigToCheck->portConfigs[index].functionMask &= ~(FUNCTION_MSP | FUNCTION_RX_SERIAL); - // Ensure that the baud rate on soft serial ports is limited to 19200 +#ifndef USE_OVERRIDE_SOFTSERIAL_BAUDRATE serialConfigToCheck->portConfigs[index].gps_baudrateIndex = constrain(portConfig->gps_baudrateIndex, BAUD_AUTO, BAUD_19200); serialConfigToCheck->portConfigs[index].blackbox_baudrateIndex = constrain(portConfig->blackbox_baudrateIndex, BAUD_AUTO, BAUD_19200); serialConfigToCheck->portConfigs[index].telemetry_baudrateIndex = constrain(portConfig->telemetry_baudrateIndex, BAUD_AUTO, BAUD_19200); - } #endif + } +#endif // USE_SOFTSERIAL if (portConfig->functionMask & FUNCTION_MSP) { mspPortCount++; @@ -436,10 +437,10 @@ serialPort_t *openSerialPort( serialPort_t *serialPort = NULL; -#ifdef USE_SOFTSERIAL +#if defined(USE_SOFTSERIAL) && !defined(USE_OVERRIDE_SOFTSERIAL_BAUDRATE) if (((identifier == SERIAL_PORT_SOFTSERIAL1) || (identifier == SERIAL_PORT_SOFTSERIAL2)) && (baudRate > 19200)) { - // Limit baud rate on soft serial ports - baudRate = 19200; + // Don't continue if baud rate requested is higher then the limit set on soft serial ports + return NULL; } #endif