'\" te .\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved .\" Copyright 2020 Oxide Computer Company .\" Copyright 2021 Peter Tribble .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH FWFLASH 8 "June 20, 2021" .SH NAME fwflash \- firmware query and update utility .SH SYNOPSIS .nf \fB/usr/sbin/fwflash\fR [\fB-l\fR [\fB-c\fR \fIdevice_class\fR | \fBALL\fR ]] | [\fB-v\fR] | [\fB-h\fR] .fi .LP .nf \fBfwflash\fR [\fB-f\fR \fIfile1\fR,\fIfile2\fR,\fIfile3\fR,... | \fB-r\fR \fIfile\fR] [\fB-y\fR] [\fB-d\fR \fIdevice_path\fR] .fi .SH DESCRIPTION The \fBfwflash\fR command writes a binary image file to supported flashable devices attached to a Solaris host. It also provides the ability to read firmware to a file if supported by the device. Because changing the firmware in a device can have significant impact on the stability of a system, only users with the privilege \fBAll\fR are allowed to execute this command. Users authorized to run \fBfwflash\fR can be granted the "Firmware Flash Update" Rights Profile. .sp .LP The first form of the command, above, provides information about devices. It lists all devices currently available on the system that are supported by \fBfwflash\fR for firmware upgrade. You can filter the list operation, to display only specified classes of devices. The second form of the command provides the operations to read or write the firmware images to specific devices. .SH OPTIONS The following options are supported: .sp .ne 2 .na \fB\fB-c\fR \fIdevice_class\fR\fR .ad .sp .6 .RS 4n An optional parameter, valid only when used with the \fB-l\fR option. This option causes the command to list only devices of a specific class type. Currently supported classes are \fBIB\fR, \fBses\fR, \fBsd\fR, \fBufm\fR, or \fBALL\fR. If \fB-c\fR is not specified for the \fB-l\fR option, the class defaults to \fBALL\fR. .RE .sp .ne 2 .na \fB\fB-d\fR \fIdev_path\fR\fR .ad .sp .6 .RS 4n The \fIdev_path\fR is the absolute path name of the device that the user wants to modify with the \fB-f\fR or \fB-r\fR option. If the device cannot be found, the command fails. If the \fB-d\fR option is specified, then either \fB-f\fR or \fB-r\fR must also be specified. .RE .sp .ne 2 .na \fB\fB-f\fR \fIfile1\fR,\fIfile2\fR,\fIfile3\fR,...\fR .ad .sp .6 .RS 4n Specify the path to one or more binary firmware image files you want to write to the device. \fBfwflash\fR will verify that each file is a valid firmware image for the specified device. If it is not, the command fails with an appropriate error message. .sp If multiple firmware image files are specified, each image is verified and flashed to the device in the order given on the command line. If any of the specified files cannot be successfully flashed, then an appropriate message is displayed. .sp After a new firmware image is flashed to a device, a reboot is required to correctly activate the new firmware. .RE .sp .ne 2 .na \fB\fB-h\fR\fR .ad .sp .6 .RS 4n Display the command line usage message for \fBfwflash\fR. .RE .sp .ne 2 .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n List the devices on a system available for firmware upgrade and display information specific to each device or device class. .sp For InfiniBand (IB) devices, the list operation displays the \fBguid\fRs (Globally Unique Identifier) currently set for the HCA, as well as the current firmware revision installed. There are four separate \fBguid\fRs on the HCA; two of them can be set with the same value. .sp For SCSI Enclosure Services (\fBses\fR or \fBsgen\fR) devices, an identifying target-port worldwide name is displayed, if available. .sp For \fBufm\fR(4D) based devices, identifying information such as PCI identifiers and supported capabilities such as the ability to read firmware images or slot information is reported. For each firmware image on the device, each slot is displayed along with information about the slot's version and attributes. .RE .sp .ne 2 .na \fB\fB-r\fR \fIfile\fR\fR .ad .sp .6 .RS 4n Specify the path to a file to create when reading the firmware from the device. The \fB-f\fR and \fB-r\fR options are mutually exclusive. .sp Not all flashable devices support reading firmware images back from the device. A message will be displayed if the selected device does not support this operation. .RE .sp .ne 2 .na \fB\fB-v\fR\fR .ad .sp .6 .RS 4n Display \fBfwflash\fR version information and exit. .RE .sp .ne 2 .na \fB\fB-y\fR\fR .ad .sp .6 .RS 4n Valid only when a flash read (\fB-r\fR) or write (\fB-f\fR) option is specified. This option causes \fBfwflash\fR not to prompt for confirmation during operation and operate non-interactively. Note that there is no option that allows you to forcibly flash an incompatible firmware image onto a device. .RE .SH EXAMPLES \fBExample 1 \fREntering Command Without Arguments .sp .LP The following command shows \fBfwflash\fR output when the command is entered without arguments. .sp .in +2 .nf example# \fBfwflash\fR Usage: fwflash [-l [-c device_class | ALL]] | [-v] | [-h] fwflash [-f file1,file2,file3,... | -r file] [-y] -d device_path -l list flashable devices in this system -c device_class limit search to a specific class eg IB for InfiniBand, ses for SCSI Enclosures -v print version number of fwflash utility -h print this usage message -f file1,file2,file3,... firmware image file list to flash -r file file to dump device firmware to -y answer Yes/Y/y to prompts -d device_path pathname of device to be flashed If -d device_path is specified, then one of -f or -r must also be specified If multiple firmware images are required to be flashed they must be listed together, separated by commas. The images will be flashed in the order specified. .fi .in -2 .sp .LP \fBExample 2 \fRListing Devices Available to Flash .sp .LP The following command lists the devices available to be flashed. .sp .in +2 .nf example# \fBfwflash -l\fR List of available devices: Device[0], /devices/pci@0,0/pci8086,3595@2/pci8086,32a@0,2/\e pci15b3,5a46@c/pci15b3,5a44@0:devctl Class [IB] GUID: System Image - 0002c901081e33b3 Node - 0000000000003446 Port 1 - 0002c901081e33b1 Port 2 - 0002c901081e33b2 Firmware revision: 3.3.0002 No hardware information available for this device Device[1], /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl Class [IB] GUID: System Image - 0002c9010a99e3b3 Node - 0002c9010a99e3b0 Port 1 - 0002c9010a99e3b1 Port 2 - 0002c9010a99e3b2 Firmware revision: 4.8.00c8 Product : MTLP25208-CF256T (Lion cub) PSID : MT_00B0000001 .fi .in -2 .sp .sp .LP Alternatively, for a SAS Expander presented as a SCSI Enclosure Services device, we might see output such as this: .sp .in +2 .nf example# \fBfwflash -l\fR List of available devices: Device[0] /devices/pci@0/pci@0/pci@2/scsi@0/ses@3,0:ses Class [sgen] Target port WWN : 500605b00002453d Vendor : SUN Product : 16Disk Backplane Firmware revision: 5021 .fi .in -2 .sp .sp .LP Finally, for devices that support the system's upgradeable firmware module APIs (see \fBufm\fR(4D)), one might see output like: .sp .in +2 .nf example# \fBfwflash -l\fR List of available devices: Device[0] /devices/pci@0,0/pci1022,1483@3,2/pci8086,390d@0 Class [ufm] Vendor: Intel Corporation Device: SSD 660P Series Capabilities: Report Image 0: Firmware Slot 0 (-|w|a): 002C Slot 1 (-|w|-): 002C Device[1] /devices/pci@3d,0/pci1022,1483@3,1/pci1849,1521@0 Class [ufm] Vendor: Intel Corporation Device: I350 Gigabit Network Connection Capabilities: Report, Read Image Image 0: NVM Slot 0 (r|w|a): 1.69 .fi .in -2 .sp .LP \fBExample 3 \fRFlash Upgrading an IB HCA Device .sp .LP The following command flash upgrades an IB HCA device. .sp .in +2 .nf example# \fBfwflash -f ./version.3.2.0000 \e -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl\fR About to update firmware on: /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl Continue (Y/N): \fBY\fR Updating . . . . . . . . . . . . Done. New image will be active after the system is rebooted. .fi .in -2 .sp .sp .LP Note that you are prompted before the upgrading proceeds and that it is mandatory that you reboot your host to activate the new firmware image. .sp .LP The following command adds the \fB-y\fR option to the command. .sp .in +2 .nf example# \fBfwflash -y -f ./version.3.2.0000 \e -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl\fR About to update firmware on: /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl Updating . . . . . . . . . . . . Done. New image will be active after the system is rebooted. .fi .in -2 .sp .LP \fBExample 4 \fRReading Device Firmware to File .sp .LP The command shown below reads the device firmware to a file. The command uses the \fB-y\fR option so that read occurs without prompting. .sp .in +2 .nf example# \fBfwflash -y -r ./firmware.bin \e -d /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl\fR About to read firmware on: /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl to filename: ./firmware.bin Reading . . . Done. .fi .in -2 .sp .LP \fBExample 5 \fRWhen No Flashable Devices Are Found .sp .LP The command output shown below informs the user that there are no supported flashable devices found in the system: .sp .in +2 .nf example# \fBfwflash -l\fR fwflash: No flashable devices attached with the ses driver in this system fwflash: No flashable devices attached with the sgen driver in this system fwflash: No flashable devices attached with the tavor driver in this system fwflash: No flashable devices in this system .fi .in -2 .sp .sp .LP Each plugin found in \fB/usr/lib/fwflash/identify\fR is loaded in turn, and walks the system device tree, determining whether any currently-attached devices can be flashed. .SH RETURN VALUES The \fBfwflash\fR command returns the following values: .sp .ne 2 .na \fB\fB0\fR\fR .ad .sp .6 .RS 4n Success .RE .sp .ne 2 .na \fB\fB1\fR\fR .ad .sp .6 .RS 4n Failure .RE .SH ATTRIBUTES See \fBattributes\fR(7) for descriptions of the following attributes: .sp .sp .TS box; c | c l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE _ Interface Stability Committed .TE .SH SEE ALSO .BR hermon (4D), .BR ses (4D), .BR tavor (4D), .BR ufm (4D), .BR attributes (7) .sp .LP The InfiniBand Trade Association website, http://www.infinibandta.org .sp .LP The SCSI Storage Interfaces committee website, http://www.t10.org .sp .LP \fISCSI Primary Commands-4, SPC4\fR .sp .LP \fISCSI Enclosure Services-2, SES2\fR .sp .LP \fISerial Attached SCSI-2, SAS2\fR