我正在尝试让华为 Brovi E3372-325 USB LTE 型号与 Raspberry Pi 配合使用。开箱即用,插入时显示为 CDROM。(这显然是用于在 Windows 上自动运行驱动程序安装。)
到目前为止,我发现这篇文章带有 udev 规则配置文件。这可以在系统运行时通过运行 usb_modeswitch 热插拔调制解调器来启用调制解调器。但是,如果调制解调器在启动时插入,它将无法工作,而是显示为 CD ROM。
因此,我现在尝试编写一个系统服务来在启动时运行 usb_modeswitch 。作为实现这一目标的一步,我在插入调制解调器的情况下启动,然后尝试手动从配置文件执行 usb_modeswitch 命令。然而,这并没有达到预期的效果。
命令是
/sbin/usb_modeswitch -v 3566 -p 2001 -W -R -w 400
/sbin/usb_modeswitch -v 3566 -p 2001 -W -R
我需要做什么才能使这项工作成功?udev 规则配置是否会触发比列出的两个命令更多的操作?或者为什么看似相同的命令却没有相同的效果?
更新
显然,在开机后,调制解调器会显示自己为调制解调器一秒钟,然后切换到 CDROM 模式,但似乎不接受将其切换回调制解调器模式的命令。CDROM 模式用于在 Windows 中自动安装驱动程序。不过,这也意味着安装驱动程序后,驱动器可以切换回调制解调器模式。那么,似乎 usb_modeswitch 和 Windows 驱动程序使用不同的命令来切换到调制解调器模式?
这些命令本身不会做任何有用的事情;两者都只重置 USB 端口。
-J
实际的模式切换将使用或选项来完成-X
(前者将其切换到 CDC 假以太网模式;后者切换到 MBIM 调制解调器模式)。然而,调制解调器似乎也以 RNDIS 假以太网模式启动,只有在一秒钟内没有任何内容绑定到 RNDIS 接口时才会切换到 CDROM 模式。因此,正常连接期间(当 udev 准备好立即加载驱动程序时)与系统引导期间(当 USB 设备初始化和驱动程序加载之间需要一段时间时)的行为会有所不同。
至少当我最初得到我的时是这样,但两天后它的行为却神秘地改变了。我相信它一定已经下载了固件更新 1,现在它的“启动”似乎完全不同了——连接时它只停留 3566:2001 一秒钟,然后变成 12d1:1f01,usb_modeswitch 可以识别并切换到 CDC 假以太网模式。(它也冻结了很多。)
1 它不仅仅是一个调制解调器,它还是一个完整的 Linux 设备,配有内部 Web 服务器和自动更新。
我找到了一个解决方案,它似乎在热插拔和启动时都有效。
一、复制粘贴解决方案:
上面首先创建了 Udev 规则,根据这篇文章将热插拔上的调制解调器模式切换到调制解调器模式:
然后,它创建一个系统服务来在启动后重置调制解调器,以便能够在它接受命令的一秒时间窗口中与其对话(基于这篇文章的想法):