为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?

Why can't I access my FTDI device using D2XX on a Raspberry Pi?

我正在尝试使用 FTDI 的 D2XX 驱动程序访问 Raspberry Pi 3 上的 USB 串行设备。这是我目前所做的:

但是,在我的程序中,尝试调用 FT_Open 始终失败并返回 FT_DEVICE_NOT_FOUND (2)。我将程序复制到这里以供参考:

#include <stdio.h>
#include "ftd2xx.h"

int main(int argc, char[] argv)
{
    FT_HANDLE ftHandle;
    FT_STATUS ftStatus;
    int iNumDevs = 0;

    ftStatus = FT_SetVIDPID(0x0403, 0x6015);
    if (FT_OK != ftStatus)
    {
        printf("Error: FT_SetPIDVID(%d)\n", (int)ftStatus);
        return 1;
    }

    ftStatus = FT_CreateDeviceInfoList(&iNumDevs);
    if (FT_OK != ftStatus)
    {
        printf("Error: FT_CreateDeviceInfoList(%d)\n", (int)ftStatus);
        return 1;
    }

    printf("Devices: %d\n", iNumDevs);

    ftStatus = FT_Open(0, &ftHandle);
    if (FT_OK != ftStatus)
    {
        printf("Error: FT_Open(%d)\n", (int)ftStatus);
        return 1;
    }

    // ...

    return 0;
}

我从这个小程序得到的输出是一致的。它总是:

Devices: 1

Error: FT_Open(2)

我总是用以下方法构建这个程序:

gcc -lftd2xx -o test test.c

事实上,第一位确实说有一个连接的设备,这让我希望我能使它正常工作。但基本上所有其他函数(FT_Open、FT_OpenEx,甚至 FT_ListDevices)都会失败并出现相同的 #2 错误。我错过了什么?

由于 FTDI D2XX 驱动程序只是在后端使用 libusb 以便与设备进行实际对话,因此您需要具有适当的权限才能与它进行实际对话。最简单的方法是简单地运行 sudo 下的程序,这样您将拥有完全的root 权限。

或者,如果由于某种原因您无法运行 sudo.

下的程序,应该可以 access the device 作为非 root 用户