FTDI Drivers Installation Guide for Linux

Application Note
AN_220
FTDI Drivers Installation Guide for
Linux
Version 2.0
Issue Date: 2016-06-06
The purpose of this application note is to provide users of FTDI chips with a
simple procedure to install FTDI drivers for FTDI devices used with Linux.
Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the
user agrees to defend, indemnify and hold FTDI harmless from any and all damages, claims, suits
or expense resulting from such use.
Future Technology Devices International Limited (FTDI)
Unit 1, 2 Seaward Place, Glasgow G41 1HH, United Kingdom
Tel.: +44 (0) 141 429 2777 Fax: + 44 (0) 141 429 2758
Web Site: http://ftdichip.com
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
Clearance No.: FTDI# 302
Table of Contents
1
Introduction ..................................................................................... Error! Bookmark not defined.
1.1
Overview .................................................................................. Error! Bookmark not defined.
1.2
Scope ........................................................................................ Error! Bookmark not defined.
1.2.1
Features ........................................................................... Error! Bookmark not defined.
1.2.2
Enhancement ................................................................... Error! Bookmark not defined.
2
Example Circuit ............................................................................................................................... 2
3
Example Program ............................................................................. Error! Bookmark not defined.
4
Contact Information........................................................................................................................ 7
Appendix A – References ........................................................................................................................ 8
Document References......................................................................................................................... 8
Acronyms and Abbreviations .............................................................................................................. 8
Appendix B – List of Tables & Figures ..................................................................................................... 9
List of Tables ....................................................................................................................................... 9
List of Figures ...................................................................................................................................... 9
Appendix C – Revision History .............................................................................................................. 10
Product Page
Document Feedback
1
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
Clearance No.: FTDI# 302
1 Introduction
The purpose of this application note is to provide users of FTDI chips with a simple procedure to
install FTDI drivers for FTDI devices using Linux.
1.1 Overview
FTDI has two types of drivers for all supported operating systems. These are the virtual COM port
driver (VCP) and the D2XX API driver. Since the FTDI VCP driver is built into the Linux kernel, this
document will focus on the installation of the D2XX driver.
To ensure all FTDI devices have VCP driver support, FTDI recommends installing the latest kernel
release on the Linux system. In Linux, the VCP drivers will appear as /dev/ttyUSBx.
How to verify the built-in COM port:


Plug in a FTDI based design/module/cable
Open a terminal window, and enter
dmesg | grep FTDI

