linux - ftdi_usb_open() 在 Linux 上返回 -8,但同样的代码在 Mac 上运行

标签 linux ftdi

我在 SYNC FIFO FT245 模式下使用 FT2232H,但无法在 Linux 上运行,我的代码在 Mac OS X 上运行良好,但在 Linux 上却不行。

我已经安装了 libftdi1 和 libftdi-dev 包。

相关部分代码:

    #define PID 0x6010

    .
    .
    .

    if(vftdic == NULL)
    {
        this->ftdic = static_cast<struct ftdi_context*>(malloc(sizeof(struct ftdi_context)));
    }
    else
    {
        this->ftdic = vftdic;
    }
    int f;
    // Init 1. channel
    if (ftdi_init(ftdic) < 0)
    {
        throw DeviceException("ftdi_init failure\n", FTDI_ERROR);
    }
    ftdi_set_interface(ftdic, INTERFACE_A);
    f = ftdi_usb_open(ftdic, 0x0403, PID);
    if (f < 0 && (f != -5))
    {
        //here f is equal to -8 only on Linux
        throw DeviceException("Unable to open FTDI device, channel A\n", FTDI_ERROR);
    }

这是来自 lsusb 的 list :

Bus 001 Device 005: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC

使用的所有硬件都是相同的(MacBook Pro 2010 + 我的 usb 设备带有 ft2232h)。

最佳答案

您使用的用户帐户是否有权访问原始 USB 总线?检查位于 /dev/bus/usb 下面某处的与您的 FTDI 对应的设备文件的权限——很可能您没有访问它的权限。

在这种情况下,添加一些 UDev 规则以将设备文件置于某个专用组的所有权中,并将您自己添加到该组的成员中。

关于linux - ftdi_usb_open() 在 Linux 上返回 -8,但同样的代码在 Mac 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426335/

相关文章:

linux - 配置 httpd.conf 以在 Apache Red Hat Linux 上添加新站点

linux - 如何使用git命名空间 stash 分支

java - Linux 从 Java 控制台应用程序中杀死 Java 进程

linux - 如何在shell中检索两个单词之间的所有代码?

linux - FTDI 双 UART/FIFO : conflict with ftdi_sio

c# - 热敏打印机 - 通过 FTDI 基本板和 C# 的笔记本电脑

使用 linux 命令行进行 FTDI eeprom 编程

java - java远程登录Linux系统运行 "grep"

C++:带 D2XX 驱动程序的 Bit-banging(USB 到串行 UART)FTDI 模块

macos - 我无法连接 Mac OS X 的数模转换器 (USB)