Skip to main content

A module to control Raspberry Pi GPIO channels

Project description

This package provides a Python module to control the GPIO on a Raspberry Pi.

Note that this module is unsuitable for real-time or timing critical applications. This is because you can not predict when Python will be busy garbage collecting. It also runs under the Linux kernel which is not suitable for real time applications - it is multitasking O/S and another process may be given priority over the CPU, causing jitter in your program. If you are after true real-time performance and predictability, buy yourself an Arduino http://www.arduino.cc !

Note that the current release does not support SPI, I2C, hardware PWM or serial functionality on the RPi yet. This is planned for the near future - watch this space! One-wire functionality is also planned.

Although hardware PWM is not available yet, software PWM is available to use on all channels.

For examples and documentation, visit http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/

Change Log

0.7.1

  • Better RPi board + peri_addr detection (issue 190 / 191)

  • Fix PyEval_InitThreads deprecation warning for Python 3.9 (issue 188)

  • Fix build using GCC 10 (issue 187)

  • Fix docstrings to not include licence

  • Remove Debian/Raspbian stretch packaging support

  • Use setuptools instead of distutils

  • Added detection of Zero 2 W

  • Tested and working with Python 2.7, 3.7, 3.8, 3.9, 3.10

0.7.0

  • Updated RPI_INFO to include RPi 4B

  • Fixed pull up/down for Pi4 (issue 168)

  • Fix spelling mistake in docstrings

  • Tested and working on Raspbian Buster + Python 3.8.0b2

  • Fix board detection for aarch64 (Issues 161 / 165)

  • Fix checking mmap return value in c_gpio.c (issue 166)

0.6.5

  • Fix exception on re-export of /sys/class/gpio/gpioNN

0.6.4

  • Event cleanup bug (issue 145)

  • Raise exception for duplicate PWM objects (issue 54 - Thijs Schreijer <thijs@thijsschreijer.nl>)

  • Fix build warnings (Issue 146 - Dominik George)

  • test.py runs unchanged for both python 2+3

  • Soft PWM stops running fix (Issues 94, 111, 154)

  • Soft PWM segfault fix (Luke Allen pull request)

0.6.3

  • Fix code so it builds under PyPy (Gasper Zejn)

  • os.system breaks event detection - Matt Kimball (issue 127)

0.6.2

  • Rewrote Debian packaging mechanism

  • RPI_INFO reports Pi 3

  • Changed module layout - moved C components to RPi._GPIO

0.6.1

  • Update RPI_INFO to detect more board types

  • Issue 118 - add_event_detect sometimes gives runtime error with unpriv user

  • Issue 120 - setmode() remembers invalid mode

0.6.0a3

  • Now uses /dev/gpiomem if available to avoid being run as root

  • Fix warnings with pull up/down on pins 3/5

  • Correct base address on Pi 2 when devicetree is disabled

  • caddr_t error on compile (Issue 109)

  • Error on invalid parameters to setup() (issue 93)

  • Add timeout parameter to wait_for_edge() (issue 91)

0.5.11

  • Fix - pins > 26 missing when using BOARD mode

  • Add getmode()

  • Raise exception when a mix of modes is used

  • GPIO.cleanaup() unsets the current pin mode

0.5.10

  • Issue 95 - support RPi 2 boards

  • Introduce RPI_INFO

  • Deprecate RPI_REVISION

  • Issue 97 - fixed docstring for setup()

0.5.9

  • Issue 87 - warn about pull up/down on i2c pins

  • Issue 86/75 - wait_for_edge() bugfix

  • Issue 84 - recognise RPi properly when using a custom kernel

  • Issue 90 - cleanup() on a list/tuple of channels

0.5.8

  • Allow lists/tuples of channels in GPIO.setup()

  • GPIO.output() now allows lists/tuples of values

  • GPIO.wait_for_edge() bug fixes (issue 78)

0.5.7

  • Issue 67 - speed up repeated calls to GPIO.wait_for_event()

  • Added bouncetime keyword to GPIO.wait_for_event()

  • Added extra edge/interrupt unit tests

  • GPIO.wait_for_event() can now be mixed with GPIO.add_event_detect()

  • Improved cleanups of events

  • Issue 69 resolved

0.5.6

  • Issue 68 - support for RPi Model B+

  • Fix gpio_function()

0.5.5

  • Issue 52 - ‘unallocate’ a channel

  • Issue 35 - use switchbounce with GPIO.event_detected()

  • Refactored events code

  • Rewrote tests to use unittest mechanism and new test board with loopbacks

  • Fixed adding events after a GPIO.cleanup()

  • Issue 64 - misleading /dev/mem permissions error

  • Issue 59 - name collision with PWM constant and class

