blob: ae4df4e5ab73a191a913624a315262dd224499cf [file] [log] [blame]
Gordon Hendersonda384432013-05-13 19:43:26 +01001.TH "GPIO" "March 2013" "Command-Line access to Raspberry Pi's GPIO"
Gordon Hendersonbf0ad862012-08-16 15:04:43 +01002
3.SH NAME
Gordon Hendersonda384432013-05-13 19:43:26 +01004gpio \- Command-line access to Raspberry Pi's GPIO
Gordon Hendersonbf0ad862012-08-16 15:04:43 +01005
6.SH SYNOPSIS
Gordon Hendersonbf0ad862012-08-16 15:04:43 +01007.B gpio
Gordon Hendersonf99ffed2012-08-19 15:12:45 +01008.B \-v
9.PP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010010.B gpio
Gordon Hendersonda384432013-05-13 19:43:26 +010011.B [ \-g | \-1 ]
12.B mode/read/write/aread/awrite/wb/pwm/clock ...
13.PP
14.B gpio
15.B [ \-x extension:params ]
16.B mode/read/write/aread/awrite/pwm ...
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010017.PP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010018.B gpio
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010019.B [ \-p ]
Gordon Henderson25e4ec52012-12-06 21:49:41 +000020.B read/write/wb
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010021.B ...
22.PP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010023.B gpio
Gordon Hendersonda384432013-05-13 19:43:26 +010024.B readall/reset
Gordon Henderson183c5a62012-10-21 15:25:16 +010025.PP
26.B gpio
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010027.B unexportall/exports
28.PP
29.B gpio
30.B export/edge/unexport
31.B ...
32.PP
33.B gpio
Gordon Hendersonda384432013-05-13 19:43:26 +010034.B wfi
35.B ...
36.PP
37.B gpio
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010038.B drive
39group value
40.PP
41.B gpio
42.B pwm-bal/pwm-ms
43.PP
44.B gpio
45.B pwmr
46range
47.PP
48.B gpio
Gordon Hendersone8f62582013-01-28 13:00:47 +000049.B load \ i2c/spi ...
Gordon Henderson99095e32012-08-27 20:56:14 +010050.PP
51.B gpio
52.B gbr
53channel
54.PP
55.B gpio
56.B gbw
57channel value
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010058
59.SH DESCRIPTION
60
61.B GPIO
Gordon Henderson86a5c682012-10-02 14:32:12 +010062is a swiss army knife of a command line tool to allow the user easy
Gordon Henderson99095e32012-08-27 20:56:14 +010063access to the GPIO pins on the Raspberry Pi and the SPI A/D and D/A
Gordon Henderson86a5c682012-10-02 14:32:12 +010064converters on the Gertboard. It's designed for simple testing and
Gordon Henderson99095e32012-08-27 20:56:14 +010065diagnostic purposes, but can be used in shell scripts for general if
66somewhat slow control of the GPIO pins.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010067
Gordon Henderson13bbba72013-01-14 11:31:56 +000068It can also control the IO's on the PiFace IO board and load the SPI and I2C
69kernel modules if required.
70
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010071Additionally, it can be used to set the exports in the \fI/sys/class/gpio\fR
72system directory to allow subsequent programs to use the \fR/sys/class/gpio\fR
73interface without needing to be run as root.
74
75.SH OPTIONS
76
77.TP
78.B \-v
Gordon Henderson183c5a62012-10-21 15:25:16 +010079Output the current version including the board revision of the Raspberry Pi.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010080
81.TP
82.B \-g
83Use the BCM_GPIO pins numbers rather than wiringPi pin numbers.
Gordon Hendersonda384432013-05-13 19:43:26 +010084\fINote:\fR The BCM_GPIO pin numbers are always used with the
Gordon Henderson13bbba72013-01-14 11:31:56 +000085export and edge commands.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010086
87.TP
Gordon Hendersonda384432013-05-13 19:43:26 +010088.B \-1
89Use the physical pin numbers rather than wiringPi pin numbers.
90\fINote:\fR that this applies to the P1 connector only. It is not possible to
91use pins on the Revision 2 P5 connector this way, and as with \-g the
92BCM_GPIO pin numbers are always used with the export and edge commands.
93
94.TP
95.B \-x extension
96This causes the named extension to be initialised. Extensions
97comprise of a name (e.g. mcp23017) followed by a colon, then the
98pin-base, then more optional parameters depending on the extension type.
99See the web page on http://wiringpi.com/the-gpio-utility/
100
101.TP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100102.B \-p
Gordon Hendersonda384432013-05-13 19:43:26 +0100103Use the PiFace interface board and its corresponding pin numbers. The PiFace
104will always appear at pin number 200 in the gpio command. You can assign any
105pin numbers you like in your own programs though.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100106
107.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100108.B read <pin>
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100109Read the digital value of the given pin and print 0 or 1 to represent the
110respective logic levels.
111
112.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100113.B write <pin> <value>
Gordon Henderson25e4ec52012-12-06 21:49:41 +0000114Write the given value (0 or 1) to the pin. You need to set the pin
115to output mode first.
116
117.TP
118.B wb <value>
119Write the given byte to the 8 main GPIO pins. You can prefix it with 0x
120to specify a hexadecimal number. You need to set pins to output mode
121first.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100122
123.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100124.B readall
125Output a table of all GPIO pins values. The values represent the actual values read
126if the pin is in input mode, or the last value written if the pin is in output
127mode.
128
129.TP
Gordon Hendersonda384432013-05-13 19:43:26 +0100130.B reset
131Resets the GPIO - As much as it's possible to do. All pins are set to input
132mode and all the internal pull-up/down resistors are disconnected (tristate mode).
133
134.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100135.B pwm <pin> <value>
Gordon Henderson56c77b52013-02-01 20:19:22 +0000136Write a PWM value (0-1023) to the given pin. The pin needs to be put
137into PWM mode first.
138
139.TP
140.B clock <pin> <frequency>
141Set the output frequency on the given pin. The pin needs to be put into
142clock mode first.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100143
144.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100145.B mode <pin> <mode>
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100146Set a pin into \fIinput\fR, \fIoutput\fR or \fIpwm\fR mode. Can also
147use the literals \fIup\fR, \fIdown\fR or \fItri\fR to set the internal
148pull-up, pull-down or tristate (off) controls.
149
150.TP
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100151.B unexportall
152Un-Export all the GPIO pins in the /sys/class/gpio directory.
153
154.TP
155.B exports
156Print a list (if any) of all the exported GPIO pins and their current values.
157
158.TP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100159.B export
160Export a GPIO pin in the \fI/sys/class/gpio\fR directory. Use like the
161mode command above however only \fIin\fR and \fIout\fR are supported at
162this time. Note that the pin number is the \fBBCM_GPIO\fR number and
163not the wiringPi number.
164
165Once a GPIO pin has been exported, the \fBgpio\fR program changes the
166ownership of the \fI/sys/class/gpio/gpioX/value\fR and if present in
167later kernels, the \fI/sys/class/gpio/gpioX/edge\fR pseudo files to
168that of the user running the \fBgpio\fR program. This means that you
169can have a small script of gpio exports to setup the gpio pins as your
170program requires without the need to run anything as root, or with the
171sudo command.
172
173.TP
174.B edge
175This exports a GPIO pin in the \fI/sys/class/gpio\fR directory, set
176the direction to input and set the edge interrupt method to \fInone\fR,
177\fIrising\fR, \fIfalling\fR or \fIboth\fR. Use like the export command
178above and note that \fBBCM_GPIO\fR pin number is used not not wiringPi pin
179numbering.
180
Gordon Henderson86a5c682012-10-02 14:32:12 +0100181Like the export commands above, ownership is set to that of the
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100182calling user, allowing subsequent access from user programs without
183requiring root/sudo.
184
185.TP
186.B unexport
187Un-Export a GPIO pin in the /sys/class/gpio directory.
188
189.TP
Gordon Hendersonda384432013-05-13 19:43:26 +0100190.B wfi <pin> <mode>
191This set the given pin to the supplied interrupt mode: rising, falling
192or both then waits for the interrupt to happen. It's a non-busy wait,
193so does not consume and CPU while it's waiting.
194
195.TP
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100196.B drive
197group value
198
199Change the pad driver value for the given pad group to the supplied drive
200value. Group is 0, 1 or 2 and value is 0-7. Do not use unless you are
201absolutely sure you know what you're doing.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100202
203.TP
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100204.B pwm-bal/pwm-ms
205Change the PWM mode to balanced (the default) or mark:space ratio (traditional)
206
207.TP
208.B pwmr
209Change the PWM range register. The default is 1024.
210
211.TP
Gordon Hendersone8f62582013-01-28 13:00:47 +0000212.B load i2c [baudrate]
213This loads the i2c or drivers into the kernel and changes the permissions
214on the associated /dev/ entries so that the current user has access to
215them. Optionally it will set the I2C baudrate to that supplied (or as
216close as the Pi can manage) The default speed is 100Kb/sec.
217
218.TP
219.B load spi [buffer size in KB]
Gordon Henderson98bcb202013-02-07 21:53:49 +0000220This loads the spi drivers into the kernel and changes the permissions
Gordon Hendersone8f62582013-01-28 13:00:47 +0000221on the associated /dev/ entries so that the current user has access to
222them. Optionally it will set the SPI buffer size to that supplied. The
223default is 4KB.
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100224
Gordon Henderson99095e32012-08-27 20:56:14 +0100225.TP
226.B gbr
227channel
228
Gordon Henderson86a5c682012-10-02 14:32:12 +0100229This reads the analog to digital converter on the Gertboard on the given
Gordon Henderson99095e32012-08-27 20:56:14 +0100230channel. The board jumpers need to be in-place to do this operation.
231
232.TP
233.B gbw
234channel value
235
236This writes the supplied value to the output channel on the Gertboards
Gordon Henderson86a5c682012-10-02 14:32:12 +0100237SPI digital to analogue converter.
Gordon Henderson99095e32012-08-27 20:56:14 +0100238The board jumpers need to be in-place to do this operation.
239
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100240
Gordon Henderson13bbba72013-01-14 11:31:56 +0000241.SH "WiringPi vs. BCM_GPIO Pin numbering"
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100242
243.PP
244.TS
Gordon Hendersonda384432013-05-13 19:43:26 +0100245c c c c l.
246WiringPi GPIO-r1 GPIO-r2 P1-Phys Function
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100247_
Gordon Hendersonda384432013-05-13 19:43:26 +0100248 0 17 17 11
249 1 18 18 12 (PWM)
250 2 21 27 13
251 3 22 22 15
252 4 23 23 16
253 5 24 24 18
254 6 25 25 22
255 7 4 4 7
256 8 0 2 3 I2C: SDA0
257 9 1 3 5 I2C: SCL0
25810 8 8 24 SPI: CE0
25911 7 7 26 SPI: CE1
26012 10 10 19 SPI: MOSI
26113 9 9 21 SPI: MISO
26214 11 11 23 SPI: SCLK
26315 14 14 8 TxD
26416 15 16 10 RxD
Gordon Henderson86a5c682012-10-02 14:32:12 +010026517 - 28
26618 - 29
26719 - 30
26820 - 31
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100269.TE
270
Gordon Henderson13bbba72013-01-14 11:31:56 +0000271Note that "r1" and "r2" above refers to the board revision. Normally
272wiringPi detects the correct board revision with use for it's own
273numbering scheme, but if you are using a Revision 2 board with some
274of the pins which change numbers between revisions you will need
275to alter your software.
276
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100277.SH FILES
278
279.TP 2.2i
280.I gpio
281executable
282
283.SH EXAMPLES
284.TP 2.2i
285gpio mode 4 output # Set pin 4 to output
286.PP
287gpio -g mode 23 output # Set GPIO pin 23 to output (same as WiringPi pin 4)
288.PP
289gpio mode 1 pwm # Set pin 1 to PWM mode
290.PP
291gpio pwm 1 512 # Set pin 1 to PWM value 512 - half brightness
292.PP
293gpio export 17 out # Set GPIO Pin 17 to output
294.PP
295gpio export 0 in # Set GPIO Pin 0 (SDA0) to input.
296.PP
297gpio -g read 0 # Read GPIO Pin 0 (SDA0)
298
299.SH "NOTES"
300
301When using the \fIexport\fR, \fIedge\fR or \fIunexport\fR commands, the
302pin numbers are \fBalways\fR native BCM_GPIO numbers and never wiringPi
303pin numbers.
304
305.SH "SEE ALSO"
306
307.LP
308WiringPi's home page
309.IP
Gordon Hendersonda384432013-05-13 19:43:26 +0100310http://wiringpi.com/
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100311
312.SH AUTHOR
313
314Gordon Henderson
315
316.SH "REPORTING BUGS"
317
Gordon Henderson183c5a62012-10-21 15:25:16 +0100318Please report bugs to <projects@drogon.net>
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100319
320.SH COPYRIGHT
321
Gordon Hendersonda384432013-05-13 19:43:26 +0100322Copyright (c) 2012-2013 Gordon Henderson
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100323This is free software; see the source for copying conditions. There is NO
324warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Gordon Henderson183c5a62012-10-21 15:25:16 +0100325
326.SH TRADEMARKS AND ACKNOWLEDGEMENTS
327
Gordon Hendersone8f62582013-01-28 13:00:47 +0000328Raspberry Pi is a trademark of the Raspberry Pi Foundation. See
329http://raspberrypi.org/ for full details.