diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6a25de9e..eabc7b99 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -33,6 +33,8 @@
before disconnecting from the printer for good. This way it is ensured that
the `beforePrinterDisconnected` script or any further GCODE injected into it
will actually get sent.
+* Additional baud rates to allow for connecting can now be specified along side
+ additional serial ports via the settings dialog and the configuration file.
* Documentation improvements
### Bug Fixes
diff --git a/docs/configuration/config_yaml.rst b/docs/configuration/config_yaml.rst
index e182e6bb..dc513fa9 100644
--- a/docs/configuration/config_yaml.rst
+++ b/docs/configuration/config_yaml.rst
@@ -611,6 +611,10 @@ Use the following settings to configure the serial connection to the printer:
additionalPorts:
- /dev/myPrinterSymlink
+ # Use this to define additional baud rates to offer for connecting to serial ports. Must be a
+ # valid integer. Defaults to not set
+ - 123456
+
.. _sec-configuration-config_yaml-server:
Server
diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py
index 2e6c07ee..194e984f 100644
--- a/src/octoprint/server/api/settings.py
+++ b/src/octoprint/server/api/settings.py
@@ -84,6 +84,7 @@ def getSettings():
"timeoutSdStatus": s.getFloat(["serial", "timeout", "sdStatus"]),
"log": s.getBoolean(["serial", "log"]),
"additionalPorts": s.get(["serial", "additionalPorts"]),
+ "additionalBaudrates": s.get(["serial", "additionalBaudrates"]),
"longRunningCommands": s.get(["serial", "longRunningCommands"])
},
"folder": {
@@ -220,6 +221,7 @@ def setSettings():
if "timeoutTemperature" in data["serial"].keys(): s.setFloat(["serial", "timeout", "temperature"], data["serial"]["timeoutTemperature"])
if "timeoutSdStatus" in data["serial"].keys(): s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"])
if "additionalPorts" in data["serial"] and isinstance(data["serial"]["additionalPorts"], (list, tuple)): s.set(["serial", "additionalPorts"], data["serial"]["additionalPorts"])
+ if "additionalBaudrates" in data["serial"] and isinstance(data["serial"]["additionalBaudrates"], (list, tuple)): s.set(["serial", "additionalBaudrates"], data["serial"]["additionalBaudrates"])
if "longRunningCommands" in data["serial"] and isinstance(data["serial"]["longRunningCommands"], (list, tuple)): s.set(["serial", "longRunningCommands"], data["serial"]["longRunningCommands"])
oldLog = s.getBoolean(["serial", "log"])
diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py
index 4de437a3..86d722b9 100644
--- a/src/octoprint/settings.py
+++ b/src/octoprint/settings.py
@@ -83,6 +83,7 @@ default_settings = {
"sdStatus": 1
},
"additionalPorts": [],
+ "additionalBaudrates": [],
"longRunningCommands": ["G4", "G28", "G29", "G30", "G32", "M400", "M226"]
},
"server": {
diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js
index 0c5d4179..2bbe5b74 100644
--- a/src/octoprint/static/js/app/viewmodels/settings.js
+++ b/src/octoprint/static/js/app/viewmodels/settings.js
@@ -131,6 +131,7 @@ $(function() {
self.serial_timeoutSdStatus = ko.observable(undefined);
self.serial_log = ko.observable(undefined);
self.serial_additionalPorts = ko.observable(undefined);
+ self.serial_additionalBaudrates = ko.observable(undefined);
self.serial_longRunningCommands = ko.observable(undefined);
self.folder_uploads = ko.observable(undefined);
@@ -430,6 +431,7 @@ $(function() {
self.serial_timeoutSdStatus(response.serial.timeoutSdStatus);
self.serial_log(response.serial.log);
self.serial_additionalPorts(response.serial.additionalPorts.join("\n"));
+ self.serial_additionalBaudrates(response.serial.additionalBaudrates.join(", "));
self.serial_longRunningCommands(response.serial.longRunningCommands.join(", "));
self.folder_uploads(response.folder.uploads);
@@ -518,6 +520,7 @@ $(function() {
"timeoutSdStatus": self.serial_timeoutSdStatus(),
"log": self.serial_log(),
"additionalPorts": commentableLinesToArray(self.serial_additionalPorts()),
+ "additionalBaudrates": _.map(splitTextToArray(self.serial_additionalBaudrates(), ",", true, function(item) { return !isNaN(parseInt(item)); }), function(item) { return parseInt(item); }),
"longRunningCommands": splitTextToArray(self.serial_longRunningCommands(), ",", true)
},
"folder": {
diff --git a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2
index 2f4e00d0..e6b0e3e0 100644
--- a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2
+++ b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2
@@ -84,4 +84,11 @@
{{ _('Use this to define additional glob patterns matching serial ports to list for connecting against, e.g. /dev/ttyAMA*. One entry per line.')|format(glob_url="http://docs.python.org/2/library/glob.html") }}
+
123456. Comma separated.')|format(glob_url="http://docs.python.org/2/library/glob.html") }}
+