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

EXAMPLES

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

SEE ALSO

418       iasl(1), acpixtract(1), acpidump(1), dtc(1), dmidecode(8), lspci(8)
419

AUTHOR

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