UDFINFO(1)
UDFINFO(1) πΏβ¨
General Commands Manual β okay bestie, grab a snack, this is the manual for udfinfo, and it's a long one so we're doing it in parts π«Ά
β¨ NAME β¨
udfinfo β show information about UDF filesystem πΈ
β¨ SYNOPSIS β¨
udfinfo [ options ] device
β¨ DESCRIPTION β¨
So basically, udfinfo spills all the tea about a UDF filesystem β whether it lives on a block device or hides inside a disk file image. π
And here's the slay part: the output is designed to be parsed by external applications or scripts. It's giving machine-readable, not just pretty-to-look-at. Periodt. π₯
β¨ OPTIONS β¨
-h,--helpβ shows you the usage and the whole list of options. The classic "help me bestie" move. π-b,--blocksize=block-size β sets the size of blocks, in bytes. For a UDF filesystem a valid block size is a power of two in the range from 512 to 32768, and it must match a device logical (sector) size. If you don't specify it,udfinfotries to autodetect the block size: first it tries the logical (sector) size, then it tries all valid block sizes. Detective work, honestly. π--startblock=start-block β tells it the block location where the UDF filesystem starts. This is used for calculating the block location of the Volume Recognition Sequence (32 kB after the start block) and the first Anchor Volume Descriptor Pointer (256 blocks after the start block).
Normally the start block is 0, but for Multisession UDF optical discs it's the block location where the last session of the Multisession UDF disc starts.
If you skip it, udfinfo tries β for optical discs β to detect the start block of the last session from the disc Table Of Contents. Otherwise, the value 0 is used.
If you want to access some previous session of a Multisession UDF optical disc, you have to specify the correct block where that previous session starts. And also specify where that session ends, via the --lastblock option. Both. No skipping. π¨
For Multisession UDF disc images stored in a file, there is no way to detect where the last session starts, so you gotta specify the correct start block location manually, taken from the original optical disc Table Of Contents.
(Option available since udfinfo 2.3)
--lastblock=last-block β tells it the block location where the UDF filesystem ends. It's used for calculating the block location of the second and third Anchor Volume Descriptor Pointer (256 blocks prior the last block, and the last block itself).
Normally the last block is the number of disk blocks minus one, but for Multisession UDF optical discs, when you're reading a different session than the last one (the one specified by --startblock), it's the block location where the specified session ends.
If you skip it, udfinfo for optical discs tries to detect the last recorded block, with a fallback to the last block of the device or disk file image.
To access some previous session of a Multisession UDF optical disc, you must specify correct values for both --startblock and --lastblock. Both, bestie, I'm serious. π€
(Option available since udfinfo 2.3)
--vatblock=vat-block β tells it the block location of the Virtual Allocation Table. The Virtual Allocation Table is present only on UDF disks with a Virtual Partition Map, and it must be at the last written/recorded disk block.
If you skip it, udfinfo for optical discs tries to detect the last recorded block, with a fallback to the last block of the block device or disk file image, or the block specified by --lastblock. In most cases this fallback does not have to work, and for disk file images with a Virtual Allocation Table you're gonna need to specify the correct location yourself.
The Virtual Allocation Table contains locations of UDF disk blocks needed to read data storage, determinate used and free space blocks, read the File Set Identifier, and calculate the Windows-specific Volume Serial Number. It also contains the Logical Volume Identifier, and it overwrites the one previously stored in the Logical Volume Descriptor. Iconic multitasker. π
--localeβ encodes UDF string identifiers on output according to current locale settings (this is the default).--u8β encodes UDF string identifiers on output to 8-bit OSTA Compressed Unicode format, without the leading Compression ID byte, which is equivalent to Latin1 (ISO-8859-1) encoding. Heads up though: this will work only for strings whose Unicode code points are all belowU+100.--u16β encodes UDF string identifiers on output to 16-bit OSTA Compressed Unicode format, without the leading Compression ID byte, which is equivalent to UTF-16BE.--utf8β encodes UDF string identifiers on output to UTF-8. Simple. Clean. Slay. β¨
β¨ EXIT STATUS β¨
udfinfo returns 0 if successful, and non-zero if there are problems β like, say, a block device that does not contain a UDF filesystem. Rude, but it happens. π
β¨ OUTPUT FORMAT β¨
The first part of the udfinfo standard output contains information in key=value format. Here's the full list of all the keys and what they mean, no skips, no summaries:
filenameβ File name of the selected block device or disk file imagelabelβ label is an alias forlvid, seeudflabel(8)section UDF LABEL AND UUIDuuidβ UUID are first 16 hexadecimal lowercase digits offullvsid, but seeudflabel(8)section UDF LABEL AND UUIDlvidβ UDF Logical Volume Identifier stored in UDF Logical Volume Descriptorvidβ UDF Volume Identifier stored in UDF Primary Volume Descriptorvsidβfullvsidafter uuid part, typically 17.β127. characterfsidβ UDF File Set Identifier stored in UDF File Set Descriptorfullvsidβ UDF Volume Set Identifier stored in UDF Primary Volume Descriptorownerβ UDF Logical Volume Info1 stored in UDF Implementation Use Volume Descriptor, represents Owner name, person creating the medium or filesystem (available since udfinfo 2.3)organizationβ UDF Logical Volume Info2 stored in UDF Implementation Use Volume Descriptor, represents Organization name responsible for creating the medium or filesystem (available since udfinfo 2.3)contactβ UDF Logical Volume Info3 stored in UDF Implementation Use Volume Descriptor, represents Contact information for the medium or filesystem (available since udfinfo 2.3)appidβ UDF Application Identifier stored in UDF Primary Volume Descriptor, identifies application that created medium or filesystem (available since udfinfo 2.3)impidβ UDF Developer Identifier stored in UDF Implementation Identifier of UDF Primary Volume Descriptor, uniquely identifies the implementation which created medium or filesystem (available since udfinfo 2.3)winserialnumβ Windows-specific Volume Serial Numberblocksizeβ UDF block sizeblocksβ Number of all blocks on the selected block device or disk file imageusedblocksβ Number of used space blocks on UDF disk for data storagefreeblocksβ Number of free space blocks on UDF disk for data storagebehindblocksβ Number of blocks which are behind the last block used by UDF disknumfilesβ Number of stored files on UDF disknumdirsβ Number of stored directories on UDF diskudfrevβ UDF revision needed for reading UDF diskudfwriterevβ UDF revision needed for writing or modifying UDF diskstartblockβ Block location where the UDF filesystem starts (visible only when non-zero, available since udfinfo 2.3)lastblockβ Block location where the UDF filesystem ends (visible only when it is not same as the last block on disk, available since udfinfo 2.3)vatblockβ Block location of the UDF Virtual Allocation Table (visible only when available)integrityβ UDF integrity of Logical Volume, one of:opened,closed,unknownaccesstypeβ UDF Access Type, one of:overwritable,rewritable,writeonce,readonly,pseudo-overwritable,unknownsoftwriteprotectβ Status of UDF SoftWriteProtect flag, eitheryesorno(available since udfinfo 2.2)hardwriteprotectβ Status of UDF HardWriteProtect flag, eitheryesorno(available since udfinfo 2.2)
When UDF integrity is not closed it means that the UDF disk was not properly unmounted, is in an inconsistent state, and needs repairing. Not me being dramatic β that's just what it means. π
When either thesoftwriteprotectorhardwriteprotectflag is set, then the UDF disk should be treated as read-only. Do not mess with it. π
All UDF string identifiers are stored on the UDF disk in Unicode, therefore they are locale or code page agnostic. The options --locale, --u8, --u16 and --utf8 control how the identifiers are encoded on output.
All newline characters from the UDF string identifiers are removed, so it is guaranteed that the newline character is present only as a separator. Clean. πΈ
The second part of the udfinfo standard output contains a list of UDF block types stored on the device, one per line, in the following format:
start=block-num, blocks=block-count, type=block-type
Meaning that block-type starts at UDF block block-num and spans block-count blocks on the device. π«
The Windows-specific Volume Serial Number is a non-standard 32-bit checksum, calculated as four separate 8-bit XOR checksums of a 512 bytes long UDF File Set Descriptor. So therefore, it cannot be set or changed, as opposed to UUID which is 64-bit long. This non-standard checksum is used only by Windows systems (since the Windows 98 era, when it was introduced) and can be displayed on Windows systems by applications like vol, dir or fsutil.exe. Windows being Windows, iykyk. πͺ
π LIMITATIONS π
okay bestie, story time, because the old versions of udfinfo had some moments. not their fault fr fr, but you need to know:
udfinfoprior to version 2.3 was unable to handle Multisession UDF discs correctly π. it always printed only info about the first session (the oldest one) and not about the last session (the most recent). so you'd be out here reading tea leaves about the wrong session. not it.udfinfoprior to version 2.2 was unable to print Unicode strings with code points aboveU+FFFFcorrectly π¦. the emoji-adjacent girlies were simply not rendering.udfinfoprior to version 2.2 was unable to read Metadata Partition. therefore, determining used and free space blocks, reading File Set Identifier and calculating Windows-specific Volume Serial Number did not have to be available or correctly calculated for disks with UDF revisions higher than2.01which had Metadata Partition π . like, the math was mathing wrong.udfinfoprior to version 2.1 was unable to read Virtual Allocation Table stored outside of Information Control Block. therefore the above limitation applied also for some Write Once media π. yeah, it stacked. no cap.
moral of the story: upgrade your udftools, bestie. the glow-up is real. β¨
π«Ά AUTHOR π«Ά
Pali RohΓ‘r <pali.rohar@gmail.com>
the icon, the legend, the moment. π
π AVAILABILITY π
udfinfo is part of the udftools package since version 2.0 and is available from https://github.com/pali/udftools/. go get it, it's giving open source excellence. π
π SEE ALSO π
and that's the whole page, bestie!! this one comes from the udftools package, section Commands, page UDFINFO(1) β go forth and inspect those filesystems with main character energy. slay, stay hydrated, and always read the LIMITATIONS. π
β¨ππ¦
π¦ where this page comes from
- alpine 3.24: udftools-doc 2.3-r2 Β· GPL-2.0-or-later
- arch rolling: udftools 2.3-3 Β· GPL
- debian bookworm: udftools 2.3-1 Β· GPL-2.0-or-later
- debian trixie: udftools 2.3-2 Β· GPL-2.0-or-later
- fedora 43: udftools 2.3-12.fc43 Β· GPL-2.0-or-later
- fedora 44: udftools 2.3-13.fc44 Β· GPL-2.0-or-later
- nixos 26.05: udftools 2.3
- nixpkgs unstable: udftools 2.3
- opensuse-leap 16.0: udftools 2.3-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: udftools 2.3-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: udftools 2.3-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: udftools 2.3-160000.2.2 Β· GPL-2.0-or-later
- ubuntu jammy: udftools 2.3-1 Β· GPL-2.0-or-later
- ubuntu noble: udftools 2.3-1build2 Β· GPL-2.0-or-later
- ubuntu questing: udftools 2.3-2
- ubuntu resolute: udftools 2.3-2build1 Β· GPL-2.0-or-later
- ubuntu stonking: udftools 2.3-2build1 Β· GPL-2.0-or-later
- Copyright (C) 2017-2021 Pali RohΓ‘r <pali.rohar@gmail.com>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms