1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
|
'\" 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 <files>
or -r <file> 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
|