0.5.4

  • Changed release status (from alpha to full release)

  • Warn when GPIO.cleanup() used with nothing to clean up (issue 44)

  • Avoid collisions in constants (e.g. HIGH / RISING / PUD_DOWN)

  • Accept BOARD numbers in gpio_function (issue 34)

  • More return values for gpio_function (INPUT, OUTPUT, SPI, I2C, PWM, SERIAL, UNKNOWN)

  • Tidy up docstrings

  • Fix /dev/mem access error with gpio_function

0.5.3a

  • Allow pydoc for non-root users (issue 27)

  • Fix add_event_detect error when run as daemon (issue 32)

  • Simplified exception types

  • Changed from distribute to pip

0.5.2a

  • Added software PWM (experimental)

  • Added switch bounce handling to event callbacks

  • Added channel number parameter to event callbacks (issue 31)

  • Internal refactoring and code tidy up

0.5.1a

  • Fixed callbacks for multiple GPIOs (issue 28)

0.5.0a

  • Added new edge detection events (interrupt handling) - Added add_event_detect() - Added remove_event_detect() - Added add_event_callback() - Added wait_for_edge()

  • Removed old experimental event functions - Removed set_rising_event() - Removed set_falling_event() - Removed set_high_event() - Removed set_low_event()

  • Changed event_detected() for new edge detection functionality

  • input() now returns 0/LOW == False or 1/HIGH == True (integers) instead of False or True (booleans).

  • Fix error on repeated import (issue 3)

  • Change SetupException to a RuntimeError so it can be caught on import (issue 25, Chris Hager <chris@linuxuser.at>)

  • Improved docstrings of functions

0.4.2a

  • Fix for installing on Arch Linux (Python 3.3) (issue 20)

  • Initial value when setting a channel as an output (issue 19)

0.4.1a

  • Added VERSION

  • Permit input() of channels set as outputs (Eric Ptak <trouch@trouch.com>)

0.4.0a

  • Added support for Revision 2 boards

  • Added RPI_REVISION

  • Added cleanup() function and removed automatic reset functionality on program exit

  • Added get_function() to read existing GPIO channel functionality (suggestion from Eric Ptak <trouch@trouch.com>)

  • Added set_rising_event()

  • Added set_falling_event()

  • Added set_high_event()

  • Added set_low_event()

  • Added event_detected()

  • Added test/test.py

  • Converted debian to armhf

  • Fixed C function short_wait() (thanks to Thibault Porteboeuf <thibaultporteboeuf@gmail.com>)

0.3.1a

  • Fixed critical bug with swapped high/low state on outputs

  • Added pull-up / pull-down setup functionality for inputs

0.3.0a

  • Rewritten as a C extension

  • Now uses /dev/mem and SoC registers instead of /sys/class/gpio

  • Faster!

  • Make call to GPIO.setmode() mandatory

  • Added GPIO.HIGH and GPIO.LOW constants

0.2.0

  • Changed status from alpha to beta

  • Added setmode() to be able to use BCM GPIO 00.nn channel numbers

  • Renamed InvalidPinException to InvalidChannelException

0.1.0

  • Fixed direction bug

  • Added MANIFEST.in (to include missing file)

  • Changed GPIO channel number to pin number

  • Tested and working!

0.0.3a

  • Added GPIO table

  • Refactored

  • Fixed a few critical bugs

  • Still completely untested!

0.0.2a

  • Internal refactoring. Still completely untested!

0.0.1a

  • First version. Completely untested until I can get hold of a Raspberry Pi!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

RPi.GPIO-0.7.1.tar.gz (29.1 kB view details)

Uploaded Source

Built Distributions

RPi.GPIO-0.7.1-py3.7-linux-armv6l.egg (71.1 kB view details)

Uploaded Source

RPi.GPIO-0.7.1-py2.7-linux-armv6l.egg (67.9 kB view details)

Uploaded Source

RPi.GPIO-0.7.1-cp310-cp310-linux_armv6l.whl (69.8 kB view details)

Uploaded CPython 3.10

RPi.GPIO-0.7.1-cp39-cp39-linux_armv6l.whl (69.3 kB view details)

Uploaded CPython 3.9

RPi.GPIO-0.7.1-cp38-cp38-linux_armv6l.whl (68.4 kB view details)

Uploaded CPython 3.8

RPi.GPIO-0.7.1-cp37-cp37m-linux_armv6l.whl (70.4 kB view details)

Uploaded CPython 3.7m

RPi.GPIO-0.7.1-cp27-cp27mu-linux_armv6l.whl (67.4 kB view details)

Uploaded CPython 2.7mu

File details

Details for the file RPi.GPIO-0.7.1.tar.gz.

File metadata

  • Download URL: RPi.GPIO-0.7.1.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1.tar.gz
