Sierra Wireless EM7455: How to enable COM ports

Various EM7455 devices coming from different brands and sale channels are often configured differently. They come with different firmware versions installed, different settings, and some ports can be switched on or off. Sometimes COM ports are off when you get the device, but it is useful to have a COM port enabled in order to do extended diagnostics and alter some settings that are normally not possible.

So what do you need to enable the COM ports for your EM7455?

The instructions below are for Windows users. If you can easily find your way in Linux, just skip it and note that you only basically need to run ./swi_setusbcomp.pl –-usbcomp=8 to enable COM ports. Follow this link for more info: https://www.mork.no/~bjorn/MC7455-fix-orig.txt

Download and unpack the following image file: UbuntuLive.7z

Then, download and install UltraISO software. Trial mode is enough for our purposes. UltraISO download link.

Insert a spare empty USB Flash Drive into your laptop. Make sure it’s 8GB or more. Smaller drive won’t work because this image was prepared on a 8GB USB Flash drive.

Launch UltraISO and open the image file “UbuntuLive.ima” you downloaded previously. Use File -> Open menu to do that. Then, navigate to Bootable -> Write Disk Image. You will see the following window:

Make sure that the correct USB Flash drive is selected in Disk Drive field. Make sure it’s not your disk C: or any of your hard drives. Don’t change any other options. Then click “Write” to write the image to the USB Flash drive. After it’s done, close UltraISO.

Now you need to reboot your laptop and enter the BIOS. Make sure that the boot settings in your BIOS is set to “Legacy mode” and not to “UEFI mode”. Also make sure that booting from USB Flash drive is enabled in your BIOS. Then save your BIOS settings and exit from the BIOS. If all is correct, you will see Ubuntu Live boot menu. Select “Try Ubuntu without installing” in the menu and press ENTER. Ubuntu will boot and you should see the Ubuntu desktop:

Now, right-click on the desktop and select “Open Terminal”. Enter the following commands:

sudo -i

and then

./swi_usbcomp.pl

The sample output is shown below:

ubuntu@ubuntu:~$ sudo -i
root@ubuntu:~# ./swi_usbcomp.pl 
Running in MBIM mode (driver=cdc_mbim)
MBIM OPEN succeeded
QMI msg '0x0021' returned status = 1
MBIM QMI support verified
supports 33 QMI subsystems:
  0x00 (1.5)    'QMI_CTL'    - Control service
  0x01 (1.67)    'QMI_WDS'    - Wireless data service
  0x02 (1.14)    'QMI_DMS'    - Device management service
  0x03 (1.25)    'QMI_NAS'    - Network access service
  0x04 (1.6)    'QMI_QOS'    - Quality of service, err, service 
  0x05 (1.10)    'QMI_WMS'    - Wireless messaging service
  0x07 (1.3)    'QMI_AUTH'    - Authentication service
  0x08 (1.2)    'QMI_AT'    - AT command processor service
  0x09 (2.1)    'QMI_VOICE'    - Voice service
  0x0a (2.24)    'QMI_CAT2'    - Card application toolkit service (new)
  0x0b (1.45)    'QMI_UIM'    - UIM service
  0x0c (1.4)    'QMI_PBM'    - Phonebook service
  0x0f (1.0)    'QMI_TEST'    - Test service
  0x10 (2.0)    'QMI_LOC'    - Location service 
  0x11 (1.0)    'QMI_SAR'    - Specific absorption rate service
  0x17 (1.0)    'QMI_TS'    - Thermal sensors service
  0x18 (1.0)    'QMI_TMD'    - Thermal mitigation device service
  0x1a (1.16)    'QMI_WDA'    - Wireless data administrative service
  0x1d (1.1)    'QMI_CSVT'    - Circuit switched videotelephony service
  0x22 (1.0)    'QMI_COEX'    - Coexistence service
  0x24 (1.0)    'QMI_PDC'    - Persistent device configuration service
  0x29 (1.0)    'QMI_RFRPE'    - RF radiated performance enhancement service
  0x2a (1.0)    'QMI_DSD'    - Data system determination service
  0x2b (1.0)    'QMI_SSCTL'    - Subsystem control service
  0x2e (1.0)    'unknown'    - 
  0x30 (1.0)    'unknown'    - 
  0x31 (1.0)    'unknown'    - 
  0x36 (1.0)    'unknown'    - 
  0xe1 (1.0)    'QMI_RMS'    - Remote management service
  0xf0 (1.0)    'unknown'    - 
  0xf3 (1.0)    'unknown'    - 
  0xf5 (1.0)    'unknown'    - 
  0xf6 (1.0)    'unknown'    - 
