]> sigrok.org Git - sigrok-cli.git/blame - doc/sigrok-cli.1
decode: nits, whitespace and line length fix
[sigrok-cli.git] / doc / sigrok-cli.1
CommitLineData
c45dd41c 1.TH SIGROK\-CLI 1 "March 28, 2019"
43e5747a 2.SH "NAME"
53155b2f 3sigrok\-cli \- Command-line client for the sigrok software
43e5747a 4.SH "SYNOPSIS"
53155b2f 5.B sigrok\-cli [OPTIONS] [COMMAND]
43e5747a 6.SH "DESCRIPTION"
10d98b47
UH
7\fBsigrok\-cli\fP is a cross-platform command line utility for the
8\fBsigrok\fP software.
43e5747a 9.PP
10d98b47
UH
10It cannot display graphical output, but is still sufficient to run through
11the whole process of hardware initialization, acquisition, protocol decoding
12and saving the session.
43e5747a
UH
13.PP
14It is useful for running on remote or embedded systems, netbooks, PDAs,
15and for various other use-cases. It can display samples on standard output or
16save them in various file formats.
53155b2f 17.SH OPTIONS
43e5747a 18.TP
43e5747a
UH
19.B "\-h, \-\-help"
20Show a help text and exit.
21.TP
7949dca0
UH
22.B "\-V, \-\-version"
23Show
a0cfa735 24.B sigrok\-cli
6293db8a
UH
25version and the versions of libraries used.
26.TP
a0cfa735 27.B "\-L, \-\-list\-supported"
6293db8a 28Show information about supported hardware drivers, input file
7949dca0
UH
29formats, output file formats, and protocol decoders.
30.TP
c45dd41c
UH
31.B "\-\-list\-supported\-wiki"
32Show information about supported protocol decoders in MediaWiki syntax.
33This is generally only used by developers to easily update the list of
34supported protocol decoders in the sigrok wiki.
35.TP
b5ac81ad
BV
36\fB\-d, \-\-driver\fP <drivername>
37A driver must always be selected (unless doing a global scan). Use the
c45dd41c 38.BR "\-L " ( "\-\-list\-supported" ")"
c1865eb5 39option to get a list of available drivers.
53155b2f 40.sp
10d98b47
UH
41Drivers can take options, in the form \fBkey=value\fP
42separated by colons.
43.sp
44Drivers communicating with hardware via a serial port always need the port
45specified as the \fBconn\fP option. For example, to use the
46Openbench Logic Sniffer:
53155b2f 47.sp
a0cfa735 48.RB " $ " "sigrok\-cli \-\-driver=ols:conn=/dev/ttyACM0" " [...]"
53155b2f 49.sp
10d98b47
UH
50Some USB devices don't use a unique VendorID/ProductID combination, and thus
51need that specified as well. This also uses the \fBconn\fP option, using
52either \fBVendorID.ProductID\fP or \fBbus.address\fP:
53155b2f 53.sp
a0cfa735
UH
54USB \fBVendorID.ProductID\fP example:
55.sp
56.RB " $ " "sigrok\-cli \-\-driver=uni\-t\-ut61e:conn=1a86.e008" " [...]"
57.sp
58USB \fBbus.address\fP example:
59.sp
60.RB " $ " "sigrok\-cli \-\-driver=uni\-t\-ut61e:conn=4.6" " [...]"
43e5747a 61.TP
a0cfa735 62.BR "\-c, \-\-config " <deviceoption>
53155b2f 63A colon-separated list of device options, where each option takes the form
1b4b6a7c 64.BR key=value .
10d98b47
UH
65For example, to set the samplerate to 1MHz on a device supported by the
66fx2lafw driver, you might specify
1b4b6a7c 67.sp
a0cfa735 68.RB " $ " "sigrok\-cli \-d fx2lafw \-\-config samplerate=1m" " [...]"
1b4b6a7c 69.sp
53155b2f
BV
70Samplerate is an option common to most logic analyzers. The argument specifies
71the samplerate in Hz. You can also specify the samplerate in kHz, MHz or GHz.
1b4b6a7c
UH
72The following are all equivalent:
73.sp
a0cfa735 74.RB " $ " "sigrok\-cli \-d fx2lafw \-\-config samplerate=1000000" " [...]"
1b4b6a7c 75.sp
a0cfa735 76.RB " $ " "sigrok\-cli \-d fx2lafw \-\-config samplerate=1m" " [...]"
1b4b6a7c 77.sp
a0cfa735 78.RB " $ " "sigrok\-cli \-d fx2lafw \-\-config \(dqsamplerate=1 MHz\(dq" " [...]"
1b4b6a7c 79.TP
43e5747a 80.BR "\-i, \-\-input\-file " <filename>
a0cfa735
UH
81Load input from a file instead of a hardware device. You can specify
82"-" to use stdin as input. If the
43e5747a 83.B \-\-input\-format
a0cfa735 84option is not supplied, sigrok\-cli attempts to autodetect the file format of
43e5747a 85the input file.
a0cfa735
UH
86.sp
87Example for loading a sigrok session file:
88.sp
89.RB " $ " "sigrok\-cli \-i example.sr" " [...]"
90.sp
91Example for loading a WAV file (autodetection of input format):
92.sp
93.RB " $ " "sigrok\-cli \-i example.wav" " [...]
94.sp
95Example for loading a VCD file from stdin (autodetection of input format):
96.sp
97.RB " $ " "cat example.vcd | sigrok\-cli \-i \-" " [...]
43e5747a
UH
98.TP
99.BR "\-I, \-\-input\-format " <format>
100When loading an input file, assume it's in the specified format. If this
101option is not supplied (in addition to
102.BR \-\-input\-file ),
943d0c08 103sigrok-cli attempts to autodetect the file format of the input file. Use the
a0cfa735 104.BR "\-L " ( "\-\-list\-supported" ")"
10d98b47
UH
105option to see a list of available input formats.
106.sp
107The format name may optionally be followed by a colon-separated list of
108options, where each option takes the form
943d0c08 109.BR "key=value" .
a0cfa735
UH
110.sp
111Example for loading a binary file with options:
112.sp
113.RB " $ " "sigrok\-cli \-i example.bin"
114.br
115.BR " \-I binary:numchannels=4:samplerate=1mhz" " [...]"
43e5747a
UH
116.TP
117.BR "\-o, \-\-output\-file " <filename>
118Save output to a file instead of writing it to stdout. The default format
119used when saving is the sigrok session file format. This can be changed with
120the
76ae913d 121.B \-\-output\-format
7949dca0 122option.
a0cfa735
UH
123.sp
124Example for saving data in the sigrok session format:
125.sp
126.RB " $ " "sigrok\-cli " "[...] " "\-o example.sr"
7949dca0 127.TP
a0cfa735 128.BR "\-O, \-\-output\-format " <format>
7949dca0 129Set the output format to use. Use the
a0cfa735 130.BR "\-L " ( "\-\-list\-supported" ")"
10d98b47
UH
131option to see a list of available output formats.
132.sp
133The format name may optionally be followed by a colon-separated list of
134options, where each option takes the form
7949dca0
UH
135.BR "key=value" .
136.sp
c1865eb5 137For example, the
7949dca0
UH
138.B bits
139or
140.B hex
141formats, for an ASCII bit or ASCII hexadecimal display, can take a "width" option, specifying the number of samples (in bits) to display per line. Thus
a0cfa735 142.B "\-O hex:width=128"
7949dca0
UH
143will display 128 bits per line, in hexadecimal:
144.sp
10d98b47
UH
145 0:ffff ffff ffff ffff ffff ffff ffff ffff
146 1:ff00 ff00 ff00 ff00 ff00 ff00 ff00 ff00
7949dca0 147.sp
029d73fe 148The lines always start with the channel number (or name, if defined), followed by a colon. If no format is specified, it defaults to
7949dca0
UH
149.BR bits:width=64 ,
150like this:
151.sp
10d98b47
UH
152 0:11111111 11111111 11111111 11111111 [...]
153 1:11111111 00000000 11111111 00000000 [...]
a0cfa735 154.sp
f5735c5e 155Example for saving data in the CSV format with options:
a0cfa735 156.sp
f5735c5e
GS
157.RB " $ " "sigrok\-cli " "[...] " "\-o example.csv \-O csv:dedup:header=false"
158.sp
159Notice that boolean options are \fBtrue\fP when no value gets specified.
43e5747a 160.TP
3dfbfbc8 161.BR "\-C, \-\-channels " <channellist>
029d73fe 162A comma-separated list of channels to be used in the session.
43e5747a 163.sp
029d73fe 164Note that sigrok always names the channels according to how they're shown on
a0cfa735 165the enclosure of the hardware. If your logic analyzer numbers the channels 0\-15,
029d73fe 166that's how you must specify them with this option. An oscilloscope's channels
10d98b47 167would generally be referred to as "CH1", "CH2", and so on.
029d73fe 168Use the \fB\-\-show\fP option to see a list of channel names for your device.
53155b2f 169.sp
029d73fe
UH
170The default is to use all the channels available on a device. You can name
171a channel like this:
43e5747a 172.BR "1=CLK" .
029d73fe 173A range of channels can also be given, in the form
43e5747a
UH
174.BR "1\-5" .
175.sp
176Example:
177.sp
10d98b47
UH
178.RB " $ " "sigrok\-cli \-\-driver fx2lafw \-\-samples 100"
179.br
3dfbfbc8 180.B " \-\-channels 1=CLK,2\-4,7"
43e5747a
UH
181.br
182 CLK:11111111 11111111 11111111 11111111 [...]
183 2:11111111 11111111 11111111 11111111 [...]
184 3:11111111 11111111 11111111 11111111 [...]
185 4:11111111 11111111 11111111 11111111 [...]
186 7:11111111 11111111 11111111 11111111 [...]
187.sp
188The comma-separated list is processed from left to right, i.e. items farther
189to the right override previous items. For example
bf836932 190.B "1=CS,CS=MISO"
029d73fe 191will set the name of channel 1 to
43e5747a 192.BR "MISO" .
43e5747a 193.TP
ca50f4b3 194.BR "\-g, \-\-channel\-group "<channel\ group>
a0cfa735
UH
195Specify the channel group to operate on. Some devices organize channels into
196groups, the settings of which can only be changed as a group. The list of
197channel groups, if any, is displayed with the \fB\-\-show\fP command.
198.sp
f5735c5e 199Examples:
a0cfa735
UH
200.sp
201.RB " $ " "sigrok\-cli \-g CH1" " [...]"
f5735c5e
GS
202.sp
203.RB " $ " "sigrok\-cli \-d demo \-g Logic \-c pattern=graycode" " [...]"
31f9318a 204.TP
43e5747a
UH
205.BR "\-t, \-\-triggers " <triggerlist>
206A comma-separated list of triggers to use, of the form
029d73fe
UH
207.BR "<channel>=<trigger>" .
208You can use the name or number of the channel, and the trigger itself is a
43e5747a
UH
209series of characters:
210.sp
211.BR "0 or 1" :
212A low or high value on the pin.
213.br
214.BR "r or f" :
215A rising or falling value on the pin. An
216.B r
217effectively corresponds to
218.BR 01 .
219.br
f99038b4 220.BR "e" :
85f2ddbb 221Any kind of change on a pin (either a rising or a falling edge).
43e5747a 222.sp
10d98b47
UH
223Not every device supports all of these trigger types. Use the \fB\-\-show\fP
224command to see which triggers your device supports.
43e5747a 225.TP
a0cfa735 226.BR "\-w, \-\-wait\-trigger"
10d98b47
UH
227Don't output any sample data (even if it's actually received from the
228hardware) before the trigger condition is met. In other words, do not output
229any pre-trigger data. This option is useful if you don't care about the data
230that came before the trigger (but the hardware delivers this data to sigrok
231nonetheless).
43e5747a 232.TP
b5ac81ad 233.BR "\-P, \-\-protocol\-decoders " <list>
85f2ddbb
UH
234This option allows the user to specify a comma-separated list of protocol
235decoders to be used in this session. The decoders are specified by their
236ID, as shown in the
a0cfa735 237.BR "\-L " ( "\-\-list\-supported" ")"
85f2ddbb
UH
238output.
239.sp
240Example:
241.sp
242 $
b5ac81ad 243.B "sigrok\-cli \-i <file.sr> \-P i2c"
85f2ddbb
UH
244.sp
245Each protocol decoder can optionally be followed by a colon-separated list
246of options, where each option takes the form
247.BR "key=value" .
248.sp
249Example:
250.sp
251 $
8791df07
UH
252.B "sigrok\-cli \-i <file.sr> "
253.br
254.B " \-P uart:baudrate=115200:parity_type=odd"
85f2ddbb
UH
255.sp
256The list of supported options depends entirely on the protocol decoder. Every
257protocol decoder has different options it supports.
258.sp
259Any "options" specified for a protocol decoder which are not actually
029d73fe 260supported options, will be interpreted as being channel name/number assignments.
85f2ddbb
UH
261.sp
262Example:
263.sp
264 $
265.B "sigrok\-cli \-i <file.sr>"
266.br
bf836932 267.B " \-P spi:wordsize=9:miso=1:mosi=5:clk=3:cs=0"
85f2ddbb
UH
268.sp
269In this example,
270.B wordsize
271is an option supported by the
272.B spi
273protocol decoder. Additionally, the user tells sigrok to decode the SPI
029d73fe 274protocol using channel 1 as MISO signal for SPI, channel 5 as MOSI, channel 3
bf836932 275as CLK, and channel 0 as CS# signal.
65f903f9
GS
276.sp
277Notice that the
278.B sigrok\-cli
279application does not support "name matching". Instead it's assumed that the
280traces in the input stream match the order of the decoder's input signals,
281or that users explicitly specify the input channel to decoder signal mapping.
e4b7762f
GS
282.br
283.sp
284When multiple decoders are specified in the same
285.BR -P
286option, they will be stacked on top of each other in the specified order.
287.sp
288Example:
289.sp
290 $
291.B "sigrok\-cli \-i <file.sr> \-P i2c,eeprom24xx"
292.br
293 $
294.B "sigrok\-cli \-i <file.sr> \-P uart:baudrate=31250,midi"
295.sp
296When multiple
297.BR -P
298options are specified, each of them creates one decoder stack, which
299executes in parallel to other decoder stacks.
300.sp
301Example:
302.sp
303 $
304.B "sigrok\-cli \-i <file.sr> \-P uart:tx=D0:rx=D1 \-P timing:data=D2"
305.sp
85f2ddbb 306.TP
b6bd032d 307.BR "\-A, \-\-protocol\-decoder\-annotations " <annotations>
87d526cf
UH
308By default, all annotation output of all protocol decoders is
309shown. With this option a specific decoder's annotations can be selected for
310display, by specifying the decoder ID:
7fb87027
BV
311.sp
312 $
a0cfa735 313.B "sigrok\-cli \-i <file.sr> \-P i2c,i2cfilter,edid \-A i2c"
7fb87027 314.sp
6c5438fe 315If a protocol decoder has multiple annotation classes, you can also specify
790b0261 316which one of them to show by specifying its short description like this:
7fb87027
BV
317.sp
318 $
b5ac81ad 319.B "sigrok\-cli \-i <file.sr> \-P i2c,i2cfilter,edid"
7fb87027 320.br
a0cfa735 321.B " \-A i2c=data\-read"
790b0261 322.sp
6c5438fe 323Select multiple annotation classes by separating them with a colon:
790b0261
BV
324.sp
325 $
326.B "sigrok\-cli \-i <file.sr> \-P i2c,i2cfilter,edid"
327.br
a0cfa735 328.B " \-A i2c=data\-read:data\-write"
7fb87027
BV
329.sp
330You can also select multiple protocol decoders, with an optional selected
6c5438fe 331annotation class each, by separating them with commas:
7fb87027
BV
332.sp
333 $
b5ac81ad 334.B "sigrok\-cli \-i <file.sr> \-P i2c,i2cfilter,edid"
7fb87027 335.br
a0cfa735 336.B " \-A i2c=data\-read:data\-write,edid"
7fb87027 337.TP
b0f1c540
BV
338.BR "\-M, \-\-protocol\-decoder\-meta " <pdname>
339When given, show protocol decoder meta output instead of annotations.
340The argument is the name of the decoder whose meta output to show.
341.sp
342 $
343.B "sigrok\-cli \-i <file.sr> \-M i2c"
344.sp
345Not every decoder generates meta output.
346.TP
347.BR "\-B, \-\-protocol\-decoder\-binary " <binaryspec>
348When given, decoder "raw" data of various kinds is written to stdout instead
349of annotations (this could be raw binary UART/SPI bytes, or WAV files, PCAP
350files, PNG files, or anything else; this is entirely dependent on the
351decoder and what kinds of binary output make sense for that decoder).
352.sp
353No other information is printed to stdout, so this is
354suitable for piping into other programs or saving to a file.
355.sp
356Protocol decoders that support binary output publish a list of binary
357classes, for example the UART decoder might have "TX" and "RX". To
358select TX for output, the argument to this option would be:
359.sp
360 $
361.B "sigrok\-cli \-i <file.sr> \-B uart=tx"
362.br
363.sp
364If only the protocol decoder is specified, without binary class, all classes
365are written to stdout:
366.sp
367 $
368.B "sigrok\-cli \-i <file.sr> \-B uart"
369.sp
370(this is only useful in rare cases, generally you would specify a certain
371binary class you're interested in)
372.sp
373Not every decoder generates binary output.
374.TP
8aafb57c
GS
375.BR "\-\-protocol\-decoder\-samplenum
376When given, decoder annotations will include sample numbers, too.
377This allows consumers to receive machine readable timing information.
378.TP
53155b2f 379.BR "\-l, \-\-loglevel " <level>
a0cfa735 380Set the libsigrok and libsigrokdecode loglevel. At the moment \fBsigrok\-cli\fP
10d98b47 381doesn't support setting the two loglevels independently. The higher the
53155b2f
BV
382number, the more debug output will be printed. Valid loglevels are:
383.sp
384\fB0\fP None
385.br
386\fB1\fP Error
387.br
388\fB2\fP Warnings
389.br
390\fB3\fP Informational
391.br
392\fB4\fP Debug
393.br
394\fB5\fP Spew
395.TP
396.B "\-\-show"
397.br
10d98b47
UH
398Show information about the selected option. For example, to see options for a
399connected fx2lafw device:
53155b2f
BV
400.sp
401 $
402.B "sigrok\-cli \-\-driver fx2lafw \-\-show
403.sp
10d98b47
UH
404In order to properly get device options for your hardware, some drivers might
405need a serial port specified:
53155b2f
BV
406.sp
407 $
408.B "sigrok\-cli \-\-driver ols:conn=/dev/ttyACM0 \-\-show
409.sp
a8b4041a 410This also works for protocol decoders, input modules and output modules:
53155b2f
BV
411.sp
412 $
ad6520c4
BV
413.B "sigrok\-cli \-\-protocol\-decoders i2c \-\-show
414 $
a8b4041a
BV
415.B "sigrok\-cli \-\-input\-format csv \-\-show
416 $
ad6520c4 417.B "sigrok\-cli \-\-output\-format bits \-\-show
53155b2f 418.TP
b5ac81ad
BV
419.B "\-\-scan"
420Scan for devices that can be detected automatically.
10d98b47
UH
421.sp
422Example:
423.sp
424 $
b5ac81ad 425.B "sigrok\-cli \-\-scan
10d98b47
UH
426.br
427 The following devices were found:
428.br
a0cfa735 429 demo \- Demo device with 12 channels: D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3
10d98b47 430.br
a0cfa735 431 fx2lafw:conn=3.26 \- CWAV USBee SX with 8 channels: 0 1 2 3 4 5 6 7
10d98b47
UH
432.sp
433However, not all devices are auto-detectable (e.g. serial port based ones).
434For those you'll have to provide a \fBconn\fP option, see above.
435.sp
436 $
a0cfa735 437.B "sigrok\-cli \-\-driver digitek\-dt4000zc:conn=/dev/ttyUSB0 \-\-scan
10d98b47
UH
438.br
439 The following devices were found:
440.br
029d73fe 441 Digitek DT4000ZC with 1 channel: P1
53155b2f 442.TP
43e5747a
UH
443.BR "\-\-time " <ms>
444Sample for
445.B <ms>
10d98b47
UH
446milliseconds, then quit.
447.sp
bf836932
UH
448You can optionally follow the number by \fBs\fP to specify the time to
449sample in seconds.
10d98b47
UH
450.sp
451For example,
43e5747a
UH
452.B "\-\-time 2s"
453will sample for two seconds.
454.TP
455.BR "\-\-samples " <numsamples>
456Acquire
457.B <numsamples>
458samples, then quit.
10d98b47
UH
459.sp
460You can optionally follow the number by \fBk\fP, \fBm\fP, or \fBg\fP to
461specify the number of samples in kilosamples, megasamples, or gigasamples,
462respectively.
463.sp
464For example,
465.B "\-\-samples 3m"
466will acquire 3000000 samples.
43e5747a 467.TP
66d5560b
UH
468.BR "\-\-frames " <numframes>
469Acquire
470.B <numframes>
471frames, then quit.
472.TP
43e5747a
UH
473.BR "\-\-continuous"
474Sample continuously until stopped. Not all devices support this.
2d73284e 475.TP
62a64762
BV
476.BR "\-\-get " <variable>
477Get the value of
478.B <variable>
479from the specified device and print it.
480.TP
2d73284e 481.BR "\-\-set"
b8656921
UH
482Set one or more variables specified with the \fB\-\-config\fP option, without
483doing any acquisition.
53155b2f 484.SH EXAMPLES
b8656921
UH
485In order to get exactly 100 samples from the connected fx2lafw-supported logic
486analyzer hardware, run the following command:
43e5747a 487.TP
53155b2f 488.B " sigrok\-cli \-\-driver fx2lafw \-\-samples 100"
43e5747a 489.TP
2d73284e 490If you want to sample data for 3 seconds (3000 ms), use:
43e5747a 491.TP
53155b2f 492.B " sigrok\-cli \-\-driver fx2lafw \-\-time 3000"
43e5747a
UH
493.TP
494Alternatively, you can also use:
495.TP
53155b2f 496.B " sigrok\-cli \-\-driver fx2lafw \-\-time 3s"
43e5747a 497.TP
029d73fe 498To capture data from the first 4 channels using the Openbench Logic Sniffer lasting 100ms at 10 MHz starting at the trigger condition
53155b2f 4990:high, 1:rising, 2:low, 3:high, use:
43e5747a 500.TP
53155b2f 501.nf
b5ac81ad 502\fBsigrok\-cli \-\-driver ols:conn=/dev/ttyACM0 \-\-config samplerate=10m \\\fP
3dfbfbc8 503\fB\-\-output\-format bits \-\-channels 0\-3 \-\-wait\-trigger \\\fP
b5ac81ad 504\fB\-\-triggers 0=1,1=r,2=0,3=1 \-\-time 100\fP
2d73284e
BV
505.TP
506To turn on internal logging on a Lascar EL-USB series device:
507.TP
508\fBsigrok\-cli \-\-driver lascar\-el\-usb:conn=10c4.0002 \\\fP
b8656921 509\fB\-\-config datalog=on \-\-set\fP
43e5747a
UH
510.SH "EXIT STATUS"
511.B sigrok\-cli
512exits with 0 on success, 1 on most failures.
513.SH "SEE ALSO"
b5ac81ad 514\fBpulseview\fP(1)
43e5747a 515.SH "BUGS"
10d98b47
UH
516Please report any bugs via Bugzilla
517.RB "(" http://sigrok.org/bugzilla ")"
518or on the sigrok\-devel mailing list
43e5747a
UH
519.RB "(" sigrok\-devel@lists.souceforge.net ")."
520.SH "LICENSE"
521.B sigrok\-cli
522is covered by the GNU General Public License (GPL). Some portions are
523licensed under the "GPL v2 or later", some under "GPL v3 or later".
524.SH "AUTHORS"
525Please see the individual source code files.
526.PP
527This manual page was written by Uwe Hermann <uwe@hermann\-uwe.de>.
528It is licensed under the terms of the GNU GPL (version 2 or later).