TL;DR: In order for the E3531 to work as a serial over USB modem, you need to modify the mode switching rule to the one you have posted (12d1:1001) and to switch off autodialing in the internal configuration page, otherwise there is a conflict and the computer can't use the modem.
I needed to set up this modem to work with an OpenWrt router, so I spent quite a few hours testing on my Fedora box and the router itself. It does work in CDC Ethernet mode, but there is no way to set up things like port forwarding. In /etc/usb_modeswitch.d/12d1:1f01 I had:
# Huawei E353 (3.se)
TargetVendor= 0x12d1
TargetProduct= 0x14db
MessageContent="55534243123456780000000000000a11062000000000000100000000000000"
NoDriverLoading=1
and similarly in OpenWrt's /etc/usb-mode.json (the values inside brackets are in decimal):
"12d1:1f01": {
"*": {
"t_vendor": 4817,
"t_product": [ 5339, 5340 ],
"mode": "HuaweiNew",
"no_driver": true,
"msg": [ ]
}
}
It seems that the NoDriverLoading=1 ("no_driver": true) option does not allow the device to switch to serial-over-USB mode. I can't remember if the same is true for "mode": "HuaweiNew", as I've shipped the router to the client.
So, to recap, you need to:
- Disable autodialing in the configuration page
- Modify the mode switching rule to target product id 0x1001 (decimal: 4097) and message "55534243123456780000000000000011062000000100000000000000000000"
- Remove the NoDriverLoading=1 option
- Save the rule, unplug and plug back in