# The drivers list and a driver's page

> The Drivers folder's catalog of every driver this station carries, where a driver is added, opened and removed, and a driver's page: Refresh, Discover, Pair device and Remove driver on its bar, Add device, Add line and Add broker at the right of the title of the table they grow, the Scan scope card, the device table and the state of a driver the package does not carry.

Two surfaces on the Connector page are about drivers rather than devices. The **Drivers** folder, the first root of the Communication tree, opens the catalog: every driver this installation carries, the ones added to the station first and the others grouped by the equipment they reach. A **driver** opens its own page, from its row under the Drivers folder or from **Open** on its catalog row: its devices (or, for Modbus RTU, its serial lines, for Generic serial and TCP and SCPI instruments, its serial lines and its devices, and for MQTT, its brokers) and the verbs that grow the branch. Both are visible with View connector; adding and removing a driver and the create verbs need Configure connector. Omron, like Generic serial and TCP, shows its serial lines and its devices.

## The catalog {#the-catalog}

The header reads **Drivers** with the line "Every driver this station carries: the ones added to it first, under On this station, then the others grouped by the equipment they reach. Add the ones you use: an added driver stands in the tree, with or without devices." and a pill that counts the catalog and the devices: "25 drivers · 3 devices", with the serial lines between them once one exists ("25 drivers · 1 line · 3 devices").

### The table {#the-table}

| Column | What it shows |
| --- | --- |
| **Driver** | The display name. |
| **Description** | The driver's one-line description, or "Driver not included in this package." for a driver the package does not carry. |
| **Devices** | How many devices are configured under it. |
| **Health** | For a driver with a device, a serial line or a broker, a dot and the word: Not known yet, Disabled, Offline, Partly online or Online, rolled up from the driver's devices (its lines for Modbus RTU, its lines and its devices off a line for Generic serial and TCP and SCPI instruments, its brokers for MQTT). Empty for a driver with nothing configured, which has nothing to judge. | Omron rolls up the way Generic serial and TCP does.