QMI msg '0x0022' returned status = 1
Got QMI DMS client ID '3'
QMI msg '0x555b' returned status = 1
Current USB composition: 9
USB compositions:
   0 - HIP  DM    NMEA  AT    MDM1  MDM2  MDM3  MS      NOT SUPPORTED
   1 - HIP  DM    NMEA  AT    MDM1  MS                  NOT SUPPORTED
   2 - HIP  DM    NMEA  AT    NIC1  MS                  NOT SUPPORTED
   3 - HIP  DM    NMEA  AT    MDM1  NIC1  MS            NOT SUPPORTED
   4 - HIP  DM    NMEA  AT    NIC1  NIC2  NIC3  MS      NOT SUPPORTED
   5 - HIP  DM    NMEA  AT    ECM1  MS                  NOT SUPPORTED
   6 - DM   NMEA  AT    QMI                             SUPPORTED
   7 - DM   NMEA  AT    RMNET1 RMNET2 RMNET3            NOT SUPPORTED
   8 - DM   NMEA  AT    MBIM                            SUPPORTED
*  9 - MBIM                                             SUPPORTED
  10 - NMEA MBIM                                        NOT SUPPORTED
  11 - DM   MBIM                                        NOT SUPPORTED
  12 - DM   NMEA  MBIM                                  NOT SUPPORTED
  13 - Config1: comp6    Config2: comp8                 NOT SUPPORTED
  14 - Config1: comp6    Config2: comp9                 NOT SUPPORTED
  15 - Config1: comp6    Config2: comp10                NOT SUPPORTED
  16 - Config1: comp6    Config2: comp11                NOT SUPPORTED
  17 - Config1: comp6    Config2: comp12                NOT SUPPORTED
  18 - Config1: comp7    Config2: comp8                 NOT SUPPORTED
  19 - Config1: comp7    Config2: comp9                 NOT SUPPORTED
  20 - Config1: comp7    Config2: comp10                NOT SUPPORTED
  21 - Config1: comp7    Config2: comp11                NOT SUPPORTED
  22 - Config1: comp7    Config2: comp12                NOT SUPPORTED
QMI msg '0x0023' returned status = 1
root@ubuntu:~#

We can see that the current USB composition for the EM7455 is set to 9, which is MBIM only. We need to have MBIM and also COM ports for the AT commands and NMEA GPS data. So we need the USB composition 8.

Just enter the following command to set the USB composition to 8:

./swi_usbcomp.pl –-usbcomp=8

The output is shown below:

