Skip to main content

The PiFace common functions module.

Project description


Common functions for interacting with PiFace products.



You can also find the documentation installed at:



Make sure you are using the lastest version of Raspbian:

$ sudo apt-get update $ sudo apt-get upgrade

Install pifacecommon (for Python 3 and 2) with the following command:

$ sudo apt-get install python{,3}-pifacecommon

You will also need to set up automatic loading of the SPI kernel module which can be done with the lastest version of raspi-config. Run:

$ sudo raspi-config

Then navigate to Advanced Options, SPI and select yes. Change Log ==========


  • Added daemon flag for PortEventListener.


  • Fixed bug with new Device Tree (Pi2) by changing GPIO_INTERRUPT_DEVICE from /sys/devices/virtual/gpio/ to /sys/class/gpio/ and changing udev rule.


  • Support varying listeners.


  • Added deregister to interrupts.


  • Fixed SPI file descriptor bug when closing.

  • Fixed issue #14.


  • Ignored “Interrupted system call” error in watch_port_events.

  • Rewrite main functions into chip specific (MCP23S17) class.

  • GPIOInterruptDevice class replacing core GPIO enable/disable functions.

  • SPIDevice class replacing spisend function. Can now add in spi_callback function which is called before each SPI write.

  • Updated installation instructions.


  • Added IODIR_FALLING_EDGE and IODIR_RISING_EDGE to replace IODIR_ON and IODIR_OFF respectively. IODIR_ON and IODIR_OFF can still be used in the same way as before. Falling/Rising Edge are for physical level 1/0, On/Off are for logical (programmer) level 1/0.

    Physical Level (pifacecommon.read_bit):


    Logical Level (pifacedigitalio.PiFaceDigital().input_pins[0].value):

    IODIR_ON: 0 -> 1 IODIR_OFF: 1 -> 0

    Remember that PiFace Digital Inputs are active low:
    >>> pifacecommon.read_bit(0, INPUT_PORT)
    >>> 1  # physical
    >>> pifacedigitalio.PiFaceDigital().input_pins[0].value
    >>> 0  # logical
  • Fixed Debian package bug where setup script would not be executed.


  • Added debouncing with adjustable settle time.


  • Added timeout class (fixing Issue #2) in interrupts.

  • Added support for interrupts on multiple boards.

  • Interrupts must be enabled/disabled manually. Automatic handling of this broke interrupts from multiple boards.


  • Moved version number to pifacecommon/ so that it can be read from and bin/

  • Updated SPI help link to point to the new docs.

  • Moved installation scripts into single file for Debian packaging.


  • Added version number in source.

  • Added uninstall script.


  • Improved interrupts (different API, check the docs).

  • Reduced scope of global variables from package to individual modules. (Hiding namespaces from the end user is an attempt to simplify the interface for children. However this package is not intended for that audience and so messing with the namespaces only confuses things.)



  • Started using a change log!

  • Removed errors submodule, custom exceptions now go in their respective modules. This might change back in a future release.

  • Fixed DigitalInput value bugs

  • Fixed SPI transfer bug.. Function spisend now takes bytes as an argument instead of a list. This makes more sense, since it returns bytes.

  • Removed, everything is now handled by

  • Updated docs.

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

pifacecommon-4.2.2.tar.gz (14.0 kB view hashes)

Uploaded Source

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