---
name: "inb"
section: "1"
platform: "linux"
package: "ioport"
version: "1.2-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/inb"
---

# inb(1)

access I/O ports

## NAME

inb, outb, inw, outw, inl, outl - access I/O ports

## SYNOPSIS

```
 inb ADDRESS
 inw ADDRESS
 inl ADDRESS
 outb ADDRESS DATA
 outw ADDRESS DATA
 outl ADDRESS DATA
```

## EXAMPLES

```
 inb 0x278
 outw 0x440 0xffff
```

## DESCRIPTION

These commands enable command line and script access directly to I/O ports on PC hardware.

The `"inb"`, `"inw"` and `"inl"` commands perform an input (read) operation on the given I/O port, and print the result.

The `"outb"`, `"outw"` and `"outl"` commands perform an output (write) operation to the given I/O port, sending the given data.  Note that the order of the parameters is ADDRESS DATA.

The size of the operation is selected according to the suffix, with `"b"` meaning byte, `"w"` meaning word (16 bits) and `"l"` meaning long (32 bits).

Port numbers are in the range 0-0xffff.  We don't support access to memory mapped devices.

Hexadecimal numbers (prefixed by `"0x"`), decimal numbers, and octal numbers (prefixed by `0`), are allowed as parameters.

## RETURN FROM "IN" OPERATIONS

The value read from the port by an "in" operation is normally printed in decimal.

Use the `"--hex"` option to print the result as hexadecimal (`"0x"` prefix is NOT printed).

Use the `"--code"` option to turn the result into an exit status.  Note that Unix/shell can only reliably return exit status in the range 0-0x7f, so this is not particularly useful in practice.

## TYPE AND SIZE OF OPERATION

The type and size of the operation is normally determined by the name of the command, eg. `"inb"` is a read operation of 1 byte.

You can override this by using the `"--read"`, `"--write"` and/or `"--size N"` options.  For `"--size N"`, `"N"` should be `1`, `2` or `4` meaning byte, word and long respectively.

## PERMISSIONS

You would normally need to be root or have the `"CAP_SYS_RAWIO"` capability in order to run these commands.

## WARNING

Using these commands can cause Bad Things to happen to your hardware.

## SEE ALSO

[**iopl**(2)](/iopl/2.md), [**mem**(4)](/mem/4.md), \<http://et.redhat.com/~rjones/ioport\>, \<http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html\>.

## AUTHORS

Richard W.M. Jones \<rjones @ redhat . com\>

## COPYRIGHT

(C) Copyright 2009 Red Hat Inc., \<http://et.redhat.com/~rjones/ioport\>.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
