There’s plenty of documentation on Internet related to this issue but none of them works with recents firmware. They all talk about using the embedded web interface and force serial mode through some call and then send an AT command to choose default mode.
It’s not working ANYMORE on 22.470.07.00.00 firmware.
And sorry, you’ll need a Windows computer for this… (probably a clean pre-Windows 8 one)
First you need to confirm that your modem is actually working correctly in HiLink mode.
Plug it and wait for the browser to open automatically:
You should confirm from device manager that there’s a new NDIS network interface
Run E3272s_Update_21.420.07.00.00.exe which is a firmware installer containing an older version that permits default mode change
After a while it will fail with the error below. The firmware updater turned the device into serial mode but there’s no driver available
Confirm from device manager that there’re some unknown devices
Install Mobile Partner from Huawei and fix the driver file because it doesn’t contain the IDs for this device
Go to C:\Program Files (x86) \Mobile Partner\Driver\Driver\X64 (for 64 bits system)
and edit ewser2k.inf file.
In the [QcomSerialPort.NTamd64], add the two following lines
%QcomDevice00% = QportInstall01, USB\VID_12d1&PID_1442&MI_00
%QcomDevice01% = QportInstall00, USB\VID_12d1&PID_1442&MI_01
Now go back to device manager and update driver by choosing the path containing the inf file
If you get this error, you need to disable driver signature verification first (google for it).
BE SURE TO RESTART FIRMWARE UPDATER BEFORE TRYING TO FIX THE DRIVERS AGAIN OTHERWISE IT WONT BE TURNED INTO SERIAL MODE.
After a successful installation you should now see two additional COM ports
Start the firmware updater and wait a bit
On my Windows 8.1 computer it gets stuck here and fails with an error but it worked correctly on Windows 7…
Here is what you should see if it’s working correctly
Finally, the success message saying you firmware has been downgraded to 21.xx
Now we have access to the serial port and we’ll have to issue a few AT command to set a new default mode. Find the COM port used by your modem now
Now we can send a few command (press Enter key at the end)
AT: Will reply "OK", it means your actually talking to someone understanding AT commands
AT^FHVER: Confirm you are running firmware 21.xx
AT^SETPORT?: Show current modem default config
AT^SETPORT=?: Display available modes
AT^SETPORT="FF;10,12": Enable diag interface and classic serial based modem emulation (this is what we need to use with wvdial)
AT^RESET: Restart the modem
Screenshot below are a bit wrong: I used AT^SETPORT=”FF;12,10″ instead of AT^SETPORT=”FF;10,12″ so the modem is on ttyUSB1 instead of ttyUSB0 !
Here you can see my AT session (please note that AT^SETPORT? won’t refresh until the modem is restarted)
After issuing AT^RESET the COM id will change (probably increased by 1), you can restart Putty and check default mode is now the one expected.
You can now restart Linux and enjoy the stick being detected correctly now:
Aug 18 22:58:23 thrall kernel: [ 283.080966] usb 5-1.2: new high-speed USB device number 5 using xhci_hcd
Aug 18 22:58:23 thrall kernel: [ 283.173491] usb 5-1.2: New USB device found, idVendor=12d1, idProduct=1506
Aug 18 22:58:23 thrall kernel: [ 283.173496] usb 5-1.2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
Aug 18 22:58:23 thrall kernel: [ 283.173497] usb 5-1.2: Product: HUAWEI Mobile
Aug 18 22:58:23 thrall kernel: [ 283.173499] usb 5-1.2: Manufacturer: HUAWEI Technology
Aug 18 22:58:23 thrall kernel: [ 283.184269] usbcore: registered new interface driver usbserial
Aug 18 22:58:23 thrall kernel: [ 283.184280] usbcore: registered new interface driver usbserial_generic
Aug 18 22:58:23 thrall kernel: [ 283.184287] usbserial: USB Serial support registered for generic
Aug 18 22:58:23 thrall kernel: [ 283.186411] usbcore: registered new interface driver option
Aug 18 22:58:23 thrall kernel: [ 283.186422] usbserial: USB Serial support registered for GSM modem (1-port)
Aug 18 22:58:23 thrall kernel: [ 283.186513] option 5-1.2:1.0: GSM modem (1-port) converter detected
Aug 18 22:58:23 thrall kernel: [ 283.186597] usb 5-1.2: GSM modem (1-port) converter now attached to ttyUSB0
Aug 18 22:58:23 thrall kernel: [ 283.186613] option 5-1.2:1.1: GSM modem (1-port) converter detected
Aug 18 22:58:23 thrall kernel: [ 283.186656] usb 5-1.2: GSM modem (1-port) converter now attached to ttyUSB1
Modem is on /dev/ttyUSB0.
Bonus stuff:
Udev rules that will create /dev/gsm0 (in case you have other /dev/ttyUSBx):
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506", SYMLINK+="gsm%n"
And a working wvdial configuration (PIN code disabled, POST.lu APN so you probably want to change this, no user, no password):
[Dialer Defaults]
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","web.pt.lu"
Stupid Mode = 1
MessageEndPoint = "0x01"
Modem Type = Analog Modem
ISDN = 0
Phone = *99#
Modem = /dev/gsm0
Username = { }
Password = { }
Baud = 460800
Auto Reconnect = on
Finally, a systemd service file with autorestart
[Unit]
Description=wvdial
[Service]
Type=simple
ExecStart=/usr/bin/wvdial
RestartSec=2
Restart=always
[Install]
WantedBy=multi-user.target