The output on the terminal window should contain the following:
[10170.987708] USB Serial support registered for FTDI USB Serial Device
[10170.987915] ftdi_sio 9-1:1.0: FTDI USB Serial Device converter detected
[10170.991172] usb 9-1: FTDI USB Serial Device converter now attached to ttyUSB0
[10170.991219] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
In Linux, the VCP driver and D2XX driver are incompatible with each other. When a FTDI device is
plugged in, the VCP driver must be unloaded before a D2XX application can be run. Use the
remove module (rmmod) command to do this:
sudo rmmod ftdi_sio
sudo rmmod usbserial
When the FTDI device is power cycled or reset the VCP driver will be reloaded. The rmmod process
must be repeated each time this occurs. It is possible to write a simple script that unloads the VCP
driver before running the D2XX application.
Product Page
Document Feedback
2
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
Clearance No.: FTDI# 302
2 Installing the D2XX driver
Download a suitable Linux D2XX driver from the FTDI D2XX driver web page. The driver files are
contained in a tar gzip file.
Each CPU architecture has a separate driver file. The options are:
x86 – for 32-bit IA-32 CPUs,
x64 – for 64-bit Intel-64 (x86-64) CPUs,
ARM – for ARM CPUs, choice of hard-float, soft-float.
MIPS32 – choice of hard-float and soft-float.
Note that the ARM architecture is backward compatible but v5, v6 and v7 options are available.
The ARM v5 driver is suitable for Raspberry Pi.
The archives contain the D2XX driver and directory of sample code. Most Linux distributions have
utilities for extracting tar gzip archive files, such as the Archive Manager in Ubuntu. Figure 2.1
shows a screen capture showing the contents of the tar gzip archive.
The version number is used in the driver file names and will change on each release. In this
document it is assumed to be version 1.1.12 and in the instructions the version number is
italicized. Replace the version number with the version numbers used in the release.
It is possible to have multiple versions of the driver co-existing on a single system allowing control
over which versions to use for an application.
Click on Extract and save all the files to your desired target directory.
Figure 2.1 Contents of D2XX driver archive
As an alternative, you can use the Linux gunzip and tar commands to extract the driver files. Open
a Linux terminal window and enter:
gunzip libftd2xx1.1.12.tar.gz
tar –xvf libftd2xx1.1.12.tar
2.1 Linux Shared Object and Static Library Install
Open a Linux terminal window at the location where the driver files were extracted.
Product Page
Document Feedback
3
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
2.1.1
Clearance No.: FTDI# 302
Native Compiling
In this section the driver statically linked libraries and shared objects are copied to the
/usr/local/lib area for use by the native compiler.
All driver files are copied and symbolic links created using the Linux sudo command for root
permissions.
sudo cp
/releases/build/lib*
/usr/local/lib
Make the following symbolic links and permission modifications in /usr/local/lib:
cd /usr/local/lib
sudo ln –s libftd2xx.so.1.1.12 libftd2xx.so
sudo chmod 0755 libftd2xx.so.1.1.12
The symbolic link is used to select a default driver file. Any program can be linked against a
specific version of the library by using a version numbered library file.
2.1.2
Cross Compiling
To use the driver when cross compiling it must be copied to a suitable library path used by the
cross compiler. There are several options for this depending on the cross compiler and user
preferences.
In this section the path to run the cross compiler will replace the phrase “arch-gcc” in commands.
The compiler library search path can be found by running the compiler gcc utility with the “-printsearch-dirs” option only. The following command will format the output for display.
arch-gcc -print-search-dirs | grep libraries | sed 's/:/\n/g'
The output is a list of library search paths (in order) where the driver files can be placed and they
will be found automatically by the cross compiler. Typically these are in the “/opt” area. Often one
directory will end in “/usr/lib”, if this exists then this would be the preferred location.
Alternatively they can be installed at an arbitrary location such as /usr/local/arch/lib. The path
does not need to be on the libraries search path.
In the commands following, the full path to the library directory will be written as “arch-lib”.
sudo cp
/releases/build/lib*
arch-lib
cd arch-lib
sudo ln –s libftd2xx.so.1.1.12 libftd2xx.so
sudo chmod 0755 libftd2xx.so.1.1.12
The example code assumes a native compilation environment and therefore needs to be updated
to reflect the new location of the libraries and path of the cross compiler.
Within the examples directory there are 2 files which need modified.
The “Makefile” will need modified to change the “CC” definition to point to the cross compiler.
CC=arch-gcc
The “Rules.make” file will also need modified to change the “CC” definition to point to the cross
compiler and if the driver files are not placed in the library search path then the location added as
a rpath. Note the comma after “-Wl”.
CC=arch-gcc
CFLAGS=-Wall -Wextra -L. -lftd2xx -lpthread -ldl -lrt -Wl,-rpath,arch-lib
If the driver files are incorrectly installed or the linker cannot find them on the search path then
the error message “ld: cannot find -lftd2xx” will be reported.
Product Page
Document Feedback
4
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
Clearance No.: FTDI# 302
3 Compiling and Running Sample D2XX Applications
FTDI provides both Shared Object (.so) and Static linked (.a) D2XX libraries.
installation procedures for these libraries on native systems.
Here are the
3.1 Building and Running the Shared Object Examples
To verify the D2XX driver install, compile and run the EEPROM read sample program. Make sure
the Linux system has the gcc compiler installed.
cd release/examples
Compile and link the examples.
make –B
Change to the read example directory.
cd eeprom/read
The name of the executable file is read.
Plug in the FTDI based device. Remove the VCP driver as described in section 1.1:
sudo rmmod ftdi_sio
sudo rmmod usbserial
Run the sample application:
sudo ./read
The read application will list the configuration descriptors of the attached FTDI device as follows:
opening port 0
ftHandle0 = 0x8e89220
Signature1 = 0
Signature2 = -1
Version = 2
VendorId = 0x0403
ProductId = 0x6001
Manufacturer = FTDI
ManufacturerId = FT
Description = USB-Serial Converter
SerialNumber = FTG5FL9U
3.2 Building and Running the Static Library Example
The static library example is simple to run and execute.
cd release/examples/static
Remove any previous library built for another target.
rm lib*
Copy the static library to current directory from the copy in the driver distribution file. This could
also be copied from /usr/local/lib or the cross compiler library used in section 2.1.2.
cp ../../build/libftd2xx.a
.
Compile and link the example.
Product Page
Document Feedback
5
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
make –B
Clearance No.: FTDI# 302
<ret>
Run the test program.
sudo ./static_link
This application will write and read 16 bytes to port 0 of any FTDI USB ->UART device with a
loopback connector attached:
Device 0 Serial Number - FTVESNIO
Opened device FTVESNIO
FT_Read read 16 bytes
Closed device FTVESNIO
Product Page
Document Feedback
6
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723
Clearance No.: FTDI# 302
4 Contact Information
Head Office – Glasgow, UK
Branch Office – Tigard, Oregon, USA
Future Technology Devices International Limited
Unit 1, 2 Seaward Place, Centurion Business Park
Glasgow G41 1HH
United Kingdom
Tel: +44 (0) 141 429 2777
Fax: +44 (0) 141 429 2758
Future Technology Devices International Limited
(USA)
7130 SW Fir Loop
Tigard, OR 97223-8160
USA
Tel: +1 (503) 547 0988
Fax: +1 (503) 547 0987
E-mail (Sales)
E-mail (Support)
E-mail (General Enquiries)
[email protected]
[email protected]
[email protected]
E-Mail (Sales)
E-Mail (Support)
E-Mail (General Enquiries)
[email protected]
[email protected]
[email protected]
Branch Office – Taipei, Taiwan
Branch Office – Shanghai, China
Future Technology Devices International Limited
(Taiwan)
2F, No. 516, Sec. 1, NeiHu Road
Taipei 114
Taiwan , R.O.C.
Tel: +886 (0) 2 8797 1330
Fax: +886 (0) 2 8751 9737
Future Technology Devices International Limited
(China)
Room 1103, No. 666 West Huaihai Road,
Shanghai, 200052
China
Tel: +86 21 62351596
Fax: +86 21 62351595
E-mail (Sales)
E-mail (Support)
E-mail (General Enquiries)
E-mail (Sales)
E-mail (Support)
E-mail (General Enquiries)
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Web Site
http://ftdichip.com
Distributor and Sales Representatives
Please visit the Sales Network page of the FTDI Web site for the contact details of our
distributor(s) and sales representative(s) in your country.
System and equipment manufacturers and designers are responsible to ensure that their systems, and any Future Technology
Devices International Ltd (FTDI) devices incorporated in their systems, meet all applicable safety, regulatory and system-level
performance requirements. All application-related information in this document (including application descriptions, suggested
FTDI devices and other materials) is provided for reference only. While FTDI has taken care to assure it is accurate, this
information is subject to customer confirmation, and FTDI disclaims all liability for system designs and for any applications
assistance provided by FTDI. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the
user agrees to defend, indemnify and hold harmless FTDI from any and all damages, claims, suits or expense resulting from
such use. This document is subject to change without notice. No freedom to use patents or other intellectual property rights is
implied by the publication of this document. Neither the whole nor any part of the information contained in, or the product
described in this document, may be adapted or reproduced in any material or electronic form without the prior written consent
of the copyright holder. Future Technology Devices International Ltd, Unit 1, 2 Seaward Place, Centurion Business Park,
Glasgow G41 1HH, United Kingdom. Scotland Registered Company Number: SC136640
Product Page
Document Feedback
7
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723 Clearance No.: FTDI# 302
Appendix A – References
Document References
Replace this text. List FTDI and external datasheets, application notes, website links and other
documents. Notice the hyperlink in the example.
AN_146 USB Hardware Design Guides for FTDI ICs
Acronyms and Abbreviations
Terms
USB
USB-IF
Description
Universal Serial Bus
USB Implementers Forum
NOTE – put terms in alphabetical order.
8
Product Page
Document Feedback
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723 Clearance No.: FTDI# 302
Appendix B – List of Tables & Figures
List of Tables
Table 1.1 Sample Table Caption ................................................ Error! Bookmark not defined.
Table 3.1 Another Sample Table Caption .................................... Error! Bookmark not defined.
List of Figures
Figure 2.1 Sample Figure Caption ............................................. Error! Bookmark not defined.
9
Product Page
Document Feedback
Copyright © Future Technology Devices International Limited
Application Note
AN_220 FTDI Drivers Installation Guide for Linux
Version 2.0
Document Reference No.: FT_000723 Clearance No.: FTDI# 302
Appendix C – Revision History
Document Title:
AN_220 FTDI Drivers Installation Guide for Linux
Document Reference No.:
FT_000723
Clearance No.:
FTDI# 302
Product Page:
http://www.ftdichip.com/FTProducts.htm
Document Feedback:
Send Feedback
Revision
Changes
Date
1.0
Initial Release
2012-07-11
1.1
Updated release
2016-04-05
2.0
Added cross compiler help
2016-06-06
10
Product Page
Document Feedback
Copyright © Future Technology Devices International Limited