blob: e5fe181e7d94a2e2a1167d74c80fb4434ce1f3a6 [file] [log] [blame]
Gordon Hendersonf6c40cb2015-09-24 22:35:31 +01001.TH GPIO 1 "September 2015" wiringPi "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 ]
Gordon Hendersondf453882014-07-17 22:23:57 +010016.B mode/read/write/aread/awrite/pwm/pwmTone ...
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 Hendersondf453882014-07-17 22:23:57 +010020.B read/write/toggle/wb
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010021.B ...
22.PP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010023.B gpio
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +000024.B readall
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
Gordon Hendersondf453882014-07-17 22:23:57 +010042.B usbp
43high | low
44.PP
45.B gpio
Gordon Hendersonf99ffed2012-08-19 15:12:45 +010046.B pwm-bal/pwm-ms
47.PP
48.B gpio
49.B pwmr
50range
51.PP
52.B gpio
Gordon Hendersone8f62582013-01-28 13:00:47 +000053.B load \ i2c/spi ...
Gordon Henderson99095e32012-08-27 20:56:14 +010054.PP
55.B gpio
56.B gbr
57channel
58.PP
59.B gpio
60.B gbw
61channel value
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010062
63.SH DESCRIPTION
64
65.B GPIO
Gordon Henderson86a5c682012-10-02 14:32:12 +010066is a swiss army knife of a command line tool to allow the user easy
Gordon Henderson99095e32012-08-27 20:56:14 +010067access to the GPIO pins on the Raspberry Pi and the SPI A/D and D/A
Gordon Henderson86a5c682012-10-02 14:32:12 +010068converters on the Gertboard. It's designed for simple testing and
Gordon Henderson99095e32012-08-27 20:56:14 +010069diagnostic purposes, but can be used in shell scripts for general if
70somewhat slow control of the GPIO pins.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010071
Gordon Henderson13bbba72013-01-14 11:31:56 +000072It can also control the IO's on the PiFace IO board and load the SPI and I2C
73kernel modules if required.
74
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010075Additionally, it can be used to set the exports in the \fI/sys/class/gpio\fR
76system directory to allow subsequent programs to use the \fR/sys/class/gpio\fR
77interface without needing to be run as root.
78
79.SH OPTIONS
80
81.TP
82.B \-v
Gordon Henderson183c5a62012-10-21 15:25:16 +010083Output the current version including the board revision of the Raspberry Pi.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010084
85.TP
86.B \-g
87Use the BCM_GPIO pins numbers rather than wiringPi pin numbers.
Gordon Hendersonda384432013-05-13 19:43:26 +010088\fINote:\fR The BCM_GPIO pin numbers are always used with the
Gordon Henderson13bbba72013-01-14 11:31:56 +000089export and edge commands.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +010090
91.TP
Gordon Hendersonda384432013-05-13 19:43:26 +010092.B \-1
93Use the physical pin numbers rather than wiringPi pin numbers.
94\fINote:\fR that this applies to the P1 connector only. It is not possible to
95use pins on the Revision 2 P5 connector this way, and as with \-g the
96BCM_GPIO pin numbers are always used with the export and edge commands.
97
98.TP
99.B \-x extension
100This causes the named extension to be initialised. Extensions
101comprise of a name (e.g. mcp23017) followed by a colon, then the
102pin-base, then more optional parameters depending on the extension type.
103See the web page on http://wiringpi.com/the-gpio-utility/
104
105.TP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100106.B \-p
Gordon Hendersonda384432013-05-13 19:43:26 +0100107Use the PiFace interface board and its corresponding pin numbers. The PiFace
108will always appear at pin number 200 in the gpio command. You can assign any
109pin numbers you like in your own programs though.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100110
111.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100112.B read <pin>
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100113Read the digital value of the given pin and print 0 or 1 to represent the
114respective logic levels.
115
116.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100117.B write <pin> <value>
Gordon Henderson25e4ec52012-12-06 21:49:41 +0000118Write the given value (0 or 1) to the pin. You need to set the pin
119to output mode first.
120
121.TP
Gordon Henderson05e2f672014-05-20 11:43:07 +0100122.B aread <pin>
123Read the analog value of the given pin. This needs to be uses in
124conjunction with a -x flag to add in an extension that handles analog
125inputs. respective logic levels.
126
127e.g. gpio -x mcp3002:200:0 aread 200
128
129will read the first analog input on an mcp3002 SPI ADC chip.
130
131.TP
132.B awrite <pin> <value>
133Write the analog value to the given pin. This needs to be used in
134conjunction with a -x flag to add in an extension that handles analog
135inputs. respective logic levels.
136
137e.g. gpio -x mcp4802:200:0 awrite 200 128
138
139will write the value 128 to the first DAC port on an mcp4802 chip on
140the Pi's SPI bus 0.
141
142
143.TP
Gordon Henderson25e4ec52012-12-06 21:49:41 +0000144.B wb <value>
145Write the given byte to the 8 main GPIO pins. You can prefix it with 0x
146to specify a hexadecimal number. You need to set pins to output mode
147first.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100148
149.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100150.B readall
151Output a table of all GPIO pins values. The values represent the actual values read
152if the pin is in input mode, or the last value written if the pin is in output
153mode.
154
Gordon Henderson348bc732013-05-25 13:02:02 +0100155The readall command is usable with an extension module (via the -x parameter),
156but it's unable to determine pin modes or states, so will perform both a
157digital and analog read on each pin in-turn.
158
Gordon Henderson183c5a62012-10-21 15:25:16 +0100159.TP
160.B pwm <pin> <value>
Gordon Henderson56c77b52013-02-01 20:19:22 +0000161Write a PWM value (0-1023) to the given pin. The pin needs to be put
162into PWM mode first.
163
164.TP
165.B clock <pin> <frequency>
166Set the output frequency on the given pin. The pin needs to be put into
167clock mode first.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100168
169.TP
Gordon Henderson183c5a62012-10-21 15:25:16 +0100170.B mode <pin> <mode>
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100171Set a pin into \fIinput\fR, \fIoutput\fR or \fIpwm\fR mode. Can also
172use the literals \fIup\fR, \fIdown\fR or \fItri\fR to set the internal
173pull-up, pull-down or tristate (off) controls.
174
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000175The ALT modes can also be set using \fIalt0\fR, \fIalt1\fR, ... \fIalt5\fR.
176
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100177.TP
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100178.B unexportall
179Un-Export all the GPIO pins in the /sys/class/gpio directory.
180
181.TP
182.B exports
183Print a list (if any) of all the exported GPIO pins and their current values.
184
185.TP
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100186.B export
187Export a GPIO pin in the \fI/sys/class/gpio\fR directory. Use like the
Gordon Henderson72b2af22015-02-03 14:53:32 +0000188mode command above however only \fIin\fR, \fIout\fR, \fIhigh\fR and
189\fRlow\fR are supported at this time. Note that the pin number is the
190\fBBCM_GPIO\fR number and not the wiringPi number. The \fIhigh\fR and
191\fIlow\fR commands pre-set the output value at the same time as the
192export to output mode.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100193
194Once a GPIO pin has been exported, the \fBgpio\fR program changes the
195ownership of the \fI/sys/class/gpio/gpioX/value\fR and if present in
196later kernels, the \fI/sys/class/gpio/gpioX/edge\fR pseudo files to
197that of the user running the \fBgpio\fR program. This means that you
198can have a small script of gpio exports to setup the gpio pins as your
199program requires without the need to run anything as root, or with the
200sudo command.
201
202.TP
203.B edge
204This exports a GPIO pin in the \fI/sys/class/gpio\fR directory, set
205the direction to input and set the edge interrupt method to \fInone\fR,
206\fIrising\fR, \fIfalling\fR or \fIboth\fR. Use like the export command
207above and note that \fBBCM_GPIO\fR pin number is used not not wiringPi pin
208numbering.
209
Gordon Henderson86a5c682012-10-02 14:32:12 +0100210Like the export commands above, ownership is set to that of the
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100211calling user, allowing subsequent access from user programs without
212requiring root/sudo.
213
214.TP
215.B unexport
216Un-Export a GPIO pin in the /sys/class/gpio directory.
217
218.TP
Gordon Hendersonda384432013-05-13 19:43:26 +0100219.B wfi <pin> <mode>
220This set the given pin to the supplied interrupt mode: rising, falling
221or both then waits for the interrupt to happen. It's a non-busy wait,
222so does not consume and CPU while it's waiting.
223
224.TP
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100225.B drive
226group value
227
228Change the pad driver value for the given pad group to the supplied drive
229value. Group is 0, 1 or 2 and value is 0-7. Do not use unless you are
230absolutely sure you know what you're doing.
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100231
232.TP
Gordon Hendersondf453882014-07-17 22:23:57 +0100233.B usbp
234high | low
235
236Change the USB current limiter to high (1.2 amps) or low (the default, 600mA)
237This is only applicable to the model B+
238
239.TP
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100240.B pwm-bal/pwm-ms
241Change the PWM mode to balanced (the default) or mark:space ratio (traditional)
242
243.TP
244.B pwmr
245Change the PWM range register. The default is 1024.
246
247.TP
Gordon Hendersone8f62582013-01-28 13:00:47 +0000248.B load i2c [baudrate]
249This loads the i2c or drivers into the kernel and changes the permissions
250on the associated /dev/ entries so that the current user has access to
Gordon Henderson348bc732013-05-25 13:02:02 +0100251them. Optionally it will set the I2C baudrate to that supplied in Kb/sec
252(or as close as the Pi can manage) The default speed is 100Kb/sec.
Gordon Hendersone8f62582013-01-28 13:00:47 +0000253
Gordon Hendersonf6c40cb2015-09-24 22:35:31 +0100254Note: On recent kernels with the device tree enabled you should use the
255raspi-config program to load/unload the I2C device at boot time.
256(or disable the device tree to continue to use this method)
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000257
Gordon Hendersone8f62582013-01-28 13:00:47 +0000258.TP
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000259.B load spi
Gordon Henderson98bcb202013-02-07 21:53:49 +0000260This loads the spi drivers into the kernel and changes the permissions
Gordon Hendersone8f62582013-01-28 13:00:47 +0000261on the associated /dev/ entries so that the current user has access to
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000262them. It used to have the ability to change the buffer size from the
Gordon Hendersond7950662015-09-30 16:11:42 +0100263default of 4096 bytes to an arbitrary value, however for some time the
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000264Pi Foundation have compiled the SPI device driver into the kernel and
265this has fixed the buffer size. The way to change it now is to edit
266the /boot/cmdline.txt file and add on spdev.bufsiz=8192 to set it to
267e.g. 8192 bytes then reboot.
268
Gordon Hendersonf6c40cb2015-09-24 22:35:31 +0100269Note: On recent kernels with the device tree enabled you should use the
270raspi-config program to load/unload the SPI device at boot time.
271(or disable the device tree to continue to use this method)
Gordon Hendersonf99ffed2012-08-19 15:12:45 +0100272
Gordon Henderson99095e32012-08-27 20:56:14 +0100273.TP
274.B gbr
275channel
276
Gordon Henderson86a5c682012-10-02 14:32:12 +0100277This reads the analog to digital converter on the Gertboard on the given
Gordon Henderson99095e32012-08-27 20:56:14 +0100278channel. The board jumpers need to be in-place to do this operation.
279
280.TP
281.B gbw
282channel value
283
284This writes the supplied value to the output channel on the Gertboards
Gordon Henderson86a5c682012-10-02 14:32:12 +0100285SPI digital to analogue converter.
Gordon Henderson99095e32012-08-27 20:56:14 +0100286The board jumpers need to be in-place to do this operation.
287
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100288
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000289.SH "WiringPi vs. BCM_GPIO Pin numbering vs. Physical pin numbering"
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100290
291.PP
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000292The quickest way to get a list of the pin differences is to run the command
293.TP
294gpio readall
Gordon Henderson13bbba72013-01-14 11:31:56 +0000295
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100296.SH FILES
297
298.TP 2.2i
299.I gpio
300executable
301
302.SH EXAMPLES
303.TP 2.2i
304gpio mode 4 output # Set pin 4 to output
305.PP
306gpio -g mode 23 output # Set GPIO pin 23 to output (same as WiringPi pin 4)
307.PP
308gpio mode 1 pwm # Set pin 1 to PWM mode
309.PP
310gpio pwm 1 512 # Set pin 1 to PWM value 512 - half brightness
311.PP
312gpio export 17 out # Set GPIO Pin 17 to output
313.PP
314gpio export 0 in # Set GPIO Pin 0 (SDA0) to input.
315.PP
316gpio -g read 0 # Read GPIO Pin 0 (SDA0)
317
318.SH "NOTES"
319
320When using the \fIexport\fR, \fIedge\fR or \fIunexport\fR commands, the
321pin numbers are \fBalways\fR native BCM_GPIO numbers and never wiringPi
322pin numbers.
323
Gordon Hendersond7950662015-09-30 16:11:42 +0100324As of kernels 4.1.7, a user-level GPIO access mechanism is available,
325however wiringPi will not use this by default - because at this time
326there appears to be issues when trying to program the PWM or clock output
327hardware. If you can live without PWM or GPIO clocks and you want to use
328the GPIO from a non-root program, then you need to make sure that the
329module \fIbcm2835_gpiomem\fR is loaded at boot time. This should happen
330automatically when you enable the device tree in raspi-config. You may
331also need some additional information in /etc/udev/rules.d/ to change the
332mode and ownership of the /dev/gpiomem file. Finally, you need to set
333the environment variable \fIWIRINGPI_GPIOMEM\fR. This will go-away
334in future releases once the /dev/gpiomem interface is fully operational.
335
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100336.SH "SEE ALSO"
337
338.LP
339WiringPi's home page
340.IP
Gordon Hendersonda384432013-05-13 19:43:26 +0100341http://wiringpi.com/
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100342
343.SH AUTHOR
344
345Gordon Henderson
346
347.SH "REPORTING BUGS"
348
Gordon Henderson183c5a62012-10-21 15:25:16 +0100349Please report bugs to <projects@drogon.net>
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100350
351.SH COPYRIGHT
352
Gordon Hendersoneb1fc2c2015-01-30 18:14:49 +0000353Copyright (c) 2012-2015 Gordon Henderson
Gordon Hendersonbf0ad862012-08-16 15:04:43 +0100354This is free software; see the source for copying conditions. There is NO
355warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Gordon Henderson183c5a62012-10-21 15:25:16 +0100356
357.SH TRADEMARKS AND ACKNOWLEDGEMENTS
358
Gordon Hendersone8f62582013-01-28 13:00:47 +0000359Raspberry Pi is a trademark of the Raspberry Pi Foundation. See
360http://raspberrypi.org/ for full details.