VPD, Vital Product Data, is information associated with system hardware that is useful for easing system configuration and service. The lsvpd package for Linux provides commands that can be used to retrieve an inventory of system hardware, along with the VPD associated with each device. The lsvpd package will install three commands: lsvpd
(“list VPD”), lscfg
(“list configuration”), and lsmcode
(“list microcode”). The lscfg
command is the human-readable command of the three; lsvpd
and lsmcode
provide output that is more easily read by scripts/applications.
The lsvpd package requires the libvpd library. The libvpd library can also be used to retrieve inventory data from within an application; in fact, that’s how lsvpd
, lscfg
, and lsmcode
work.
Types of Vital Product Data
Running lscfg
by itself will list each device, along with its location code. More detailed VPD for each device on that list can be obtained by running “lscfg -vl <device>
“. The following examples illustrate the type of data that can be retrieved from the lsvpd package:
# lscfg -vl eth0 eth0 U787A.001.DNZ00Z5-P1-T5 Port 1 - IBM 2 PORT 10/100/1000 Base-TX PCI-X Adapter (14108902) Manufacturer................Intel Corporation Machine Type and Model......82546EB Gigabit Ethernet Controller (Copper) Network Address.............00096b6b0591 Device Specific.(YL)........U787A.001.DNZ00Z5-P1-T5
The description, manufacturer, model number, MAC address, and location code of the eth0 device are all noted in the output. Here is another example, for a hard drive:
# lscfg -vl sda sda U787A.001.DNZ00Z5-P1-T10-L8-L0 16 Bit LVD SCSI Disk Drive (73400 MB) Manufacturer................IBM Machine Type and Model......ST373453LC FRU Number..................00P2685 ROS Level and ID............43353141 Serial Number...............0007EA3B EC Level....................H12094 Part Number.................00P2684 Device Specific.(Z0)........000003129F00013E Device Specific.(Z1)........0626C51A Device Specific.(Z2)........0002 Device Specific.(Z3)........04112 Device Specific.(Z4)........0001 Device Specific.(Z5)........22 Device Specific.(Z6)........H12094 Device Specific.(YL)........U787A.001.DNZ00Z5-P1-T10-L8-L0
The location code, description, model, and manufacturer are all there, along with the FRU and part numbers (for ordering new parts), the serial number of the device, and its current microcode level (“ROS Level and ID”).
The -A flag to lsmcode will list all the microcode levels on the system, including the system firmware level:
# lsmcode -A sys0!system:SF240_320 (t) SF220_051 (p) SF240_320 (t)|service: sg6 1:255:255:255 !570B001.0FC93FFC0FC93FFC sg5 1:0:4:0 sdd !HUS103036FL3800.0FC94004100698C86F7374 sg4 1:0:3:0 sdc !HUS103036FL3800.0FC942E40FC942E40620 sg3 0:255:255:255 !570B001.0FC940040FC940040FC93FF410193860 sg2 0:0:15:0 !VSBPD3E U4SCSI.0FC9420C0FC9420C0620 sg1 0:0:5:0 sdb !ST336607LC.0FC9420C0FC9420C0620 sg0 0:0:3:0 sda !ST373453LC.0FC942040FC942040620
See my previous article on pSeries and System p firmware for a description of the dual firmware banks, and information on updating your system firmware level. Currently, device microcode must be updated using a microcode update utility specific to the device in question (iprutils for the onboard RAID SCSI HBAs on POWER5, for example).
Refreshing the VPD Database
Unfortunately, the data in the lsvpd database can become stale as devices are added or changed (via hotplug or DLPAR, for example). Running /usr/sbin/vpdupdate
will cause the data to be refreshed. The developers of lsvpd are currently working on having vpdudpate
run automatically in response to hotplug events.
Other Tools for Hardware Inventory
Besides lsvpd, there are several other Linux tools that can assist with hardware inventory for system configuration or service:
- HAL (Hardware Abstraction Layer): run
hal-device
for a list of devices - Open Firmware device tree (on Power): stored in
/proc/device-tree
- The sysfs filesystem (usually mounted on
/sys
)