日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux libusb应用实例,在Linux中使用libusb-1.0作为非root用户访问USB设备

發布時間:2024/9/27 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux libusb应用实例,在Linux中使用libusb-1.0作为非root用户访问USB设备 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我試圖在RHEL5上作為非root用戶與USB設備連接.該設備是一個GPIO接口(其文檔可在

http://www.xdimax.com/sub20/sub20.html找到),它使用libusb-1.0.使用其API打開設備的過程是:

sub_device d;

d = sub_find_devices(0);

sub_handle h = sub_open(d);

當我這樣做時,sub_find_devices()調用工作,但在sub_open()調用,我得到libusb錯誤-3,這表明我沒有權限打開設備進行寫入.

我對這個問題進行了一些研究,發現我應該創建一個udev規則.在設備的sysfs節點上使用udevinfo,我得到了:

looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2':

KERNEL=="2-1.2"

SUBSYSTEM=="usb"

SYSFS{configuration}==""

SYSFS{serial}=="15F2"

SYSFS{product}=="SUB-20"

SYSFS{manufacturer}=="XDIMAX"

SYSFS{maxchild}=="0"

SYSFS{version}==" 1.10"

SYSFS{devnum}=="6"

SYSFS{speed}=="12"

SYSFS{bMaxPacketSize0}=="64"

SYSFS{bNumConfigurations}=="1"

SYSFS{bDeviceProtocol}=="00"

SYSFS{bDeviceSubClass}=="00"

SYSFS{bDeviceClass}=="ff"

SYSFS{bcdDevice}=="0001"

SYSFS{idProduct}=="ffc3"

SYSFS{idVendor}=="04d8"

SYSFS{bMaxPower}=="100mA"

SYSFS{bmAttributes}=="80"

SYSFS{bConfigurationValue}=="1"

SYSFS{bNumInterfaces}==" 1"

然后我在/etc/udev/rules.d/991-local.rules文件中創建了以下udev規則:

SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="ffc3", NAME="sub20", GROUP="582", MODE="0660"

582是我的普通用戶所屬的組的GID.我也嘗試了組名稱的規則,但它沒有用.創建此規則后,將使用正確的權限創建設備文件/ dev / sub20,但僅在插入設備時才存在,這使我有理由相信udev規則在正確的設備上匹配.但是,我的代碼仍然會出錯-3.

對代碼進行分析后發現了這個問題:

open("/dev/bus/usb/002/006", O_RDWR) = -1 EACCES (Permission denied)

/ dev / bus / usb …節點上的權限仍然是root:root,所以這可能表明我的udev規則存在問題,盡管我不知道那可能是什么.

如果我嘗試打開調用(“/ dev / sub20”,O_RDWR),我得到返回值ENXIO(沒有這樣的設備或地址),這是udev規則中錯誤的另一個可能指示,盡管/ dev / sub20文件清楚地以某種方式與正確的設備相關聯,因為它僅在插入設備時才存在.

我還能做些什么來嘗試讓它發揮作用?

我用來訪問libusb設備的udev規則如下所示:SUBSYSTEMS ==“usb”,ATTRS {idVendor} ==“04d8”,ATTRS {idProduct} ==“ffc3”,SYMLINK =“sub20”, GROUP =“usb”,MODE =“660”.它應該只是添加一個符號鏈接到設備,但之后權限也適用于我(我是組usb的成員).

總結

以上是生活随笔為你收集整理的linux libusb应用实例,在Linux中使用libusb-1.0作为非root用户访问USB设备的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。