From 7b9e3efea14e1b63fb14b4dd942e0e36f363c653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 18 Mar 2015 12:08:21 +0100 Subject: [PATCH] Removed /dev/ttyAMA* from serial ports added by default to connection list Added additional ports configuration to settings to make it easier for people who actually need that port in the selection to add it back. --- CHANGELOG.md | 4 ++++ src/octoprint/server/api/settings.py | 4 +++- src/octoprint/static/js/app/viewmodels/settings.js | 11 ++++++++++- .../dialogs/settings/serialconnection.jinja2 | 7 +++++++ src/octoprint/util/comm.py | 1 - 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a491e78..44cc0555 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -108,6 +108,10 @@ * OctoPrint server should no longer hang when big changes in the system time happen, e.g. after first contact to an NTP server on a Raspberry Pi image. Achieved through monkey patching Tornado with [this PR](https://github.com/tornadoweb/tornado/pull/1290). +* Serial ports matching ``/dev/ttyAMA*`` are not anymore listed by default (this was the reason for a lot of people + attempting to connect to their printer on their Raspberry Pis, on which ``/dev/ttyAMA0`` is the OS's serial console + by default). Added configuration of additional ports to the Serial Connection section in the Settings to make it easier + for those people who do indeed have their printer connected to ``/dev/ttyAMA0``. ### Bug Fixes diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py index 6da2cc9a..42e72bbd 100644 --- a/src/octoprint/server/api/settings.py +++ b/src/octoprint/server/api/settings.py @@ -76,7 +76,8 @@ def getSettings(): "timeoutCommunication": s.getFloat(["serial", "timeout", "communication"]), "timeoutTemperature": s.getFloat(["serial", "timeout", "temperature"]), "timeoutSdStatus": s.getFloat(["serial", "timeout", "sdStatus"]), - "log": s.getBoolean(["serial", "log"]) + "log": s.getBoolean(["serial", "log"]), + "additionalPorts": s.get(["serial", "additionalPorts"]) }, "folder": { "uploads": s.getBaseFolder("uploads"), @@ -183,6 +184,7 @@ def setSettings(): if "timeoutCommunication" in data["serial"].keys(): s.setFloat(["serial", "timeout", "communication"], data["serial"]["timeoutCommunication"]) 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"]) oldLog = s.getBoolean(["serial", "log"]) if "log" in data["serial"].keys(): s.setBoolean(["serial", "log"], data["serial"]["log"]) diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index 30da456e..85afe67e 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -85,6 +85,7 @@ $(function() { self.serial_timeoutTemperature = ko.observable(undefined); self.serial_timeoutSdStatus = ko.observable(undefined); self.serial_log = ko.observable(undefined); + self.serial_additionalPorts = ko.observable(undefined); self.folder_uploads = ko.observable(undefined); self.folder_timelapse = ko.observable(undefined); @@ -220,6 +221,7 @@ $(function() { self.serial_timeoutTemperature(response.serial.timeoutTemperature); self.serial_timeoutSdStatus(response.serial.timeoutSdStatus); self.serial_log(response.serial.log); + self.serial_additionalPorts(response.serial.additionalPorts.join("\n")); self.folder_uploads(response.folder.uploads); self.folder_timelapse(response.folder.timelapse); @@ -290,7 +292,14 @@ $(function() { "timeoutCommunication": self.serial_timeoutCommunication(), "timeoutTemperature": self.serial_timeoutTemperature(), "timeoutSdStatus": self.serial_timeoutSdStatus(), - "log": self.serial_log() + "log": self.serial_log(), + "additionalPorts": _.filter( + _.map( + self.serial_additionalPorts().split("\n"), + function(item) { return (item) ? item.trim() : ""; } + ), + function(item) { return item && !_.startsWith(item, "#"); } + ) }, "folder": { "uploads": self.folder_uploads(), diff --git a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 index 234aad02..13b7177d 100644 --- a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 +++ b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 @@ -70,4 +70,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") }} +
+
diff --git a/src/octoprint/util/comm.py b/src/octoprint/util/comm.py index 4a2ee588..7a970f30 100644 --- a/src/octoprint/util/comm.py +++ b/src/octoprint/util/comm.py @@ -46,7 +46,6 @@ def serialList(): baselist = baselist \ + glob.glob("/dev/ttyUSB*") \ + glob.glob("/dev/ttyACM*") \ - + glob.glob("/dev/ttyAMA*") \ + glob.glob("/dev/tty.usb*") \ + glob.glob("/dev/cu.*") \ + glob.glob("/dev/cuaU*") \