1 libmodbus 3.1.3 (2016-05-11)
2 ============================
4 - New bswap macros for Max OSX by Jakob Bysewski.
5 - Fix "wildcard address" in TCP IPv6 by Shoichi Sakane.
6 - Introduce offsets in modbus mappings with modbus_mapping_new_start_address.
7 Thanks to Michael Heimpold and Stéphane Raimbault.
8 - Fix address range in random-test-client.
9 Thanks to Martin Galvan.
10 - Add an option to disable tests compilation by Yegor Yefremov.
11 - Define MSG_DONTWAIT to MSG_NONBLOCK on AIX (#294).
12 Thanks to Fabrice Cantos.
13 - Fix building when byteswap.h is not defined by Tomasz Mon.
14 - Add some more macros for data manipulation and documentation.
15 - Remove duplicate install of modbus.h (closes #290).
16 Thanks to Daniel Sutcliffe.
17 - Move MIGRATION and README.md to dist_doc_DATA target.
18 - Change order of few functions in modbus RTU code.
19 - Add entries for modbus_rtu_[get|set]_delay in documentation index.
20 - Implemented runtime configurable RTS delay by Jimmy Bergström.
21 - Add an entry in libmodbus index page for modbus_rtu_set_custom_rts.
22 - Add support for user defined RTS toggle function by Jimmy
24 - Added ILLEGAL_DATA_ADDRESS tests for modbus_write_register[|s].
25 Thanks to Andrey Skvortsov.
26 - Update documentation of modbus_rtu_set_rts
27 - Fix rts signal switch time by Hiromasa Ihara.
28 - Improve new_rtu and set_slave documentation (related to #276).
29 - Fix late check of ctx in modbus_reply[|_exception] (closes #269).
30 - Wait the server for 1 second before running tests (help Travis).
31 - A libmodbus context isn't thread safe and won't be (closes #246).
32 - Fix buffer overflow in modbus_mask_write_register (#265).
33 - Minor adjustments to README about AsciiDoc.
34 - Export MODBUS_MAX_ADU_LENGTH and documentation (ref #241).
35 - Explicit check against Modbus broadcast address.
36 - Do not reply on broadcast requests (fixes #153). Thanks to Michael.
38 - Run unit tests with standard: make check (closes #205, closes #238).
39 This patch has been developed by Andrey Skvortsov, Michael Heimpold
40 and Stéphane Raimbault.
41 - modbus_send_raw_request: limit request length (fixes #207).
42 Thanks to Hanno Neuer for spotting this security flaw.
43 - Add new contributors to AUTHORS
44 - Introduce SPDX license identifiers. Thanks to Michael Heimpold.
46 libmodbus 3.1.2 (2015-02-13)
47 ============================
49 If you still want to listen any addresses in your TCP IPv4 server, you must now
50 set the IP address to NULL in modbus_new_tcp before listening. Now,
51 modbus_tcp_listen only listen the IP address set in the Modbus context (see
54 This release introduces API changes on modbus_get_byte_timeout,
55 modbus_get_response_timeout, modbus_set_byte_timeout,
56 modbus_set_response_timeout to ease writing of language bindings.
58 - Rewrite documentation building system
59 - Fix timeouts in unit tests
60 - Don't flush on illegal address errors in single write functions
61 - Fix compilation on compilers not supporting c99 mode.
62 Thanks to Michael Heimpold.
63 - Update license for the tests in Debian packaging (#221)
64 - Move check of device earlier to avoid a free call
65 - Unit test for baud rate check and error message.
66 - Fix crash modbus_new_rtu when baud is 0.
67 Thank you to Daniel Schürmann.
68 - Removed function prototype without implementation
69 Thank you Andrej Skvortzov.
70 - Switch test programs to a BSD license
71 - Fix remote buffer overflow vulnerability on write requests
72 - Avoid twice connect() in source code (closes #194)
73 - Fix compilation with MinGW (GCC 4.8.1) under Win7 (closes #163)
74 Thank you MarjanTomas and SwissKnife.
75 - Fix TCP IPv4 modbus_connect() on win32 (closes #100 and #165)
76 Thank you Petr Gladkiy and Marjan Tomas.
77 - Fix 24a05ebd3c0 - win32: init of modbus_tcp_pi_listen (#187)
78 - INADDR_* macros are defined in host byte order
79 - Filter of IP addresses in IPv4 server (closes #190)
80 - Allow to listen any hosts in IPv6 (closes #32)
81 - Define and public export of MODBUS_MAX_PDU_LENGTH (closes #167)
82 - Truncate data from response in report_slave_id to new max arg (closes #167)
83 - Fix response timeout modification on connect (closes #80)
84 - New API to set/get response and byte timeouts.
85 New unit tests and updated documentation.
86 - Export Modbus function codes supported by libmodbus
87 - Fix bandwidth-server-one (closes #152)
88 - Check debug flag in RTU code
89 - Remove warnings caused by shadowed 'index' variable.
90 Thanks to Åke Forslund.
91 - Use accept4 in TCP PI if available
92 - Add documentation for tcp[_pi]_accept (closes #31)
93 - Fix mistake in modbus_tcp_listen documentation
94 - Add documentation for modbus_tcp_pi_listen
95 - Fix for MinGW and Windows (#144, #169, #175, #180, #181, #187)
96 Thanks to Marjan Tomas.
97 - Many other fixes (#134, #157, #158, #183, #184) and improvements.
99 libmodbus 3.1.1 (2013-10-06)
100 ============================
102 More robust to exploits, more compliant and better handling of connect/close
103 sequences. Windows support still broken.
106 - Fix remote buffer overflow vulnerability (closes #25, #105)
107 - Explain how to define response timeouts when many RTU slaves
108 - Fix receiving of incorrect queries in write_single and mask_write_register
109 Thanks to James Nutaro.
110 - Check return value of autoreconf.
111 Thanks to Lauri Nurmi
112 - Constant for broacast and test ordering
113 - Fix the fix of device string check
114 - Various changes to try to improve *broken* Windows support
115 - Try to fix MinGW compilation
116 - Portable use of bswap_32
117 - Improve support of MacOS X
118 - Fix socket value on init/close
119 - Returns -1 on invalid mode in modbus_rtu_set_rts
120 - Protect all public functions against invalid context
121 - Sleep for delay of response timeout before reconnect (closes #77).
122 Thanks to Karl Palsson.
123 - Baud rate until 4,000,000 (POSIX), 1,000,000 (Windows) (closes #93)
124 - New modbus_get|set_float_dcba to get|set float in inversed byte order
125 - Remove unsupported -Wtype-limits for GCC < 4.3.5 (closes #109)
126 - Enable out-of-source build. Thanks to Yegor Yefremov.
127 - Fix alignment problem on ARMv5 platform
128 - Improvement to Debian package. Thanks to Alexander Klauer.
129 - Improve support of VS 2005. Thanks to Petr Gladkiy.
130 - Add documentation for modbus_mask_write_register (closes #91).
131 Thanks to Martijn de Gouw.
132 - Avoid C99 declaration in win32 section code (closes #92).
133 Thanks to oldfaber and endrelovas.
134 - Add a windows scripting host configure file.
135 Thanks to oldfaber and Stéphane Raimbault.
136 - Fix typo in modbus_strerror documentation. Thanks to Mirko Rajkovaca.
137 - Rename reserved C++ keywords of modbus_mask_write_register.
138 Thanks Tobias Doerffel.
139 - Another quick workaround for deficient OS (closes #63)
140 - Add support for Mask Write Register
141 - Fix missing close on socket in random-test-server.
142 Thanks to Damian Zieliński.
143 - Use nonblocking sockets on Win32 and OS X/iOS too.
144 Thanks to Julian Raschke.
145 - Fix all compilations warnings spotted by new compilation flags
146 - Major update of build system
147 - Calculate RTS activation time by send length
148 - Dynamic memory allocation of device name (closes #11)
149 - Add unit tests for modbus_mapping_new
150 - Add Visual Studio 2008 project files by oldfaber
151 - Fix missing argument in synopsis section of modbus_rtu_set_serial_mode
152 - Fix wrong constant names to create version number
153 - More compilation fixes for Windows by oldfaber.
154 - Fix wrong constant names to create version number.
155 Thanks to Denis Davydov.
157 libmodbus 3.1.0 (2012-06-22)
158 ============================
160 Major changes to handle many slaves in RTU mode, non blocking connections and
163 - Fixes for Microsoft Visual C++ compiler
164 - Fixes for Windows. Thanks to oldfaber
165 - Return value of _modbus_tcp_pi_connect() on failure (closes #61)
166 - Avoid ioctl call on non-RS485 ports. Thanks to Michael Haberler
167 - Display node and service in PI and port in IPv4 at connection
168 - Return -1 on getaddrinfo error and print error in debug mode
169 - More robust way to establish the connection in non blocking mode
170 - TCP - Socket in non blocking mode by default. Thanks to Thomas Stalder
171 - Apply CLOEXEC flag for TCP protocol independent too (IPv6)
172 - New RTU receive() to ignore confirmation from other slaves (closes #18)
173 - Move RTU filtering in CRC check to avoid useless call to modbus_reply
174 - Unique transaction identifier by TCP connection
175 - Use accept4 with SOCK_CLOEXEC when available (Linux)
176 - Open fd and socket with the CLOEXEC flag when available
177 - Exception response on report slave ID wasn't detected (closes #27)
178 - Provides a way to disable the byte timeout (Alex Stapleton)
179 - Added slave ID check for response messages (Alex Stapleton)
180 - RTS flow control with modbus_rtu_set_rts and modbus_rtu_get_rts
181 functions by Torello Querci <tquerci@gmail.com> and Stéphane Raimbault.
183 libmodbus 3.0.4 (2012-05-08)
184 ============================
186 - autogen.sh creates symlinks instead of copies
187 - Add missing m4 directory (closes #103)
188 - Fix alignment problem on ARMv5 platform
189 Thanks to Alexander Dahl
190 - Remove useless test on error_recovery argument
191 Thanks to Carlos Tangerino
193 libmodbus 3.0.3 (2012-05-25)
194 ============================
196 - Fix another Visual C++ 2008/2010 deficiency (closes #53)
197 - Add -lsocket to compile on QNX
198 - Fix TCP PI init under Windows.
200 - Fix a missing free in random-test-client
201 Thanks again to Stefan Finzel.
202 - Fix OMG bug in modbus_mapping_free not freeing memory.
203 Thanks to Stefan Finzel for the bug report.
204 - Fix semicolon typo and unistd.h include under Windows.
205 Thanks to Andrew Kravchuk.
207 libmodbus 3.0.2 (2012-01-16)
208 ============================
210 - Update Debian package
211 - Documentation fixes and additions
212 - Add missing C++ macros in public headers.
213 Thanks to Bernhard Agthe.
214 - Protects modbus_mapping_free against NULL argument.
215 Thanks to Andrea Mattia
216 - Fix check on file doc/libmodbus.7 in acinclude.m4 (closes #28)
217 - Close file descriptor when the settings don't apply in RTU.
218 Original patch provided by Thomas Stalder.
219 - unit-test.h is now generated to avoid config.h dependency.
220 - Request for Windows Sockets specification version 2.2 instead of 2.0
221 Thanks to Pavel Mazniker for the report.
223 libmodbus 3.0.1 (2011-07-18)
224 ============================
226 - Avoid useless serial_mode integer when TIOCSRS485 isn't supported
227 - Fix compilation failure on Windows (RS485 support) by Tobias Doerffel
228 <tobias.doerffel@gmail.com>
229 - Properly check TIOCSRS485 define by Matthijs Kool
230 - Rename package to libmodbus5 to fix lintian warning
232 libmodbus 3.0.0 (2011-07-11)
233 ============================
235 - Revert libmodbus licence from LGPLv3 to LGPLv2.1 to avoid
236 incompatibility with GPLv2 program. This change has been approved
237 by Tobias Doerffel, Florian octo Forster and Hannu Vuolasaho.
238 - Enable RS485 support only when available
239 - Export modbus_set/get_serial_mode functions on all platforms
240 - API change for read/write multiple registers function:
241 * modbus_read_and_write_registers -> modbus_write_and_read_registers
242 The function name was confusing because the write operation is performed
243 before the read. Take care to swap the arguments in the migration process.
244 - Documentation of modbus_write_and_read_registers, modbus_mapping_new/free,
245 report_slave_id. modbus_get_byte_from_bits, modbus_set_bits_from_byte(s),
246 modbus_[gs]et_float, modbus_reply and modbus_reply_exception.
247 - Enhanced report slave ID
248 - New RPM spec file to package documentation and development files
250 libmodbus 2.9.4 (2011-06-05)
251 ============================
254 Make the TCP implementation "protocol independent" by Florian Forster
255 and Stéphane Raimbault.
256 - Fix compilation on Windows 7 (x64) with MinGW/MSYS and GCC 4.5
257 Reported by Patsy Kaye.
258 - Documentation of libmodbus functions with AsciiDoc (man and HTML) by Stéphane
260 - Avoid an iteration in flush function
261 - New functions to send and receive raw requests (modbus_send_raw_request,
262 modbus_receive_confirmation)
263 - Fix flush function of TCP backend on Windows
264 - API changes for server/slave:
265 * modbus_receive doesn't take socket/fd argument anymore
266 * new function modbus_set_socket to set socket/fd
267 - API changes for timeout functions:
268 * modbus_get_timeout_begin -> modbus_get_response_timeout
269 * modbus_set_timeout_begin -> modbus_set_response_timeout
270 * modbus_get_timeout_end -> modbus_get_byte_timeout
271 * modbus_set_timeout_end -> modbus_set_byte_timeout
272 - Fix longstanding limitation of server to wait forever
273 - New functions modbus_set/get_serial_mode by Manfred Gruber and Stéphane
274 Raimbault for RS485 communications
275 - Improved recovery mode (see modbus_set_error_recovery documentation) for
276 data link and protocol errors.
277 - Fix compilation issue with Microsoft Visual Studio 2008.
278 Reported by Allan Cornet.
280 libmodbus 2.9.3 (2011-01-14)
281 ============================
283 - Major rewriting of the message reading (no more timeouts on exception)
284 by Stéphane Raimbault
285 - New function to reply to an indication with an exception message
286 modbus_reply_exception()
287 - New function modbus_get_header_length(modbus_t *ctx)
288 - New functions to manipulate data:
289 * MODBUS_GET_INT32_FROM_INT16
290 * MODBUS_GET_INT16_FROM_INT8
291 * MODBUS_SET_INT16_TO_INT8
292 - Fix GH-2. Read/write were swapped in _FC_READ_AND_WRITE_REGISTERS
293 - Install an ignore handler for SIGPIPE on *BSD
294 Original patch by Jason Oster.
295 - Fix closing of Win32 socket.
296 Reported by Petr Parýzek.
297 - Fix unit identifier not copied by the TCP server.
298 Reported by Antti Manninen.
299 - Fix missing modbus_flush() in unit tests
300 - Fixes for OpenBSD by Barry Grumbine and Jason Oster
303 libmodbus 2.9.2 (2010-12-05)
304 ============================
306 - Win32 support by Tobias Doerffel
307 - Split source code around RTU and TCP (backends)
308 - Rename modbus_[listen|accept] to modbus_tcp_[listen|accept]
309 - Remove slave argument from modbus_new_rtu()
310 - Check received function code
311 - Fix segfault in bandwidth-server-many-up on inet_ntoa() call
312 - Fix unit test of report slave ID in RTU
313 - Fix GH-3. Remove inclusion of config.h in modbus.h
314 - Correctly detect if we are cross-compiling for win32 by Kirill Smelkov.
315 - Fix setting of the broadcast address
318 libmodbus 2.9.1 (2010-08-16)
319 ============================
321 - Brand new API (see MIGRATION notes)!
322 - Remove the internal function set_message_length_tcp
323 - Restore slave ID (server ID) argument in functions
324 - Error conventions of POSIX systems and error recover
325 - Parity setting is now a single char ('N', 'E' or 'O')
326 - Report slave ID server side
327 - OpenBSD support by Anibal Limón.
328 - New read and write registers function by Hannu Vuolasaho.
329 - Versioning infrastructure
330 Inspired by the Clutter project and the work done by Florian Forster.
331 - Fix the broadcast constant (255 -> 0)
332 Reported by David Olivari.
333 - Fix #463299 - New functions to define the timeouts of begin and end of trame
334 Original patch by Sisyph (eric-paul).
335 - Fix #591142 - Slave id check should be disabled in TCP connection
336 Reported by aladdinwu.
339 libmodbus 2.1.0 (2010-03-24)
340 ============================
342 - New API to read and write float values by Stéphane Raimbault and Florian
344 - New API for slave server (see MIGRATION)
345 - New slave server able to handle multiple connections
346 - Slave only replies to broadcast queries or queries with its slave ID
347 - Improved Modbus protocol conformance
348 - modbus_param_t is smaller (2 int removed)
349 - Better error management and SIGPIPE signal is blocked
351 - Fix #333455 - Cygwin IPTOS_LOWDELAY not supported on cygwin
352 Reported by Jeff Laughlin and Yishin Li.
353 - Fix #375926 - modbus.c:164: error: `MSG_DONTWAIT' undeclared
354 Reported and tested by Yishin Li.
355 - Fix #378981 - CRC error on RTU response doesn't return negative value
356 Reported by Henrik Munktell.
357 - Fix report slave ID request
358 Patch (bzr) provided by Paul Fertser.
359 - Fix #425604 - Conditional jump or move depends on uninitialised value(s)
360 Occurs on first occurence of slave timeout.
361 Reported by Henrik Munktell.
362 - Fix #457200 - FreeBSD support
363 Patch provided by Norbert Koch.
367 - The code is now published and developed on
368 http://github.com/stephane/libmodbus
369 - Waf support has been removed
372 libmodbus 2.0.3 (2009-03-22)
373 ============================
375 - Fix CRC error when a slave RTU send a response.
376 Thanks to Justin Carroll to have reported and tested my patch.
377 - Remove an assignment in compute_response_length()
378 - Remove duplicate counter in read_io_status()
379 - Fix #274511 reported by 'Kylesch'
380 Invalid error check in modbus_init_listen_tcp
383 libmodbus 2.0.2 (2008-08-10)
384 ============================
385 - Fix a bug reported by email by Davide Pippa
386 The function modbus_receive must check the number of values
387 indicated in the response accordingly to the query.
388 - Fix #241006 reported by Jesus Hernandez Tapia
389 modbus_check_response() crashes on an invalid exception code
390 - Reduce the number of function calls (read_reg_response and
391 preset_response have been removed)
392 - Add a new unit test for bad response
393 - Catch the timeout even if the length is equal to a exception trame
394 - Test only msg_length_computed on change
395 - Many comments and cleanups
398 libmodbus 2.0.1 (2008-07-02)
399 ============================
401 - Include libmodbus.spec in the tarball
402 - Fix #241006 reported by Jesus Hernandez Tapia
403 modbus_check_response() crashes on an invalid exception code
406 libmodbus 2.0.0 (2008-05-18)
407 ============================
410 https://blueprints.launchpad.net/libmodbus/+spec/slave-api
411 - No more glib dependency
412 https://blueprints.launchpad.net/libmodbus/+spec/glib-dependency
413 - Unit testing and many test programs
415 https://blueprints.launchpad.net/libmodbus/+spec/waf-support
416 - MacOS X support by Matthew Butch
417 https://blueprints.launchpad.net/libmodbus/+spec/macosx-support
418 - Unit testing (unit-test-slave and unit-test-master)
419 - Port number is now defined at initialisation by Dirk Reusch
420 - Better memory management (uint8_t *data and packing of
422 - Better error management
423 - Declare many static functions and const arrays
424 - Enhance an integer division
425 - The GNU licences LGPL and GPL are in version 3
426 - Debian and RPM packages (#224496)
428 - Fix #159443 reported by Stefan Bisanz
429 Index of incoming data in force multiple coils function
430 - Fix #161989 reported by Konstantinos Togias
431 Serial device paths more than 10 chars long (eg. /dev/ttyUSB0) don't
432 fit to modbus_param_t -> device char[11] var.
433 - Fix #188189 reported by Chris Hellyar
434 Compute_response_size() no entry for read_input_status()
435 - Fix #191039 reported by Todd Denniston
436 modbus.h is not installed at prefix.
437 - Fix #211460 reported by Todd Denniston
438 With TCP, automatic reconnect on error may not be desired.
439 - Fix #224485 reported by Todd Denniston
440 libmodbus does not link with c++ code.
441 - Fix #224496 reported by Todd Denniston
442 It is easier to install on rpm based systems with a spec file.
445 libmodbus 1.2.5 (2008-05-18)
446 ============================
448 - Fix #224485 reported by Todd Denniston
449 libmodbus does not link with c++ code.
452 libmodbus 1.2.4 (2008-03-14)
453 ============================
455 - Fix #191039 reported by Todd Denniston
456 modbus.h is not installed at prefix.
459 libmodbus 1.2.3 (2008-02-03)
460 ============================
462 - Fix #188189 reported by Chris Hellyar
463 Compute_response_size() no entry for read_input_status()
464 - Fix #181887 reported by Jesus Hernandez Tapia.
465 Slave address in build_request_packet_tcp() is hardcoded as 0xFF.
468 libmodbus 1.2.2 (2007-11-12)
469 ============================
471 - Fix #161989 reported by Konstantinos Togias
472 Serial device paths more than 10 chars long (eg. /dev/ttyUSB0) don't
473 fit to modbus_param_t -> device char[11] var.
474 - Structure is also bit better 'packed' to conserve memory (see the
475 trunk for a real enhancement).
478 libmodbus 1.2.1 (2007-11-02)
479 ============================
481 - Fix #159443 reported by Stefan Bisanz
482 Index of incoming data in force multiple coils function
483 - Deleted useless code in check_crc16()
484 - Untabify source code
485 - Changed author's email to Stéphane Raimbault
488 libmodbus 1.2.0 (2007-05-10)
489 ============================
491 - FIX Compilation GCC-4.0
492 - Project name in autogen.sh