我正在尝试配置 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