root@ubuntu:~# ./swi_usbcomp.pl --usbcomp=8
Running in MBIM mode (driver=cdc_mbim)
MBIM OPEN succeeded
QMI msg '0x0021' returned status = 1
MBIM QMI support verified
supports 33 QMI subsystems:
  0x00 (1.5)    'QMI_CTL'    - Control service
  0x01 (1.67)    'QMI_WDS'    - Wireless data service
  0x02 (1.14)    'QMI_DMS'    - Device management service
  0x03 (1.25)    'QMI_NAS'    - Network access service
  0x04 (1.6)    'QMI_QOS'    - Quality of service, err, service 
  0x05 (1.10)    'QMI_WMS'    - Wireless messaging service
  0x07 (1.3)    'QMI_AUTH'    - Authentication service
  0x08 (1.2)    'QMI_AT'    - AT command processor service
  0x09 (2.1)    'QMI_VOICE'    - Voice service
  0x0a (2.24)    'QMI_CAT2'    - Card application toolkit service (new)
  0x0b (1.45)    'QMI_UIM'    - UIM service
  0x0c (1.4)    'QMI_PBM'    - Phonebook service
  0x0f (1.0)    'QMI_TEST'    - Test service
  0x10 (2.0)    'QMI_LOC'    - Location service 
  0x11 (1.0)    'QMI_SAR'    - Specific absorption rate service
  0x17 (1.0)    'QMI_TS'    - Thermal sensors service
  0x18 (1.0)    'QMI_TMD'    - Thermal mitigation device service
  0x1a (1.16)    'QMI_WDA'    - Wireless data administrative service
  0x1d (1.1)    'QMI_CSVT'    - Circuit switched videotelephony service
  0x22 (1.0)    'QMI_COEX'    - Coexistence service
  0x24 (1.0)    'QMI_PDC'    - Persistent device configuration service
  0x29 (1.0)    'QMI_RFRPE'    - RF radiated performance enhancement service
  0x2a (1.0)    'QMI_DSD'    - Data system determination service
  0x2b (1.0)    'QMI_SSCTL'    - Subsystem control service
  0x2e (1.0)    'unknown'    - 
  0x30 (1.0)    'unknown'    - 
  0x31 (1.0)    'unknown'    - 
  0x36 (1.0)    'unknown'    - 
  0xe1 (1.0)    'QMI_RMS'    - Remote management service
  0xf0 (1.0)    'unknown'    - 
  0xf3 (1.0)    'unknown'    - 
  0xf5 (1.0)    'unknown'    - 
  0xf6 (1.0)    'unknown'    - 
QMI msg '0x0022' returned status = 1
Got QMI DMS client ID '3'
QMI msg '0x555b' returned status = 1
Current USB composition: 9
USB compositions:
   0 - HIP  DM    NMEA  AT    MDM1  MDM2  MDM3  MS      NOT SUPPORTED
   1 - HIP  DM    NMEA  AT    MDM1  MS                  NOT SUPPORTED
   2 - HIP  DM    NMEA  AT    NIC1  MS                  NOT SUPPORTED
   3 - HIP  DM    NMEA  AT    MDM1  NIC1  MS            NOT SUPPORTED
   4 - HIP  DM    NMEA  AT    NIC1  NIC2  NIC3  MS      NOT SUPPORTED
   5 - HIP  DM    NMEA  AT    ECM1  MS                  NOT SUPPORTED
   6 - DM   NMEA  AT    QMI                             SUPPORTED
   7 - DM   NMEA  AT    RMNET1 RMNET2 RMNET3            NOT SUPPORTED
   8 - DM   NMEA  AT    MBIM                            SUPPORTED
*  9 - MBIM                                             SUPPORTED
  10 - NMEA MBIM                                        NOT SUPPORTED
  11 - DM   MBIM                                        NOT SUPPORTED
  12 - DM   NMEA  MBIM                                  NOT SUPPORTED
  13 - Config1: comp6    Config2: comp8                 NOT SUPPORTED
  14 - Config1: comp6    Config2: comp9                 NOT SUPPORTED
  15 - Config1: comp6    Config2: comp10                NOT SUPPORTED
  16 - Config1: comp6    Config2: comp11                NOT SUPPORTED
  17 - Config1: comp6    Config2: comp12                NOT SUPPORTED
  18 - Config1: comp7    Config2: comp8                 NOT SUPPORTED
  19 - Config1: comp7    Config2: comp9                 NOT SUPPORTED
  20 - Config1: comp7    Config2: comp10                NOT SUPPORTED
  21 - Config1: comp7    Config2: comp11                NOT SUPPORTED
  22 - Config1: comp7    Config2: comp12                NOT SUPPORTED
QMI msg '0x555c' returned status = 1
QMI msg '0x0023' returned status = 1
root@ubuntu:~#

Check again if the USB composition switch was successful:

