linux udev 规则为客户端驱动程序加载小工具模块

linux udev 规则为客户端驱动程序加载小工具模块

我很难自动加载小工具模块并将 usb0 设备作为 eth 接口启动。有问题的接口是 g_ether,用于嵌入式 Linux 设备并连接到 PC。

我想有一种方法可以从插件中查看事件并使用 udev 运行脚本。当我将设备插入电脑时,我没有看到任何事件。我尝试了 udevadm 监视器的不同变体,但我不确定如何找出可以用作 udev 规则来 modprobe 小工具模块的内容。

我尝试加载 otg 模块的部分原因是因为我们主要使用 g_ether。我想使用 avahi-autoipd,但它在插入之前会获取 IP 地址。如果我在网络接口中使用allow-hotplug,它在插入时永远不会自动启动接口。所以理论上,我想插入设备连接到 PC,在新网络接口上运行 avahi-autoipd 以检索 IP,然后运行 ​​dhcpd 将 IP 提供给主机。

自从其他人开始在 stackoverflow 中帮助我(在此处重新发布)后,我得到了更多信息。

/sys/bus/usb/devices$ ls
1-0:1.0  2-0:1.0  3-0:1.0  3-1  3-1:1.0  usb1  usb2  usb3
[ 4297.515400] g_ether gadget: high speed config #2: RNDIS
[ 4300.379021] g_ether gadget: high speed config #1: CDC Ethernet (ECM)
sys/bus/usb/devices$ ls
1-0:1.0  2-0:1.0  3-0:1.0  3-1  3-1:1.0  usb1  usb2  usb3

我尝试过跑步

   udevadm monitor --environment
   udevadm monitor --environment --udev 
   udevadm monitor
   udevadm monitor --kernel
   udevadm monitor --kernel --udev

拔掉和插入设备没有任何显示。联机帮助页上写着“监听内核 uevent 和 udev 规则发送的事件”,而我的设备上没有规则。所以我假设这可能就是为什么即使我尝试使用其他硬件做一些事情也不会打印出任何内容?

我正在运行嵌入式 Linux 发行版。我想我可能没有台式机所拥有的一切?

我注意到我的 g_ether 模块可能有问题?这些输出永远不会改变。 cat /sys/class/net/usb0/carrier cat:读取错误:参数无效 cat /sys/class/net/usb0/operstate down

答案1

uevent 的 USB 特定变量在内核函数中设置usb_uevent。您可以跟踪该函数是否被调用。

相关内容