Skip to content


Repository files navigation



Python package Mock tests Syntax tests StandWithUkraine

PyPI Python Versions Downloads


PyFtdi documentation is available from


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

Suported FTDI devices include:

  • UART and GPIO bridges

    • FT232R (single port, 3Mbps)
    • FT230X/FT231X/FT234X (single port, 3Mbps)
  • UART, GPIO and multi-serial protocols (SPI, I2C, JTAG) bridges

    • FT2232C/D (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)
    • FT4232HA (quad port, clock up to 30 MHz)


PyFtdi currently supports the following features:

  • UART/Serial USB converter, up to 12Mbps (depending on the FTDI device capability)
  • GPIO/Bitbang support, with 8-bit asynchronous, 8-bit synchronous and 8-/16-bit MPSSE variants
  • SPI master, with simultanous GPIO support, up to 12 pins per port, with support for non-byte sized transfer
  • I2C master, with simultanous GPIO support, up to 14 pins per port
  • Basic JTAG master capabilities
  • EEPROM support (some parameters cannot yet be modified, only retrieved)
  • Experimental CBUS support on selected devices, 4 pins per port

Supported host OSes

  • macOS
  • Linux
  • FreeBSD
  • Windows, although not officially supported


SPDX-License-Identifier: BSD-3-Clause


Python support

PyFtdi requires Python 3.8+.

See pyftdi/doc/requirements.rst for more details.