root@ubuntu:~# ./swi_usbcomp.pl 
Running in MBIM mode (driver=cdc_mbim)
MBIM OPEN succeeded
QMI msg '0x0021' returned status = 1
MBIM QMI support verified
supports 33 QMI subsystems:
  0x00 (1.5)    'QMI_CTL'    - Control service
  0x01 (1.67)    'QMI_WDS'    - Wireless data service
  0x02 (1.14)    'QMI_DMS'    - Device management service
  0x03 (1.25)    'QMI_NAS'    - Network access service
  0x04 (1.6)    'QMI_QOS'    - Quality of service, err, service 
  0x05 (1.10)    'QMI_WMS'    - Wireless messaging service
  0x07 (1.3)    'QMI_AUTH'    - Authentication service
  0x08 (1.2)    'QMI_AT'    - AT command processor service
  0x09 (2.1)    'QMI_VOICE'    - Voice service
  0x0a (2.24)    'QMI_CAT2'    - Card application toolkit service (new)
  0x0b (1.45)    'QMI_UIM'    - UIM service
  0x0c (1.4)    'QMI_PBM'    - Phonebook service
  0x0f (1.0)    'QMI_TEST'    - Test service
  0x10 (2.0)    'QMI_LOC'    - Location service 
  0x11 (1.0)    'QMI_SAR'    - Specific absorption rate service
  0x17 (1.0)    'QMI_TS'    - Thermal sensors service
  0x18 (1.0)    'QMI_TMD'    - Thermal mitigation device service
  0x1a (1.16)    'QMI_WDA'    - Wireless data administrative service
  0x1d (1.1)    'QMI_CSVT'    - Circuit switched videotelephony service
  0x22 (1.0)    'QMI_COEX'    - Coexistence service
  0x24 (1.0)    'QMI_PDC'    - Persistent device configuration service
  0x29 (1.0)    'QMI_RFRPE'    - RF radiated performance enhancement service
  0x2a (1.0)    'QMI_DSD'    - Data system determination service
  0x2b (1.0)    'QMI_SSCTL'    - Subsystem control service
  0x2e (1.0)    'unknown'    - 
  0x30 (1.0)    'unknown'    - 
  0x31 (1.0)    'unknown'    - 
  0x36 (1.0)    'unknown'    - 
  0xe1 (1.0)    'QMI_RMS'    - Remote management service
  0xf0 (1.0)    'unknown'    - 
  0xf3 (1.0)    'unknown'    - 
  0xf5 (1.0)    'unknown'    - 
  0xf6 (1.0)    'unknown'    - 
QMI msg '0x0022' returned status = 1
Got QMI DMS client ID '3'
QMI msg '0x555b' returned status = 1
Current USB composition: 8
USB compositions:
   0 - HIP  DM    NMEA  AT    MDM1  MDM2  MDM3  MS      NOT SUPPORTED
   1 - HIP  DM    NMEA  AT    MDM1  MS                  NOT SUPPORTED
   2 - HIP  DM    NMEA  AT    NIC1  MS                  NOT SUPPORTED
   3 - HIP  DM    NMEA  AT    MDM1  NIC1  MS            NOT SUPPORTED
   4 - HIP  DM    NMEA  AT    NIC1  NIC2  NIC3  MS      NOT SUPPORTED
   5 - HIP  DM    NMEA  AT    ECM1  MS                  NOT SUPPORTED
   6 - DM   NMEA  AT    QMI                             SUPPORTED
   7 - DM   NMEA  AT    RMNET1 RMNET2 RMNET3            NOT SUPPORTED
*  8 - DM   NMEA  AT    MBIM                            SUPPORTED
   9 - MBIM                                             SUPPORTED
  10 - NMEA MBIM                                        NOT SUPPORTED
  11 - DM   MBIM                                        NOT SUPPORTED
  12 - DM   NMEA  MBIM                                  NOT SUPPORTED
  13 - Config1: comp6    Config2: comp8                 NOT SUPPORTED
  14 - Config1: comp6    Config2: comp9                 NOT SUPPORTED
  15 - Config1: comp6    Config2: comp10                NOT SUPPORTED
  16 - Config1: comp6    Config2: comp11                NOT SUPPORTED
  17 - Config1: comp6    Config2: comp12                NOT SUPPORTED
  18 - Config1: comp7    Config2: comp8                 NOT SUPPORTED
  19 - Config1: comp7    Config2: comp9                 NOT SUPPORTED
  20 - Config1: comp7    Config2: comp10                NOT SUPPORTED
  21 - Config1: comp7    Config2: comp11                NOT SUPPORTED
  22 - Config1: comp7    Config2: comp12                NOT SUPPORTED
