Skip to main content

This is an unofficial port of Gordon’s WiringPi library. Please do not email Gordon if you have issues, he will not be able to help.

For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG

WiringPi for Python

WiringPi: An implementation of most of the Arduino Wiring functions for the Raspberry Pi.

WiringPi implements new functions for managing IO expanders.

Quick Install

PyPI version badge

The library is packaged on PyPI and can be installed with pip:

pip install wiringpi

Usage

import wiringpi

# One of the following MUST be called before using IO functions:
wiringpi.wiringPiSetup()      # For sequential pin numbering
# OR
wiringpi.wiringPiSetupSys()   # For /sys/class/gpio with GPIO pin numbering
# OR
wiringpi.wiringPiSetupGpio()  # For GPIO pin numbering

General IO:

wiringpi.pinMode(6, 1)       # Set pin 6 to 1 ( OUTPUT )
wiringpi.digitalWrite(6, 1)  # Write 1 ( HIGH ) to pin 6
wiringpi.digitalRead(6)      # Read pin 6

Setting up a peripheral:

WiringPi supports expanding your range of available “pins” by setting up a port expander. The implementation details of your port expander will be handled transparently, and you can write to the additional pins (starting from PIN_OFFSET >= 64) as if they were normal pins on the Pi.

wiringpi.mcp23017Setup(PIN_OFFSET, I2C_ADDR)

This example was tested on a quick2wire board with one digital IO expansion board connected via I2C:

wiringpi.mcp23017Setup(65, 0x20)
wiringpi.pinMode(65, 1)
wiringpi.digitalWrite(65, 1)

Soft Tone:

Hook a speaker up to your Pi and generate music with softTone. Also useful for generating frequencies for other uses such as modulating A/C.

wiringpi.softToneCreate(PIN)
wiringpi.softToneWrite(PIN, FREQUENCY)

Bit shifting:

wiringpi.shiftOut(1, 2, 0, 123)  # Shift out 123 (b1110110, byte 0-255) to data pin 1, clock pin 2

Serial:

serial = wiringpi.serialOpen('/dev/ttyAMA0', 9600)  # Requires device/baud and returns an ID
wiringpi.serialPuts(serial, "hello")
wiringpi.serialClose(serial)  # Pass in ID

SPI:

The wiringPiSPIDataRW() function needs to be passed a bytes object in Python 3. In Python 2, it takes a string. The following should work in either Python 2 or 3:

wiringpi.wiringPiSPISetup(channel, speed)
buf = bytes([your data here])
retlen, retdata = wiringpi.wiringPiSPIDataRW(0, buf)

Now, retlen will contain the number of bytes received/read by the call. retdata will contain the data itself, and in Python 3, buf will have been modified to contain it as well (that won’t happen in Python 2, because then buf is a string, and strings are immutable).

Full details of the API at: http://www.wiringpi.com

Manual Build

Get/setup repo

git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
cd WiringPi-Python

Don’t forget the --recursive; it is required to also pull in the WiringPi C code from its own repository.

Prerequisites

To rebuild the bindings you must first have installed swig, python-dev, and python-setuptools (or their python3- equivalents). WiringPi should also be installed system-wide for access to the gpio tool.

sudo apt-get install python-dev python-setuptools swig wiringpi

Build & install with

sudo python setup.py install

Or Python 3:

sudo python3 setup.py install

Release files for wiringpi 2.60.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wiringpi 2.60.1
File Size Uploaded
wiringpi-2.60.1.tar.gz 130.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for wiringpi 2.60.1
File Interpreter ABI Platform
wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl CPython 3.7 CPython 3.7 pymalloc linux armv7l Details
wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl CPython 3.6 CPython 3.6 pymalloc linux armv7l Details
wiringpi-2.60.1-cp35-cp35m-linux_armv7l.whl CPython 3.5 CPython 3.5 pymalloc linux armv7l Details

Total release size: 966.7 kB

Release files / wiringpi-2.60.1.tar.gz

Download URL wiringpi-2.60.1.tar.gz
Size 130.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b0c65d5d7c65d0bbef25c56d90237ca4098b1edabc528fb48dc6b61d62cd4b7d
BLAKE2b-256 checksum
How to use checksums
d39c08eb589c718cda9f2168649f1952aa9cb3711dc93d765991a6741cf6a8b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

Release files / wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl

Download URL wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl
Size 285.5 kB
Tags CPython 3.7 CPython 3.7 pymalloc linux armv7l
SHA-256 checksum
How to use checksums
7a54e5a879b828eb113228b835a5dbf13695aae06c206ec11940641346fabc24
BLAKE2b-256 checksum
How to use checksums
ac6d29381c226c296df5896c1e6855acbd59d40fa8b7ee6e82b289cb9dd940ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

Release files / wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl

Download URL wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl
Size 284.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc linux armv7l
SHA-256 checksum
How to use checksums
daf0570b5928f8824c366afedfacd78f2948577b527b43c5e525265dd5e7ad60
BLAKE2b-256 checksum
How to use checksums
73155853dd8775985ab1c43baee0492d628125765eefaa49b1840fae6266c914
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

Release files / wiringpi-2.60.1-cp35-cp35m-linux_armv7l.whl

Download URL wiringpi-2.60.1-cp35-cp35m-linux_armv7l.whl
Size 265.6 kB
Tags CPython 3.5 CPython 3.5 pymalloc linux armv7l
SHA-256 checksum
How to use checksums
267120d890fd67ef3e630e52e8b671f9bc1a52ef227fcb5fff44cfe124ec4a4e
BLAKE2b-256 checksum
How to use checksums
235532c3abb6516bc8a2b0624063df3a800b3565a52adf46dd8e6740c99854b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

Release history Release notifications | RSS feed

This release

2.60.1 This release

4 release files

2.44.5

4 release files

2.44.4

4 release files

2.44.3

4 release files

2.44.1

1 release file

2.44.0

1 release file

2.32.1

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page