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

Kev*_*vin 5 linux usb udev ethernet

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

我想有一种方法可以从插件中查看事件并使用 udev 运行脚本。当我将设备插入 PC 时,我看不到任何事件。我尝试了 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
Run Code Online (Sandbox Code Playgroud)

我试过跑步

   udevadm monitor --environment
   udevadm monitor --environment --udev 
   udevadm monitor
   udevadm monitor --kernel
   udevadm monitor --kernel --udev
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 0

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