Algorithm Hash digest
SHA256 cd61c4b03c37b62bba4a5acfea9862749c33c618e0295e7e90aa4713fb373b70
MD5 22704930a4e674a3d35342bde6d69fe5
BLAKE2b-256 c40f10b524a12b3445af1c607c27b2f5ed122ef55756e29942900e5c950735f2

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-py3.7-linux-armv6l.egg.

File metadata

  • Download URL: RPi.GPIO-0.7.1-py3.7-linux-armv6l.egg
  • Upload date:
  • Size: 71.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-py3.7-linux-armv6l.egg
Algorithm Hash digest
SHA256 96ea7e5bf6bf592828487bfa7d3d1d0e432d5d1682e9e33b4dab398914628fcd
MD5 c3556468d1f788235e07f69ed48a09fd
BLAKE2b-256 35f2451fe8806646f0536fe643c9f68f549867cbb9f68eb8d87f6a959c3df638

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-py2.7-linux-armv6l.egg.

File metadata

  • Download URL: RPi.GPIO-0.7.1-py2.7-linux-armv6l.egg
  • Upload date:
  • Size: 67.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-py2.7-linux-armv6l.egg
Algorithm Hash digest
SHA256 26b2ade4bb353bbe5417a64e40b45cdf00a82f27c2d320c0dd46c59751959d77
MD5 0b9351d48657f36e04ce6334ab262ce0
BLAKE2b-256 13a03250f4a304f499f918a76e983a324756f1f4ba9093b54f5e1149b8665343

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-cp310-cp310-linux_armv6l.whl.

File metadata

  • Download URL: RPi.GPIO-0.7.1-cp310-cp310-linux_armv6l.whl
  • Upload date:
  • Size: 69.8 kB
  • Tags: CPython 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-cp310-cp310-linux_armv6l.whl
Algorithm Hash digest
SHA256 57b6c044ef5375a78c8dda27cdfadf329e76aa6943cd6cffbbbd345a9adf9ca5
MD5 64d20afed4b9c47726c89fdf762827c5
BLAKE2b-256 4048e5698d5589d63907593c2909b8e4f0e7b559af19a73de003b1dabb5332c7

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-cp39-cp39-linux_armv6l.whl.

File metadata

  • Download URL: RPi.GPIO-0.7.1-cp39-cp39-linux_armv6l.whl
  • Upload date:
  • Size: 69.3 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-cp39-cp39-linux_armv6l.whl
Algorithm Hash digest
SHA256 15311d3b063b71dee738cd26570effc9985a952454d162937c34e08c0fc99902
MD5 37ade0fd91db1bb6e9694cde7bf3cb65
BLAKE2b-256 b7f419ac7172e60983148970abcd96a5c5d099febf538f35e9f569b3c1a70543

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-cp38-cp38-linux_armv6l.whl.

File metadata

  • Download URL: RPi.GPIO-0.7.1-cp38-cp38-linux_armv6l.whl
  • Upload date:
  • Size: 68.4 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-cp38-cp38-linux_armv6l.whl
Algorithm Hash digest
SHA256 29226823da8b5ccb9001d795a944f2e00924eeae583490f0bc7317581172c624
MD5 5f2fa83c71cec30404e78fade9c4f5bd
BLAKE2b-256 b44e1ff704c41ae2dd5d9e0481fa41781ec2f62c80159b02769b2a69215b5600

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-cp37-cp37m-linux_armv6l.whl.

File metadata

  • Download URL: RPi.GPIO-0.7.1-cp37-cp37m-linux_armv6l.whl
  • Upload date:
  • Size: 70.4 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-cp37-cp37m-linux_armv6l.whl
Algorithm Hash digest
SHA256 77afb817b81331ce3049a4b8f94a85e41b7c404d8e56b61ac0f1eb75c3120868
MD5 bbcdb5dcbb4d64698ef23588bdbfbc4f
BLAKE2b-256 0cc75f7aa692960e0eb187fa8206ab1f219757a259570c634fe15e2ca7d95aa2

See more details on using hashes here.

File details

Details for the file RPi.GPIO-0.7.1-cp27-cp27mu-linux_armv6l.whl.

File metadata

  • Download URL: RPi.GPIO-0.7.1-cp27-cp27mu-linux_armv6l.whl
  • Upload date:
  • Size: 67.4 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.1 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for RPi.GPIO-0.7.1-cp27-cp27mu-linux_armv6l.whl
Algorithm Hash digest
SHA256 b86b66dc02faa5461b443a1e1f0c1d209d64ab5229696f32fb3b0215e0600c8c
MD5 a01a8d263e73d344932f7094a54a7a1e
BLAKE2b-256 08aba9e5fea78a3e3c536a28b32f00b44a3ec59b7cb2de8640303e6cd355a452

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page