间歇性载波信号上的持久以太网 USB 接口

间歇性载波信号上的持久以太网 USB 接口

背景:

在使用内置 NIC 和 USB 以太网加密狗的 oDroid XU4 上运行 ArchlinuxARM(尝试过许多不同的制造商/芯片组)。

问题:

当我断开以太网电缆与 USB 加密狗的连接时(即 USB 加密狗仍连接到系统,但载波信号丢失),以太网 USB 设备会从系统树中掉线,并且在重新插入以太网电缆时不会重新连接(尽管 USB 端口本身保留,但子系统会链接回 USB 总线设备而不是网络设备)。该ip link命令还反映了网络接口的丢失,直到 USB 加密狗本身从系统中拔出,然后重新插入系统(通用设备udevadm —-trigger不会重新识别网络设备)。

例如,

# When the USB dongle is connected and there is a carrier…
> udevadm trigger —verbose —sysname-match=“eth1”
/sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/net/eth1
# Try to disable auto power control
> sudo echo -ne “on” | tee /sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/net/eth1/power/control
# Disconnect Ethernet cable from the USB dongle and check system tree (wait 30sec after disconnect) …
> ls /sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/net
ls: cannot access '/sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/net': No such file or directory
# Reattach Ethernet cable to the USB dongle and check system tree (wait 30sec after connect) …
> udevadm —-trigger
> ls /sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/net
ls: cannot access '/sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/net': No such file or directory
  • 注意:/sys/devices/platform/soc/soc:usb3-0/12000000.usb/xhci-hcd.8.auto/usb4/4-1/4-1.2/4-1.2:2.0/(USB 总线端口本身)始终存在。

期望结果:

尽管载波信号丢失,网络接口(“eth1”)仍然存在(但ip link应该报告链接已关闭)。

附加信息

# Kernel module signals deregistration…how to prevent?
> dmesg | tail | grep “eth1” -
cdc_ncm 4-1.2:2.0 eth1: unregister ‘cdc_ncm’ usb-xhci-hcd.8.auto-1.2, CDC NCM (NO ZLP)

系统环境:

uname -a
Linux x.y.z 6.2.10-1-ARCH #1 SMP PREEMPT Fri Apr  7 11:19:04 2023 armv7l GNU/Linux

先感谢您。

答案1

确认是内核问题。为 Archlinux ARM 构建了 Linux 6.5.10,系统不再出现此问题。

相关内容