Skip to content

Releases: otfabric/ethernetipctl

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 26 Oct 19:50
dcf0a18

Date: 2026-10-26
Previous release: v0.2.1

Summary

Built on go-ethernetip v0.3.0. The commands and their output are unchanged
(docs/examples.md regenerated: only timings and connection identifiers
differ).

Dependencies

Fixed (through go-ethernetip)

  • adapter --logix: a structure template's definition is sized as Rockwell's 1756-PM020 specifies (attribute 4 × 4 − 23 octets); pylogix, node-ethernet-ip and libplctag read the last member name of a template truncated before, and pylogix looped on a template read past the end.
  • adapter: replies on a Class 3 connection fit the connection's negotiated size (a large Logix read is a partial transfer), and a Multiple Service Packet may carry up to 1000 requests.

Upgrade notes

  • None.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 26 Oct 15:39
fd4dd8e

Date: 2026-10-26
Previous release: v0.2.0

Summary

Built on go-ethernetip v0.2.1, which fixes the simulated adapter's discovery.

Dependencies

Fixed

  • adapter: ListIdentity over UDP (what discover sends) could be off at random. The adapter's I/O socket could take the number of its explicit port before the UDP socket for ListIdentity was opened (seen on Windows); the adapter then answered ListIdentity over TCP only and discover found nothing. The UDP socket is now opened first.

Upgrade notes

  • None.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 14:43
5acee52

Date: 2026-10-26
Previous release: v0.1.0

Summary

Documentation with real output, structure names in the Logix commands, and
go-ethernetip v0.2.0.

Dependencies

  • Built on go-ethernetip v0.2.0: listen-only connections next to their owner on one I/O endpoint, multicast left and joined on the right interface, TLS verified against the dialed host, and the Logix emulation of adapter --logix addressing BOOL arrays by DWORD as Logix does.

Changed

  • tag list names structure types by their template (Motor); JSON type was "struct 0x0123" (kept when the template cannot be read). BOOL arrays, which Logix lists as DWORD arrays, show as BOOL.
  • tag decode names the structure (Motors[1] = Motor[1] (handle 0xBEEF); JSON field struct); STRING values of decoded fields are quoted.
  • diagnose reports the identity status word (status=0x0000) instead of an empty value.
  • With adapter --logix, an index into a BOOL array counts DWORDs (Bits[1] is bits 32 to 63), as on a Logix controller.

Added

  • docs/examples.md: every documented command run against the simulated adapter with its real output, regenerated by make examples; the README shows these outputs.

Upgrade notes

  • Scripts that matched "struct 0x...." in tag list JSON should use the template field, which is unchanged.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 00:28
9fc1f18

Date: 2026-10-26
Previous release: none

Summary

The first release of ethernetipctl: an EtherNet/IP and CIP command-line originator, diagnostics tool and adapter simulator, built on go-ethernetip and following the structure and conventions of dnp3ctl (--format text|json|table, a JSON error object, stable exit codes, ETHERNETIPCTL_* environment variables).

Dependencies

Added

  • Discovery and identity: discover (one ListIdentity datagram to a broadcast address or a device; never a scan), identify (ListIdentity over the session and the Identity object), status (health in one line), services, interfaces.
  • Explicit messaging: read (Get_Attribute_Single, Get_Attributes_All with --all; aliases attribute, get) and write (Set_Attribute_Single) of any @class/instance/attribute, raw hex or decoded and encoded as CIP data types; objects (the Message Router's class list), object (class attributes and an instance), reset. --route (Unconnected_Send) and --connected (Class 3) on every explicit command.
  • Connections and I/O: session (alias connect), forward-open (with --keep), forward-close, connections (Connection Manager counters), io (Class 1 I/O connections streaming the inputs), assembly read and assembly write.
  • Diagnostics: diagnose, eight structured checks with outcome and timing (exit 7 when one fails).
  • Logix tags (Rockwell, vendor specific): tag read, tag write (also single bits), tag list, tag types, tag decode.
  • EDS: eds inspect, eds validate (exit 3 on errors), eds generate (from a device or flags), eds codegen (Go code).
  • Adapter simulator: adapter (alias server) from flags or a YAML/JSON model (identity, assemblies, echo, Logix templates and tags), streaming its events.
  • Safety: every command that changes a device needs --yes and sends nothing without it.

Upgrade notes

  • First release.