我最近为我的笔记本电脑购买了一个 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
输出中看到错误。
然而,它指的是较早的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。
谁知道怎么做,请告诉我们。我将利用这个周末剩下的时间来尝试。