diff --git a/CHANGES.rst b/CHANGES.rst
index 15427ef..7eb2a1c 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -522,6 +522,7 @@
 - [Patch pyserial:34] Improvements to port_publisher.py example
 - [Feature pyserial:39] Support BlueTooth serial port discovery on Linux
 - Use setuptools if aviliable, fall back to distutils if unaviliable.
+- miniterm: changed command line options, translations, support encodings
 
 Bugfixes:
 
diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py
index 792ca91..e6af966 100644
--- a/serial/tools/miniterm.py
+++ b/serial/tools/miniterm.py
@@ -315,12 +315,8 @@
             self.receiver_thread.join()
 
     def dump_port_settings(self):
-        sys.stderr.write("\n--- Settings: {}  {},{},{},{}\n".format(
-                self.serial.portstr,
-                self.serial.baudrate,
-                self.serial.bytesize,
-                self.serial.parity,
-                self.serial.stopbits))
+        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'),
@@ -598,10 +594,11 @@
             help="set baud rate, default: %(default)s",
             default=DEFAULT_BAUDRATE)
 
-    group = parser.add_argument_group("Port settings")
+    group = parser.add_argument_group("port settings")
 
     group.add_argument("--parity",
             choices=['N', 'E', 'O', 'S', 'M'],
+            type=lambda c: c.upper(),
             help="set parity, one of {N E O S M}, default: N",
             default='N')
 
@@ -625,7 +622,7 @@
             help="set initial DTR line state (possible values: 0, 1)",
             default=DEFAULT_DTR)
 
-    group = parser.add_argument_group("Data handling")
+    group = parser.add_argument_group("data handling")
 
     group.add_argument("-e", "--echo",
             action="store_true",
@@ -635,34 +632,28 @@
     group.add_argument("--encoding",
             dest="serial_port_encoding",
             metavar="CODEC",
-            help="Set the encoding for the serial port (default: %(default)s",
+            help="set the encoding for the serial port, default: %(default)s",
             default='UTF-8')
 
     group.add_argument("-t", "--transformation",
             dest="transformations",
             action="append",
             metavar="NAME",
-            help="Add text transformation",
+            help="add text transformation",
             default=[])
 
-    eol_group = group.add_mutually_exclusive_group()
-
-    eol_group.add_argument("--cr",
-            action="store_true",
-            help="do not send CR+LF, send CR only",
-            default=False)
-
-    eol_group.add_argument("--lf",
-            action="store_true",
-            help="do not send CR+LF, send LF only",
-            default=False)
+    group.add_argument("--eol",
+            choices=['CR', 'LF', 'CRLF'],
+            type=lambda c: c.upper(),
+            help="end of line mode",
+            default='CRLF')
 
     group.add_argument("--raw",
             action="store_true",
             help="Do no apply any encodings/transformations",
             default=False)
 
-    group = parser.add_argument_group("Hotkeys")
+    group = parser.add_argument_group("hotkeys")
 
     group.add_argument("--exit-char",
             type=int,
@@ -676,7 +667,7 @@
             default=0x14  # Menu: CTRL+T
             )
 
-    group = parser.add_argument_group("Diagnostics")
+    group = parser.add_argument_group("diagnostics")
 
     group.add_argument("-q", "--quiet",
             action="store_true",
@@ -711,12 +702,7 @@
     else:
         transformations = ['default']
 
-    if args.cr:
-        transformations.append('cr')
-    elif args.lf:
-        transformations.append('lf')
-    else:
-        transformations.append('crlf')
+    transformations.append(args.eol.lower())
 
     try:
         miniterm = Miniterm(
@@ -740,13 +726,8 @@
         sys.exit(1)
 
     if not args.quiet:
-        sys.stderr.write('--- Miniterm on {}: {},{},{},{} ---\n'.format(
-                miniterm.serial.portstr,
-                miniterm.serial.baudrate,
-                miniterm.serial.bytesize,
-                miniterm.serial.parity,
-                miniterm.serial.stopbits,
-                ))
+        sys.stderr.write('--- Miniterm on {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---\n'.format(
+                p=miniterm.serial))
         sys.stderr.write('--- Quit: {} | Menu: {} | Help: {} followed by {} ---\n'.format(
                 key_description(miniterm.exit_character),
                 key_description(miniterm.menu_character),
