diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py
index e9fe2f9..8b9605f 100644
--- a/serial/tools/miniterm.py
+++ b/serial/tools/miniterm.py
@@ -95,9 +95,9 @@
         def getkey(self):
             while True:
                 z = msvcrt.getwch()
-                if z == '\r':
-                    return '\n'
-                elif z in '\x00\x0e':    # functions keys, ignore
+                if z == u'\r':
+                    return u'\n'
+                elif z in u'\x00\x0e':    # functions keys, ignore
                     msvcrt.getwch()
                 else:
                     return z
@@ -125,8 +125,8 @@
 
         def getkey(self):
             c = self.enc_stdin.read(1)
-            if c == '\x7f':
-                c = '\b'    # map the BS key (which yields DEL) to backspace
+            if c == u'\x7f':
+                c = u'\b'    # map the BS key (which yields DEL) to backspace
             return c
 
         def cleanup(self):
@@ -277,13 +277,10 @@
 
 
 class Miniterm(object):
-    def __init__(self, port, baudrate, parity, rtscts, xonxoff, echo=False, eol='crlf', filters=()):
+    def __init__(self, serial_instance, echo=False, eol='crlf', filters=()):
         self.console = Console()
-        self.serial = serial.serial_for_url(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1)
+        self.serial = serial_instance
         self.echo = echo
-        self.dtr_state = True
-        self.rts_state = True
-        self.break_state = False
         self.raw = False
         self.input_encoding = 'UTF-8'
         self.output_encoding = 'UTF-8'
@@ -342,15 +339,15 @@
         sys.stderr.write("\n--- Settings: {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits}\n".format(
                 p=self.serial))
         sys.stderr.write('--- RTS: {:8}  DTR: {:8}  BREAK: {:8}\n'.format(
-                ('active' if self.rts_state else 'inactive'),
-                ('active' if self.dtr_state else 'inactive'),
-                ('active' if self.break_state else 'inactive')))
+                ('active' if self.serial.rts else 'inactive'),
+                ('active' if self.serial.dtr else 'inactive'),
+                ('active' if self.serial.break_condition else 'inactive')))
         try:
             sys.stderr.write('--- CTS: {:8}  DSR: {:8}  RI: {:8}  CD: {:8}\n'.format(
-                    ('active' if self.serial.getCTS() else 'inactive'),
-                    ('active' if self.serial.getDSR() else 'inactive'),
-                    ('active' if self.serial.getRI() else 'inactive'),
-                    ('active' if self.serial.getCD() else 'inactive')))
+                    ('active' if self.serial.cts else 'inactive'),
+                    ('active' if self.serial.dsr else 'inactive'),
+                    ('active' if self.serial.ri else 'inactive'),
+                    ('active' if self.serial.cd else 'inactive')))
         except serial.SerialException:
             # on RFC 2217 ports, it can happen if no modem state notification was
             # yet received. ignore this error.
@@ -370,7 +367,7 @@
         try:
             while self.alive and self._reader_alive:
                 # read all that is there or wait for one byte
-                data = self.serial.read(self.serial.inWaiting() or 1)
+                data = self.serial.read(self.serial.in_waiting or 1)
                 if data:
                     if self.raw:
                         self.console.write_bytes(data)
@@ -410,12 +407,13 @@
                 else:
                     #~ if self.raw:
                     text = c
-                    echo_text = text
                     for transformation in self.tx_transformations:
                         text = transformation.tx(text)
-                        echo_text = transformation.echo(echo_text)
                     self.serial.write(self.tx_encoder.encode(text))
                     if self.echo:
+                        echo_text = c
+                        for transformation in self.tx_transformations:
+                            echo_text = transformation.echo(echo_text)
                         self.console.write(echo_text)
         except:
             self.alive = False
@@ -451,17 +449,14 @@
         elif c in '\x08hH?':                    # CTRL+H, h, H, ? -> Show help
             sys.stderr.write(self.get_help_text())
         elif c == '\x12':                       # CTRL+R -> Toggle RTS
