firewire-request(8)

πŸ“¦
version 0.5.1 Β· 2 versions
, in debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– firewire-request β€” bestie edition πŸ’–

okay so this is firewire-request, part of the linux-firewire-utils little family of tools, and honestly? it's giving "I talk to your FireWire devices so you don't have to" ✨ she queries them, she configures them, she's the whole package πŸŽ€


✨ 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. no cap, that's the whole job and she does it flawlessly πŸ’…

The device parameter specifies the device file (/dev/fw*) of the device that is to be accessed. like, which friend are we texting, be specific 🫢

All numbers must be specified in hexadecimal notation. all of them. every single one. hex or it doesn't count, bestie 😭

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. yes the shell will absolutely eat your spaces if you don't wrap that in quotes β€” protect her πŸ₯Ί

In the following commands, address is either a 48-bit address or a register name. cute either way πŸ’œ

Here are all the commands, and there's a lot, so stay with me:

🌈 the commands

  • firewire-request device read address [length] β€” send a read request to the device, and print the value returned by the device, if successful. a little "hey what's this value" moment πŸ“–

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. so it just knows. main character energy tbh πŸ‘‘

  • 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. like a group chat message to literally everyone on the bus πŸ“’ only for local-controller devices though, don't get it twisted

  • firewire-request device locktype address data [data2] β€” execute a lock transaction (an atomic change) on the device πŸ”’ atomic like she's doing it in one indivisible breath, slay

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. (yes the original really does say "the the", she's quirky like that πŸ™ˆ)
  • 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. so those three get away with one, everyone else needs data AND data2, periodt πŸ’…

firewire-request will print the value returned by the device, which is the old register value at the beginning of the transaction. the before picture, if you will πŸ“Έ

  • 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. back and forth, like a proper conversation πŸ’¬
  • firewire-request device reset|long_reset β€” issue a bus reset on the bus connected to device. a full factory reset of the vibe check, everything starts over πŸ”„

πŸŽ€ OPTIONS πŸŽ€

  • -D, --dump-register-names β€” print register names that can be used as address, and exit. a little cheat sheet, iconic ✨
  • -v, --verbose β€” when used together with --dump-register-names, print the complete list of register names. the full tea, no skimping β˜•
  • -h, --help β€” print a summary of the command-line options and exit. she'll explain herself 🫢
  • -V, --version β€” print the version number of firewire-request on the standard output and exit. just the number, on stdout, done πŸ“Œ

πŸ¦‹ NOTES πŸ¦‹

Whether you can access a device depends on the permissions set for its device file. Usually, most devices require root privileges. so yeah, most of the time you're gonna need root β€” it's not you, it's the permissions 😭


πŸ’€ 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/">.

(that URL is long enough to be a whole personality trait, but keep it exactly like that, no editing the links bestie πŸ™)


⭐ SEE ALSO ⭐

lsfirewire(8), firewire-phy-command(8)


and that's the whole page, you ate it, go forth and hex-address responsibly πŸ’–βœ¨

this lil guide is from the linux-firewire-utils crew and it's dated 22 May 2011 β€” vintage but still serving looks πŸŽ€πŸ¦‹πŸ’