---
name: "iov2"
section: "1"
platform: "linux"
package: "linuxcnc-uspace"
version: "1:2.9.4-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/iov2"
---

# iov2(1)

interacts with HAL or G-code in non-realtime

## NAME

iov2 - interacts with HAL or G-code in non-realtime

## SYNOPSIS

**\[EMCIO\]**\
 **EMCIO = iov2**

## DESCRIPTION

I/O control handles I/O tasks like coolant, toolchange, E-stop and lube. The signals are turned on and off in non-realtime with G-code or in the case of E-stop in HAL. \
 I/O Control V2 (iov2) adds more toolchager support for communication with the toolchanger.

Whether **io** or **iov2** is used can be chosen in the \[EMCIO\] section of the INI file.

## Pins

### Basic pins

- **iocontrol.0.coolant-flood**

  **(Bit, Out) TRUE when flood coolant is requested.**

- **iocontrol.0.coolant-mist**

  **(Bit, Out) TRUE when mist coolant is requested.**

- **iocontrol.0.emc-enable-in**

  **(Bit, In) Should be driven FALSE when an external estop condition exists.**

- **iocontrol.0.lube**

  **(Bit, Out) TRUE when lube is requested.  This pin gets driven True when** **the controller comes out of E-stop, and when the "Lube On" command gets** **sent to the controller.  It gets driven False when the controller goes** **into E-stop, and when the "Lube Off" command gets sent to the controller.**

- **iocontrol.0.lube\_level**

  **(Bit, In) Should be driven FALSE when lubrication tank is empty.**

- **iocontrol.0.tool-change**

  **(Bit, Out) TRUE when a tool change is requested.**

- **iocontrol.0.tool-changed**

  **(Bit, In) Should be driven TRUE when a tool change is completed.**

- **iocontrol.0.tool-number**

  **(s32, Out) Current tool number.**

- **iocontrol.0.tool-prep-number**

  **(s32, Out) The number of the next tool, from the RS274NGC T-word.**

- **iocontrol.0.tool-prep-pocket**

  **(s32, Out) This is the pocket number (location in the tool storage** **mechanism) of the tool requested by the most recent T-word.**

- **iocontrol.0.tool-prepare**

  **(Bit, Out) TRUE when a T***n* tool prepare is requested.

- **iocontrol.0.tool-prepared**

  **(Bit, In) Should be driven TRUE when a tool prepare is completed.**

- **iocontrol.0.user-enable-out**

  **(Bit, Out) FALSE when an internal estop condition exists.**

- **iocontrol.0.user-request-enable**

  **(Bit, Out) TRUE when the user has requested that estop be cleared.**

### Additional IO v2 pins

**iocontrol.0.emc-abort** **(BIT,OUT) Signals emc-originated abort to toolchanger.**

- **iocontrol.0.emc-abort-ack**

  **(BIT,IN) Acknowledge line from toolchanger for previous signal, or jumpered to abort-tool-change if not used in toolchanger.** **NB: after signaling an emc-abort, iov2 will block until emc-abort-ack is raised.**

- **iocontrol.0.emc-reason**

  **(S32,OUT) Convey cause for EMC-originated abort to toolchanger.** **Usage: UI informational. Valid during emc-abort True.**

- **iocontrol.0.start-change**

  **(BIT,OUT) Asserted at the very beginning of an M6 operation, before any spindle-off, quill-up, or move-to-toolchange-position operations are executed.**

- **iocontrol.0.start-change-ack**

  **(BIT,IN) Acknowledgment line for start-change.**

- **iocontrol.0.toolchanger-fault**

  **(BIT,IN) Toolchanger signals fault.** **This line is contionuously monitored.** **A fault toggles a flag in iocontrol which is reflected in the toolchanger-faulted pin.**

- **iocontrol.0.toolchanger-fault-ack**

  **(BIT,OUT) Handshake line for above signal.** **Will be set by iov2 after above fault line True is recognized and deasserted when toolchanger-fault drops.** **Toolchanger is free to interpret the ack; reading the -ack lines assures fault has been received and acted upon.**

- **iocontrol.0.toolchanger-reason**

  **(S32,IN) Convey reason code for toolchanger-originated fault to iov2. Usage**

- **iocontrol.0.toolchanger-faulted**

  **(BIT,OUT) Signals toolchanger-notify line has toggled and toolchanger-reason-code was in the fault range.** **Next M6 will abort.**

- **iocontrol.0.toolchanger-clear-fault**

  **(BIT,IN) Resets TC fault condition. Deasserts toolchanger-faulted if toolchanger-notify is line False.** **Usage: UI - e.g. clear fault condition button.**

- **iocontrol.0.state**

  **(S32,OUT) Debugging pin reflecting internal state.**

**See**  ⟨http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ToolchangerProtocolProposal⟩ **for additional information.**

## SEE ALSO

[**io**(1)](/io/1.md) [**iocontrol**(1)](/iocontrol/1.md) **LinuxCNC(1)**

## REPORTING BUGS

Report bugs at  ⟨https://github.com/LinuxCNC/linuxcnc/issues⟩

## AUTHOR

Derived from a work by Fred Proctor & Will Shackleford.\
 Rework & adding v2 protocol support by Michael Haberler.

## COPYRIGHT

Copyright © 2011 Michael Haberler.\
 This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
