aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--klippy/serialhdl.py3
-rw-r--r--klippy/util.py6
2 files changed, 8 insertions, 1 deletions
diff --git a/klippy/serialhdl.py b/klippy/serialhdl.py
index 7120c43c..2a539cf1 100644
--- a/klippy/serialhdl.py
+++ b/klippy/serialhdl.py
@@ -6,7 +6,7 @@
import time, logging, threading
import serial
-import msgproto, chelper
+import msgproto, chelper, util
class SerialReader:
BITS_PER_BYTE = 10.
@@ -298,6 +298,7 @@ class SerialBootStrap:
# Attempt to place an AVR stk500v2 style programmer into normal mode
def stk500v2_leave(ser, reactor):
logging.debug("Starting stk500v2 leave programmer sequence")
+ util.clear_hupcl(ser.fileno())
origbaud = ser.baudrate
# Request a dummy speed first as this seems to help reset the port
ser.baudrate = 2400
diff --git a/klippy/util.py b/klippy/util.py
index caac827e..6bbfd9af 100644
--- a/klippy/util.py
+++ b/klippy/util.py
@@ -16,6 +16,12 @@ def set_nonblock(fd):
fcntl.fcntl(fd, fcntl.F_SETFL
, fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
+# Clear HUPCL flag
+def clear_hupcl(fd):
+ attrs = termios.tcgetattr(fd)
+ attrs[2] = attrs[2] & ~termios.HUPCL
+ termios.tcsetattr(fd, termios.TCSADRAIN, attrs)
+
# Support for creating a pseudo-tty for emulating a serial port
def create_pty(ptyname):
mfd, sfd = pty.openpty()