Skip to main content

Pythonic interface to FTDI devices using libftdi.

Project description

pylibftdi is a minimal Pythonic interface to FTDI devices using libftdi.

Features:
  • No dependencies beyond standard library and a libftdi install.

  • Supports parallel and serial devices

  • Support for multiple devices

  • File-like interface wherever appropriate

  • Cross-platform

Usage

The primary interface is the Device class in the pylibftdi package; this gives serial access on relevant FTDI devices (e.g. the UM232R), providing a file-like interface (read, write). Baudrate is controlled with the baudrate property.

If a Device instance is created with mode='t' (text mode) then read() and write() can use the given encoding (defaulting to latin-1). This allows easier integration with passing unicode strings between devices.

Multiple devices are supported by passing the desired device serial number (as a string) in the device_id parameter - this is the first parameter in both Device() and BitBangDevice() constructors. Alternatively the device ‘description’ can be given, and an attempt will be made to match this if matching by serial number fails.

Examples

>>> from pylibftdi import Device
>>>
>>> with Device(mode='t') as dev:
...     dev.baudrate = 115200
...     dev.write('Hello World')

The pylibftdi.BitBangDevice wrapper provides access to the parallel IO mode of operation through the port and direction properties. These provide an 8 bit IO port including all the relevant bit operations to make things simple.

>>> from pylibftdi import BitBangDevice
>>>
>>> with BitBangDevice('FTE00P4L') as bb:
...     bb.direction = 0x0F  # four LSB are output(1), four MSB are input(0)
...     bb.port |= 2         # set bit 1
...     bb.port &= 0xFE      # clear bit 0

There is support for a number of external devices and protocols, including interfacing with HD44780 LCDs using the 4-bit interface.

History & Motivation

This package is the result of various bits of work using FTDI’s devices, primarily for controlling external devices. Some of this is documented on the codedstructure blog, codedstructure.blogspot.com

Several other open-source Python FTDI wrappers exist, and each may be best for some projects. Some aim at closely wrapping the libftdi interface, others use FTDI’s own D2XX driver (ftd2xx) or talk directly to USB via libusb or similar (such as pyftdi).

The aim for pylibftdi is to work with libftdi, but to provide a high-level Pythonic interface. Various wrappers and utility functions are also part of the distribution; following Python’s batteries included approach, there are various interesting devices supported out-of-the-box - or at least there will be soon!

Plans

  • Add more examples: SPI devices, knight-rider effects, input devices, MIDI…

  • Perhaps add support for D2XX driver, though the name then becomes a slight liability ;)

License

Copyright (c) 2010-2026 Ben Bass <benbass@codedstructure.net>

pylibftdi is released under the MIT licence; see the file “LICENSE.txt” for information.

All trademarks referenced herein are property of their respective holders. libFTDI itself is developed by Intra2net AG. No association with Intra2net is claimed or implied, but I have found their library helpful and had fun with it…

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

pylibftdi-0.24.0.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylibftdi-0.24.0-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file pylibftdi-0.24.0.tar.gz.

File metadata

  • Download URL: pylibftdi-0.24.0.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pylibftdi-0.24.0.tar.gz
Algorithm Hash digest
SHA256 e2229bc10d077f018cbe7b2b490227b2b538643fa6f7bff132cde15549ca129b
MD5 6243ede1ed3c210846084d0c204f0a96
BLAKE2b-256 195ff0e03128161fff27d4f92d57b7fab20fa64e9bcd53627442d2ef43b8882c

See more details on using hashes here.

File details

Details for the file pylibftdi-0.24.0-py3-none-any.whl.

File metadata

  • Download URL: pylibftdi-0.24.0-py3-none-any.whl
  • Upload date:
  • Size: 33.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pylibftdi-0.24.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b3ba2a2106bc50a8bb551772433ebc7eb52d22a03c75fff6552de5ada6c4127
MD5 bd5d6debca91b35604bb4468465c5ecb
BLAKE2b-256 16099891a561c1aedf31c546624f715e626cbb16b179be93514f7cb0abf07083

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page