The catalog holds every driver this package carries, added or not, plus any absent driver that saved devices or lines still name. The drivers added to the station come first, under **On this station**, an absent driver among them since it still holds something; the others follow grouped by category: each group under a header with its name and its count, in the order PLCs, Industrial protocols, Instruments and acquisition, Wireless, Web and APIs, Files and databases and Test, and alphabetical inside it ([which driver is in which](drivers#every-driver)). With no driver added there is no On this station group. Because the list is read from the Connector's driver registry, it settles a few seconds after launch, once the Connector is running.

### Row actions {#row-actions}

| Command | What it does | Greyed when (situation) | Not drawn when (role) |
| --- | --- | --- | --- |
| **Add driver** (a driver not added) | Adds the driver to the station: it stands under the Drivers folder with nothing under it ("0 devices"), and its row moves up into **On this station**, marked and brought into view, while the catalog stays on screen; **Open** on the row, or the driver's row in the tree, opens its page. The feed reads "Added driver 'Modbus TCP'." Nothing is created under it. | A run holds the station, the runtime is stopped, or a scan or a pairing is under way (the tooltip says which). | Without Configure connector. |
| **Open** (an added driver) | Selects the driver in its row under the Drivers folder and opens its page. | Never. | Never. |
| **Remove driver** (an added driver; danger ink, last) | Takes the driver out of the tree and sends its row back to its category in the catalog, where Add driver brings it back. The feed reads "Removed driver 'Modbus TCP'." It deletes nothing and asks nothing. | The driver holds a device, a serial line, a broker or a folder (the tooltip reads "This driver still holds something in the tree. Delete what is under it first."), a run holds the station, the runtime is stopped, or a scan or a pairing is under way. | Without Configure connector. |

A driver's page holds what is set up before the first device: the Scan scope card, the Matter driver's networks, the OPC UA driver's equipment access, and Add device, Add line or Add broker. It is reached once the driver is added, by **Open** on its catalog row or its row in the tree. Adding turns nothing on: an added driver with nothing under it reads nothing, and Enable and Disable keep their own meaning on a device, a line or a broker, a row kept in the tree that stops reading.

### The command bar {#the-command-bar}

| Command | What it does | Greyed when (situation) | Not drawn when (role) |
| --- | --- | --- | --- |
| **Refresh all** | Reads the configuration again from the database and rebuilds the tree. The running Connector stays as it is: every save already applies its own device to it. The Drivers folder stays selected with the catalog open, what was expanded stays expanded, and the feed reads "Devices refreshed." | A run holds the station or the runtime is stopped. | Never. |

## A driver's page {#a-drivers-page}

The header carries the driver's name, its device count in parentheses ("Simulated  (9)"; the line count for Modbus RTU, the broker count for MQTT) and a health dot. The line under it depends on the situation. For a role without Configure it reads "The devices this driver talks to. Open a row to inspect its settings and tags." For Matter: "Pair a new physical device over Bluetooth, or discover nodes already commissioned in the local Fabric." For any other driver: "Add a device, then use the row actions to open, enable/disable or delete it. The driver is fixed per device." For a driver the package does not carry: "The devices a configuration from elsewhere left here. Open a row to inspect its settings and tags." Modbus RTU says instead "Each line owns one physical serial bus. Configure the port tuple on the line, then add unit-addressed devices beneath it.", MQTT "Each broker is one connection to an external MQTT broker. Configure where it answers and how the station signs in, then add the devices that publish through it.", Generic serial and TCP "Serial lines carry the instruments that share a bus, and network devices sit under the driver. Add a line or a device, then open it to describe its messages." and SCPI instruments "Serial lines carry the instruments that share a bus, and the instruments reached over TCP or VISA sit under the driver. Add a line or a device, then open it to give its queries." Omron says "Serial lines carry the PLCs read over Host Link, each by its unit number, and the PLCs reached over the network sit under the driver. Add a line or a device, then open it to give its tags." Under the header, the serial lines, brokers and devices that have an error of their own are named, one line for each kind ("2 devices with errors: Boiler, Chiller"); tags are named by their device, never here.

### The command bar {#the-command-bar-1}

| Command | What it does | Greyed when (situation) | Not drawn when (role) |
| --- | --- | --- | --- |
| **Refresh** | The same re-read as Refresh all; the running Connector stays as it is. The driver stays selected with its page open, and what was expanded stays expanded. | A scan or a pairing is running, a run holds the station, the runtime is stopped. | Never. |
| **Discover** | Starts the driver's scan; becomes **Cancel** ("Canceling…" once pressed) while it runs. Details on [Discovery](connector-discovery). | The scope is invalid (the tooltip says what is missing, as the **Scan scope** card does), a pairing is running, or the station refuses mutations. | Without Configure connector, or when the driver has no scan. Modbus RTU scans from a serial line's page and MQTT from a broker's page, so their driver pages have no Discover, and Generic serial and TCP has no scan at all. |
| **Pair device** (Matter only) | Opens the pairing form on the page. | A scan or a pairing is running, the form is already open, the station refuses mutations, or no network on the **Networks** card is usable yet ("Add the network the device will join first."). | Without Configure connector. |
| **Remove driver** (danger ink, on the right) | The catalog's Remove driver, for the driver on screen: the driver leaves the tree and stays in the catalog, the column goes back to the Drivers folder with the catalog open, and the feed reads "Removed driver 'Modbus TCP'." | The driver holds a device, a serial line, a broker or a folder ("This driver still holds something in the tree. Delete what is under it first."), a scan or a pairing is running, or the station refuses mutations. | Without Configure connector. |

The bar keeps what acts on the driver itself. Add device, Add line, Add broker and the address a scan reads are on the page, next to what they act on. Right-clicking the driver row offers the verb that grows its branch (Add line, Add broker, Add device or, under Matter, the bar's Pair device; both Add device and Add line for Generic serial and TCP and SCPI instruments), New folder at the driver's own level (every driver but Modbus RTU and MQTT, whose devices hang on a line or a broker), and Refresh, plus the bar's **Discover** where the driver scans, then, after a separator, **Remove driver** in danger ink, refused as the bar's is. Omron offers both as well.

### On the page {#on-the-page}

What grows one of the page's tables stands at the right of that table's title, above the rows it adds to, and the address a scan reads stands in the Scan scope card, above the device table.

| Command or field | Where | What it does | Greyed when (situation) | Not drawn when (role) |
| --- | --- | --- | --- | --- |
| **Add device** (every driver except Matter, Modbus RTU and MQTT) | At the right of the **Devices** title. | Creates "New device" (then "New device 2", and so on), enabled, at the driver's own level, marked in this table and scrolled into view; see [Devices](connector-devices). Under Generic serial and TCP the new device is a network device, a TCP client, and under SCPI instruments a device reached over TCP. Under Omron, a PLC reached over the network (FINS over UDP). | The package does not carry the driver (tooltip "Driver not included in this package."), a scan or a pairing is running, or the station refuses mutations. | Without Configure connector. |
| **Add line** (Modbus RTU, Generic serial and TCP, SCPI instruments, Omron) | At the right of the **Serial lines** title. | Creates a disabled serial line, marked in this table; see [Serial lines](connector-lines). | A scan is running, or the station refuses mutations. | Without Configure connector. |
| **Add broker** (MQTT only) | At the right of the **MQTT brokers** title. | Creates a disabled broker, marked in this table; see [MQTT](driver-mqtt#the-broker). | The package does not carry the driver, a scan is running, or the station refuses mutations. | Without Configure connector. |
| Discovery target field | The **Scan scope** card, under the line "Scan for devices reachable through this driver." | For a driver whose scan takes an address (OPC UA: "OPC UA server address, e.g. opc.tcp://plc-host:4840"), the box holds the address Discover reads. Until it holds one the driver can use, a red line under it says what is expected and Discover greys. | While a scan runs. | Without Configure connector, or when the driver's scan takes no address. |

### The device table {#the-device-table}

Every driver except Modbus RTU and MQTT lists its devices, the same rows the tree draws:

| Column | What it shows |
| --- | --- |
| **Device** | The name, followed by the tree's red marker when the device has an error of its own, with the reason as its tooltip. |
| **Endpoint** | The Base URI the Connector connects to, assembled from the device's Connection card. Empty for a device with no host yet. |
| **Tags** | How many tags the device has. |
| **Health** | Dot and word, as on the tree. |
| **Last error** | The most recent warning or error the journal associated with the device, or "Driver not included in this package." for a device the package cannot serve, or "Host not entered yet" for an enabled device with no host, which the station is not trying to reach ("NI-DAQmx device not entered yet" for an NI-DAQmx device with no device name, "Base channel not entered yet" for a Fluke NetDAQ device with its host and no base channel, "Folder not entered yet" for a File device with no folder, "Server not entered yet" for a Database device with no server, "DevEUI not entered yet" or "Station EUI not entered yet" for a LoRaWAN device with no identifier). It is the device's own error, the one its marker carries: a tag's error stays on the tag, and a device whose serial line or broker has an error shows none, since that line or broker carries it. For an error the cell says what failed as the device's page says it, in the station's language: the "Connect failed for device …:" that opens the journal line, the class of the exception after it and what the station does next ("Retrying in the background …") are left out. A failure the station recognizes (a port that refuses, a firewall in the way, a timeout, a name that does not resolve, a Modbus exception) is a sentence of the station's own, and any other keeps the driver's own words. The cell's tooltip, the tree's marker and the Events page keep the whole line. |

Row actions: **Open** for every role, then for Configure connector **Enable** and **Disable** (each greyed when it does not apply) and **Delete** in danger ink, with a confirmation naming the device and its tags. All four grey while a scan or a pairing runs. The empty table reads "No devices yet."

Modbus RTU lists its lines instead: **Line**, **Physical tuple** (port · baud · format · timeout), **Devices**, **State** (a dot plus text such as "Online · 2/2 devices online") and the actions Open, Enable, Disable and Delete, the last three for Configure connector only. Enable is also greyed while the line's tuple is invalid. A line whose port failed carries the red marker after its name.

Generic serial and TCP and SCPI instruments carry the same table of lines, whose **Physical tuple** has no timeout (port · baud · format), above their device table, which lists every device of the driver, those on a line included; see [Generic serial and TCP](driver-generic-serial-tcp#the-drivers-page) and [SCPI instruments](driver-scpi#the-drivers-page). Omron carries the same table above its devices; see [Omron](driver-omron#host-link-on-a-serial-line).

MQTT lists its brokers: **Name**, **Address**, **Devices**, **State** and the same four actions; see [MQTT](driver-mqtt#the-drivers-page). A broker that refused the station carries the red marker after its name.

### Around the table {#around-the-table}

Above the device table, the Modbus TCP driver has a **Scan scope** card of its own, with the hosts and unit IDs its scan asks (for Configure connector only), the SNMP driver one with the agent and the subtrees its scan walks (for Configure connector only; see [SNMP](driver-snmp#the-scan-scope-card)), the File driver one with the file its scan reads (for Configure connector only; see [File](driver-file#the-scan-scope-card)), the Database driver one with the device whose database its scan reads and the tables it reads (for Configure connector only; see [Database](driver-database#the-scan-scope-card)), and the Matter driver has its **Networks** card, where the Wi-Fi and Thread networks its devices join are registered before the first pairing (for Configure connector only; see [Networks](driver-matter#networks)); Pair device opens the **Pair Matter device** form above it. While a scan runs, its progress line stands just above the table, and the **Discovered devices** card appears under the table with the scan's results. All of them are on [Discovery](connector-discovery).

## Driver not included in this package {#driver-not-included-in-this-package}

A driver group exists for an absent driver only because persisted devices name it: a restored backup, a configuration brought from another machine. Its page then shows a caution banner, "Driver not included in this package": the devices came from a configuration that had the driver, keep their settings and can be deleted, but this installation cannot reach them, so they stay offline and no new device can be added here. On such a page Add device stays drawn and greyed with that reason, Discover is not offered, Copy device on its devices is greyed with the same tooltip, and the runtime's onboarding failure is not repeated as a Last error, because there is no fault to investigate. Which drivers this can happen with is on [Drivers](drivers#a-driver-the-package-does-not-carry).

## What these pages do not do {#what-these-pages-do-not-do}

The catalog cannot be extended from the page, and a driver cannot be renamed, reordered or turned off. A device cannot be moved to another driver. Deleting a driver's devices from the table deletes them one at a time, each with its own confirmation; there is no delete-all. Deleting the last device, serial line, broker or folder of a driver leaves the driver in the tree: only Remove driver takes it out, and nothing takes a driver out of the catalog. Removing a driver never deletes what was under it, since it is refused while anything is.
