关闭uvcdynctrl-udev.log

本文探讨了Linux系统中uvcdynctrl工具的使用与问题,特别是其生成大量日志文件导致系统资源占用的问题。文章深入解析了位于/lib/udev下的uvcdynctrl文件如何控制日志输出,提供了调试配置的详细脚本,帮助读者理解并解决uvcdynctrl的日志管理难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux系统中使用USB摄像头时,都会用到这个uvcdynctrl,但是uvcdynctrl也会一些问题引发输出巨量的log文件,会把系统占用达到100%。

但是事实上在根目录下的lib/udev中有一个uvcdynctrl文件可以控制是否把log输出到文件。

#!/bin/sh
###################################################################################################
# udev helper script for UVC devices to support dynamic controls.
#
# Version: 0.2
#
# Note that version 0.2 no longer works with older versions of udev. This script should be
# compatible with udev >= 141.
# Also check 80-uvcdynctrl.rules for more information.
###################################################################################################

# Constants
version=0.3

# Run-time configuration
debug=0    //默认是1
uvcdynctrlpath=uvcdynctrl

# Determine log destination
if [ "$debug" != 0 ]; then
        logfile=/var/log/uvcdynctrl-udev.log
else
        logfile=/dev/null     //写入到“黑洞”里,就是不在文件系统保存
fi

# Write log header
echo >> $logfile
echo "==============================================================================" >> $logfile
echo "uvcdynctrl script version $version running from '$0'" >> $logfile
echo "Triggered at `date`" >> $logfile
echo >> $logfile
set >> $logfile
echo >> $logfile

# Check for the udev version and bail out if it's too old
if [ -z "$ID_VENDOR_ID" ]; then
        echo "ERROR: The ID_VENDOR_ID variable is not defined. You are probably using an older version of udev. Please upgrade to udev >= 141 or use version 0.1 of this script." >> $logfile
        exit 2
fi

# Extract the VID and PID
vid=$ID_VENDOR_ID
pid=$ID_MODEL_ID
echo "VID of new device: '$vid'" >> $logfile
echo "PID of new device: '$pid'" >> $logfile
if [ -z $vid ]; then
        echo "ERROR: Unable to extract USB VID." >> $logfile
        exit 3
fi

# Check whether the device is managed by the UVC driver
if [ "$ID_USB_DRIVER" != "uvcvideo" ]; then
        echo "ERROR: Device is not handled by uvcvideo but by '$ID_USB_DRIVER'." >> $logfile
        if [ "$ID_USB_DRIVER" = "usb" ]; then
@              

 

就是这么简单                                                                                              

### 查找与 PlatformIO 相关的 udev 规则文件 对于 Linux 用户来说,为了使特定硬件能够被正确识别并赋予合适的权限,通常需要配置 `udev` 规则。这些规则定义了当连接新设备时应如何处理该设备。 针对 PlatformIO 所使用的开发板,特别是像 "BluePill CH32F103C8"这样的自定义或第三方支持的开发板,可能需要创建或编辑相应的 `udev` 规则来确保其正常工作[^3]。 #### 平台 IO 的默认 udev 规则位置 大多数情况下,PlatformIO 提供了一个通用的 udev 规则模板,位于 `/etc/udev/rules.d/99-platformio-udev.rules` 或者在某些发行版上可能是类似的路径。此文件包含了多个常见的串口和 USB 设备匹配模式,旨在覆盖广泛的支持需求。 如果上述路径不存在,则可以手动创建这个文件,并向其中添加必要的条目以适应具体的项目需求。下面是一个典型的例子: ```bash SUBSYSTEM=="usb", ATTR{idVendor}=="1a86", ATTR{idProduct}=="7523", MODE="0666" ``` 这段代码表示任何具有指定供应商 ID (`idVendor`) 和产品 ID (`idProduct`) 组合的 USB 设备都将获得读写权限 (MODE="0666")。这里给出的例子适用于一些基于 STMicroelectronics STM32 微控制器的产品线,包括但不限于 Bluepill 板子。 #### 自动安装 udev 规则的方法 除了手工编写外,也可以通过执行命令让 PlatformIO CLI 工具自动为你完成这项任务: ```bash platformio system install autoreset sudo platformio system run --target install-linux-udev-rules ``` 这组指令会下载最新的官方推荐版本并将它们应用到系统的 udev 配置中去。需要注意的是,在执行此类操作之前最好先备份现有的设置以防万一出现问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值