QMI msg '0x0023' returned status = 1

Nice, it worked! All we need now is to reset the EM7455 in order for the new USB composition to take effect. Enter the following command:

./swi_usbcomp.pl –-reset

root@ubuntu:~# ./swi_usbcomp.pl --reset
Running in MBIM mode (driver=cdc_mbim)
MBIM OPEN succeeded
QMI msg '0x0021' returned status = 1
MBIM QMI support verified
supports 33 QMI subsystems:
  0x00 (1.5)    'QMI_CTL'    - Control service
  0x01 (1.67)    'QMI_WDS'    - Wireless data service
  0x02 (1.14)    'QMI_DMS'    - Device management service
  0x03 (1.25)    'QMI_NAS'    - Network access service
  0x04 (1.6)    'QMI_QOS'    - Quality of service, err, service 
  0x05 (1.10)    'QMI_WMS'    - Wireless messaging service
  0x07 (1.3)    'QMI_AUTH'    - Authentication service
  0x08 (1.2)    'QMI_AT'    - AT command processor service
  0x09 (2.1)    'QMI_VOICE'    - Voice service
  0x0a (2.24)    'QMI_CAT2'    - Card application toolkit service (new)
  0x0b (1.45)    'QMI_UIM'    - UIM service
  0x0c (1.4)    'QMI_PBM'    - Phonebook service
  0x0f (1.0)    'QMI_TEST'    - Test service
  0x10 (2.0)    'QMI_LOC'    - Location service 
  0x11 (1.0)    'QMI_SAR'    - Specific absorption rate service
  0x17 (1.0)    'QMI_TS'    - Thermal sensors service
  0x18 (1.0)    'QMI_TMD'    - Thermal mitigation device service
  0x1a (1.16)    'QMI_WDA'    - Wireless data administrative service
  0x1d (1.1)    'QMI_CSVT'    - Circuit switched videotelephony service
  0x22 (1.0)    'QMI_COEX'    - Coexistence service
  0x24 (1.0)    'QMI_PDC'    - Persistent device configuration service
  0x29 (1.0)    'QMI_RFRPE'    - RF radiated performance enhancement service
  0x2a (1.0)    'QMI_DSD'    - Data system determination service
  0x2b (1.0)    'QMI_SSCTL'    - Subsystem control service
  0x2e (1.0)    'unknown'    - 
  0x30 (1.0)    'unknown'    - 
  0x31 (1.0)    'unknown'    - 
  0x36 (1.0)    'unknown'    - 
  0xe1 (1.0)    'QMI_RMS'    - Remote management service
  0xf0 (1.0)    'unknown'    - 
  0xf3 (1.0)    'unknown'    - 
  0xf5 (1.0)    'unknown'    - 
  0xf6 (1.0)    'unknown'    - 
QMI msg '0x0022' returned status = 1
Got QMI DMS client ID '3'
QMI msg '0x555b' returned status = 1
Current USB composition: 8
USB compositions:
   0 - HIP  DM    NMEA  AT    MDM1  MDM2  MDM3  MS      NOT SUPPORTED
   1 - HIP  DM    NMEA  AT    MDM1  MS                  NOT SUPPORTED
   2 - HIP  DM    NMEA  AT    NIC1  MS                  NOT SUPPORTED
   3 - HIP  DM    NMEA  AT    MDM1  NIC1  MS            NOT SUPPORTED
   4 - HIP  DM    NMEA  AT    NIC1  NIC2  NIC3  MS      NOT SUPPORTED
   5 - HIP  DM    NMEA  AT    ECM1  MS                  NOT SUPPORTED
   6 - DM   NMEA  AT    QMI                             SUPPORTED
   7 - DM   NMEA  AT    RMNET1 RMNET2 RMNET3            NOT SUPPORTED
