NIC / ethtool diagnostics
v0.1.3Inspect physical network interface cards via ethtool: driver and firmware versions across every NIC (the "what firmware is my i40e fleet running?" check), plus per-interface link settings, hardware counters, offload features, and ring-buffer sizes. Read-only — no ethtool SET operations.
ethtool
Install
emisar pack install
fetches this pack, re-validates it, and verifies its content hash against the
--hash
below — the exact bytes this page was rendered against, so a tampered copy is
rejected — before copying it into the runner's packs dir. The command reloads a
running daemon itself; no manual restart.
sudo emisar pack install nic --hash sha256:16c6174d1f6bf7d1abc5d0e5c6067dd5c2f87bcc37200341f869ab7abf63a667
Setup
Reads NIC driver / firmware / link state via ethtool. No credentials needed, and nothing here changes NIC configuration — every action is a read-only ethtool GET, which runs as the unprivileged runner user (the kernel allows ethtool GETs, including statistics, without CAP_NET_ADMIN).
Notes
- Read-only by construction: the pack uses only ethtool GET flags (-i, -S, -k, -g, and bare link), never the config-changing counterparts (-K, -G, -A, -C, -s). Interface arguments are validated to start with a letter, so a value can't be slipped in as an ethtool option flag.
-
Interface arguments are physical device names (e.g. eth0, eno1, enp24s0f0). nic.firmware scans every NIC that has a
/sys/class/net/*/devicelink and skips virtual interfaces (lo, veth, bonds, bridges).
Verify it works
Runs nic.firmware, a low-risk
read that confirms the pack can reach its target. Run it on the host once the pack
is installed; pack install runs it for
you.
sudo emisar pack verify nic
Install and configure a pack walks through the whole sequence on a host.
Actions 6 total
View on GitHub-
nic.driver_info exec low Low — read-only or trivially reversible
ethtool -i <iface>
Show full driver info for one NIC — driver, driver version, firmware-version, expansion-ROM version, bus-info, and the supports-* capability flags.
View source on GitHub -
nic.features exec low Low — read-only or trivially reversible
ethtool -k <iface>
Show offload feature state for one NIC — checksum offload, GRO/GSO/TSO, scatter-gather, RX/TX hashing, and which are fixed vs tunable. Useful when chasing throughput or checksum-related issues.
View source on GitHub -
nic.firmware exec low Low — read-only or trivially reversible
NIC driver + firmware versions (all interfaces)
List driver, driver version, firmware-version, and PCI bus address for every physical NIC on the host — one line each, from `ethtool -i`. Optionally filter to a single driver (e.g. i40e). The fleet "what firmware is each NIC running?" check.
View source on GitHub -
nic.link exec low Low — read-only or trivially reversible
ethtool <iface>
Show link settings for one NIC — negotiated speed and duplex, autoneg, port/medium, and the link-detected flag. The "is this NIC up and at the speed I expect?" check.
View source on GitHub -
nic.ring exec low Low — read-only or trivially reversible
ethtool -g <iface>
Show RX/TX ring-buffer sizes for one NIC — the hardware preset maximums and the current settings. Small rings under bursty load show up as rx_dropped in nic.stats.
View source on GitHub -
nic.stats exec low Low — read-only or trivially reversible
ethtool -S <iface>
Show hardware + driver counters for one NIC — per-queue and total rx/tx packets, bytes, errors, drops, and discards. The place to look for packet loss that ip/ifconfig counters don't break out.
View source on GitHub