USB 以太网适配器不工作

USB 以太网适配器不工作

我最近为我的笔记本电脑购买了一个 USB 以太网适配器。当我将其连接到 Windows 10 时,它会将设备视为闪存驱动器。此“闪存驱动器”上有一个可执行的 .exe 文件。在 Windows 上运行,一切正常。然而,在 Linux 上(我的例子是 Manjaro),它只将该设备视为闪存驱动器。互联网连接无法正常工作。

inxi -nxxx显示:

Network:
Device-1 ...
Device-2: ICS Advent USB 2.0 10/100M
Ethernet Adaptor
type: USB driver: usb-storage
bus-ID: 2-4:3 chip-ID 0fe6:9702 class-ID: 0806

我可以手动强制它使用正确的驱动程序吗?

提前致谢。

答案1

USB 供应商 ID 表示 Kontron/ICS Advent/CoreChips 产品。

CoreChips 有一个 SR9700 网络适配器芯片,但产品 ID 为 0x9702 而不是 0x9700,表明这可能是该芯片的不同版本。或者它可能是用于指示设备处于“USB 存储”模式的产品 ID。

此 Chromium 操作系统错误报告看起来与您的情况非常相似: https://bugs.chromium.org/p/chromium/issues/detail?id=447045

尝试以 root 身份运行此命令:

usb_modeswitch -v 0fe6 -p 9702 -K

这告诉usb_modeswitch我们向“USB 存储设备”发送两个 SCSI 命令序列:第一个命令是“允许介质移除”,第二个命令是“弹出介质”。这就是某些模式切换 USB 设备使用的指示,表明不再需要 Windows 驱动程序安装工具包,并且可以揭示设备的真正功能。

完成此操作后,请inxi -nxxx再次尝试该命令。该class-ID: 0806部件是否已更改为其他内容,也许更改为class-ID: 0206(即以太网网络设备)?其他信息有变化吗?

下一个问题可能是sr9700驱动程序模块无法识别产品 ID 9702,因为它只期望产品 ID 9700。当设备切换到实际网络接口模式时,它可能会也可能不会更改其 ID。如果产品 ID 更改为 9700,则只需要 usb_modeswitch 部分。

但如果模式切换后产品 ID 仍然是 9702,您可以尝试以下操作:

modprobe sr9700
echo "0fe6 9702" > /sys/bus/usb/drivers/sr9700/new_id

如果产品 ID 为 9702 的芯片与产品 ID 为 9700 的芯片的工作方式相同,则这可能有效。但如果存在差异,驱动程序很可能无法正常工作。您可能会在dmesg输出中看到错误。

此讨论表明这种方法可能行不通:https://www.phoronix.com/forums/forum/hardware/general-hardware/44256-usb-ethernet-adaptor-0fe6-9702-kontron-ics-advent?103621-USB-gt-Ethernet-adaptor-(0FE6 -9702-控创-ICS-Advent)=

然而,它指的是较早的dm9601驱动程序;你可能会和司机有更好的运气sr9700

如果这有效,那么要使此配置持久化,您必须做两件事:

  • usb_modeswitch添加配置,以便在出现供应商 ID 0fe6 和产品 ID 9702 的“USB 存储”(模式切换前)设备时使用适当的选项进行触发。这可以通过类似于 udev 规则/lib/udev/rules.d/40-usb_modeswitch.rules(或发行版中的类似文件)包含的 udev 规则以及/etc/usb_modeswitch.d/0fe6:9702使用以下内容命名的配置文件来实现:
    # ICS Advent/CoreChips SR9700 v2 USB ethernet NIC
    StandardEject=1

根据触发模式切换时设备的 USB 标识符所发生的具体情况,您可能需要在此处添加一些选项以验证usb_modeswitch切换是否成功实现。有关 的配置文件参数的更多信息,请参阅此处usb_modeswitch

  • 添加配置以加载sr9700网络驱动程序并向其提供新的供应商/产品 ID 对,无论是在系统启动时抢先,还是在模式切换后设备出现时都可以。这可以通过/etc/modprobe.d/usb-nic-sr9702.conf包含以下内容的文件来实现:
    alias usb:v0FE6p9702d*dc*dsc*dp*ic*isc*ip*in* sr9700
    install sr9700 /sbin/modprobe --ignore-install sr9700; /bin/echo "0fe6 9702" > /sys/bus/usb/drivers/sr9700/new_id

答案2

这就是所谓的模式切换设备。 (因为它需要一个驱动程序才能将其从一种类型的 USB 设备切换到另一种类型)。

检查您是否安装了 usb_modeswitch 软件包。如果你有,但它仍然不起作用,嗯,Bad Luck™️,你可能只是拥有一个至少 usb_modeswitch 不支持的设备。而且很有可能也没有 Linux 驱动程序。

然而,如果同一供应商的其他设备支持的话,添加模式切换支持通常也没有那么糟糕。也许并非不可能!

答案3

在尝试了来自不同 www 页面的大量内容后,我查看了 USB 描述符:

0fe6:9702 是多设备。我有 2 个子设备:

接口 0 上的 CDROM

接口 1 上的 USB 转以太网适配器

所以你不能切换配置。你必须告诉司机使用接口 1。

谁知道怎么做,请告诉我们。我将利用这个周末剩下的时间来尝试。

相关内容