启动时未加载 usb_modeswitch.conf

启动时未加载 usb_modeswitch.conf

我正在尝试配置 PC 在启动时通过华为调制解调器连接到互联网。但是,启动后,调制解调器被识别为大容量存储设备。我可以通过运行将其切换到正确模式

sudo usb_modeswitch -v 12d1 -p 14fe -J 

我需要调制解调器从一开始就工作,所以我发现我需要在 /etc/usb_modeswitch.conf 中添加以下内容:

DefaultVendor=0x12d1
DefaultProduct=0x14fe

TargetVendor=0x12d1
TargetProduct=0x1506
HuaweiNewMode=1

当我通过运行加载配置文件时,此方法有效sudo usb_modeswitch -c /etc/usb_modeswitch.conf,但在计算机启动时无效。有人知道如何在启动时应用配置吗?

更新:我还尝试将以下行添加到 /lib/udev/rules.d/40-usb_modeswitch.rules:

ATTR{idVendor}=="12d1", ATTR{idProduct}=="14fe", RUN+="usb_modeswitch '%b/%k'"

或者

ATTR{idVendor}=="12d1", ATTR{idProduct}=="14fe", RUN+="usb_modeswitch -v 12d1 -p 14fe -J"

我还是无法让它工作。

答案1

我通过从启动脚本运行 usb_modeswitch 命令来实现这一点,如如何在以 root 身份启动时运行脚本(评分最高的答案)。其中一位评论者表示,这在 Ubuntu 16.04 或更高版本上不起作用,但就我而言,它可以工作。

我知道这个解决方案对某些人来说可能看起来很“肮脏”,但我已经花了太多时间尝试以“正确”的方式去做这件事。

答案2

我认为更新 udev 规则后你必须更新 initramfs

sudo update-initramfs -u

我的 udev 规则文件是

猫/etc/udev/rules.d/41-huawei_e3372.rules

# Huawei E3372
ATTR{idVendor}=="12d1", ATTR{idProduct}=="14fe", RUN+="/usr/sbin/usb_modeswitch -v 12d1 -p 14fe -V 12d1 -P 1506 -J"

之后,您可以通过命令验证文件是否已上传到 initramfs 映像

lsinitramfs /boot/initrd.img|grep 41-huawei_e3372.rules

相关内容