*  8 - DM   NMEA  AT    MBIM                            SUPPORTED
   9 - MBIM                                             SUPPORTED
  10 - NMEA MBIM                                        NOT SUPPORTED
  11 - DM   MBIM                                        NOT SUPPORTED
  12 - DM   NMEA  MBIM                                  NOT SUPPORTED
  13 - Config1: comp6    Config2: comp8                 NOT SUPPORTED
  14 - Config1: comp6    Config2: comp9                 NOT SUPPORTED
  15 - Config1: comp6    Config2: comp10                NOT SUPPORTED
  16 - Config1: comp6    Config2: comp11                NOT SUPPORTED
  17 - Config1: comp6    Config2: comp12                NOT SUPPORTED
  18 - Config1: comp7    Config2: comp8                 NOT SUPPORTED
  19 - Config1: comp7    Config2: comp9                 NOT SUPPORTED
  20 - Config1: comp7    Config2: comp10                NOT SUPPORTED
  21 - Config1: comp7    Config2: comp11                NOT SUPPORTED
  22 - Config1: comp7    Config2: comp12                NOT SUPPORTED
QMI msg '0x002e' returned status = 1
eof
    ...propagated at ./swi_usbcomp.pl line 251.
root@ubuntu:~#

Now you can close the terminal and reboot the Ubuntu. Remove the USB Flash drive from your laptop and restore the boot settings in your BIOS if you altered it. Now boot back to Windows and you’ll see 3 COM ports appear in the Device Manager: AT port for commands, NMEA port for GPS data and Quallcomm diagnostic port. All of these ports can be very useful and I will describe working with them in one of my next posts.

That was the preferred method of enabling COM ports and you should try it first. There is also another way, which is not recommended, because it requires to install some Windows drivers that potentially can flash your EM7455 automatically without asking any permission. If you still need to do that, proceed with caution!

First, note what brand your device is (look at the sticker) and check the device ID in the Windows Device Manager. There can be the following ID for the EM7455 module:

VID  : PID
413C : 81B6 - Dell DW5811e LTE version
413C : 81B8 - Dell DW5811e HSPA only version (do not get this)
1199 : 9071 - EM7455 Generic Sierra Wireless
1199 : 9079 - EM7455 Lenovo version

Then you’ll need to download your device’s corresponding driver:

Download Lenovo drivers Download Dell drivers Sierra Wireless Generic drivers

After downloading, unpack the driver by using 7Zip so you get the following files:

Dell driver:

Sierra Wireless driver:

For the Lenovo driver, it’s a little more complicated as 7Zip won’t recognize the file format to unpack it. To unpack it, first run the downloaded file:

Follow all the steps, including the path where you want the driver to be extracted. After extracting the drivers you will see the following dialog, make sure to untick “Install Sierra Wireless EM7455 Software now”:

After that, you will find the extracted driver at the location you specified:

Now, you need to run the extracted driver EXE file with USBCOMP=8 command line. For example:

Complete the driver installation, then wait for 20 minutes. The driver will install all corresponding files and change the USB composition, and COM ports will appear in your Device Manager. The EM7455 will restart several times during that process, do not reboot Windows before it’s finished. Just wait for 20 minutes after the driver is installed. It’s possible that the drivers will flash your EM7455 automatically with some newer software version during installation. Just allow it to do its work and DO NOT INTERRUPT the process. After the COM ports are enabled, you can uninstall the drivers, because they include a lot of unneeded bloatware, like some Windows services to change the firmware, etc. Well, the latter is up to you, I personally prefer not to have any extra program or service running in my laptop besides vanilla device drivers.

If you prefer to have just vanilla drivers, just run the extracted driver EXE file with EXTRACTDRIVERS=1 command line:

It will extract the drivers to some folder next to the driver EXE file: