1FWTS(1)                     General Commands Manual                    FWTS(1)
2
3
4

NAME

6       fwts - a firmware test suite to identify firmware bugs.
7
8

SYNOPSIS

10       fwts [options] [test(s)]
11
12

DESCRIPTION

14       This  manual  page documents briefly the fwts firmware test suite.  The
15       tool fwts is comprised of over fifty tests that are designed to examine
16       and  test  different  aspects of PC firmware.  Many of these tests need
17       super user access to extract tables and interact with the firmware  and
18       ACPI, so running fwts using sudo is required.
19       Running  fwts with no options will run through all the batch tests that
20       require no user interaction.  However, one  can  select  just  specific
21       tests to run if required.
22
23       By  default fwts outputs the test results into the log file results.log
24       however a different log file name can be  specified  and  if  required,
25       output to stderr or stdout can be selected.
26
27       Note  that  there  a  variety of tests, including tests that can poten‐
28       tially hang a machine (such as a suspend/hibernate/resume).
29
30

OPTIONS

32       fwts options are as follow:
33
34       -      output results to stdout.
35
36       --acpica
37              enable ACPICA execution mode options. These can be specified  as
38              a comma separated list of one or more options.  Avaiable options
39              are: serialized (serialized execution of  AML),  slack  (run  in
40              less  pedeantic  mode),  ignore-errors  (ignore ACPICA exception
41              errors), disable-auto-repair (disable ACPICA from  automatically
42              fixing  broken  ACPICA controls).  Note that the slack mode will
43              turn on implicit returns of zero on control methods  to  attempt
44              to allow buggy AML to work on non-Windows systems.
45
46       --acpica-debug
47              enable ACPICA debug warning and error messages when invoking the
48              ACPICA subsystem. This is mainly for  fwts  developers  to  help
49              track down any ACPICA interfacing issues with fwts.
50
51       --acpicompliance
52              run only those tests that specifically check for compliance with
53              the ACPI specifications.  This may  be  a  subset  of  the  ACPI
54              tests.
55
56       --acpitests
57              run all general ACPI tests.
58
59       -a, --all
60              run all the tests.
61
62       --arch=name
63              specify  the target architecture whose firmware is being tested.
64              This allows fwts to run on one architecture (the host) but  per‐
65              form  tests  for  a  different architecture (the target).  Known
66              architecture strings are: x86, x86_32, or x86_64 for Intel; ia64
67              for  Itanium; arm64 or aarch64 for ARMv8.  Unless this option is
68              specified, the target is assumed to be the same as the host.
69
70       -b, --batch
71              run the non-interactive batch tests. Batch tests require no user
72              interaction.
73
74       --batch-experimental
75              run only batch experimental tests.
76
77       --clog specify a coreboot logfile dump.
78
79       --disassemble-aml
80              disassemble AML (ACPI machine language) byte code. This attempts
81              to disassemble  AML  in  DSDT  and  SSDT  tables  and  generates
82              DSDT.dsl and SSDTx.dsl sources.
83
84       -d, --dump
85              extracts  firmware data and dumps it into log files. This gener‐
86              ates:
87              acpidump.log - containing a hex dump of the ACPI  tables  (which
88              can be read using acpixtract).
89              dmesg.log - containing the current kernel log messages.
90              dmidecode.log - containing the output from dmidecode.
91              lspci.log - containing the output from lspci -vv -nn
92              cpuinfo.log - containing the output from cat /proc/cpuinfo
93              README.txt  - containing a timestamp and kernel version informa‐
94              tion.
95
96       --dumpfile=acpidump.log
97              load ACPI tables from output generated  from  acpidump  or  from
98              sudo  fwts  --dump.   The  latter is preferred as fwts --dump is
99              able to dump more tables than acpidump. This allows one to  dump
100              tables  from one machine and processes them with fwts on another
101              machine.
102
103       --uefi-get-var-multiple
104              specifies the number of times to get a variable in  the  uefirt‐
105              variable get variable stress test.
106
107       --uefi-set-var-multiple
108              specifies  the  number of times to set a variable in the uefirt‐
109              variable set variable stress test.
110
111       --uefi-query-var-multiple
112              specifies the number of times to query a variable in the uefirt‐
113              variable query variable stress test.
114
115       --uefitests
116              run all general UEFI tests.
117
118       --filter-error-discard
119              specifies  the  errors  that  one wants to silently ignore.  One
120              supplies a comma sperated list of fwts error message labels that
121              one  wants  fwts to not report as errors. fwts will run the test
122              but if there is a test failure and the  label  matches  the  one
123              supplied  in  this  list  fwts will then just ignore this error.
124              This cannot be used with --filter-error-keep.
125
126       --filter-error-keep
127              specifies the errors that one wants to keep,  all  other  errors
128              are  silently  ignored.   One  supplies a comma sperated list of
129              fwts error message labels that one wants fwts report as  errors,
130              other  test  failures will be not reported and silently ignored.
131              This cannot be used with --filter-error-discard.
132
133       -f, --force-clean
134              creates a new results log file, rather than  just  appending  to
135              any existing one (default).
136
137       -h, --help
138              outputs the internal help page.
139
140       -i, --interactive
141              run the interactive tests. These tests require user interaction.
142
143       --ifv  run tests in firmware-vendor modes.
144
145       --interactive-experimental
146              run only interactive experimental tests.
147
148       -j, --json-data-path
149              specifies the path to the fwts json data files. These files con‐
150              tain json formatted configuration tables, for example klog scan‐
151              ning patterns.
152
153       -k, --klog=file
154              read the kernel log from the specified file rather than from the
155              kernel log ring buffer. This allows one to run  the  kernel  log
156              scanning tests such as klog against pre-gathered log data.
157
158       --log-fields
159              show the available log filtering fields. Specifying these fields
160              with --log-filter to select which fields one wants to log.
161
162       --log-filter
163              specify which particular types of log data to be output into the
164              log  file. Each line of log data is tagged with a special marker
165              depending on what type of log information is being  output.  The
166              available  types  can  be see by using --log-fields. Specify the
167              desired log types with comma separated list. To disable a field,
168              prefix the name with ~, for example:
169              --log-filter=RES,SUM  logs just the results and summary lines.
170              --log-filter=ALL,~INF  logs all lines except for the information
171              lines.
172
173       --log-format
174              specify the information in each log line. The  following  speci‐
175              fiers are available:
176              %date  - date
177              %time  - time
178              %field - log-filter fields
179              %owner - name of the test routine
180              %level - test failure level
181              %line  - log line
182              e.g. --log-format="%date %time [%field] (%owner): "
183
184       --log-level [critical|high|medium|low|info|all]
185              specify the test failure level to log. Test failure levels equal
186              to and higher than the specified  are  logged  and  recorded  as
187              failures.  The  default is 'all' (which is identical to 'info').
188              For example, a log level of 'medium' will just log test failures
189              of  level  'medium', 'high' and 'critical', where as a log level
190              of 'critical' will just log 'critical' level failures.
191
192       --log-type
193              specify the log type. Currently  plaintext,  json  and  xml  log
194              types are available and the default is plaintext.
195
196       --lspci=path
197              specify the full path and filename to the the lspci binary.
198
199       -P, --power-states
200              run S3 and S4 power state tests (s3, s4 tests)
201
202       --results-no-separators
203              no  pretty  printing of horizontal separators in the results log
204              file.
205
206       -r, --results-output=filename
207              specify the results output log file.  One can also specify  std‐
208              out and stderr to redirect to these output streams.
209
210       -R, --rsdp=physaddr
211              specify  the  physical  address  of ACPI RSDP. This is useful on
212              some systems where it cannot be automatically detected.
213
214       --pm-method=method
215              specify the power method to use to enter S3 or S4 (or autodetec‐
216              tion will be used). The following specifiers are available:
217              logind    -  the  default method, where available (requires dbus
218              and logind).
219              pm-utils - the previous default method, now deprecated.
220              sysfs    - the fallback, used when logind is not available.
221              e.g. --pm-method=sysfs
222
223       --s3-delay-delta=N
224              time to be added onto delay between each S3 iteration.
225
226       --s3-device-check
227              check differences between device configurations over a S3 cycle.
228              Note  this  adds  15 seconds delay after each s3 resume to allow
229              wifi to re-associate.
230
231       --s3-device-check-delay
232              specify the time to wait while devices re-configure  (e.g.  wifi
233              to re-associate, ethernet to connect..)  before a device config‐
234              uration check is run. The default is 15 seconds.  If this option
235              is used the device checking is assumed so one does not also need
236              to use the --s3-device-check flag.
237
238       --s3-hybrid
239              enables fwts to run Hybrid Sleep.
240
241       --s3-min-delay=N
242              minimum time between S3 iterations.
243
244       --s3-max-delay=N
245              maximum time between S3 iterations.
246
247       --s3-multiple=N
248              specified the number of multiple S3 suspend/resume tests to run.
249              The default is 2 tests.
250
251       --s3-resume-hook=hookscript
252              specifies  a  script or program to run after each S3 resume. The
253              hookscript must return 0 to indicate  success,  or  non-zero  to
254              indicate failure.  Failures will abort subsequent S3 test itera‐
255              tions.
256
257       --s3-quirks=--quirk[,--quirk]
258              specify a comma separated list of quirk arguments to pass to pm-
259              suspend,                       for                      example:
260              --s3-quirks=--quirk-s3-bios,--quirk-save-pci
261
262       --s3-sleep-delay=N
263              sleep N seconds from the start of  the  suspend  to  the  wakeup
264              time.  Note that this time MUST be longer than the time it takes
265              to suspend the machine otherwise the wakeup timer will fire dur‐
266              ing the suspend state. The default is 30 seconds.
267
268       --s3-suspend-time=N
269              specify  the maximum allowed suspend time in seconds. If suspend
270              takes longer than this then an error is logged.
271
272       --s3-resume-time=N
273              specify the maximum allowed resume time in  seconds.  If  resume
274              takes longer than this then an error is logged.
275
276       --s3power-sleep-delay=N
277              specify  the  suspend duration in seconds.  The higher the value
278              the more accurate the s3power test result.  Durations less  than
279              10 minutes are not recommended.
280
281       --s4-delay-delta=N
282              time to be added onto delay between each S4 iteration.
283
284       --s4-device-check
285              check differences between device configurations over a S4 cycle.
286              Note this adds 15 seconds delay after each s3  resume  to  allow
287              wifi to re-associate.
288
289       --s4-device-check-delay
290              specify  the  time to wait while devices re-configure (e.g. wifi
291              to re-associate, ethernet to connect..)  before a device config‐
292              uration check is run. The default is 15 seconds.  If this option
293              is used the device checking is assumed so one does not also need
294              to use the --s4-device-check flag.
295
296       --s4-min-delay=N
297              minimum time between S4 iterations.
298
299       --s4-max-delay=N
300              maximum time between S4 iterations.
301
302       --s4-multiple=N
303              specified  the  number  of multiple S4 hibernate/resume tests to
304              run. The default is 2 tests.
305
306       --s4-quirks=--quirk[,--quirk]
307              specify a comma separated list of quirk arguments to pass to pm-
308              hibernate, for example: --s4-quirks=--quirk-save-pci
309
310       --s4-sleep-delay=N
311              sleep  N  seconds  from the start of the hibernate to the wakeup
312              time. Note that this time MUST be longer than the time it  takes
313              to  hibernate  the  machine otherwise the wakeup timer will fire
314              during the hibernate state. The default is currently 90 seconds.
315
316       --sbbr run ARM SBBR tests
317
318       -p, --show-progress
319              show the progress of the tests being run. Each test will identi‐
320              fied as it is being run. For long tests, a percentage of comple‐
321              tion time will be displayed. As of fwts 0.19.06 this is  enabled
322              by default and can be disabled with --quiet (or -q).
323
324       -q, --quiet
325              run quietly with no output to stdout.
326
327       -D, --show-progress-dialog
328              output  the  progress  of  tests being run in a form that can be
329              piped into the dialog tool with the --gauge option.
330
331       -s, --show-tests
332              show the names of available tests.  By  default  will  show  all
333              tests.  Use  the  --batch,  --interactive, --batch-experimental,
334              --interactive-experimental, --utils options to show  these  spe‐
335              cific tests.
336
337       --show-tests-full
338              show  all  the available tests listed by minor test description.
339              By default will show all tests. Use the --batch,  --interactive,
340              --batch-experimental, --interactive-experimental options to show
341              these specific tests.
342
343       --show-tests-categories
344              show all the available tests and the categories they belong to.
345
346       --skip-test=test[,test..]
347              specify tests to skip over and not run. List must be comma sepa‐
348              rated.
349
350       --stdout-summary
351              output SUCCESS or FAILED to stdout at end of tests.
352
353       -t, --table-path=path
354              specify the path containing ACPI tables. These tables need to be
355              named in the format: tablename.dat, for  example  DSDT.dat,  for
356              example,  as  extracted  using  acpidump or fwts --dump and then
357              acpixtract.
358
359       -u, --utils
360              run utilities. Designed to  dump  system  information,  such  as
361              annotated  ACPI  tables,  CMOS  memory,  Int 15 E820 memory map,
362              firmware ROM data.
363
364       -v, --version
365              output version number and build date of the fwts tool.
366
367       -w, --width=N
368              specify the width in  characters  of  the  output  logfile.  The
369              default is 130.
370
371

