Its been a bit of a marathon but finally a recently purchased E3131-s2 HiLink usb modem is working with my two 3G routers.

This modem has hardware number: CH2E303SM

The modem firmware had to be downgraded to effectively becomes a non HiLink version.

After trying several different firmware versions this was the one that worked: available from  (it's this link

To successfully flash this firmware the modem has to be switched into serial mode and a flash code 'password' obtained that corresponds to the modem's IMEI.

There are several links that describe how to switch the modem into serial mode e.g.

If you can't get into serial mode you may have to follow instructions from e.g. this link to change the usb driver vid and pid values to correspond to those of the modem (which will be slightly different from the values in the forum post and can be found in Linux by issuing an lsusb command):

Go down to the contribution by RouterSurfer.

I found it easier to get into serial mode under Linux.

Once in serial mode the firmware update application an be run (under Windows) but you will need a flash code password.   Go here to get that.  Its a bit of a pain to sign-up but the calculator works.

Write down the version number of the current firmware, so that if you want to revert back to a HiLink modem you can find firmware with a similar or similar but later version number.

After the modem has been successfully flashed it will show modem pid and vid of 12d1:1506 (e.g. command lsusb under linux), which is one that is compatible with DD-Wrt (see this list

It will no longer be an HiLink modem but will operate with DD-Wrt and also at least with a TP-Link TL-MR3220 v2 router.

To go back to HiLink upgrade with firmware with a similar version number, e.g. from

Clearly with any of this it  is possible to brick the modem.  However I found that generally if it can be shifted into serial mode it can be re-flashed with an upgrade that at least recovers it to a working HiLink modem.

Best wishes