2017-02-21 65 views
0

我試圖使用FTDI的D2XX驅動程序來訪問一個樹莓派3. USB串行設備這是我到目前爲止已經完成:爲什麼我不能在Raspberry Pi上使用D2XX訪問我的FTDI設備?

  • 我下載的是ARMv6的1.3.6硬浮動版本的驅動程序(說明它適用於Raspberry Pi),然後按照Readme指令將其安裝到/ usr/local/lib文件夾中
  • 我運行了sudo rmmod ftdi_siosudo rmmod usbserial命令,建議卸載默認的內核驅動程序
  • 在我的程序中,我所做的第一件事是調用FT_SetVIDPID函數,以便正確配置它以適應我的特殊需求[R設備
  • 在我的計劃,我可以確認有1個設備通過FT_CreateDeviceInfoList功能插入

然而,在我的程序,試圖調用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錯誤。我錯過了什麼?

+0

自從我使用D2XX驅動程序以來,已經有一段時間了,但是您是否在'sudo'下運行了該程序?由於D2XX僅在後端使用libusb,因此它需要對內核中的USB設備進行原始訪問。 – rm5248

+0

我沒有用sudo運行它。我會嘗試一下並報告回來! – SoaperGEM

+0

解決了!如果你想發佈一個答案告訴我,我需要用sudo來運行它,我會很樂意接受這個答案。 – SoaperGEM

回答

1

由於FTDI D2XX驅動程序簡單地在後端使用libusb以實際與設備交談,因此您需要擁有適當的權限才能與其交談。最簡單的方法是簡單地運行sudo下的程序,以便您擁有完全的root權限。

或者,如果由於某些原因,您無法運行sudo下的程序,應該可以將access the device作爲非root用戶。

相關問題