Repository navigation
Releases: otfabric/ethernetipctl
Release list
v0.2.2
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
- Built on go-ethernetip v0.3.0, tested against eleven independent EtherNet/IP stacks.
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
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
- Built on go-ethernetip v0.2.1.
Fixed
adapter: ListIdentity over UDP (whatdiscoversends) 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 anddiscoverfound nothing. The UDP socket is now opened first.
Upgrade notes
- None.
v0.2.0
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 --logixaddressing BOOL arrays by DWORD as Logix does.
Changed
tag listnames structure types by their template (Motor); JSONtypewas"struct 0x0123"(kept when the template cannot be read). BOOL arrays, which Logix lists as DWORD arrays, show asBOOL.tag decodenames the structure (Motors[1] = Motor[1] (handle 0xBEEF); JSON fieldstruct); STRING values of decoded fields are quoted.diagnosereports 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...."intag listJSON should use thetemplatefield, which is unchanged.
v0.1.0
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
- Built on go-ethernetip v0.1.0.
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; aliasesattribute,get) andwrite(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(aliasconnect),forward-open(with--keep),forward-close,connections(Connection Manager counters),io(Class 1 I/O connections streaming the inputs),assembly readandassembly 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(aliasserver) 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
--yesand sends nothing without it.
Upgrade notes
- First release.