-            self.rts_state = not self.rts_state
-            self.serial.setRTS(self.rts_state)
-            sys.stderr.write('--- RTS {} ---\n'.format('active' if self.rts_state else 'inactive'))
+            self.serial.rts = not self.serial.rts
+            sys.stderr.write('--- RTS {} ---\n'.format('active' if self.serial.rts else 'inactive'))
         elif c == '\x04':                       # CTRL+D -> Toggle DTR
-            self.dtr_state = not self.dtr_state
-            self.serial.setDTR(self.dtr_state)
-            sys.stderr.write('--- DTR {} ---\n'.format('active' if self.dtr_state else 'inactive'))
+            self.serial.dtr = not self.serial.dtr
+            sys.stderr.write('--- DTR {} ---\n'.format('active' if self.serial.dtr else 'inactive'))
         elif c == '\x02':                       # CTRL+B -> toggle BREAK condition
-            self.break_state = not self.break_state
-            self.serial.setBreak(self.break_state)
-            sys.stderr.write('--- BREAK {} ---\n'.format('active' if self.break_state else 'inactive'))
+            self.serial.break_condition = not self.serial.break_condition
+            sys.stderr.write('--- BREAK {} ---\n'.format('active' if self.serial.break_condition else 'inactive'))
         elif c == '\x05':                       # CTRL+E -> toggle local echo
             self.echo = not self.echo
             sys.stderr.write('--- local echo {} ---\n'.format('active' if self.echo else 'inactive'))
@@ -764,27 +759,42 @@
 
 
     try:
-        miniterm = Miniterm(
+        serial_instance = serial.serial_for_url(
                 args.port,
                 args.baudrate,
-                args.parity,
+                parity=args.parity,
                 rtscts=args.rtscts,
                 xonxoff=args.xonxoff,
-                echo=args.echo,
-                eol=args.eol.lower(),
-                filters=filters,
-                )
-        miniterm.exit_character = unichr(args.exit_char)
-        miniterm.menu_character = unichr(args.menu_char)
-        miniterm.raw = args.raw
-        miniterm.set_rx_encoding(args.serial_port_encoding)
-        miniterm.set_tx_encoding(args.serial_port_encoding)
+                timeout=1,
+                do_not_open=True)
+
+        if args.dtr is not None:
+            if not args.quiet:
+                sys.stderr.write('--- forcing DTR {}\n'.format('active' if args.dtr else 'inactive'))
+            serial_instance.dtr = args.dtr
+        if args.rts is not None:
+            if not args.quiet:
+                sys.stderr.write('--- forcing RTS {}\n'.format('active' if args.rts else 'inactive'))
+            serial_instance.rts = args.rts
+
+        serial_instance.open()
     except serial.SerialException as e:
         sys.stderr.write('could not open port {}: {}\n'.format(repr(args.port), e))
         if args.develop:
             raise
         sys.exit(1)
 
+    miniterm = Miniterm(
+            serial_instance,
+            echo=args.echo,
+            eol=args.eol.lower(),
+            filters=filters)
+    miniterm.exit_character = unichr(args.exit_char)
+    miniterm.menu_character = unichr(args.menu_char)
+    miniterm.raw = args.raw
+    miniterm.set_rx_encoding(args.serial_port_encoding)
+    miniterm.set_tx_encoding(args.serial_port_encoding)
+
     if not args.quiet:
         sys.stderr.write('--- Miniterm on {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---\n'.format(
                 p=miniterm.serial))
@@ -795,17 +805,6 @@
                 key_description('\x08'),
                 ))
 
-    if args.dtr is not None:
-        if not args.quiet:
-            sys.stderr.write('--- forcing DTR {}\n'.format('active' if args.dtr else 'inactive'))
-        miniterm.serial.setDTR(args.dtr)
-        miniterm.dtr_state = args.dtr
-    if args.rts is not None:
-        if not args.quiet:
-            sys.stderr.write('--- forcing RTS {}\n'.format('active' if args.rts else 'inactive'))
-        miniterm.serial.setRTS(args.rts)
-        miniterm.rts_state = args.rts
-
     miniterm.start()
     try:
         miniterm.join(True)
