---
name: "firewire-request"
section: "8"
platform: "linux"
package: "linux-firewire-utils"
version: "0.5.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/firewire-request"
---

# firewire-request(8)

query and configure FireWire devices

## NAME

firewire-request - query and configure FireWire devices

## SYNOPSIS

**firewire-request** \[*options*\] *device* *command* \[*parameters*\]

## DESCRIPTION

**firewire-request** is a utility to query and configure FireWire devices.

The *device* parameter specifies the device file (**/dev/fw**\*) of the device that is to be accessed.

All numbers must be specified in hexadecimal notation. When specifying data blocks, you can separate bytes or quadlets with spaces, but then you have to remember to quote them in the shell so that all bytes are recognized as a single parameter.

In the following commands, *address* is either a 48-bit address or a register name.

The following commands are available:

- **firewire-request** *device* **read** *address* \[*length*\]

  Send a read request to the device, and print the value returned by the device, if successful.

-

  If *length* is not specified, it is derived from *address*: for a named register, the register's length is used; for a numerical address, a default length of one quadlet (4 bytes) is used.

- **firewire-request** *device* **write**\|**broadcast** *address* *data*

  Send a write request to the device.

-

  Broadcasts are allowed only for a *device* that corresponds to a local controller, and are sent to all the other devices on the bus.

- **firewire-request** *device locktype address data* \[*data2*\]

  Execute a lock transaction (an atomic change) on the device.

-

  *locktype* can be any of the following:

  - **mask\_swap**

    Change the bits set in *data* to the value in *data2*.

  - **compare\_swap**

    If the register has the same value as *data*, set it to *data2*.

  - **add**\[**\_big**\]

    Increase the register by *data*.

  - **add\_little**

    Increase the little-endian register by *data*.

  - **bounded\_add**\[**\_big**\]

    If the register has not the the same value as *data*, increase it by *data2*.

  - **wrap\_add**\[**\_big**\]

    If the register has not the the same value as *data*, increase it by *data2*, else set it to *data2*.

-

  All transaction types except **add**/**add\_big**/**add\_little** require two parameters.

-

  **firewire-request** will print the value returned by the device, which is the old register value at the beginning of the transaction.

- **firewire-request** *device* **fcp** *data*

  Send the message *data* to the device's FCP command register, and print the response returned by the device to the local FCP response register.

- **firewire-request** *device* **reset**\|**long\_reset**

  Issue a bus reset on the bus connected to *device*.

## OPTIONS

- **-D, --dump-register-names**

  Print register names that can be used as *address*, and exit.

- **-v, --verbose**

  When used together with **--dump-register-names**, print the complete list of register names.

- **-h, --help**

  Print a summary of the command-line options and exit.

- **-V, --version**

  Print the version number of **firewire-request** on the standard output and exit.

## NOTES

Whether you can access a device depends on the permissions set for its device file. Usually, most devices require root privileges.

## BUGS

Report bugs to \<"linux1394-devel@sourceforge.net"\>.\
 "linux-firewire-utils" home page: \<"https://git.kernel.org/pub/scm/utils/ieee1394/linux-firewire-utils.git/"\>.

## SEE ALSO

[**lsfirewire**(8)](/lsfirewire/8.md), [**firewire-phy-command**(8)](/firewire-phy-command/8.md)
