lsscsi(8)
๐ lsscsi(8) โ LSSCSI, but make it a group chat ๐
bestie you're reading the lsscsi(8) page and honestly? proud of you. let's go. ๐
๐ธ NAME ๐ธ
lsscsi โ list SCSI devices (or hosts), list NVMe devices
โจ SYNOPSIS โจ
lsscsi [--brief] [--classic] [--controllers] [--device] [--generic]
[--help] [--hosts] [--kname] [--list] [--long] [--long-unit] [--lunhex]
[--no-nvme] [--pdt] [--protection] [--protmode] [--scsi_id] [--size]
[--sysfsroot=PATH] [--sz-lbs] [--transport] [--unit] [--verbose]
[--version] [--wwn] [H:C:T:L]
๐ฆ DESCRIPTION ๐ฆ
okay so. this whole thing reads sysfs (Linux kernel series 2.6 and later, no cap) and lists the SCSI devices (or hosts) that are currently attached to your system. plot twist: lots of non-SCSI storage devices (but not all of them, so don't @ me) actually use the SCSI subsystem in Linux. and in lsscsi version 0.30 they added support for listing NVMe devices. we love growth. ๐ฑ
In the default mode โ one line per device (LU or NVMe namespace) โ every single line kicks off with a 4 element tuple wrapped in square brackets. For SCSI devices: the first element H is the host number, the second element C is the controller number, the third element T is the target number, and the final element is the Logical Unit Number (LUN). All four are integers, periodt. For NVMe namespaces, scroll down two paragraphs, I got you. And when you hand it the --hosts option for SCSI devices, the tuple shrinks down to just one element: the host number. a glow-down, but on purpose. โจ
If you pass an H:C:T:L tuple as an argument on the command line, it acts like a filter and only the devices that match it get listed. The colons don't have to be present, and '-', '*', '?' or missing components at the end are all interpreted as wildcards. The default is '*:*:*:*' which means to match devices (i.e. Logical Units). Any filter string using '*' or '?' should be surrounded by single or double quotes so your shell doesn't go feral and expand it. If '-' is used as a wildcard then the whole filter tuple should be prefixed by '-- ' to tell this utility there are no more options on the command line to be interpreted. A leading '[' and trailing ']' are permitted (e.g. '[1:0:0]' matches all LUNs on 1:0:0). It may also be used to filter --hosts, in which case only the H is active and may be either a number or in the form "host<n>" where <n> is a host number.
โ ๏ธ real talk bestie: quote your wildcards. an unquoted * in a shell is giving chaos energy and it will not end well for anyone.
For NVMe devices and controllers, almost all of that last paragraph applies. The main difference is that "N" appears in the 'H' (first) position. The 'C' position for NVMe is the controller's Linux-generated "char" device minor number, which is the first number that appears in a typical NVMe controller name, for example: /dev/nvme2. The 'T' position for NVMe is the "CNTLID" value. The final 'L' position is the NVMe namespace identifier, which is typically a sequential value starting at 1. That leading explicit "N" for NVMe devices gets converted internally into a large value (32,767) that should not interfere with any Linux-generated SCSI host number; it also means the numeric sort used to show hosts (controllers) and devices (LUs or logical units) will always place NVMe devices and controllers after those that use the SCSI subsystem. To filter using an H:C:T:L argument for NVMe controllers, "hostN", "hostN:<num>", "N" or "N:<num>" may be used; when no "<num>" is given, only NVMe controllers will be listed (i.e. it lists no SCSI hosts (HBAs)).
By default in this utility, device node names (e.g. /dev/sda or /dev/root_disk) are obtained by noting the major and minor numbers for the listed device obtained from sysfs (e.g. the contents of /sys/block/sda/dev) and then looking for a match in the /dev directory. This "match by major and minor" business is what lets devices that have been given a different name by udev (for example) still be correctly reported by this utility. ๐
In some situations it may be useful to see the device node name that Linux would produce by default, so boom: the --kname option is provided. An example of where this may be useful is kernel error logs, which tend to report disk error messages using the disk's default kernel name.
๐ OPTIONS ๐
heads up: arguments to long options are mandatory for short options as well. The options are arranged in alphabetical order based on the long option name. Hyphenated long options can also take underscore, and vice versa (e.g. --scsi_id or --scsi-id are acceptable). flexible queen. ๐ซถ
-b,--briefโ reduces one line per device output to the tuple and the primary device name. This may simplify scripts that process the output of this utility.
With the --generic option it will show on each line the tuple (from which the bsg pass-through device name can be deduced), the primary device name (which the block subsystem uses) and the sg device name (also a pass-through).
When the --pdt option is used together with this option, the SCSI Peripheral Device Type (PDT) is displayed in hex (with a leading "0x") between the tuple and the primary device name. For NVMe namespaces "0x0" is displayed (for a disk or direct access device).
-c,--classicโ the output is similar to that obtained from'cat /proc/scsi/scsi'.-C,--controllersโ lists NVMe controllers and SCSI hosts. This is a synonym for the--hostsoption.-d,--deviceโ after outputting the (probable) SCSI device name, the device node major and minor numbers are shown in brackets (e.g."/dev/sda[8:0]").-g,--genericโ output the SCSI generic device file name. Note that if the sg driver is a module it may need to be loaded, otherwise'-'may appear.
NVMe does not have generic (char) devices in the same sense as SCSI. Instead, NVMe Admin, NVM (i.e. block type commands such as Read and Write) and MI (Management Interface (e.g. to an enclosure)) commands are all sent to the containing controller, whose device name is shown when the --hosts option is used.
To unclutter the single line per device mode, the --brief option combined with this option should help.
-h,--helpโ output the usage message and exit.-H,--hostsโ list the SCSI hosts and NVMe controllers currently attached to the system. If this option is not given (and the--controllersoption is not given) then SCSI devices (logical units (LUs)) followed by NVMe devices (namespaces) are listed.-k,--knameโ use the Linux default algorithm for naming devices (e.g. block major 8, minor 0 is"/dev/sda") rather than the "match by major and minor" in the/devdirectory as discussed above.-L,--listโ output additional information in<attribute_name>=<value>pairs, one pair per line preceded by two spaces. This option has the same effect as'-lll'.-l,--longโ output additional information for each SCSI device (host). Can be used multiple times for more output, in which case the shorter option form is more convenient (e.g.'-lll'). When used three times (i.e.'-lll') it outputs SCSI device (host) attributes one per line; preceded by two spaces; in the form"<attribute_name>=<value>".-U,--long-unitโ output logical unit name in full, if available. It replaces the normal vendor, product and revision strings given in the single logical unit per line mode. If no logical unit name is found,"none"is printed. If the logical unit name is long (e.g. a UUID) then following fields are pushed further to the right as required. This option is functionally equivalent to the'-uuu'option.
If the option is used twice (e.g. '-UU') then EUI, NAA, UUID and T10 vendor ID formats are prefixed by "eui.", "naa.", "uuid." and "t10." respectively. Note that the SCSI name format used by iSCSI should already be prefixed by 'iqn.'. Using the --unit option 4 or more times (e.g. '-uuuu') will have the same action as '-UU'. --long_unit is also an acceptable form when invoking this option.
-x,--lunhexโ when this option is used once, the LUN in the tuple (at the start of each device line) is shown in"T10"format, which is up to 16 hexadecimal digits. It is prefixed by"0x"to distinguish the LUN from the decimal value shown in the absence of this option. Also, hierarchal LUNs are shown with a"_"character separating the levels. For example the two level LUN:0x0355006600000000will appear as0x0355_0066. If this option is given twice (e.g. using the short form:'-xx') then the full 16 hexadecimal digits are shown for each LUN, prefixed by"0x".
For NVMe, the namespace identifier (nsid) is shown in the "L" position. The nsid is a 32 bit unsigned quantity with 0x0 and 0xffffffff reserved. Without this option, the nsid is shown in decimal. When this option is used once the nsid is output in hex with a lead 0x and with up to 3 leading zeros. When this option is used twice the nsid is output in hex with up to 7 leading zeros.
-N,--no-nvmeโ this option excludes NVMe devices and controllers from the output. This option may be needed to stop NVMe device output interfering with specific format output like that produced when the--classicoption is used.
To only show NVMe devices, use 'lsscsi N'; to only show NVMe controllers, use 'lsscsi -H N'.
-D,--pdtโ this option displays the SCSI Peripheral Device Type (PDT) in hex preceded by"0x". For NVMe namespaces"0x0"is displayed, which corresponds to a disk ("Direct Access Device"or SSD). In single line output this hex PDT replaces the device type abbreviation (e.g."0x0 "replaces"disk ") and appears after the tuple.-p,--protectionโ output target (DIF) and initiator (DIX) protection types.-P,--protmodeโ output effective protection information mode for each disk device.-i,--scsi_idโ outputs the udev derived matching id found in/dev/disk/by-id/scsi*. This is only for disk (and disk like) devices. If no match is found then"dm-uuid-mpath*"and"usb*"are searched in the same directory. If there is still no match then the/sys/class/block/<disk>/holdersdirectory is searched. The matching id is printed following the device name (e.g./dev/sdc) and if there is no match"-"is output. Note that only disk (like) devices are matched by this option; so, for example, a SCSI enclosure will have an identifier of'-'.
Prior to revision 164 the first match in /dev/disk/by-id/scsi* was printed. A change was added at that point to check for identifiers in a specific order as some are considered "stronger" than others. See the ORDER OF SCSI IDENTIFIERS section below.
-s,--sizeโ okay bestie, this is the capacity glow-up flag โจ It prints disk capacity in human readable form.
Give it once and you get normal base 10 SI units used as a prefix for 'B' which is bytes (aka octets, if you're feeling fancy ๐). So MB, GB and TB stand for 10^6, 10^9 and 10^12 bytes respectively. Give it twice and now we're on IEC 80000-3 prefixes for 'B'; so MiB, GiB and TiB stand for 2^20, 2^30 and 2^40 bytes respectively. The output is rounded to 3 or less significant figures so it actually fits on a single line, no sprawling.
It will also output the size of RBC devices, CD/DVD media and host managed ZBC disks ๐ฆ. Host aware ZBC disks have their "peripheral device type" set to 0 (the same as normal disks) so their size is output.
If you give it three times (and lowkey the short form is way more convenient: '-sss') then the disk capacity as a logical block count is given. This is an exact figure in decimal reported by the storage device at discovery. Discovery is typically just after boot time, or when it was last attached if the storage device is removable. no cap, it's just what the device said.
To unclutter the single line per device mode, the --brief option combined with this option should help ๐
.
-y,--sysfsroot=PATHโ assumes sysfs is mounted atPATHinstead of the default'/sys'. If this option is given,PATHshould be an absolute path (i.e. start with'/'). no relative-path nonsense here bestie.-S,--sz-lbsโ prints disk capacity as a number of logical blocks (which is the same as'-sss') ๐ง. When used twice a comma is added followed by the logical block size in bytes. It should be a number like512or4096.
If the logical block size cannot be found (e.g. because the version of Linux predates the /sys/block/<dev_name>/queue directory) then the number of 512 byte blocks followed comma and then '512' is output irrespective of what the true logical block size of the device is ๐ญ. This special case action occurs whether this option is given one or more times. so like, do not trust it to be the real block size in that situation, fr fr.
To unclutter the single line per device mode the --brief option combined with this option should help.
-t,--transportโ outputs transport information ๐ฅ. This will be target related information or, if--hostsis given, initiator related information.
When used without --list, a name or identifier (or both) are output on a single line, usually prefixed by the type of transport. For devices this information replaces the normal vendor, product and revision strings. When the --list option is also given then additionally multiple lines of attribute_name=value pairs are output, each indented by two spaces. See the section on transports below ๐.
-u,--unitโ outputs logical unit name, if available ๐.
If this option is given once or twice, then the 30 character field where the vendor, product and revision strings are usually placed is expanded to 32 characters and replaced by the logical unit name. If no logical unit name is found "none" is printed. The first found of the NAA, EUI-64 or SCSI name string is output unless a SCSI name string is found and the associated target port indicates the iSCSI protocol, in which case the SCSI name string is preferred. Finally if there is no match on the above and a T10 Vendor ID descriptor is found then it is used.
If the name cannot fit in the 32 character field then it is truncated to the right and a trailing '_' character is used to alert the reader to the truncation. The 32 character width is chosen since that is large enough to hold 16 byte NAA or EUI-64 identifiers. However SCSI name strings as used by iSCSI can be larger than that ๐ธ.
If this option is used twice then this field is also 32 character wide. If the logical unit name cannot fit then it will be truncated to the left and a leading '_' character is used to alert the reader to the truncation.
If this option is used three times the whole logical unit name is output, followed by several spaces ๐.
In order for this option to work, it needs a Linux kernel from and including 3.15. It accesses the sysfs vpd_pg83 file for the device in question. Old SCSI and ATA (SATA) equipment may not provide this information. If it is provided by ATA (SATA) then it will be the WWN.
-v,--verboseโ outputs directory names where information is found. Use multiple times for more output. yes queen, stack them ๐-V,--versionโ outputs version information then exits.
If used once outputs to stderr; if used twice outputs to stdout and shortens the date to yyyymmdd numeric format. The first number in the version string is the release number ๐
.
-w,--wwnโ outputs the WWN for disks instead of manufacturer, model and revision (or instead of transport information) ๐.
The World Wide Name (WWN) is typically 64 bits long (16 hex digits) but could be up to 128 bits long. To indicate the WWN is hexadecimal, it is prefixed by "0x". The ATA/SATA WWN is referred to as LU name in SCSI jargon; hence this option is more or less superseded by the --unit and --long-unit options ๐ซถ.
๐ TRANSPORTS โจ
okay so real talk: this utility lists SCSI devices โ and in SCSI Architecture Model land (ref: SAM-5 over at https://www.t10.org) those cuties are called logical units, aka LU โ or it lists hosts when you hand it the --hosts option. A host is what SAM-5 calls an initiator. ๐ซ
And the way a SCSI command actually travels? It goes out via an initiator, sails across some transport to a target, and then keeps going onwards to a logical unit. A single target device can hold several logical units, and a target device has one or more ports, which you can think of as transport end points. ๐
Here's a fun fact to flex: every FC and SAS disk is a single target that has two ports and contains one logical unit. So if both target ports on a FC or SAS disk are connected and visible to a machine, then lsscsi will show you two entries for it. Not a bug, bestie, that's just the architecture. Initiators (i.e. hosts) also have one or more ports, and some HBAs in Linux have a host entry per initiator port while others have a host entry per initiator device. It's giving "it depends". ๐
๐ฏ what --transport actually does
When you give the --transport option for devices (meaning --hosts is not given), then most of the info lsscsi produces is associated with the target โ or, to be precise, the target port through which SCSI commands pass that access a logical unit.
Typically this utility gives you one line of output per "device" or host. But you can get significantly more info by adding the --list option. And when --list is used together with --transport, after the summary line you get multiple lines of transport specific info in the form <attribute_name>=<value>, each one indented by two spaces. ๐ธ
pro tip: using a filter argument will reduce the volume of output if you've got a lot of devices or hosts hanging around. your terminal will thank you. ๐ซถ
๐ the transports we recognize
The transports that are currently recognized are: IEEE 1394, ATA, FC, iSCSI, SAS, SATA, SPI, SRP and USB. let's go through them one by one, mwah ๐
๐ฅ IEEE 1394
For IEEE 1394 (a.k.a. Firewire, and "SBP" when storage is involved), the EUI-64 based target port name is output when --transport is given, in the absence of the --hosts option. When --hosts is given then the EUI-64 initiator port name is output. And output on the summary line specific to the IEEE 1394 transport is prefixed by sbp:. cute little prefix, love that for us. ๐
๐พ ATA and SATA
To detect ATA and SATA devices a crude check is performed on the driver name (after the checks for other transports are exhausted). Based on the driver name, either the ATA or SATA transport type is chosen. Output on the summary line is either ata: or sata:.
A search is made for an associated vpd_pg83 file in sysfs โ and if it's found it may contain the device's WWN, which gets output if present. But heads up: the WWN will not appear in Linux kernels before 3.15, and it also won't show up with old PATA and SATA devices. ๐ญ
Most devices and hosts flagged as ata: will use the parallel ATA transport (PATA). And for SATA devices that are attached via a SAS expander? See the SAS paragraph below, bestie, it's a whole thing.
๐ฆ Fibre Channel (FC)
For Fibre Channel the port name and port identifier are output when --transport is given. In the absence of the --hosts option these ids will be for the target port associated with the device (logical unit) being listed. When --hosts is given, then the ids are for the initiator port used by the host.
Output on the summary line specific to the FC transport is prefixed by fc:. And if FCoE (over Ethernet) is detected, the prefix changes to fcoe:. glow up ๐
๐ iSCSI
For iSCSI the target port name is output when --transport is given, in the absence of the --hosts option. This is made up of the iSCSI name and the target portal group tag. Since the iSCSI name starts with iqn, no further prefix is used โ it's already iconic on its own. When the --hosts option is given, then only iscsi: is output on the summary line.
๐ Serial Attached SCSI (SAS)
For SAS, the SAS address of the target port (or the initiator port if the --hosts option is also given) is output. This will be a naa-5 address. For SAS HBAs and SAS targets (like SAS disks and tape drives) the SAS address will be world wide unique. โจ
For SATA disks attached to a SAS expander, the expander provides the SAS address by adding a non zero value to its (i.e. the expander's) SAS address, e.g. expander_sas_address + phy_id + 1. And SATA disks directly attached to SAS HBAs seem to have an indeterminate SAS address. ๐คท
Output on the summary line specific to the SAS transport is prefixed by sas:.
๐ SATA
For SATA devices, see the paragraph above on ATA devices. And as noted in the previous paragraph, SATA devices attached to SAS expanders will display a manufactured SAS transport address (manufactured by the expander) rather than the SATA device's own WWN. yes, the expander is out here giving devices a whole new identity. it's giving fake ID. ๐
๐ SCSI Parallel Interface (SPI)
For SPI the target port identifier (usually a number between 0 and 15 inclusive) is output when --transport is given, in the absence of the --hosts option. When the --hosts option is given, then only spi: is output on the summary line. short and sweet. ๐
๐ง PCIe (a.k.a. PCI Express)
For the PCIe transport there are two possible storage types: NVMe and SOP/PQI (SCSI over PCIe). There are very few examples of the latter currently, so this utility concentrates on NVMe.
Now, NVMe uses its own command set and not SCSI, but it has many things in common. And rather than re-invent everything currently in use that SCSI has accumulated over nearly 40 years, NVMe is beginning to use some parts of SCSI. A recent example is the SES-3 standard for enclosure management, which has been adopted by NVMe.
In SCSI a SES device is a logical unit with a peripheral device type (PDT) of 0xd (for enclosure), so it will appear when the lsscsi utility is invoked without any options. In NVMe it seems that an enclosure will appear as attached to the management interface (MI) of a NVMe controller. This means it should appear when lsscsi --hosts is invoked. It is unclear whether such a NVMe controller can have any storage namespaces associated with it. ๐ค
The sg_ses utility (in the sg3_utils package) can then be given that NVMe controller's device name (e.g. /dev/nmve1).
When the --transport option is given, after pcie the NVMe controller's subsystem vendor id and device id are output, separated by a colon (e.g. pcie 0x8086:0x390a).
๐ซถ SRP (SCSI RDMA Protocol)
For SRP the IB (InfiniBand) port's GUID is given. As an example, it has a form like this: 0002:c903:00fa:abcd .
๐ธ USB
When a USB transport is detected, the summary line will contain usb: followed by a USB device name. The USB device name has the form:
<b>-<p1>[.<p2>[.<p3>]]:<c>.<i>
where:
<b>is the USB bus number<p1>is the port on the host<p2>is a port on a host connected hub, if present- if needed,
<p3>is a USB hub port closer to the USB storage device <c>refers to the configuration number<i>is the interface number
There is a separate SCSI host for each USB (SCSI) target. And a USB SCSI target may contain multiple logical units. So the same usb: <device_name> string appears for a USB SCSI host and all logical units that belong to the USB SCSI target associated with that USB SCSI host. one string, many babies. ๐
๐ข LUNS ๐
For historical reasons, and as used by several other Unix based Operating Systems, Linux uses a tuple of integers to describe (a path to) a SCSI device โ also known as a Logical Unit (LU). The last element of that tuple is the so-called Logical Unit Number (LUN).
And originally in SCSI a LUN was an integer โ at first 3 bits long, then 8, then 16 bits. SCSI LUNs today (SAM-5 section 4.7) are 64 bits, but SCSI standards now consider a LUN to be an array of 8 bytes. glow up era โจ
๐ the 2013 lore
Up until 2013, Linux mapped SCSI LUNs to a 32 bit integer by taking the first 4 bytes of the SCSI LUN and ignoring the last 4 bytes. Linux treated the first two bytes of the SCSI LUN as a unit (a word), and it became the least significant 16 bits in the Linux LUN integer. The next two bytes of the SCSI LUN became the upper 16 bits in the Linux LUN integer.
The rationale for this was to keep commonly used LUNs small Linux LUN integers. And the receipts:
- The most common LUN (by far) in SCSI LUN (hex) notation is
00 00 00 00 00 00 00 00and this becomes the Linux LUN integer0. - The next most common LUN is
00 01 00 00 00 00 00 00and this becomes the Linux LUN integer1.
In 2013 it was proposed to increase Linux LUNs to a 64 bit integer by extending the mapping outlined above. In this case all information that is possible to represent in a SCSI LUN is mapped to a Linux LUN (64 bit) integer. And the mapping can be reversed without losing information. reversible, bestie, that's the dream. ๐
๐ฅ๏ธ how this version shows you LUNs
This version of the utility supports both 32 and 64 bit Linux LUN integers. By default the LUN shown at the end of the tuple commencing each line is a Linux LUN as a decimal integer.
When the --lunhex option is given, then the LUN is in SCSI LUN format with the 8 bytes run together, with the output in hexadecimal and prefixed by '0x'. The LUN is decoded according to SAM-5's description and trailing zeros (i.e. digits to the right) are not shown. So:
- LUN 0 (i.e.
00 00 00 00 00 00 00 00) is shown as0x0000 - LUN 65 (i.e.
00 41 00 00 00 00 00 00) is shown as0x0041
If the --lunhex option is given twice, then the full 64 bits (i.e. 16 hexadecimal digits) are shown. ๐
If the --lunhex option is not given on the command line, then the environment variable LSSCSI_LUNHEX_OPT is checked. If LSSCSI_LUNHEX_OPT is present then its associated value becomes the number of times the --lunhex is set internally. So, for example, LSSCSI_LUNHEX_OPT=2 lsscsi and lsscsi -xx are equivalent. โจ
๐ ORDER OF SCSI IDENTIFIERS ๐
This section only applies to the --scsi_id option, and only for disk like devices (e.g. not tapes nor enclosures). There are potentially several SCSI identifiers, and from revision 164 they are checked in the following order โ and only the first one found is output. one and done, periodt. ๐
The SCSI identifier preference order is:
3 : NAA based (Network address Authority)
2 : EUI-64 based
8 : SCSI name string (e.g. iSCSI: iqn.1998-01.com.zzware.iscsi:name1)
S : serial number from SCSI VPD page 0x80
1 : T10 Vendor Identifier
0 : Vendor Specific
Those numbers prefixing each entry are the SCSI 'Designator Types' found in the definition of the Device Identification VPD page (0x83) in SPC/-3, SPC/-4 and SPC/-5. The 'S' of course is not a number โ it refers to a different VPD page: the Serial Number VPD page (0x80). sneaky little letter. ๐
There is a more general --wwn option that should apply to almost all devices. The term "WWN" (world-wide name) comes from the ATA and NVMe standards and corresponds to the "Logical Unit (LU) name" in SCSI. The LU name in SCSI tends to change by transport. For SAS the LU name is the LU's NAA identifier.
Plus there's the --unit and the --long-unit options that may be helpful in uniquely identifying storage devices. ๐
๐ EXAMPLES ๐
Information about this utility including examples can also be found at:
https://sg.danny.cz/scsi/lsscsi.html
go look, bestie, the examples are cute. ๐ฆ
๐ธ NOTES ๐ธ
okay so the tea this command spills? It all comes from the sysfs file system, and bestie, that's assumed to be mounted at /sys unless you say otherwise. no cap.
SCSI (pseudo) devices that have been detected by the SCSI mid level? They're getting listed even if the required upper level drivers (i.e. sd, sr, st, osst or ch) have not been loaded. If the appropriate upper level driver has not been loaded then the device file name will appear as - rather than something like /dev/st0. not me side-eyeing that dash, but it's giving "driver not loaded" energy. Note that some devices (e.g. scanners and medium changers) do not have a primary upper level driver and can only be accessed via a SCSI generic (sg) device name. iykyk.
Generic SCSI devices can also be accessed via the bsg driver in Linux. By default, the bsg driver's device node names are of the form /dev/bsg/H:C:T:L. So, for example, the SCSI device shown by this utility on a line starting with the tuple 6:0:1:2 could be accessed via the bsg driver with the /dev/bsg/6:0:1:2 device node name. slay โจ
fr fr, lsscsi version 0.21 or later is required to correctly display SCSI devices in Linux kernel 2.6.26 (and possibly later) when the CONFIG_SYSFS_DEPRECATED_V2 kernel option is not defined. so if you're on old kernel vibes, check that version, bestie.
๐ AUTHOR ๐
Written by Doug Gilbert โ the icon, the moment, the legend. periodt. ๐
๐ REPORTING BUGS ๐
Report bugs to <dgilbert at interlog dot com>. don't be shy, bestie, if something's acting up, tell Doug. ๐ซถ
๐ COPYRIGHT ๐
Copyright ยฉ 2003-2021 Douglas Gilbert
This software is distributed under the GPL version 2. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. NO cap, zero warranty, read it and weep (affectionately). ๐ญ
๐ฆ SEE ALSO ๐ฆ
lspcilsusblsblk
and that's the whole page, bestie โ lsscsi-0.32, May 2021, lsscsi(8). mwah ๐โจ
๐ฆ where this page comes from
- alpine 3.24: lsscsi-doc 0.32-r1 ยท GPL-2.0-or-later
- arch rolling: lsscsi 0.32-2 ยท GPL
- centos-stream 10: lsscsi 0.32-17.el10 ยท GPL-2.0-or-later
- centos-stream 9: lsscsi 0.32-8.el9 ยท GPLv2+
- debian trixie: lsscsi 0.32-2 ยท GPL-2.0-or-later
- fedora 43: lsscsi 0.32-14.fc43 ยท GPL-2.0-or-later
- fedora 44: lsscsi 0.32-15.fc44 ยท GPL-2.0-or-later
- nixos 26.05: lsscsi 0.32
- nixpkgs unstable: lsscsi 0.32
- opensuse-leap 16.0: lsscsi 0.32-160000.3.2 ยท GPL-2.0-or-later
- opensuse-leap 16.0: lsscsi 0.32-160000.3.2 ยท GPL-2.0-or-later
- opensuse-leap 16.0: lsscsi 0.32-160000.3.2 ยท GPL-2.0-or-later
- opensuse-leap 16.0: lsscsi 0.32-160000.3.2 ยท GPL-2.0-or-later
- ubuntu noble: lsscsi 0.32-1build1 ยท GPL-2.0-or-later
- ubuntu questing: lsscsi 0.32-2
- ubuntu resolute: lsscsi 0.32-2build1 ยท GPL-2.0-or-later
- ubuntu stonking: lsscsi 0.32-2build1 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms