【发布时间】:2021-01-14 12:27:37
【问题描述】:
我正在尝试从连接 USB 设备后读取信息。
我需要的信息通过两个 API 访问:v4l2 和 libusb。 两者都是通过正确调用的脚本来使用的,因为预期会执行 v4l2 部分。
SUBSYSTEM=="usb", ATTRS{idVendor}=="199a", GROUP="video", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
ACTION=="add", SUBSYSTEM=="video4linux", \
ATTRS{idVendor}=="199a" \
RUN+="/usr/bin/camera-infos-wrapper %s{serial}"
当我手动运行脚本时,所有步骤都正确执行。 我有一个围绕脚本的包装器来设置额外的环境变量。
#!/usr/bin/env bash
export DISPLAY=":0"
export XAUTHORITY=/home/user/.Xauthority
# sleep 3 <- does not work
# sleep 4 <- works
# ensure debug output is logged
exec 1> >(logger -s -t $(basename $0)) 2>&1
/usr/bin/tcam-index-camera $1
当我睡眠 3 秒时,libusb 无法正确打开设备。 睡眠 4 秒允许正确访问。 由于这必须在 PC 上运行,因此我更喜欢更强大的解决方案。
在所有udev规则都通过并且设备完全初始化之后,有什么方法可以运行脚本?
【问题讨论】:
标签: linux scripting usb libusb udev