EXAMPLES

373       Run  all  the  batch  tests and append the results into the default log
374       results.log:
375               sudo fwts
376
377       Run all the interactive tests and start  a  clean  results  log  called
378       interactive.log:
379               sudo fwts -i -f -r interactive.log
380
381       Run all the tests, interactive and batch:
382               sudo fwts -i -b
383
384       Run just the battery and cpufreq tests:
385               sudo fwts battery cpufreq
386
387       Run all the batch tests and define a new log format using just the date
388       and line number:
389               sudo fwts --log-format="%date %line: "
390
391       Run all the interative tests and log just the results, info and summary
392       data:
393               sudo fwts -i --log-filter=RES,INF,SUM
394
395       Dump all the interesting firmware information into log files for analy‐
396       sis later:
397               sudo fwts --dump
398
399       View kernel and ACPI driver version and BIOS information:
400               sudo fwts  -w 80 -r stdout  version bios_info  --log-filter=INF
401               --log-format=""
402
403       Show the batch and batch experimental tests:
404               fwts --show-tests --batch --batch-experimental
405
406       Run  multiple S3 tests with delay between each test ranging from 1 sec‐
407       ond to 10 seconds with a delay delta per test of 0.2 seconds
408               sudo     fwts     s3     --s3-multiple=100     --s3-min-delay=1
409               --s3-max-delay=10 --s3-delay-delta=0.2
410
411

