1======================== 2 pySerial Release Notes 3======================== 4 5Version 1.0 13 Feb 2002 6--------------------------- 7- First public release. 8- Split from the pybsl application (see http://mspgcc.sourceforge.net) 9 10New Features: 11 12- Added Jython support 13 14 15Version 1.1 14 Feb 2002 16--------------------------- 17Bugfixes: 18 19- Win32, when not specifying a timeout 20- Typos in the Docs 21 22New Features: 23 24- added ``serialutil`` which provides a base class for the ``Serial`` 25 objects. 26 27- ``readline``, ``readlines``, ``writelines`` and ``flush`` are now supported 28 see README.txt for deatils. 29 30 31Version 1.11 14 Feb 2002 32--------------------------- 33Same as 1.1 but added missing files. 34 35 36Version 1.12 18 Feb 2002 37--------------------------- 38Removed unneded constants to fix RH7.x problems. 39 40 41Version 1.13 09 Apr 2002 42--------------------------- 43Added alternate way for enabling rtscts (CNEW_RTSCTS is tried too) 44If port opening fails, a ``SerialException`` is raised on all platforms 45 46 47Version 1.14 29 May 2002 48--------------------------- 49Added examples to archive 50Added non-blocking mode for ``timeout=0`` (tnx Mat Martineau) 51 52Bugfixes: 53 54- win32 does now return the remaining characters on timeout 55 56 57Version 1.15 04 Jun 2002 58--------------------------- 59Bugfixes (win32): 60 61- removed debug messages 62- compatibility to win9x improved 63 64 65Version 1.16 02 Jul 2002 66--------------------------- 67Added implementation of RI and corrected RTS/CTS on Win32 68 69 70Version 1.17 03 Jul 2002 71--------------------------- 72Silly mix of two versions in win32 code corrected 73 74 75Version 1.18 06 Dec 2002 76--------------------------- 77Bugfixes (general): 78 79- remove the mapping of flush to the destructive flushOutput as 80 this is not the expected behaviour. 81- readline: EOL character for lines can be chosen idea by 82 John Florian. 83 84Bugfixes (posix): 85 86- cygwin port numbering fixed 87- test each and every constant for it's existence in termios module, 88 use default if not existent (fix for Bug item #640214) 89- wrong exception on nonexistent ports with /dev file. bug report 90 by Louis Cordier 91 92Bugfixes (win32): 93 94- RTS/CTS handling as suggested in Bug #635072 95- bugfix of timeouts brought up by Markus Hoffrogge 96 97 98Version 1.19 19 Mar 2003 99--------------------------- 100Bugfixes (posix): 101 102- removed ``dgux`` entry which actually had a wrong comment and is 103 probably not in use anywhere. 104 105Bugfixes (win32): 106 107- added ``int()`` conversion, [Bug 702120] 108- remove code to set control lines in close method of win32 109 version. [Bug 669625] 110 111 112Version 1.20 28 Aug 2003 113--------------------------- 114- Added ``serial.device()`` for all platforms 115 116Bugfixes (win32): 117 118- don't recreate overlapped structures and events on each 119 read/write. 120- don't set unneeded event masks. 121- don't use DOS device names for ports > 9. 122- remove send timeout (it's not used in the linux impl. anyway). 123 124 125Version 1.21 30 Sep 2003 126--------------------------- 127Bugfixes (win32): 128 129- name for COM10 was not built correctly, found by Norm Davis. 130 131Bugfixes (examples): 132 133- small change in ``miniterm.py`` that should mage it run on cygwin, 134 [Bug 809904] submitted by Rolf Campbell. 135 136 137Version 2.0b1 1 Oct 2003 138--------------------------- 139Transition to the Python 2.0 series: 140 141- New implementation only supports Python 2.2+, backwards compatibility 142 should be maintained almost everywhere. 143 The OS handles (like the ``hComPort`` or ``fd`` attribute) were prefixed 144 with an underscore. The different names stay, as anyone that uses one of 145 these has to write platform specific code anyway. 146- Common base class ``serialutil.SerialBase`` for all implementations. 147- ``PARITY_NONE``, ``PARITY_EVEN``, ``PARITY_ODD`` constants changed and all 148 these constants moved to ``serialutil.py`` (still available as 149 ``serial.PARITY_NONE`` etc. and they should be used that way) 150- Added ``serial.PARITY_NAMES`` (implemented in ``serialutil.PARITY_NAMES``). 151 This dictionary can be used to convert parity constants to meaningful 152 strings. 153- Each Serial class and instance has a list of supported values: 154 ``BAUDRATES``, ``BYTESIZES``, ``PARITIES``, ``STOPBITS``Ggg 155 (i.e. ``serial.Serial.BAUDRATES or s = serial.Serial; s.BAUDRATES``) 156 these values can be used to fill in value sin GUI dialogs etc. 157- Creating a ``Serial()`` object without port spec returns an unconfigured, 158 closed port. Useful if a GUI dialog should take a port and configure 159 it. 160- New methods for ``serial.Serial`` instances: ``open()``, ``isOpen()`` 161- A port can be opened and closed as many times as desired. 162- Instances of ``serial.Serial`` have ``baudrate``, ``bytesize``, ``timeout`` 163 etc. attributes implemented as properties, all can be set while the port is 164 opened. It will then be reconfigured. 165- Improved ``__doc__``'s. 166- New ``test_advanced.py`` for the property setting/getting testing. 167- Small bugfix on posix with get* methods (return value should be true a 168 boolean). 169- added a ``__repr__`` that returns a meaningful string will all the serial 170 setting, easy for debugging. 171- The serialposix module does not throw an exception on unsupported 172 platforms, the message is still printed. The idea that it may still 173 work even if the platform itself s not known, it simply tries to do 174 the posix stuff anyway (It's likely that opening ports by number 175 fails, but by name it should work). 176 177 178Version 2.0b2 4 Oct 2003 179--------------------------- 180- Added serial port configuration dialog for wxPython to the examples. 181- Added terminal application for wxPython with wxGlade design file 182 to the examples. 183- Jython support is currently broken as Jython does not have a Python 2.2 184 compatible release out yet 185 186 187Version 2.0 6 Nov 2003 188--------------------------- 189- Fixes ``setup.py`` for older distutils 190 191 192Version 2.1 28 Jul 2004 193--------------------------- 194Bugfixes: 195 196- Fix XON/XOFF values [Bug 975250] 197 198Bugfixes (posix): 199 200- ``fd == 0`` fix from Vsevolod Lobko 201- netbsd fixes from Erik Lindgren 202- Dynamically lookup baudrates and some cleanups 203 204Bugfixes (examples): 205 206- CRLF handling of ``miniterm.py`` should be more consistent on Win32 207 and others. Added LF only command line option 208- Multithreading fixes to ``wxTerminal.py`` (helps with wxGTK) 209- Small change for wxPython 2.5 in ``wxSerialConfigDialog.py`` [Bug 994856] 210 211New Features: 212 213- Implement write timeouts (``writeTimeout`` parameter) 214 215 216Version 2.2 31 Jul 2005 217--------------------------- 218Bugfixes: 219 220- [Bug 1014227]: property <del> broken 221- [Bug 1105687]: ``serial_tcp_example.py``: ``--localport`` option 222- [Bug 1106313]: device (port) strings cannot be unicode 223 224Bugfixes (posix): 225 226- [Patch 1043436] Fix for [Bug 1043420] (OSError: EAGAIN) 227- [Patch 1102700] ``fileno()`` added 228- ensure disabled PARMRK 229 230Bugfixes (win32): 231 232- [Patch 983106]: keep RTS/CTS state on port setting changes 233 234New Features: 235 236- ``dsrdtr`` setting to enable/disable DSR/DTR flow control independently 237 from the ``rtscts`` setting. (Currently Win32 only, ignored on other 238 platforms) 239 240 241Version 2.3 19 Jun 2008 242--------------------------- 243New Features: 244 245- iterator interface. ``for line in Serial(...): ...`` is now possible 246 Suggested by Bernhard Bender 247- ``sendBreak()`` accepts a ``duration`` argument. Default duration increased. 248- win32 handles \\.\COMx format automatically for com ports of higher number 249 (COM10 is internally translated to \\.\COM10 etc.) 250- miniterm.py has a new feature to send a file (upload) and configurable 251 special characters for exit and upload. Refactored internals to class based 252 structure (upload and class refactoring by Colin D Bennett) 253 254Bugfixes: 255 256- [Bug 1451535] TCP/serial redirect example "--help" 257- update VERSION variable 258- update wxSerialConfigDialog.py and wxTerminal.py compatibility with 259 wxPython 2.8 (Peleg) 260- Check for string in write function. Using unicode causes errors, this 261 helps catching errors early (Tom Lynn) 262 263Bugfixes (posix): 264 265- [Bug 1554183] setRTS/setDTR reference to non existing local "on" 266- [Bug 1513653] file descriptor not closed when exception is thrown 267- FreeBSD now uses cuadX instead of cuaaX (Patrick Phalen) 268 269Bugfixes (win32): 270 271- [Bug 1520357] Handle leak 272- [Bug 1679013] Ignore exception raised by SetCommTimeout() in close(). 273- [Bug 1938118] process hang forever under XP 274 275 276Version 2.4 6 Jul 2008 277--------------------------- 278New Features: 279 280- [Patch 1616790] pyserial: Add inter-character timeout feature 281- [Patch 1924805] add a setBreak function 282- Add mark/space parity 283- Add .NET/Mono backend (IronPython) 284 285Bugfixes (posix): 286 287- [Bug 1783159] Arbitrary baud rates (Linux/Posix) 288 289Bugfixes (win32): 290 291- [Patch 1561423] Add mark/space parity, Win32 292- [Bug 2000771] serial port CANNOT be specified by number on windows 293- examples/scanwin32.py does no longer return \\.\ names 294- fix \\.\ handling for some cases 295 296Bugfixes (jython): 297 298 - The Jython backend tries javax.comm and gnu.io (Seo Sanghyeon) 299 300 301Version 2.5-rc1 2009-07-30 302--------------------------- 303New Features: 304 305- Python 3.x support (through 2to3) 306- compatible with Python io library (Python 2.6+) 307- Support for Win32 is now written on the top of ctypes (bundled with 308 Python 2.5+) instead of pywin32 (patch by Giovanni Bajo). 309- 1.5 stop bits (STOPBITS_ONE_POINT_FIVE, implemented on all platforms) 310- miniterm application extended (CTRL+T -> menu) 311- miniterm.py is now installed as "script" 312- add scanlinux.py example 313- add port_publisher example 314- experimental RFC-2217 server support (examples/rfc2217_server.py) 315- add ``getSettingsDict`` and ``applySettingsDict`` serial object methods 316- use a ``poll`` based implementation on Posix, instead of a ``select`` based, 317 provides better error handling [removed again in later releases]. 318 319Bugfixes: 320 321- Improve and fix tcp_serial_redirector example. 322- [Bug 2603052] 5-bit mode (needs 1.5 stop bits in some cases) 323 324Bugfixes (posix): 325 326- [Bug 2810169] Propagate exceptions raised in serialposix _reconfigure 327- [Bug 2562610] setting non standard baud rates on Darwin (Emmanuel Blot) 328 329Bugfixes (win32): 330 331- [Bug 2469098] parity PARITY_MARK, PARITY_SPACE isn't supported on win32 332- [SF 2446218] outWaiting implemented 333- [Bug 2392892] scanwin32.py better exception handling 334- [Bug 2505422] scanwin32.py Vista 64bit compatibility 335 336 337Version 2.5-rc2 2010-01-02 338--------------------------- 339New Features: 340 341- Documentation update, now written with Sphinx/ReST 342- Updated miniterm.py example 343- experimental RFC-2217 client support (serial.rfc2217.Serial, see docs) 344- add ``loop://`` device for testing. 345- add ``serial.serial_for_url`` factory function (support for native ports and 346 ``rfc2217``, ``socket`` and ``loop`` URLs) 347- add new example: ``rfc2217_server.py`` 348- tests live in their own directory now (no longer in examples) 349 350Bugfixes: 351 352- [Bug 2915810] Fix for suboption parsing in rfc2217 353- Packaging bug (missed some files) 354 355Bugfixes (posix): 356 357- improve write timeout behavior 358- [Bug 2836297] move Linux specific constants to not break other platforms 359- ``poll`` based implementation for ``read`` is in a separate class 360 ``PosixPollSerial``, as it is not supported well on all platforms (the 361 default ``Serial`` class uses select). 362- changed error handling in ``read`` so that disconnected devices are 363 detected. 364 365 366Bugfixes (win32): 367 368- [Bug 2886763] hComPort doesn't get initialized for Serial(port=None) 369 370 371Version 2.5 2010-07-22 372--------------------------- 373New Features: 374 375- [Bug 2976262] dsrdtr should default to False 376 ``dsrdtr`` parameter default value changed from ``None`` (follow ``rtscts`` 377 setting) to ``False``. This means ``rtscts=True`` enables hardware flow 378 control on RTS/CTS but no longer also on DTR/DSR. This change mostly 379 affects Win32 as on other platforms, that setting was ignored anyway. 380- Improved xreadlines, it is now a generator function that yields lines as they 381 are received (previously it called readlines which would only return all 382 lines read after a read-timeout). However xreadlines is deprecated and not 383 available when the io module is used. Use ``for line in Serial(...):`` 384 instead. 385 386Bugfixes: 387 388- [Bug 2925854] test.py produces exception with python 3.1 389- [Bug 3029812] 2.5rc2 readline(s) doesn't work 390 391Bugfixes (posix): 392 393- [BUG 3006606] Nonblocking error - Unix platform 394 395Bugfixes (win32): 396 397- [Bug 2998169] Memory corruption at faster transmission speeds. 398 (bug introduced in 2.5-rc1) 399 400 401Version 2.6 2011-11-02 402--------------------------- 403New Features: 404 405- Moved some of the examples to serial.tools so that they can be used 406 with ``python -m`` 407- serial port enumeration now included as ``serial.tools.list_ports`` 408- URL handlers for ``serial_for_url`` are now imported dynamically. This allows 409 to add protocols w/o editing files. The list 410 ``serial.protocol_handler_packages`` can be used to add or remove user 411 packages with protocol handlers (see docs for details). 412- new URL type: hwgrep://<regexp> uses list_ports module to search for ports 413 by their description 414- several internal changes to improve Python 3.x compatibility (setup.py, 415 use of absolute imports and more) 416 417Bugfixes: 418 419- [Bug 3093882] calling open() on an already open port now raises an exception 420- [Bug 3245627] connection-lost let rfc2217 hangs in closed loop 421- [Patch 3147043] readlines() to support multi-character eol 422 423Bugfixes (posix): 424 425- [Patch 3316943] Avoid unneeded termios.tcsetattr calls in serialposix.py 426- [Patch 2912349] Serial Scan as a Module with Mac Support 427 428Bugfixes (win32): 429 430- [Bug 3057499] writeTimeoutError when write Timeout is 0 431- [Bug 3414327] Character out of range in list_ports_windows 432- [Patch 3036175] Windows 98 Support fix 433- [Patch 3054352] RTS automatic toggle, for RS485 functionality. 434- Fix type definitions for 64 bit Windows compatibility 435 436 437Version 2.7 2013-10-17 438--------------------------- 439- Win32: setRTS and setDTR can be called before the port is opened and it will 440 set the initial state on port open. 441- Posix: add platform specific method: outWaiting (already present for Win32) 442- Posix: rename flowControl to setXON to match name on Win32, add 443 flowControlOut function 444- rfc2217: zero polls value (baudrate, data size, stop bits, parity) (Erik 445 Lundh) 446- Posix: [Patch pyserial:28] Accept any speed on Linux [update] 447- Posix: [Patch pyserial:29] PosixSerial.read() should "ignore" errno.EINTR 448- OSX: [Patch pyserial:27] Scan by VendorID/Product ID for USB Serial devices 449- Ensure working with bytes in write() calls 450 451Bugfixes: 452 453- [Bug 3540332] SerialException not returned 454- [Bug pyserial:145] Error in socket_connection.py 455- [Bug pyserial:135] reading from socket with timeout=None causes TypeError 456- [Bug pyserial:130] setup.py should not append py3k to package name 457- [Bug pyserial:117] no error on lost conn w/socket:// 458 459Bugfixes (posix): 460 461- [Patch 3462364] Fix: NameError: global name 'base' is not defined 462- list_ports and device() for BSD updated (Anders Langworthy) 463- [Bug 3518380] python3.2 -m serial.tools.list_ports error 464- [Bug pyserial:137] Patch to add non-standard baudrates to Cygwin 465- [Bug pyserial:141] open: Pass errno from IOError to SerialException 466- [Bug pyserial:125] Undefined 'base' on list_ports_posix.py, function usb_lsusb 467- [Bug pyserial:151] Serial.write() without a timeout uses 100% CPU on POSIX 468- [Patch pyserial:30] [PATCH 1/1] serial.Serial() should not raise IOError. 469 470Bugfixes (win32): 471 472- [Bug 3444941] ctypes.WinError() unicode error 473- [Bug 3550043] on Windows in tools global name 'GetLastError' is not defined 474- [Bug pyserial:146] flush() does nothing in windows (despite docs) 475- [Bug pyserial:144] com0com ports ignored due to missing "friendly name" 476- [Bug pyserial:152] Cannot configure port, some setting was wrong. Can leave 477 port handle open but port not accessible 478 479 480Version 3.0a0 2015-09-22 481-------------------------- 482- Starting from this release, only Python 2.7 and 3.2 (or newer) are supported. 483 The source code is compatible to the 2.x and 3.x series without any changes. 484 The support for earlier Python versions than 2.7 is removed, please refer to 485 the pyserial-legacy (V2.x) series if older Python versions are a 486 requirement). 487- Development moved to github, update links in docs. 488- API changes: properties for ``rts``, ``dtr``, ``cts``, ``dsr``, ``cd``, ``ri``, 489 ``in_waiting`` (instead of get/set functions) 490- remove file ``FileLike`` class, add ``read_until`` and ``iread_until`` to 491 ``SerialBase`` 492- RS485 support changed (``rts_toggle`` removed, added ``serial.rs485`` module 493 and ``rs485_mode`` property) 494- ``socket://`` and ``rfc2217://`` handlers use the IPv6 compatible 495 ``socket.create_connection`` 496- New URL handler: ``spy:://``. 497- URL handlers now require the proper format (``?`` and ``&``) for arguments 498 instead of ``/`` (e.g. ``rfc2217://localhost:7000?ign_set_control&timeout=5.5``) 499- Remove obsolete examples. 500- Finish update to BSD license. 501- Use setuptools if available, fall back to distutils if unavailable. 502- miniterm: changed command line options 503- miniterm: support encodings on serial port 504- miniterm: new transformations, by default escape/convert all control characters 505- list_ports: improved, added USB location (Linux, Win32) 506- refactored code 507- [FTR pyserial:37] Support fileno() function in the socket protocol 508- Posix: [Patch pyserial:31] Mark/space parity on Linux 509- Linux: [Patch pyserial:32] Module list_ports for linux should include the 510 product information as description. 511- Java: fix 2 bugs (stop bits if/else and non-integer timeouts) (Torsten 512 Roemer) 513- Update wxSerialConfigDialog.py to use serial.tools.list_ports. 514- [Patch pyserial:34] Improvements to port_publisher.py example 515- [Feature pyserial:39] Support BlueTooth serial port discovery on Linux 516 517Bugfixes: 518 519- [Bug pyserial:157] Implement inWaiting in protocol_socket 520- [Bug pyserial:166] RFC2217 connections always fail 521- [Bug pyserial:172] applySettingsDict() throws an error if the settings dictionary is not complete 522- [Bug pyserial:185] SocketSerial.read() never returns data when timeout==0 523 524Bugfixes (posix): 525 526- [Bug pyserial:156] PosixSerial.open raises OSError rather than 527 SerialException when port open fails 528- [Bug pyserial:163] serial.tools.list_ports.grep() fails if it encounters None type 529- fix setXON 530- [Patch pyserial:36 / 38] Make USB information work in python 3.4 and 2.7 531- clear OCRNL/ONLCR flags (CR/LF translation settings) 532- [Feature pyserial:38] RS485 Support 533- [Bug pyserial:170] list_ports_posix not working properly for Cygwin 534- [Bug pyserial:187] improve support for FreeBSD (list_ports_posix) 535 536Bugfixes (win32): 537 538- [Bug pyserial:169] missing "import time" in serialwin32.py 539 540Bugfixes (cli): 541 542- [Bug pyserial:159] write() in serialcli.py not working with IronPython 2.7.4 543 544 545Version 3.0b1 2015-10-19 546-------------------------- 547- list_ports: add ``vid``, ``pid``, ``serial_number``, ``product``, 548 ``manufacturer`` and ``location`` attribute for USB devices. 549- list_ports: update OSX implementation. 550- list_ports: Raspberry Pi: internal port is found. 551- serial_for_url: fix import (multiple packages in list) 552- threaded: added new module implementing a reader thread 553- tweak examples/wx* 554- posix: add experimental implementation ``VTIMESerial`` 555- new URL handler ``alt://`` to select alternative implementations 556 557 558Version 3.0 2015-12-28 559------------------------ 560- minor fixes to setup.py (file list), inter_byte_timeout (not stored when 561 passed to __init__), rfc2217 (behavior of close when open failed), 562 list_ports (__str__), loop://, renamed ReaderThread 563- hwgrep:// added options to pick n'th port, skip busy ports 564- miniterm: --ask option added 565 566Bugfixes (posix): 567 568- [#26/#30] always call tcsettattr on open 569- [#42] fix disregard read timeout if there is more data 570- [#45] check for write timeout, even if EAGAIN was raised 571 572Bugfixes (win32): 573 574- [#27] fix race condition in ``read()``, fix minimal timeout issue 575- race condition in nonblocking case 576- [#49] change exception type in case SetCommState fails 577- [#50] fixed issue with 0 timeout on windows 10 578 579 580Version 3.0.1 2016-01-11 581-------------------------- 582- special case for FDTIBUS in list_ports on win32 (#61) 583 584Bugfixes: 585 586- ``Serial`` keyword arguments, more on backward compatibility, fix #55 587- list_ports: return name if product is None, fix for #54 588- port_publisher: restore some sorting of ports 589 590 591Version 3.1.0 2016-05-27 592-------------------------- 593Improvements: 594 595- improve error handling in ``alt://`` handler 596- ``socket://`` internally used select, improves timeout behavior 597- initial state of RTS/DTR: ignore error when setting on open posix 598 (support connecting to pty's) 599- code style updates 600- posix: remove "number_to_device" which is not called anymore 601- add cancel_read and cancel_write to win32 and posix implementations 602 603Bugfixes: 604 605- [#68] aio: catch errors and close connection 606- [#87] hexlify: update codec for Python 2 607- [#100] setPort not implemented 608- [#101] bug in serial.threaded.Packetizer with easy fix 609- [#104] rfc2217 and socket: set timeout in create_connection 610- [#107] miniterm.py fails to exit on failed serial port 611 612Bugfixes (posix): 613 614- [#59] fixes for RTS/DTR handling on open 615- [#77] list_ports_osx: add missing import 616- [#85] serialposix.py _set_rs485_mode() tries to read non-existing 617 rs485_settings.delay_rts_before_send 618- [#96] patch: native RS485 is never enabled 619 620Bugfixes (win32): 621 622- fix bad super call and duplicate old-style __init__ call 623- [#80] list_ports: Compatibility issue between Windows/Linux 624 625 626Version 3.1.1 2016-06-12 627-------------------------- 628Improvements: 629 630- deprecate ``nonblocking()`` method on posix, the port is already in this 631 mode. 632- style: use .format() in various places instead of "%" formatting 633 634Bugfixes: 635 636- [#122] fix bug in FramedPacket 637- [#127] The Serial class in the .NET/Mono (IronPython) backend does not 638 implement the _reconfigure_port method 639- [#123, #128] Avoid Python 3 syntax in aio module 640 641Bugfixes (posix): 642 643- [#126] PATCH: Check delay_before_tx/rx for None in serialposix.py 644- posix: retry if interrupted in Serial.read 645 646Bugfixes (win32): 647 648- win32: handle errors of GetOverlappedResult in read(), fixes #121 649 650 651Version 3.2.0 2016-10-14 652-------------------------- 653See 3.2.1, this one missed a merge request related to removing aio. 654 655 656Version 3.2.1 2016-10-14 657-------------------------- 658Improvements: 659 660- remove ``serial.aio`` in favor of separate package, ``pyserial-asyncio`` 661- add client mode to example ``tcp_serial_redirect.py`` 662- use of monotonic clock for timeouts, when available (Python 3.3 and up) 663- [#169] arbitrary baud rate support for BSD family 664- improve tests, improve ``loop://`` 665 666Bugfixes: 667 668- [#137] Exception while cancel in miniterm (python3) 669- [#143] Class Serial in protocol_loop.py references variable before assigning 670 to it 671- [#149] Python 3 fix for threaded.FramedPacket 672 673Bugfixes (posix): 674 675- [#133] _update_dtr_state throws Inappropriate ioctl for virtual serial 676 port created by socat on OS X 677- [#157] Broken handling of CMSPAR in serialposix.py 678 679Bugfixes (win32): 680 681- [#144] Use Unicode API for list_ports 682- [#145] list_ports_windows: support devices with only VID 683- [#162] Write in non-blocking mode returns incorrect value on windows 684 685 686Version 3.3 2017-03-08 687------------------------ 688Improvements: 689 690- [#206] Exclusive access on POSIX. ``exclusive`` flag added. 691- [#172] list_ports_windows: list_ports with 'manufacturer' info property 692- [#174] miniterm: change cancel impl. for console 693- [#182] serialutil: add overall timeout for read_until 694- socket: use non-blocking socket and new Timeout class 695- socket: implement a functional a reset_input_buffer 696- rfc2217: improve read timeout implementation 697- win32: include error message from system in ClearCommError exception 698- and a few minor changes, docs 699 700Bugfixes: 701 702- [#183] rfc2217: Fix broken calls to to_bytes on Python3. 703- [#188] rfc2217: fix auto-open use case when port is given as parameter 704 705Bugfixes (posix): 706 707- [#178] in read, count length of converted data 708- [#189] fix return value of write 709 710Bugfixes (win32): 711 712- [#194] spurious write fails with ERROR_SUCCESS 713 714 715Version 3.4 2017-07-22 716------------------------ 717Improvements: 718 719- miniterm: suspend function (temporarily release port, :kbd:`Ctrl-T s`) 720- [#240] context manager automatically opens port on ``__enter__`` 721- [#141] list_ports: add interface number to location string 722- [#225] protocol_socket: Retry if ``BlockingIOError`` occurs in 723 ``reset_input_buffer``. 724 725Bugfixes: 726 727- [#153] list_ports: option to include symlinked devices 728- [#237] list_ports: workaround for special characters in port names 729 730Bugfixes (posix): 731 732- allow calling cancel functions w/o error if port is closed 733- [#220] protocol_socket: sync error handling with posix version 734- [#227] posix: ignore more blocking errors and EINTR, timeout only 735 applies to blocking I/O 736- [#228] fix: port_publisher typo 737 738 739Version 3.5b0 2020-09-21 740------------------------ 741New Features: 742 743- [#411] Add a backend for Silicon Labs CP2110/4 HID-to-UART bridge. 744 (depends on `hid` module) 745 746Improvements: 747 748- [#315] Use absolute import everywhere 749- [#351] win32: miniterm Working CMD.exe terminal using Windows 10 ANSI support 750- [#354] Make ListPortInfo hashable 751- [#372] threaded: "write" returns byte count 752- [#400] Add bytesize and stopbits argument parser to tcp_serial_redirect 753- [#408] loop: add out_waiting 754- [#495] list_ports_linux: Correct "interface" property on Linux hosts 755- [#500] Remove Python 3.2 and 3.3 from test 756- [#261, #285, #296, #320, #333, #342, #356, #358, #389, #397, #510] doc updates 757- miniterm: add :kbd:`CTRL+T Q` as alternative to exit 758- miniterm: suspend function key changed to :kbd:`CTRL-T Z` 759- add command line tool entries ``pyserial-miniterm`` (replaces ``miniterm.py``) 760 and ``pyserial-ports`` (runs ``serial.tools.list_ports``). 761- ``python -m serial`` opens miniterm (use w/o args and it will print port 762 list too) [experimental] 763 764Bugfixes: 765 766- [#371] Don't open port if self.port is not set while entering context manager 767- [#437, #502] refactor: raise new instances for PortNotOpenError and SerialTimeoutException 768- [#261, #263] list_ports: set default `name` attribute 769- [#286] fix: compare only of the same type in list_ports_common.ListPortInfo 770- rfc2217/close(): fix race-condition 771- [#305] return b'' when connection closes on rfc2217 connection 772- [#386] rfc2217/close(): fix race condition 773- Fixed flush_input_buffer() for situations where the remote end has closed the socket. 774- [#441] reset_input_buffer() can hang on sockets 775- examples: port_publisher python 3 fixes 776- [#324] miniterm: Fix miniterm constructor exit_character and menu_character 777- [#326] miniterm: use exclusive access for native serial ports by default 778- [#497] miniterm: fix double use of CTRL-T + s use z for suspend instead 779- [#443, #444] examples: refactor wx example, use Bind to avoid deprecated 780 warnings, IsChecked, unichr 781 782Bugfixes (posix): 783 784- [#265] posix: fix PosixPollSerial with timeout=None and add cancel support 785- [#290] option for low latency mode on linux 786- [#335] Add support to xr-usb-serial ports 787- [#494] posix: Don't catch the SerialException we just raised 788- [#519] posix: Fix custom baud rate to not temporarily set 38400 baud rates on linux 789- [#509 #518] list_ports: use hardcoded path to library on osx 790 791Bugfixes (win32): 792 793- [#481] win32: extend RS485 error messages 794- [#303] win32: do not check for links in serial.tools.list_ports 795- [#430] Add WaitCommEvent function to win32 796- [#314, #433] tools/list_ports_windows: Scan both 'Ports' and 'Modem' device classes 797- [#414] Serial number support for composite USB devices 798- Added recursive search for device USB serial number to support composite devices 799 800Bugfixes (MacOS): 801 802- [#364] MacOS: rework list_ports to support unicode product descriptors. 803- [#367] Mac and bsd fix _update_break_state 804 805 806Version 3.5 2020-11-23 807---------------------- 808See above (3.5b0) for what's all new in this release 809 810Bugfixes: 811 812- spy: ensure bytes in write() 813 814Bugfixes (posix): 815 816- [#540] serialposix: Fix inconsistent state after exception in open() 817 818Bugfixes (win32): 819 820- [#530] win32: Fix exception for composite serial number search on Windows 821 822Bugfixes (MacOS): 823 824- [#542] list_ports_osx: kIOMasterPortDefault no longer exported on Big Sur 825- [#545, #545] list_ports_osx: getting USB info on BigSur/AppleSilicon 826