pyftdiwin

Python FTDI library for Windows


Keywords
driver, ftdi, usb, serial, spi, i2c, twi, rs232, gpio, bit-bang, d2xx, pyftdi, python, windows
License
BSD-2-Clause
Install
pip install pyftdiwin==0.54.1

Documentation

PyFtdiWin

Python package Mock tests Syntax tests StandWithUkraine

PyPI Python Versions Downloads

PyFtdiWin vs. PyFtdi

PyFtdiWin is a fork of PyFtdi. The design objective of the PyFtdiWin fork is to provide a better out-of-the-box experience by supporting the default Windows plug-and-play drivers provided by FTDI.

PyFtdi only supports libusb-compatible drivers, which requires you to swap the official drivers for a libusb-compatible driver using tools such as Zadig. As Windows serial ports and many other tools expect the default FTDI D2XX drivers, you will find yourself swapping drivers back-and-forth when using PyFtdi with your FTDI devices.

PyFtdiWin is currently undergoing more testing and might be merged into the PyFtdi upstream when appropriate.

The source code for the PyFtdiWin package can be found at GitHub at https://github.com/mariusgreuel/pyftdiwin.

Overview

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)

Features

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

Installation

If you have previously installed the PyFtdi package, you should uninstall it by running the following command:

pip uninstall pyftdi

To install the PyFtdiWin package, run the following command:

pip install pyftdiwin

Supported host OSes

  • macOS
  • Linux
  • FreeBSD
  • Windows

License

SPDX-License-Identifier: BSD-3-Clause

Warnings

Python support

PyFtdi requires Python 3.7+.

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