8 releases (4 stable)

1.1.2 Feb 13, 2022
1.1.1 Aug 12, 2021
1.0.0 Jan 29, 2021
1.0.0-alpha3 May 6, 2020
0.1.0 Feb 2, 2016

#188 in Hardware support

Download history 1636/week @ 2023-02-03 1835/week @ 2023-02-10 1622/week @ 2023-02-17 1824/week @ 2023-02-24 2208/week @ 2023-03-03 2593/week @ 2023-03-10 2323/week @ 2023-03-17 2503/week @ 2023-03-24 1870/week @ 2023-03-31 2539/week @ 2023-04-07 3303/week @ 2023-04-14 3553/week @ 2023-04-21 3863/week @ 2023-04-28 4182/week @ 2023-05-05 4007/week @ 2023-05-12 2006/week @ 2023-05-19

14,785 downloads per month
Used in 14 crates (4 directly)

MIT and maybe LGPL-2.1 AND MIT


Rust 1K SLoC // 0.0% comments C 819 SLoC // 0.3% comments


libftdi1-sys is a crate providing Rust bindings to the C library libftdi1.


This crate requires libftdi1 version 1.4 (August 2017) or later to be available as a system library that can be found with pkg-config (everywhere except windows/MSVC) or vcpkg (windows/MSVC) unless you activate the vendored feature.

By default the crate uses pregenerated bindings which should be fine in most cases. In special cases the bindings can be regenerated using the bindgen feature.

Regenerating bindings has an additional requirement that libclang must be installed and visible on your path. If you are using a gcc-toolchain and don't want to install the entirity of LLVM just for libclang, you can use the following procedure (using a Debian-based ARM system as an example):

sudo apt-get install libclang-dev
export LIBCLANG_PATH=/usr/lib/llvm-7/lib
export C_INCLUDE_PATH=/usr/lib/gcc/arm-linux-gnueabihf/8/include
cargo build


The Minimum Supported Rust Version (MSRV) is stable 1.34. The bindgen feature is developer-oriented and does not provide any MSRV guarantees.


  • libusb1-sys: depend on libusb1-sys and use real libusb types instead of placeholders. This makes it possible to interact directly with the underlying libusb structures.
  • vendored: build a custom copy of libftdi instead of using the system one. Note that this includes LGPL code in your build.
  • bindgen: Generate bindings to libftdi at compile time.


This crate is expected to be passively maintained, not actively updated. That being said, if you want to update binding generation, you can set the LIBFTDI1_SYS_DEVEL environment variable with any value so that an updated binding file is written in src alongside the original one enabling you to compare them and copy it over the old one to update.