isadump reads a known ISA register space directly. This guide covers its two access modes and how to preserve a chip's bank selection when one is used.
This is a hardware probing task, not a general system inventory command. Allow about 15 minutes for a prepared host, plus time to identify the correct chip address from its documentation.
Warning: random ISA reads can crash the system, corrupt hardware state, cause data loss, or do worse. Do not guess an address, data register, bank, key sequence or range. These examples show the syntax; replace every placeholder with values confirmed by the chip datasheet or your platform documentation. A maintenance window is sensible when probing a machine that matters.
The examples below describe the installed Ubuntu package lm-sensors 1:3.6.0-9build1, which provides the lm-sensors 3.6.0 tool. The local manual page is dated April 2011, so treat the local syntax as the authority for this machine rather than assuming another release has identical diagnostics:
$ command -v isadump
/usr/sbin/isadump
$ dpkg-query -W -f='${Package} ${Version}\n' lm-sensors
lm-sensors 1:3.6.0-9build1
Running isadump normally needs access to ISA I/O ports and may require elevated privileges. Check the command path and package as your ordinary account first. Use sudo only for the final, reviewed probe, never to compensate for an unknown address.
Checkpoint: you should have a confirmed chip model, a documented address scheme, and a recovery plan for a machine crash before continuing.
isadump supports an I2C-like layout and a flat ISA address space.
addrreg followed by datareg. For a monitoring chip whose base address is 0x0290, the common pair is 0x0295 and 0x0296, but that is a convention, not proof your host uses it. For a Super-I/O chip the usual pair is 0x2e and 0x2f; still confirm the pair and any configuration key against the datasheet.-f and takes one ISA address directly. It can read up to 256 bytes. The address must be between 0x0000 and 0xffff; if you provide a range, it must be a multiple of 16 bytes.A bare I2C-like syntax example looks like this:
$ sudo isadump 0xADDRREG 0xDATAREG
Do not run that placeholder command: it is a template for checking argument order. Both port values must be integers from 0x0000 through 0x3fff.
$ sudo isadump -f 0xADDRESS 16
Again, the address is a placeholder. If no range is supplied, isadump reads 256 bytes and forcibly aligns the address to a 256-byte boundary. That default can make you inspect a different starting point than expected, so give an explicit, documented range during a first check.
Some chips expose more registers through banks. In I2C-like mode, the bank is an integer from 0 to 31. The optional bank register defaults to 0x4e for Winbond chips and 0x07 for Super-I/O chips. In flat mode the documented defaults are different: the bank register is 0x09 for the National Semiconductor PC87365 and PC87366 family. Use the default only when it matches the device documentation.
This is the shape of a banked I2C-like read:
$ sudo isadump 0xADDRREG 0xDATAREG BANK [BANKREG]
Square brackets mean an optional argument, not characters to type. Replace BANK with a decimal value from 0 to 31. If your source specifies a bank register, write it as the final value, such as 0x07; otherwise omit it.
When a bank is supplied, the program restores the original bank value before it exits; if no bank is supplied, no bank change is attempted. That restoration reduces persistent side effects, but it does not make an incorrect probe safe.
Super-I/O chips often need a key sequence to enter configuration mode. Use -k only with the sequence documented for the exact chip. The manual lists:
0x87,0x01,0x55,0x550x550x87,0x87A typical documented workflow first selects a logical device, then reads the address registers. This shows the form for a Super-I/O device whose documentation says logical device 9 is correct:
$ sudo isadump -k 0xKEY1,0xKEY2 0x2e 0x2f 0x09
0xKEY1 and 0xKEY2 are deliberately visible placeholders, not valid values. Use the exact comma-separated bytes from the datasheet, including every byte in the sequence. The device's address word may appear at register 0x60, for example as ec c0; do not treat that example as a universal result.
Once the address word is confirmed, the second stage can use flat mode. If the documented address word is 0xecc0 and the chip's register map says 16 bytes are appropriate, the command form is:
$ sudo isadump -f 0xecc0 16
The address and range in this example come from the manual's illustration. Confirm them against your device before running anything: reading a wrong logical device or range can affect unrelated hardware.
By default, isadump waits for confirmation before accessing the ISA bus. Keep that pause for an interactive investigation:
$ sudo isadump -f 0xADDRESS 16
WARNING: Be careful!
Do you want to continue? [Y/n]
The exact prompt and dump formatting can vary with the installed build and hardware. Read the prompt and stop if the command line is not exactly the one you reviewed.
The -y option disables the confirmation and performs the operation directly. It exists mainly for scripts, so adding it to an unfamiliar command removes a useful last chance to notice a mistake. Use -y only after the command has been tested interactively and the address, mode, range and bank behaviour are fixed.
Normal reads display byte values. The -W option requests 16-bit reads, while -L requests 32-bit reads. These are not display-only formatting choices: the width changes how the program accesses and presents the registers. Use the width specified by the chip documentation, and do not combine both options:
$ sudo isadump -W 0xADDRREG 0xDATAREG
$ sudo isadump -L 0xADDRREG 0xDATAREG
These commands are templates. A register map that defines byte-wide registers should be read without -W or -L.
Recovery: if a probe reports an error or a machine becomes unstable, stop using the address and return to the datasheet and platform notes. There is no general undo for an unintended hardware access; recovery may require a reboot or physical maintenance.
isadump(8) syntax.-y only for a known script.