SPIDriver is an easy-to-use, open source tool for controlling SPI devices over USB. It works with Windows, Mac, and Linux, and has a built-in color screen that shows a live “dashboard” of all the SPI activity.

The SPIDriver User Guide has complete information on the hardware:


System Requirements

Because it is a pure Python module, spidriver can run on any system supported by pyserial. This includes:

  • Windows 7 or 10

  • Mac OS

  • Linux, including all Ubuntu distributions

Both Python 2.7 and 3.x are supported.


The spidriver package can be installed from PyPI using pip:

$ pip install spidriver

Quick start

To connect to an SPI flash and read its JEDEC id:

>>> from spidriver import SPIDriver
>>> s = SPIDriver("/dev/ttyUSB0") # change for your port
>>> s.sel() # start command
>>> s.write([0x9f]) # command 9F is READ JEDEC ID
>>> list(s.read(3)) # read next 3 bytes
[239, 64, 24]
>>> s.unsel() # end command

The User Guide at https://spidriver.com/spidriver.pdf has more examples, as does the SPIDriver repo on github.

Module Contents

class spidriver.SPIDriver(port='/dev/ttyUSB0')

SPIDriver interface.


port (str) – The USB port to connect to

After connection, the following object variables reflect the current values of the SPIDriver. They are updated by calling getstatus().

  • product – product code e.g. ‘spidriver1’ or ‘spidriver2’

  • serial – serial string of SPIDriver

  • uptime – time since SPIDriver boot, in seconds

  • voltage – USB voltage, in V

  • current – current used by attached device, in mA

  • temp – temperature, in degrees C

  • cs – state of CS pin

  • a – state of A pin

  • b – state of B pin

  • ccitt_crc – CCITT-16 CRC of all transmitted and received bytes


Detach all signals, leaving them all to float.


Select the SPI device by asserting CS


Unselect the SPI device by deasserting CS


Read l bytes from the SPI device


l (int) – number of bytes to read

Return bytes

received bytes, length l


Write bb to the SPI device


bb (bytes) – bytes to write to the SPI device


Write bytes to the SPI device, return the read bytes


bb (bytes) – bytes to write to the SPI device

Return bytes

received bytes, same length as bb


Set the A signal to 0 or 1


Set the B signal to 0 or 1


Set the SPI mode to 0,1,2 or 3


Update all status variables