MPLABComm 3.56.00 2026-03-27

# SR 2026-05-02 MPLABXE-8339 MPLABXE-9082
# Removed USBAccessLink_* and SerialAccessLink_* entries. Library names no
# longer include version suffix. Version checking now uses JNI semver API.
# Minimum version requirements are enforced by MPLABCommVersionHandler.java.

# SR 2026-03-27 v3.56.00
# Switches to event driven USB hot-plug support instead of polling for changes
# MPLABXE-8404

# ------------------------------------------
# same (always been comments)
# RemoteUSB 3.33 2018-07-25  Now same as USBAccessLink
# EthernetSocket 3.21 2016-09-27

# ------------------------------------------
# LS 2024-11-12, v3.54.00
# MPLABComm for mac will not create symlinks in /usr/local/lib
# More clean up will happen along this 3.54.xx
# before MPLAB X 6.25 release
#
# LS 2023-07-13, v3.53.00
# MPLABComm install will not include USBAccessLink library
# anymore. It goes inside the mplab-libs jar now.
# Bump up USBAccessLink_Win/Lin/OSX one last time and
# MPLABComm version before MPLAB X 6.15 release
#
# LS 2022-09-13, v3.51.00
# Bump MPLABComm version before 6.05 branch 
# Add mac m1 and win11 support since v3.50.00
#
# PRJ 2021-06-30, v3.50.00
# Define preliminary "API" for service provider
# response to transport swapping request.
#
# PRJ 2021-06-25, v3.49.01
# Begin to lay in support for USB/Ethernet
# transport swapping.
#
# PRJ 2021-06-16, v3.49.00
# Provide EP-to-PORT mapping changes on accessing
# network ICE 4. This is to support PIC vs AVR
# personalities (and hence, EP values and port
# values).
#
# PRJ 2021-06-07, v3.48.03
# rescanNetworkAndGetToolList changes to stop
# double rescan of network.
#
# PRJ 2021-05-27, v3.48.02
# Add ability to cancel network scanning via
# an MPLABCommProviderInterface method
# cancelDeviceDiscovery();
#
# PRJ 2021-05-24, v3.48.01
# Add setTcpNoDelay to socket open calls.
#
# PRJ 2021-05-14, v3.48.00
# Begin scaling back use of synchronized.
#
# PRJ 2021-03-05, v3.47.00
# Add getToolTransport methods to USB, Ethernet,
# and USB remote service providers. In support
# of allowing/disallowing of Trace and Profiling
# tab in ICE 4 project properties.
#
# PRJ 2021-01-30, v3.46.01
# Modify parseF2Info in MPLABCommEthernetMDNSHandler
# to recognize new response format of the
# F2 command which uses an offsets table
# instead of hard-coded offsets.
#
# PRJ 2021-01-08, v3.46.00
# Correct matchesSelectionCriteria() to account
# for multiple, non-ordered entries in 
# MPLABComm-USB and MPLABComm-Ethernet entries
# in the "selection" string to GetCurrentToolList
# (related to MPLABX-5956).
#
# PRJ 2021-01-07, v3.45.03
# Correct user supplied network tool problem
# (see MPLABX-5956).
#
# PRJ 2020-12-08, v3.45.02
# Expand GetStatus on Ethernet tool to return
# tool type of MPLABCOMM_TOOL_IS_ETHERNET
# or MPLABCOMM_TOOL_IS_WIFI. This is dependent
# upon changes to the tool firmware (see
# MHD-1616).
#
# PRJ 2020-12-04, v3.45.01
# Correct Ethernet tool discovery when using
# MPLABCOMM_PROVIDER_ALLOW_NETWORK_SCAN flag
# in GetCurrentToolList.
#
# PRJ 2020-11-17, v3.45.00
# Institute usage of MPLABCOMM_PROVIDER_ALLOW_NETWORK_SCAN
# with GetCurrentToolList. See code for comments.
#
# PRJ 2020-11-14, v3.44.02
# Update Ethernet tool to return a valid
# USB configuration descriptor on a call to
# GetDescriptor. See MPLABXE-5117. Endpoint
# retrieval support will only be through
# GetEndpointList on MPLABCommToolInterface2.
#
# PRJ 2020-11-13, v3.44.01
# First pass of v3.44.02.
#
# PRJ 2020-10-19, v3.44.00
# Update remote USB service provider to account
# for varying versions of low-level libraries
# based on the OS on which they run.
#
# PRJ 2020-10-13, v3.43.00
# Roll revisions on low-level libraries in
# their support of the composite ICE 4. Should
# also handle upcoming EDBG/AVR variants of
# the ICE 4 ("hybrid"). Revision number of
# MPLABComm is independent of low-level
# library version numbers; any similarity
# is coincidence.
#
# PRJ 2020-10-08, v3.42.11
# Add alternate method to stopStreamingData
# that also takes a mS timeout value.
#
# PRJ 2020-10-05, v3.42.10
# Debug notifications handling of ICE 4 FX3
# tool hot-plug events.
#
# PRJ 2020-09-29, v3.42.09
# Correct notifications handling of ICE 4 FX3
# tool hot-plug events.
#
# PRJ 2020-09-17, v3.42.08
# Correct removeUserSpecifiedNetworkToolIP routine.
#
# PRJ 2020-09-17, v3.42.07
# Modify startStreamingData and stopStreamingData
# methods to take a "connectionID" (which will be
# the endpoint number, but not necessarily be used
# as the endpoint number -- which companion tools
# such as the FX3 would not).
#
# PRJ 2020-09-14, v3.42.06
# Added methods to MPLABComm to provide a mechanism
# to add user supplied IP addresses to the selection
# string returned by StaticToolsManager. This is to
# accommodate the Manage Network Tools dialog box.
#
# PRJ 2020-08-27, v3.42.05
# Change stringFromByteArray in MPLABCommProvider
# and add constructor to MPLABCommEthernetTTCDescriptor.
#
# PRJ 2020-08-17, v3.42.04
# Clean up v3.42.03 to remove some debug log
# statements.
#
# PRJ 2020-08-13, v3.42.03
# See MPLABX-5691. Add check of "gtind" as
# well as "gt" in new GetTool method.
#
# PRJ 2020-08-11, v3.42.02
# Implement support for shared tools in Remote
# USB tools. Also implement PRENOTIFY on Attach
# on a remote USB tool.
#
# PRJ 2020-08-06, v3.42.01
# Implement support for shared tools in Ethernet
# tools. Also implement PRENOTIFY on Attach on
# an Ethernet tool.
#
# PRJ 2020-07-30, v3.42.00
# Finish implementing GetTool/ReleaseTool and
# tool Connect/Disconnect usage counts for
# shared tools.
#
# PRJ 2020-07-13, v3.41.02
# Finish implementing startStreamingData and
# stopStreamingData for MPLABCommUSBTool. No
# other MPLABComm tool object types have this
# implemented yet.
#
# PRJ 2020-07-10, v3.41.01
# Add first pass to abstract streaming data
# reads (implementing startStreamingData and
# stopStreamingData).
#
# PRJ 2020-07-07, v3.41.00
# Adjust USB service provider list for FX3
# "tool" recognition and handling (connect and
# disconnect).
#
# PRJ 2020-07-06, v3.40.00
# Add rescanNetwork, rescanNetworkAndGetToolList,
# getEthernetTTCDescriptor, and setEthernetTTCDescriptor
# to MPLABCommProviderInterface to provide
# support for setting Gen4 Ethernet capable tool
# default configuration and for rescanning
# networks for newly configured Ethernet/WiFi
# tools. In support of the Manage Network Tools
# dialog box.
#
# PRJ 2020-06-08, v3.39.00
# Add MPLABCommToolInterface4 to provide multiple
# buffers on a read continuous operation (to try
# to keep up with faster streaming data).
# Implemented only in the MPLABCommUSBTool.
# Also changed the shared flag handling of
# the newer GetTool call to also set the
# shared flag in the alternate personality tool
# that may exist. This is also done when the
# tool changes personality for the first time.
# Tool personalities are tied together by the
# tools' common serial number.
#
# PRJ 2020-05-29, v3.38.04
# Restructure readSocket method in
# SocketAccess to wait for all data
# requested.
#
# PRJ 2020-05-08, v3.38.03
# Safeguard against miscreant code sending a
# null for the Observer in calling the tool
# Attach and Detach methods.
#
# PRJ 2020-04-21, v3.38.02
# Temporarily turn off Ethernet hot-plug
# detect and update processes.
#
# PRJ 2020-04-20, v3.38.01
# Modify MPLABCommProvider Attach, Detach,
# and Notify to handle PRENOTIFY option.
#
# PRJ 2020-04-15, v3.38.00
# Lay in jury-rigged changes for multi-core
# device support. Not needed if Tool Manager
# were used. Also added hot-plug support
# for Ethernet ICE4 tool.
#
# PRJ 2020-04-08, v3.37.03
# Re-did how device list is created and list
# handle is determined and allocated for
# Ethernet ICE4 tool.
#
# PRJ 2020-04-07, v3.37.02
# Add support in Ethernet tool discovery for
# APIPA (Automatic Private IP Addressing).
#
# PRJ 2020-04-03, v3.37.01
# Add network interface traversal to Ethernet
# tool discovery.
#
# PRJ 2020-03-27, v3.37.00
# Finish query and 0xF2 command access to
# Ethernet-based ICE4 (Ethernet tool service
# provider).
#
# PRJ 2020-03-12, v3.36.02
# Add MPLABCOMM_TOOL_TRANSPORT_TYPE to selection
# in tool GetStatus method.
#
# PRJ 2020-03-02, v3.36.01
# Additional support for ICE4 Ethernet (reflect
# changes in StaticToolManager and platformtool.
#
# PRJ 2020-02-26, v3.36.00
# Add first pass of Ethernet service provider
# (in support of ICE4).
#
# PRJ 2019-12-18, v3.35.24
# Additional error codes.
#
# PRJ 2019-11-22, v3.35.23
# Additional error codes.
#
# PRJ 2019-11-15, v3.35.22
# Add logging of pipe number, type, and packet
# size to write and read pipe routines.
#
# PRJ 2019-10-02, v3.35.21
# Add new result constant(s). No functional
# change.
#
# PRJ 2019-09-30, v3.35.20
# Add logging of call stack in various Provider
# and USB Tool methods. Requires FINEST in MPLAB X
# log be turned on. Revert change in v3.35.18,
# in that, for now (until Tool Manager is working),
# the check for tool present has been added back
# in to the reserve tool operation. No other
# functional changes.
#
# PRJ 2019-09-27, v3.35.19
# Add logging back into MPLABCommProvider and
# MPLABCommTool Attach and Detach methods.
# No functional changes.
#
# PRJ 2019-09-23, v3.35.18
# Remove recently added check for tool present
# when tool is reserved. This is to allow the
# new ToolManager to reserve a tool even if
# that tool is not currently plugged in.
#
# PRJ 2019-09-16, v3.35.17
# Include additional status constants to
# support new Tool Manager. No functional
# changes.
#
# PRJ 2019-09-06, v3.35.16
# Implemented MPLABCommProviderInterface4 in
# MPLABCommProvider class. Created
# MPLABCommToolListEntry holder class. No
# functional changes to tool access. DLLs did
# not change.
#
# PRJ 2019-09-03, v3.35.15
# Add check in ReserveTool for whether tool
# is plugged in or not. Also expand logging
# on Connect/Disconnect and GetTool/ReleaseTool
# to include tool object Java reference number.
#
# PRJ 2019-08-21, v3.35.14
# Include additional logging in write and
# read pipe routines and in the connect and
# disconnect routines. No functional changes.
#
# PRJ 2019-08-20, v3.35.13
# Include additional error codes and description
# strings. No functional changes.
#
# PRJ 2019-08-01, v3.35.12
# To reflect changes in OS X USBAccessLink
# version change (to 3.35). See "Modified"
# comments in Makefile for MacOSXUSBLib
# project.
#
# PRJ 2019-07-29, v3.35.11
# Intermediate/debug changes only.
#
# PRJ 2019-07-22, v3.35.10
# Internal change only. When logging is turned
# on, write pipe now logs the tool index,
# byte count, and the first byte of data to
# be written.
#
# PRJ 2019-07-17, v3.35.09
# Changed Windows DLL to support Gen4 composite
# USB devices using alternate (registry-based)
# discovery method.
#
# PRJ 2019-07-10, v3.35.08
# Changed Windows DLL to support Gen4 composite
# USB devices.
#
# PRJ 2019-04-02, v3.35.07
# Update serial port service provider to
# allow DTR control.
#
# PRJ 2019-03-01, v3.35.06
# Rolled revision of Windows DLL (see change
# description in DLL source). Added back door
# in JNI usbGetDeviceInfo routine to retrieve
# extended Windows DLL version information.
# Linux and OS X are unaffected.
#
# PRJ 2019-02-25, v3.35.05
# Add proper logging lines into remote USB
# WritePipeEx and ReadPipeEx routines.
#
# PRJ 2019-02-04, v3.35.04
# Windows DLL rolled to rev 3.39 to clean
# calls to strcmp with null strings.
#
# PRJ 2019-01-22, v3.35.03
# Remove commented out debug code. Windows
# DLL rolled to rev 3.38 (alternate registry
# based discovery method added back in, but
# made the alternative method).
#
# PRJ 2019-01-10, v3.35.02
# INF file is correct. Specific comfig for
# PK4 is to have just HID and CDC, no DGI.
# See notes in USBAccessLink project.
# In MPLABComm, added more logging in
# WritePipe, ReadPipe, WritePipeEx, and
# ReadPipeEx.
#
# PRJ 2019-01-03, v3.35.01
# Rolled rev on Windows DLLs. Was putting
# workaround for missing INF file entry for
# PK4, PKOB4, and pk4hybrid when in EDBG
# mode, but INF file is to be corrected.
# Updated resource files in Windows DLL
# for dates and build info.
#
# PRJ 2018-12-17, v3.35.00
# Rolled revision since the Windows DLLs are
# now using a Registry-based mechanism to
# discover tools. Those Windows DLLs also
# provide a retry mechanism for "slow
# incoming" tools.
#
# ------------------------------------------
# PRJ 2018-12-10, v3.34.01
# Add error codes -173 and -174 to MPLABComm,
# related to Windows Registry access.
#
# PRJ 2018-11-21, v3.34.00
# Roll rev of MPLABComm to reflect changes
# to BitRock mplabcomm.xml file to handle
# multiple, differing versions.
#
# PRJ 2018-10-30, v3.33.07
# Add new MPLABCommVersion.txt file.
#
# PRJ 2018-10-29, v3.33.06
# Add MPLABCommVersionHandler.java to
# replace MPLABCommVersionInterface.java.
# This is the beginnings to altering the
# MPLABCommVersion.txt file to accommodate
# different DLL versions across the OSes
# which do NOT correspond anymore with the
# MPLABComm java version.
# Work must still be done in the BitRock
# MPLABComm installer builder in order to
# take advantage of these changes.
#
# PRJ 2018-10-16, v3.33.05
# Add more logging to tool Connect().
#
# PRJ 2018-09-21, v3.33.04
# Correct handling of local list handle
# and local tool ids between remote
# provider and remote service providers.
# Add ShuttleValues class.
#
# PRJ 2018-09-18, v3.33.03
# Make sure that there is only one entry
# in the remote USB server list for a
# combination of IP and port values.
# Must be used with remote bridge app
# version 2.00.
#
# PRJ 2018-09-04, v3.33.02
# Add proper release for any reserved child
# tool when a remove message comes in.
#
# PRJ 2018-08-29, v3.33.01
# Allow user to retrieve a child tool
# without having to call GetTool() on
# the parent tool.
#
# PRJ 2018-07-25, v3.33.00
# Account for interface class 0xFE for
# DFU support in Curiosity board (and
# for any board that has true DFU
# descriptors). Changes were all in
# the low-level, C++ libraries.
#
# PRJ 2018-07-03, v3.32.05
# Protect against a null string in
# MPLABCommMUSBRemoteTool method of
# GetDesciptor when retrieving the
# full description string.
#
# PRJ 2018-06-27, v3.32.04
# Correct USB remote code to handle PK4
# and ICD4 multiple PIDs properly. Other
# minor changes. Look for "NRI" and
# "2018.06.27" in the source code.
# These changes do NOT yet allow the
# remote USB to handle Atmel tool
# interfaces (subtools).
#
# PRJ 2018-06-04, v3.32.03
# Add specific error code descriptions for
# for SEGGER JLink tools. Reverses Linux
# "-300" error code interpretation. This
# may at some point be re-reversed.
#
# PRJ 2018-05-14, v3.32.02
# Bundle file grammar corrections.
#
# PRJ 2018-05-10, v3.32.01
# Add new error code (-172).
#
# PRJ 2018-05-07, v3.32.00
# Updates to DLLs/libraries:
# OS X: Remove call to USBDeviceOpen in the
#       method GetConfigDescriptorBuffer.
#       This was failing on composite
#       devices and is not necessary in
#       order to retrieve configuration
#       information.
# Windows: Properly release hidden window
#       that received notification
#       messages.
# Linux: No functional changes.
# RaspPi: No functional changes.
#
# PRJ 2018-03-16, v3.31.00
# Roll revision to match the updated Windows
# DLL (and the other libraries as well).
#
# PRJ 2018-03-12, v3.30.06
# Add MPLABCOMM_INVALID_STATE (to accommodate
# DFU support).
#
# PRJ 2018-02-20, v3.30.05
# Additional comments in GetTool to indicates
# it requires a paired call to ReleaseTool.
#
# PRJ 2018-02-19, v3.30.04
# Change GetToolIndex in the main provider to
# return an error when using a serial number
# as the selection criteria when there are
# multiple tools with the same serial number
# in the current tool list.
#
# PRJ 2018-02-08, v3.30.03
# Add MPLABCOMM_TOOL_IS_NOT_DFU_CAPABLE to error
# list and error strings.
#
# PRJ 2018-02-07, v3.30.02
# Add isDFUCapable() to MPLABCommToolInterface2
# and implement it in MPLABCommUSBTool.
#
# PRJ 2018-01-24, v3.30.01
# Correct problem in multiple list handling
# in GetCurrentToolList routine.
#
# PRJ 2018-01-18, v3.30.00
# Added instrumentation to the UpdateDeviceList
# routine in the Windows DLL (only). The
# instrumentation only "writes" to NUL, so
# only filters through the file system and
# takes up time. This appears to resolve some
# timing problems on tool connection.
#
# PRJ 2017-12-14, v3.29.02
# Finished adding support for emergency boot
# firmware recovery wizard modules.
#
# PRJ 2017-10-19, v3.29.01
# Added catch of java.lang.UnsatisfiedLinkError
# to end of finalCleanup calls to ReleaseToolList.
#
# PRJ 2017-10-05, v3.29.00
# Add handling for accepted class code values.
# These include 0x00, 0x03, 0xEF, and 0xFF.
# Expose control pipe write/read functionality
# to Java.
#
# PRJ 2017-10-05, v3.28.01
# Adjust SAM-BA port determination to account for
# more than one remembered instance of a SAM-BA
# device in the Windows registry. Also add
# Control Pipe access via the WritePipe and
# ReadPipe Java routines.
#
# PRJ 2017-08-11, v3.28.00
# Add familyStatus to USB device entry structure.
# Add XXXX<A> option to VID in selection in calls
# to create tool list (allows retrieval of a
# subtool via the MPLABCommToolChildAccessInterface).
#
# PRJ 2017-07-21, v3.27.00
# Fix bug that was preventing two Atmel Xplained boards
# with the same VID/PID to be correctly handled.
#
# PRJ 2017-06-20, v3.26.02
# Add Thread.sleep(5) to ReadPipeContinuous in serial
# port tool handling.
#
# PRJ 2017-06-15, v3.26.01
# Surround call to finalCleanup() in MLABCommProvider
# with a try-catch. This change does not affect any
# of the low-level libraries.
#
# PRJ 2017-06-02, v3.26.00
# Add support for Atmel composite devices. Also
# added EX methods for bulk write/read (though
# there is currently no special handling for
# these at this time). Added routine to return
# list of endpoints per tool. Other support methods.
#
# PRJ 2017-04-21, v3.25.00
# Change cListAndVendor<Integer,Integer> to
# cListAndVendor<Integer,String> to be able to
# properly compare incoming selection strings
# to existing lists.
#
# PRJ 2017-04-20, v3.24.01
# Add SAM-BA discovery interface and implementation.
# Interface name is MPLABCommSAMBADiscoveryInterface.
# These additions do not affect the low-level
# libraries.
#
# PRJ 2017-04-13, v3.24.00
# Redo serial port read routine to accommodate PM3
# needs. Other minor changes and bug fixes.
#
# PRJ 2017-03-06, v3.23.00
# Modify for support of multiple of VIDs. Also include
# restart device command implementation in Windows.
#
# PRJ 2016-11-04, v3.22.00
# Found reference to null pointer in Windows USB DLL code
# in regards to accessing configuration descriptors (pCfg
# in copyAccessEntry() in WinUSBAccess.cpp). Was causing
# IDE crash.
#
# PRJ 2016-09-27, v3.21.01
# Removed "synchronized" from USB pipe access commands and from
# USB descriptor retrieval routines.
#
# PRJ 2016-09-13, v3.21.00
# Rolled revision to accommodate body and C++ front end changes
# to DLLs (libraries), including restructure of GetDeviceDescriptor
# routine, and adding WriteInterruptPipeEx and ReadInterruptPipeEx
# (to accommodate user-supplied packet sizes; this was for Atmel).
#
# PRJ 2016-06-01, v3.20.01
# Add MPLABCommWarningInterface.
#
# PRJ 2016-05-10, v3.20
# Change to OSX library only. Changed time value in read thread
# handling call to CFRunLoopRunInMode from 0.0 to 0.0005 (500
# microseconds). This allows other processes to better run
# when there is no data available. This did not affect the
# other OSes libraries (rolled their revs to match).
#
# PRJ 2016-05-05
# Modified HID write in Windows and OSX low-level libraries to
# accept more than 64 bytes at a time. This does NOT affect
# the Linux library (though its rev has been rolled to match
# the other libraries).
#
# PRJ 2016-04-19
# On an open in Linux and OSX, do NOT automatically perform a set
# configuration.
#
# PRJ 2016-02-04
# Add error strings for erro.h and GetLastError return results.
#
# PRJ 2016-01-06
# Corrected problems with retrieval of error strings from error codes.
#
# PRJ 2015-11-24
# Add reset pipe function in USB DLL (not currently exposed in MPLABComm).
# Move version info around in USB DLL so that C++ interface can get to it.
# Use GetModuleHandleExA instead of GetModuleHandleA in USB DLL.
# On USB bulk R/W, check for max allowable transfer using GetPipePolicy in USB DLL.
#
# PRJ 2015-10-07
# Add MPLABCommProviderCleanupInterface and its implementation.
#
# PRJ 2015-10-06
# Roll preliminary Ethernet broadcast discovery process into the
# socket service provider.
#
# PRJ 2015-09-24
# Needed to update Windows USB DLLs. Also rolled the revs in the Linux
# and OSX USB libraries.
#
# PRJ 2015-09-15
# Initial rolling out of version-named libraries associated with
# MPLABComm.
