PyFtdi aims at providing a user-space driver for modern FTDI devices, implemented in pure Python language.

Modern FTDI devices include:

  • UART-only bridges

    • FT232R (single port, clock up to 6 MHz, 3Mbps)

    • FT230X (single port, clock up to 48 Mhz, 3Mbps)

  • UART and multi-serial protocols (SPI, I2C, JTAG) bridges

    • FT2232D (dual port, clock up to 6 MHz)

    • FT232H (single port, clock up to 30 MHz)

    • FT2232H (dual port, clock up to 30 MHz)

    • FT4232H (quad port, clock up to 30 MHz)

Other FTDI devices could also be supported (including FT232* devices), although these devices are not a primary goal for PyFtdi, and therefore have not been tested with PyFtdi.

Primary goals

PyFtdi currently supports the following features:

  • UART/Serial USB converter, up to 12Mbps (depending on the FTDI device capability)

  • Bitbang/GPIO support

  • SPI master

  • I2C master

  • (JTAG master)

PyFtdi provides a pyserial compliant API, so it can be used as a drop-in module to access USB-serial converters based on FTDI devices.