NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3698 most downloaded on PyPI
Python interface for SEGGER J-Link.
Last release 7 months ago
04 Mar 2026
Release timing varies
gaps range from 3 weeks to 12 months
Nearly every release is documented
notes for 41 of 41 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
41 releases · first in 2017
@diggit: Fixed typo in exception name raised when JLINKARM_SelectUSB fails.
JLINKARM_SelectUSB fails.Python 2 is no longer supported.
One column per quarter.
jtag_store_instruction - To send an instruction to the JTAG device.
jtag_store_instruction - To send an instruction to the JTAG device.jtag_store_data - To send data to the JTAG device (TDO).jtag_get_device_info - To get information about a JTAG device on the scan chain.jtag_read / jtag_read{8,16,32} - To read data from a JTAG device (from the input buffer / TDI).jtag_sync_bits / jtag_sync_bytes - To force a flush of the output buffer..flash() raised a JLinkEraseException, now raises a
JLinkFlashException() as expected.README.md.@tianxiaoMCU: Added APIs to write to the peripheral register of the connected target:
peripheral_write8()peripheral_write16()peripheral_write32()peripheral_write64()@karl-rainlabs: Fixed incorrect decorator around JTAG APIs. Previously, the APIs required a connection, but now can be used prior to connection.
@bbrown1867: Temporary library copying is now determined dynamically based on the version of the SDK in use. Previously, the default behaviour would a
@hkpeprah: Added Power Trace APIs.
@gtowers-dukosi: Added API method set_script_file() to specify a Script File to be loaded.
set_script_file() to specify a Script
File to be loaded.@FletcherD: Fixed a bug in load_library() on Linux where a 32-bit library was being incorrectly loaded on ARM64-based Linux machines.
load_library() on Linux where a 32-bit library
was being incorrectly loaded on ARM64-based Linux machines.@cpattenden-sq: Fixed bug in flash() where return value was being checked against a void function; would lead to exceptions being raised unexpectedly.
flash() where return value was being checked against a void function; would lead to exceptions being raised unexpectedly.@chanqueo: Added use_tmpcpy field to constructor for JLink and Library instances to workaround temporary files not been cleaned up; a future patch wil
use_tmpcpy field to constructor for JLink and Library instances to workaround temporary files not been cleaned up; a future patch will change the default behaviour based on the version of the SDK. By default, temporary files are used for the SDK binary.set_reset_strategy() from @connection_required to @open_required.future.@boraozgen: Fixed installation error that prevented setup.py install when six was not installed.
setup.py install when six was not installed..flash() to no longer erase chip on flash; users will now need to ensure they call .erase() prior to flashing a non-erased region of flash.@hkpeprah: Add tests to source distribution.
@dottspina: Revert JLINK_SDK_NAME change to allow downstream consumers to use existing class property.
JLINK_SDK_NAME change to allow downstream consumers to use existing class property.@hkpeprah: Added tests to the published sdist.
tests to the published sdist.@dottspina: Changed behaviour of load_library() on Linux-based platforms to resolve sonames; fixes an issue where find_library() would fail, and the u
load_library() on Linux-based platforms to resolve sonames; fixes an issue where find_library() would fail, and the underlying platform-specific methods would not return the path to the soname file.@hkpeprah: Added tests to sdist distribution.
tests to sdist distribution.pylink-swv available in package.swv -> pylink-swv.@kylemanna: Fixed error where argparse would fail on Python3 when no arguments were passed to the CLI.
argparse would fail on Python3 when no arguments were passed to the CLI.sdist and bdist_wheel.connection_required() -> open_required() to support being called without connection to target.@johannesneyer: Add RTT example as command-line script pylink-rtt.
pylink-rtt.@jsiverskog: Updated default logging code to pass errors='repalce' when decoding the string from the library; fixes UnicodeErrors causing an exit.
errors='repalce' when
decoding the string from the library; fixes UnicodeErrors causing an exit.@kettenbach-it: Changed disable_dialog_boxes() to disable flash info windows when called (programming pop-ups). Updated enable_dialog_boxes() to show
disable_dialog_boxes() to disable flash info windows when called (programming pop-ups). Updated enable_dialog_boxes() to show flash info windows when called.@Sauci: Added method, set_log_file, to set logging file for logs; redirects logs from STDOUT / STDERR to log file.
set_log_file, to set logging file for logs; redirects logs from STDOUT / STDERR to log file.@Gargy007: Changed decorator for functions for toggling the reset line (set_reset_pin_high() and set_reset_pin_low()) to open_required() instead of co
set_reset_pin_high() and set_reset_pin_low()) to open_required() instead of connection_required() to allow toggling the reset line when the debugger is attached instead of only when the target is connected. This allows toggling of the reset line before connection to enable connect under reset.set_reset_pin_high
and set_reset_pin_low to open_required() instead of
connection_required() to allow toggling the reset pin when the debugger is
attached, but the target isn't connected.@RisinT96: Changed behaviour for getting the target device during connect() to use get_device_index() instead of iterating manually through each suppo
connect() to use get_device_index() instead of iterating manually through each supported device; reduces speed of connect() from several seconds to sub one second.@Gargy007: Changed decorator on coresight methods to new method coresight_configuration_required() instead of connection_required() to enable use of C
coresight_configuration_required() instead of connection_required() to enable use of CoreSight methods without requiring a connection.@cy18: Reduced memory / CPU usage of rtt_read() by slicing buffer before converting to list in return value of rtt_read().
rtt_read() by slicing buffer before converting to list in return value of rtt_read().tempfile.tempdir could be None when creating a path for the library copy; switched to using tempfile.gettempdir() which populates the cached variable if unset.@Moral-ecomo: Fixed an issue where the unsecure hook was unbounded from the class instance, resulting in it not being invoked to determine whether to
@hkpeprah: Added rtt_get_buf_descriptor(), and rtt_get_status() with associated structures for describing an RTT buffer, and the status of an RTT cont
rtt_get_buf_descriptor(), and rtt_get_status() with
associated structures for describing an RTT buffer, and the status of an
RTT control block.rtt_start() to take optional block address to specify
where RTT block starts.@rjshade: Changed implementation of .open(), and .close() to use a reference count. Each call to .open() increments the open reference count for the D
.open(), and .close() to use a reference count. Each call to .open() increments the open reference count for the DLL, while each call to .close() decrements the reference count. When .close() is called, and the reference count hits zero, the DLL is closed..open() and .close() to operate using a reference
count; DLL is now only closed if open reference count is zero.@Sauci: Added CP15 API: cp15_present, cp15_register_read, and cp15_register_write.
cp15_present, cp15_register_read, and cp15_register_write.@charliebruce: Fix for VTarget in hardware status; incorrectly assigned to 32-bit instead of 16-bit integer.
VTarget in hardware status; incorrectly assigned to 32-bit instead of 16-bit integer.VTarget in hardware status; incorrectly displayed mA instead of mV.register_read(), register_read_multiple(), register_write(), and register_write_multiple()) to alternatively take regsiter names instead of just register indices.@bojanpotocnik: Implemented context manager to enable automatic debugger connection opening when context is entered, and connection closed when exited
@michalfita: Fixed handling for DLL in 64-bit Python instances: on 64-bit Windows platforms running 64-bit Python, the 32-bit DLL was always being loa
@wallacbe: Removed sleep after connect; no-op issued to make sure the target is ready for debugging.
sleep after connect; no-op issued to make sure the target is ready for debugging.async decorator renamed to async_decorator due to collision with Python3
async decorator renamed to async_decorator due to collision with Python3open_tunnel() method added to open a connection to a debugger connected to a Remote Server.async decorator renamed to async_decorator to support
new linting rules in Python3.six requirement to setup.py and
requirements.txt.open_tunnel() method to connect to a J-Link over the
remote server.First minor release. Changes as follow:
First minor release. Changes as follow:
jlink.flash_file() and jlink.flash() do not supply power to the target by default.power_on parameter added to flash_file() and flash() to power on target during flashing.Fixes for SWD read. Incorrect value was returned when the MSB was set.
Fixes for SWD read. Incorrect value was returned when the MSB was set.
swd_read32 to properly handle reading
32-bit register when MSB is set.swd_read8, and swd_read16 to properly handle
reading 32-bit register when MSB is set.Fixes a bug when the DLL is unloaded on a Linux platform.
Fixes a bug when the DLL is unloaded on a Linux platform.
Added support for unlocking NXP (read: Freescale/Kinetis) devices.
Added support for unlocking NXP (read: Freescale/Kinetis) devices.
Adds support for RTT. Pull requests included:
Adds support for RTT. Pull requests included:
rtt_stoprtt_readrtt_writertt_get_num_up_buffersrtt_get_num_down_buffersrtt_control### Changed - Cleaned up documentation. - Linted code.
Your coding agent can read these notes before it upgrades. Set up the MCP server →