SEE ALSO

413       iasl(1), acpixtract(1), acpidump(1), dtc(1), dmidecode(8), lspci(8)
414

AUTHOR

416       fwts  was  originally  written  by Colin King with much of the original
417       test code derived from the Intel Linux Firmware test kit.  Many  thanks
418       also  for  contributions  from  (in  alpabetical order): AceLan Kao, Al
419       Stone, Alberto Milone, Alex  Hung,  Anthony  Wong,  Chris  Goldsworthy,
420       Chris  Van Hoof, David Ward, Deb McLemore, Erico Nunes, Fan Wu, Fu Wei,
421       Heyi Guo, Ivan Hu, Jeffrey  Hugo,  Jeremy  Kerr,  Jiri  Vohanka,  Kamal
422       Mostafa,  Keng-Yu  Lin, Mahesh Bireddy, Matt Flemimg, Naresh Bhat, Paul
423       Menzel, Phidias Chiang, Pradeep Gaddam, Prarit Bhargava,  Rajat  Goyal,
424       Ricardo  Neri,  Robert Hooker, Rudolf Marek, Sakar Arora, Seth Forshee,
425       Yang Kun, Yi Li and Zhang Rui.
426
427       This manual page was written by Colin King for the Ubuntu project  (but
428       may be used by others).
429
430       This is free software; see the source for copying conditions.  There is
431       NO warranty; not even for MERCHANTABILITY or FITNESS FOR  A  PARTICULAR
432       PURPOSE.
433
434
435
436                                24 August, 2017                        FWTS(1)
Impressum