Lenovo ThinkPad X1 Carbon: puesta en servicio del módem LTE EM7544

1 de julio de 2020

Lang: cs en de es

El portátil Lenovo ThinkPad X1 Carbon generación 6 tiene un módem LTE EM7544 integrado. El fabricante del módem es compatible con Linux. Pero, ¿cómo utilizar este y otros módems modernos en Linux? Puedes encontrar instrucciones sobre cómo hacer funcionar el EM7544 en Linux en este artículo.

Tengo en mis manos un Lenovo ThinkPad X1 Carbon. Funciona bien sin tener que solucionar problemas de nada, además como portátil tiene una resolución de pantalla relativamente grande.

El portátil tiene un procesador de doble núcleo con hyperthreading, por lo que entonces se ven como 4 CPUs en el sistema. La memoria operativa es del tipo DDR3L, con un total de 16GB en mi modelo. La resolución de la pantalla LCD es de 2560x1440px.

El portátil lleva tarjeta WiFi integrada de serie. Y no tiene unidad de DVD, algo innecesario hoy en día. Esto también hace que el portátil sea ligero y delgado.
También tiene: USB3, salida HDMI, toma para un micrófono común con auriculares (por supuesto también micrófono y altavoces integrados), Touchpad y trackpoint. Un conector específico para entrada Ethernet, pero yo uso USB Ethernet cuando lo necesito, que es rápido sobre USB3. El portátil también lleva integrada una cámara de calidad media.

También tiene un lector de tarjetas micro SD. Por lo que no puede leer las de tamaño estándar y mini sin un lector externo. Como es habitual en los Thinkpad tiene retroiluminación. En concreto, una retroiluminación de teclado conmutable. La tecla CapsLock y las teclas de función: mute, mute de micrófono y FnLock tienen un pequeño LED en ellas para indicar el estado.

Una vez instalado el sistema operativo Linux, el ordenador se puede utilizar directamente.

Mi modelo también tiene un módem LTE, que será el tema de este artículo. El módem también contiene un módulo GPS.

Para ver el listado completo de HW, consulte lshw Lenovo ThinkPad X1 Carbon. Además de los componentes esperados, el portátil también incluye de fábrica un módem LTE. Sin embargo, las diferentes generaciones del ThinkPad X1 Carbon tienen un tipo diferente de módem instalado.
Según información en Internet, el ThinkPad X1 Carbon viene con los siguientes módems:

  • Módem Fibocom L850-GL / Intel XMM7360 LTE
  • Sierra Wireless, Inc. Sierra Wireless EM7455
  • .

Módem LTE EM7455

Curiosamente, el módem le permite cambiar su ID USB, por lo que entonces puede reportarse como un dispositivo diferente en el sistema. Según Internet, la identificación del módem es diferente según la marca del portátil (probablemente preestablecida por el fabricante), pero siempre es la misma pieza electrónica. Por ejemplo, también está instalado en un portátil Dell. El módem puede identificarse como uno de estos tres dispositivos:

  • Laptop genérico
  • Dell: Dell Wireless 5811e Gobi(TM)4G LTE Mobile Broadband Card
  • .
  • Lenovo ThinkPad: Sierra Wireless, Inc. Sierra Wireless EM7455
  • .

El módem está conectado internamente a través de USB. En el ThinkPad X1 Carbon la salida lsusb informa:

Bus 001 Dispositivo 009: ID 1199:9079 Sierra Wireless, Inc. Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
Según la documentación, este módem debería tener velocidades de hasta 480Mbit/s, pero esto también depende de los parámetros de la red celular.

Volcado de información en el arranque o conexión de dispositivos (dmesg):

[ 1216.502735] usb 1-2: USB desconectado, dispositivo número 2
[ 1216.502950] qcserial ttyUSB0: Qualcomm USB modem converter ahora desconectado de ttyUSB0
[ 1216.502981] qcserial 1-2:1.0: dispositivo desconectado
[ 1216.503078] qcserial ttyUSB1: Qualcomm USB modem converter ahora desconectado de ttyUSB1
[ 1216.503091] qcserial 1-2:1.2: dispositivo desconectado
[ 1216.503582] qcserial ttyUSB2: Qualcomm USB modem converter ahora desconectado de ttyUSB2
[ 1216.503592] qcserial 1-2:1.3: dispositivo desconectado
[ 1216.503675] cdc_mbim 1-2:1.12 wwp0s20f0u2i12: unregister 'cdc_mbim' usb-0000:00:14.0-2, CDC MBIM
[ 1224.113147] usb 1-2: nuevo dispositivo USB de alta velocidad número 6 usando xhci_hcd
[ 1224.240134] usb 1-2: config 1 tiene un número de interfaz inválido: 12 pero el máximo es 4
[ 1224.240148] usb 1-2: config 1 tiene un número de interfaz inválido: 13 pero el máximo es 4
[ 1224.240152] usb 1-2: config 1 tiene un número de interfaz no válido: 13 pero el máximo es 4
[ 1224.240156] usb 1-2: config 1 no tiene número de interfaz 1
[ 1224.240158] usb 1-2: config 1 no tiene número de interfaz 4
[ 1224.240739] usb 1-2: Nuevo dispositivo USB encontrado, idVendor=1199, idProducto=9079, bcdDevice= 0.06
[ 1224.240745] usb 1-2: Nuevas cadenas de dispositivo USB: Mfr=1, Product=2, SerialNumber=3
[ 1224.240750] usb 1-2: Producto: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
[ 1224.240753] usb 1-2: Fabricante: Sierra Wireless, Incorporated
[ 1224.240757] usb 1-2: Número de serie: LF62957506021014
[ 1224.247935] qcserial 1-2:1.0: Qualcomm USB modem converter detected
[ 1224.248032] usb 1-2: Qualcomm USB modem converter ahora conectado a ttyUSB0
[ 1224.248496] qcserial 1-2:1.2: Convertidor de módem USB Qualcomm detectado
[ 1224.248597] usb 1-2: Qualcomm USB modem converter ahora conectado a ttyUSB1
[ 1224.249076] qcserial 1-2:1.3: Convertidor de módem USB Qualcomm detectado
[ 1224.249180] usb 1-2: Qualcomm USB modem converter ahora conectado a ttyUSB2
[ 1224.271148] cdc_mbim 1-2:1.12: cdc-wdm0: Dispositivo USB WDM
[ 1224.271366] cdc_mbim 1-2:1.12 wwan0: registro 'cdc_mbim' en usb-0000:00:14.0-2, CDC MBIM, 6a:7d:82:89:28:28
[ 1224.332605] cdc_mbim 1-2:1.12 wwp0s20f0u2i12: renombrado de wwan0

Además, el módem incluye GPS, que aún no he manejado.

Módems LTE

Los módems actuales son dispositivos modernos y avanzados que pueden hacer mucho más y mejor que las piezas antiguas. Pero todavía es posible comunicarse con ellos utilizando los llamados comandos AT. Comandos AT son una forma de controlar y configurar módems u otros dispositivos que se comunican a través de un enlace serie.

Incluso el módem EM7455 permite la configuración mediante comandos AT, por lo que es posible leer y modificar su configuración. Sin embargo, como dispositivo moderno, también permite otros métodos y hay que estar familiarizado con él para saber lo que se hace. Y esa es una de las razones por las que se ha escrito este artículo con un tutorial sobre cómo utilizar un módem LTE moderno.

Los módems modernos, incluido el módem EM7455, permiten la comunicación mediante el protocolo QMI o MBIM Las utilidades mbimcli qmicli, que es necesario instalar, se utilizan para esta comunicación en Linux. En la distribución Mageia, el paquete urpmi libqmi-utils.

Diapositivas de la conferencia Módems modernos QMI, MBIM en Linux. - ¡Recomiendo su lectura! Hay representaciones visuales de las diferentes tecnologías y las capas y cómo se comunican entre sí.

Primeras comunicaciones con módems

Para saber en qué estado se encuentra el módem, utiliza el comando:

qmicli -d /dev/cdc-wdm0 --dms-swi-get-usb-composition
[/dev/cdc-wdm0] Composiciones USB recuperadas con éxito:
            Composición USB 6: DM, NMEA, AT, QMI
        [Composición USB 8: DM, NMEA, AT, MBIM
            Composición USB 9: MBIM
Como puede ver, el módem también puede estar en un estado en el que sólo se comunicará en modo MBIM.

Las opciones que incluyen "DM, NMEA, AT," significan que el módem creará simultáneamente tres líneas serie USB virtuales para la comunicación: Diagnóstico, GPS y comandos AT.

/dev/ttyUSB0 - Puerto de monitorización de diagnósticos (DM)
/dev/ttyUSB1 = puerto GPS NMEA
/dev/ttyUSB2 - comandos AT

El dispositivo módem en el sistema está representado por el siguiente archivo: /dev/cdc-wdm0

No he conseguido que funcione la comunicación usando QMI, así que para futuros usos estoy usando MBIM. Utilizo el estado incluyendo líneas serie para GPS y comandos AT.
El cambio entre estos estados se hace por comando:

qmicli -d /dev/cdc-wdm0 --dms-swi-set-usb-composition=6
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=reset
Y tras reiniciar el módem, ya se comunica de otra forma y los puertos serie mencionados (no) son visibles en el sistema.

Para obtener información detallada sobre el módem, utilice el comando:

mbimcli -d /dev/cdc-wdm0 --query-device-caps --verbose

Antes de la actualización del firmware, el listado de información tenía este aspecto:

[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Mensaje enviado (traducido)...
<<<<<< Cabecera:
<<<<<< longitud = 48
<<<<<< tipo = comando (0x00000003)
<<<<<< transacción = 2
<<<<<< Fragmento de cabecera:
<<<<<< total = 1
<<<<<< actual = 0
<<<<<< Contenido:
<<<<<< service = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
<<<<<< cid = 'device-caps' (0x00000001)
<<<<<< type = 'query' (0x00000000)

[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Mensaje recibido...
>>>>>> RAW:
>>>>>> longitud = 196
>>>>>> data = 03:00:00:80:C4:00:00:00:02:00:00:00:01:00:00:00:00:00:00:00:A2:89:CC:33:BC:BB:8B:4F:B6:B0:13:3E:C2:AA:E6:DF:01:00:00:00:00:00:00:00:94:00:00:00:03:00:00:00:01:00:00:00:01:00:00:00:02:00:00:00:3C:00:00:00:03:00:00:00:01:00:00:00:08:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:1E:00:00:00:60:00:00:00:28:00:00:00:88:00:00:00:0C:00:00:00:30:00:31:00:34:00:35:00:38:00:32:00:30:00:30:00:31:00:38:00:33:00:39:00:39:00:31:00:30:00:00:00:53:00:57:00:49:00:39:00:58:00:33:00:30:00:43:00:5F:00:30:00:32:00:2E:00:32:00:34:00:2E:00:30:00:35:00:2E:00:30:00:36:00:45:00:4D:00:37:00:34:00:35:00:35:00

[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Mensaje recibido (traducido)...
>>>>>> Cabecera:
>>>>>> longitud = 196
>>>>>> tipo = comando-hecho (0x80000003)
>>>>>> transacción = 2
>>>>>> Fragmento de cabecera:
>>>>>> total = 1
>>>>>> actual = 0
>>>>>> Contenido:
>>>>>> error de estado = 'None' (0x00000000)
>>>>>> service = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
>>>>>> cid = 'device-caps' (0x00000001)
>>>>>> Campos:
>>>>>> DeviceType = 'remote'
>>>>>> CellularClass = 'gsm'
>>>>>> VoiceClass = 'no-voice' (sin voz)
>>>>>> SimClass = 'extraíble'
>>>>>> DataClass = 'umts, hsdpa, hsupa, lte'
>>>>>> SmsCaps = 'pdu-recibir, pdu-enviar'
>>>>>> ControlCaps = 'reg-manual'
>>>>>> MaxSessions = '8'
>>>>>> CustomDataClass = '(null)'
>>>>>> DeviceId = '014582001839910'
>>>>>> FirmwareInfo = 'SWI9X30C_02.24.05.06'
>>>>>> HardwareInfo = 'EM7455'

[/dev/cdc-wdm0] Capacidades de dispositivo recuperadas:
Tipo de dispositivo: 'remote
Clase celular: 'gsm
Clase de voz: 'no-voice
Clase de SIM: 'removable
Clase de datos: 'umts, hsdpa, hsupa, lte'
SMS caps: 'pdu-receive, pdu-send'
Ctrl caps: 'reg-manual'
Sesiones máximas: "8
Clase de datos personalizados: "desconocido
ID del dispositivo: "014582001839910
Información del firmware: 'SWI9X30C_02.24.05.06'
Información del hardware: 'EM7455'
[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Mensaje enviado...
<<<<<< RAW:
<<<<<< length=12
<<<<<< data = 02:00:00:0C:00:00:00:00:00:03:00:00:00

[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Mensaje enviado (traducido)...
<<<<<< Cabecera:
<<<<<< longitud = 12
<<<<<< tipo = cerrar (0x00000002)
<<<<<< transacción = 3

[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Mensaje recibido...
>>>>>> RAW:
>>>>>> longitud = 16
>>>>>> datos = 02:00:00:80:10:00:00:00:03:00:00:00:00:00:00:00:00:00

[24 de mayo de 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] canal destruido
[24 May 2020, 16:58:42] [Debug] Dispositivo cerrado

Upgade firmware

Según Internet, al principio había módems con firmware antiguo, que daba problemas, por lo que era necesaria una actualización actualización del firmware. Yo actualizo el firmware en todos los dispositivos directamente, así que hice una actualización de firmware aquí también.

Me basé en aquí: Guía flash firmware ThinkPad EM7455.

Se pueden cargar varias versiones de firmware en el módem. Listar la información qué firmware está cargado en el módem y qué firmware se utiliza se puede hacer con los comandos:

    qmicli -p -d /dev/cdc-wdm0 --dms-get-firmware-preference
    qmicli -p -d /dev/cdc-wdm0 --dms-list-stored-images

Firmware Flash

Dirección donde puedes descargar el firmware para el módem LTE EM7455

Desplázate al directorio de datos del firmware y flashea el firmware con el siguiente comando:

qmi-firmware-update -d 1199 -u *.cwe *.nvu

Listado del progreso de la falsificación:

[root@FreeTux SWI9X30C_02.33.03.00_Sierra_001.023_000]# qmi-firmware-update -d 1199 -u *.cwe *.nvu
cargando información del dispositivo antes de la actualización...
configurando la preferencia de firmware:
versión de firmware: '02.33.03.00'
versión config: '001.023_000'
operador: 'SIERRA
reiniciando en modo download...
modo download detectado
descargando imagen cwe: SWI9X30C_02.33.03.00.cwe (64,4 MB)...
finalizando descarga... (puede tardar más de un minuto, sea paciente)
descargado con éxito en 73,60s (875,4 kB/s)
descargando imagen cwe: SWI9X30C_02.33.03.00_SIERRA_001.023_000.nvu (3,4 kB)...
finalizando descarga... (puede tardar más de un minuto, sea paciente)
descargado con éxito en 0,05s (63,4 kB/s)
reiniciando en modo normal...
modo normal detectado

------------------------------------------------------------------------
NOTA: para validar cual es el firmware que se está ejecutando en el
módulo, el programa esperará un arranque completo; este proceso
puede llevar algún tiempo y varios reintentos.
------------------------------------------------------------------------

esperando un tiempo a que el dispositivo arranque...
cargando la información del dispositivo tras la actualización (1/12)...

------------------------------------------------------------------------

la revisión original del firmware era:
SWI9X30C_02.24.05.06 r7040 CARMD-EV-FRMWR2 2017/05/19 06:23:09
detalles del firmware original en ejecución:
Modelo: EM7455
Versión de arranque: SWI9X30C_02.24.05.06
Versión AMSS: SWI9X30C_02.24.05.06
SKU ID: 1102782
ID de portadora: 1
Versión de configuración: 002.026_000
detalles de preferencias del firmware original:
image 'modem': unique id '002.026_000', build id '02.24.05.06_GENERIC'
imagen 'pri': id único '002.026_000', id de compilación '02.24.05.06_GENERIC'

nueva revisión de firmware es:
SWI9X30C_02.33.03.00 r8209 CARMD-EV-FRMWR2 2019/08/28 20:59:30
detalles del nuevo firmware en ejecución:
Modelo: EM7455
Versión de arranque: SWI9X30C_02.33.03.00
Versión AMSS: SWI9X30C_02.33.03.00
SKU ID: 1102782
ID de operador: 182
Versión de configuración: 001.023_000
detalles de las preferencias del nuevo firmware:
image 'modem': unique id '001.023_000', build id '02.33.03.00_SIERRA'
imagen "pri": id. único "001.023_000", id. de compilación "02.33.03.00_SIERRA".

NOTA: este dispositivo admite la gestión de imágenes almacenadas
con las operaciones qmicli:
--dms-list-stored-images
--dms-select-stored-image
--dms-delete-stored-image

NOTA: este dispositivo admite la gestión de preferencias de firmware
con operaciones qmicli:
--dms-get-firmware-preference
--dms-set-firmware-preference

------------------------------------------------------------------------

la operación de actualización del firmware ha finalizado correctamente
==========================

Listado de información del irmware tras la actualización:

[13 Jun 2020, 10:19:29] [Debug] abriendo dispositivo...
[13 Jun 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Tamaño máximo de mensaje de control consultado: 4096
[13 Jun 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Mensaje enviado...
<<<<<< RAW:
<<<<<< longitud = 16
<<<<<< datos = 01:00:00:00:10:00:00:00:01:00:00:00:10:00:00:00

[13 Jun 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Mensaje enviado (traducido)...
<<<<<< Cabecera:
<<<<<< longitud = 16
<<<<<< tipo = abierto (0x00000001)
<<<<<< transacción = 1
<<<<<< Contenido:
<<<<<< transferencia de control máxima = 4096

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje recibido...
>>>>>> RAW:
>>>>>> longitud = 16
>>>>>> datos = 01:00:00:80:10:00:00:00:01:00:00:00:00:00:00:00:00:00

[13 Jun 2020, 10:19:32] [Depuración] Dispositivo MBIM en '/dev/cdc-wdm0' listo
[13 Jun 2020, 10:19:32] [Depuración] Consulta asíncrona de las capacidades del dispositivo...
[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje enviado...
<<<<<< RAW:
<<<<<< longitud = 48
<<<<<< data = 03:00:00:00:30:00:00:00:02:00:00:00:01:00:00:00:00:00:00:00:A2:89:CC:33:BC:BB:8B:4F:B6:B0:13:3E:C2:AA:E6:DF:01:00:00:00:00:00:00:00:00:00:00:00

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje enviado (traducido)...
<<<<<< Cabecera:
<<<<<< longitud = 48
<<<<<< tipo = comando (0x00000003)
<<<<<< transacción = 2
<<<<<< Fragmento de cabecera:
<<<<<< total = 1
<<<<<< actual = 0
<<<<<< Contenido:
<<<<<< service = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
<<<<<< cid = 'device-caps' (0x00000001)
<<<<<< type = 'query' (0x00000000)

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje recibido...
>>>>>> RAW:
>>>>>> longitud = 196
>>>>>> data = 03:00:00:80:C4:00:00:00:02:00:00:00:01:00:00:00:00:00:00:00:A2:89:CC:33:BC:BB:8B:4F:B6:B0:13:3E:C2:AA:E6:DF:01:00:00:00:00:00:00:00:94:00:00:00:03:00:00:00:01:00:00:00:01:00:00:00:02:00:00:00:3C:00:00:00:03:00:00:00:01:00:00:00:08:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:1E:00:00:00:60:00:00:00:28:00:00:00:88:00:00:00:0C:00:00:00:30:00:31:00:34:00:35:00:38:00:32:00:30:00:30:00:31:00:38:00:33:00:39:00:39:00:31:00:30:00:00:00:53:00:57:00:49:00:39:00:58:00:33:00:30:00:43:00:5F:00:30:00:32:00:2E:00:33:00:33:00:2E:00:30:00:33:00:2E:00:30:00:30:00:45:00:4D:00:37:00:34:00:35:00:35:00

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje recibido (traducido)...
>>>>>> Cabecera:
>>>>>> longitud = 196
>>>>>> tipo = comando-hecho (0x80000003)
>>>>>> transacción = 2
>>>>>> Fragmento de cabecera:
>>>>>> total = 1
>>>>>> actual = 0
>>>>>> Contenido:
>>>>>> error de estado = 'None' (0x00000000)
>>>>>> service = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
>>>>>> cid = 'device-caps' (0x00000001)
>>>>>> Campos:
>>>>>> DeviceType = 'remote'
>>>>>> CellularClass = 'gsm'
>>>>>> VoiceClass = 'no-voice' (sin voz)
>>>>>> SimClass = 'extraíble'
>>>>>> DataClass = 'umts, hsdpa, hsupa, lte'
>>>>>> SmsCaps = 'pdu-recibir, pdu-enviar'
>>>>>> ControlCaps = 'reg-manual'
>>>>>> MaxSessions = '8'
>>>>>> CustomDataClass = '(null)'
>>>>>> DeviceId = '014582001839910'
>>>>>> FirmwareInfo = 'SWI9X30C_02.33.03.00'
>>>>>> HardwareInfo = 'EM7455'

[/dev/cdc-wdm0] Capacidades de dispositivo recuperadas:
              Tipo de dispositivo: 'remote
           Clase celular: 'gsm
              Clase de voz: 'no-voice
                Clase de SIM: 'removable
               Clase de datos: 'umts, hsdpa, hsupa, lte'
                 SMS caps: 'pdu-receive, pdu-send'
                Ctrl caps: 'reg-manual'
             Sesiones máximas: "8
        Clase de datos personalizados: "desconocido
                ID del dispositivo: "014582001839910
            Información del firmware: 'SWI9X30C_02.33.03.00'
            Información del hardware: 'EM7455'
[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje enviado...
<<<<<< RAW:
<<<<<< length=12
<<<<<< data = 02:00:00:0C:00:00:00:00:00:03:00:00:00

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje enviado (traducido)...
<<<<<< Cabecera:
<<<<<< longitud = 12
<<<<<< tipo = cerrar (0x00000002)
<<<<<< transacción = 3

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Mensaje recibido...
>>>>>> RAW:
>>>>>> longitud = 16
>>>>>> datos = 02:00:00:80:10:00:00:00:03:00:00:00:00:00:00:00:00:00

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] canal destruido
[13 Jun 2020, 10:19:32] [Debug] Dispositivo cerrado

Selección de firmware

La selección del firmware a utilizar se puede realizar con el comando ej:

qmicli -d /dev/cdc-wdm0 --dms-select-stored-image=modem3,pri1
Depende de en qué número esté almacenado el firmware en el módem. El firmware también se puede borrar del módem, consulta la documentación en los enlaces.

PIN

Desde la consola también es posible introducir y configurar el PIN de la tarjeta SIM, etc. Sin embargo, personalmente no lo he probado. El comando para recuperar el estado del PIN:

qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status

Configuración del sistema para un módem EM7544 en funcionamiento

Que el dispositivo puede estar en varios modos y puedes comunicarte con él con diferentes utilidades y tiene diferentes comunicaciones periféricos ( línea serie y comandos AT vs dispositivo) y diferentes protocolos de comunicación, estaba muy confuso. Ahora ya tienes una visión general de lo que permite el módem.

No necesitas usar comandos AT para que funcione en absoluto. Usted sólo necesita tener el dispositivo en modo MBIM y el dado utilidad.
Otro problema era que aunque Mageia utilizaba el applet de red ejecutándose en segundo plano. gestor de red que estaba usando el módem y por eso el módem me bloqueaba o se comunicaba con una respuesta muy lenta. Así que desactivé network manager y de repente los intentos de que funcionara tenían una respuesta rápida.

Como no uso proxy para comunicarme con el módem, necesito llamar a utilidades sin este parámetro ¡-p!

EM7544 en línea

Este manual describe la configuración cuando el módem se comunica utilizando el protocolo MBIM. Por lo tanto, he configurado el módem en este modo (en este caso el modo #8). Y esta configuración se mantendrá después de reiniciar el módem o el portátil.

Para saber si el módem está ON o OFF, utilice el comando:

qmicli -p -d /dev/cdc-wdm0 --dms-get-operating-mode
Después de cambiar la mayoría de los ajustes, es necesario reiniciar el módem(reset running). Comandos para cambiar el estado del módem y reiniciar:
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=offline
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=online
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=reset

Hay que poner el módem en modo online - lo que hace automáticamente el script de configuración/conexión. Pero hay un problema que después de reiniciar el módem/portátil al intentar cambiar al estado online, el módem imprime un mensaje de error:

no se ha podido establecer el modo operativo: error de protocolo QMI (60):

EM7455 necesita enviar un comando especial FCC_AUTH
Para introducir el comando:
qmicli -d /dev/cdc-wdm0 --dms-set-fcc-authentication
¡Esto debe hacerse después de cada reinicio del portátil para reiniciar el módem antes de conectarse a la red móvil!

Configuración de la conexión

Tengo Internet móvil de Vodafone, así que estoy configurando mis datos de conexión ver más abajo. He creado un archivo de configuración /etc/qmi-network.conf y escribí en él:

APN=internet
Por supuesto, es posible escribir allí otras opciones de configuración, por ejemplo usuario y su contraseña.

Hay muchas opciones sobre cómo iniciar la conexión a la red LTE y cómo configurar el dispositivo y la red, y se puede hacer manualmente. Sin embargo, he anclado un script existente después de muchos intentos, que llama a las herramientas existentes y establece la configuración de red IP a partir de los datos recibidos de la operadora, incluyendo la figuración de red LTE. datos recibidos de la compañía, incluyendo la configuración DNS. Yo uso un fork modificado del script que conecta el módem EM7455 a la red LTE y configura la red.

En realidad el script llama a

mbim-network /dev/cdc-wdm0 start
Puedes comprobar el estado de la conexión con el comando:
mbim-network /dev/cdc-wdm0 status
El script obtendrá entonces información sobre la conexión y cómo configurar la red, incluida la IP. El módem obtendrá esta información del operador una vez establecida la conexión. Puedes leer manualmente esta información con un comando y el mismo comando llama al script preparado:
mbimcli -d /dev/cdc-wdm0 --query-ip-configuration --no-open=11 --no-close
El script analiza estos datos de configuración de red y establece las direcciones IP de la interfaz de red y los servidores DNS. Y Internet móvil empieza a funcionar de repente. El usuario ya puede ejecutarlo todo sólo con el comando:
lte_start
Para apagar internet móvil, el comando es:
lte_stop
Estos scripts están en el subdirectorio del repositorio GIT dado ./usr/local/bin/.

Comandos AT

Para conectarse a la consola serie del módem, utilice el siguiente comando:

screen /dev/ttyUSB2 115200

Con los comandos AT puede editar los parámetros del módem, reiniciarlo, editar su identificación como USB USB, etc.
La introducción de comandos puede ser así:

ATE1
AT!ENTERCND="A710"
AT!CUSTOM?
AT!CUSTOM="FASTENUMEN",2
AT!CUSTOM="FASTENUMEN",0
AT!PCOFFEN?
AT!PCOFFEN=2
AT!RESET
Sin embargo, los comandos AT no son necesarios para la configuración, la conexión en red y el acceso móvil a Internet, Consulte los enlaces al final de este artículo para obtener más información sobre cómo utilizar los comandos AT y qué comandos son posibles.

QMI

No he ejecutado con éxito esta comunicación, por lo que no la detallo. Existen utilidades similares para QMI: qmi-network, qmicli etc....

rfkill

Como todo portátil, el ThinkPad X1 Carbon permite desactivar periféricos por software. Para ello se utiliza la utilidad rfkill.

Utilice el siguiente comando para listar los dispositivos disponibles y desactivar el dispositivo 1.

rfkill list all
rfkill desbloquear 1

Administrador de red

También probé NetwokManager durante un tiempo. Hay una utilidad de consola para ello llamada mmcli.
Por ejemplo, se pueden utilizar los siguientes comandos:

mmcli -L
mmcli -m 0

systemctl status ModemManager
systemctl status GestorRed

mmcli -m 0 --simple-connect="apn=internet"

# sólo encaja después de ejecutar network manager
mmcli -m 0 --create-bearer="apn=internet"

mmcli -m 0 --simple-disconnect

mmcli -m 0 -b 0 -c

listado
mmcli -m 0 -b 0
Sin embargo, no voy a discutir su funcionalidad, consulte la documentación.

Según el log etc, parece que también se puede conectar usándolo, pero aun así hay que configurar la interfaz de red.
Ver volcado de log:

journalctl --follow -u ModemManager -u NetworkManager
Yo era capaz de llegar a un estado en el que el registro mostró que la conexión estaba en línea y qué valores de IP para configurar manualmente la red.
May 30 20:01:15 FreeTux ModemManager[6279]: Dirección: 10.183.56.65/30
30 de mayo 20:01:15 FreeTux ModemManager[6279]: Puerta de enlace: 10.183.56.66
30 de Mayo 20:01:15 FreeTux ModemManager[6279]: DNS #1: 217.77.165.211
30 de Mayo 20:01:15 FreeTux ModemManager[6279]: DNS #2: 217.77.165.81
30 de mayo 20:01:15 FreeTux ModemManager[6279]: MTU: 1500

NetwokManager también es compatible con GPS. Consulte los siguientes comandos:

mmcli -m 1 --location-status
mmcli -m 1 --location-enable-gps-nmea
De nuevo, consulte la documentación para obtener más detalles.

Network Manager parece soportar tanto QMI y MBIM. ¡Sin embargo, no he mirado en esto más allá y ver la documentación para más detalles!

Cómo desactivar NetworkManager en la distribución de Mageia.

Batería

Para evitar el desgaste innecesario de la batería, el portátil soporta una gestión inteligente de la carga de la batería. Para obtener más información y enlaces, consulte Batería de ThinkPad Wiki.

Estoy usando la distribución Mageia, así que las instrucciones serán principalmente para eso. Primero compilo el módulo acpi_call. Después de arrancarlo configurar la descarga y carga de la batería para que sea controlada por el script tpbat-utils-acpi.

Sin embargo, el script y el módulo no son necesarios para nada. Basta con instalar la utilidad tlp del paquete tlp. Esto instalará un demonio que le permite configurar la gestión de energía de los periféricos, incluyendo la batería.

Utilice el siguiente comando para listar el estado actual de la batería:

tlp-stat -b
Por ejemplo, la salida pam podría tener este aspecto:
--- TLP 1.2.2 --------------------------------------------

+++ Características de la Batería: Carga de Umbrales y Recalibración
natacpi = activo (datos, umbrales)
tpacpi-bat = inactivo (módulo del kernel 'acpi_call' no instalado)
tp-smapi = inactivo (ThinkPad no soportado)

+++ Estado de la batería ThinkPad: BAT0 (Principal / Interna)
/sys/class/suministro_de_energía/BAT0/fabricante = SMP
/sys/class/suministro_energía/BAT0/nombre_modelo = 00HW029
/sys/class/suministro_de_potencia/BAT0/cuenta_ciclos = (no soportado)
/sys/class/suministro_energía/BAT0/diseño_energía_completa = 52060 [mWh] /sys/class/suministro_energía/BAT0/nombre_modelo = 00HW029
/sys/class/suministro_de_energía/BAT0/energy_full = 46360 [mWh]
/sys/class/suministro_de_energía/BAT0/energy_now = 30520 [mWh]
/sys/class/suministro_energía/BAT0/energía_actual = 0 [mW]
/sys/class/suministro_energía/BAT0/estado = Desconocido (umbral efectivo)

/sys/class/suministro_de_potencia/BAT0/umbral_inicio_carga = 60 [%]
/sys/class/suministro_de_energía/BAT0/charge_stop_threshold = 80 [%]

Carga = 65,8 [%]
Capacidad = 89,1 [%]

+++ Recomendaciones
* Instalar el módulo de kernel acpi_call para la recalibración de la batería ThinkPad.
El programa tlp tiene la configuración está en el archivo: /etc/default/tlp, donde basta con descomentar las líneas para configurar la descarga y carga de la batería:
START_CHARGE_THRESH_BAT0=55
STOP_CHARGE_THRESH_BAT0=80
y opcionalmente darle un valor de su elección. Puedes obtener manualmente el valor o establecerlo escribiéndolo en archivos:
/sys/class/suministro_de_energía/BAT0/charge_start_threshold
/sys/class/suministro_de_energía/BAT0/charge_stop_threshold

Más

Sólo hay una cosa que me ha fastidiado del Thinkpad X1 carbon hasta ahora: al reproducir vídeo, la imagen parpadeaba. Ajustar la configuración del compositor ayudó. En la configuración de KDE cambié el renderizado de opengl a xrandr .

Enlaces

Script para que el módem EM7455 se conecta a Internet
Diapositivas:Módems modernos QMI, MBIM en Linux
ThinkPad EM7455 flash firmware.
Descargar firmware para el módem EM7455 LTE.

Recursos

Repositorio de Github e información de configuración del módem. Sierra
mbimcli
red-mbim
cómo-configurar-una-simple-conexión-de-datos-sobre-la-interfaz-mbim-usando-libmbim-y-controlador-cdc-mbim-en-linux

AT Comandos y módem EM7455

Otros enlaces de interés

3g-4g-modems raspberry-pi-sierra-wireless-mc7304-modem-qmi-interface-setup
El script swi_setusbcomp.pl que se comunica de forma binario con el módem
Script ThinkPad X220 que configura el módem
Módem Sierra EM7455 y NetworkManager

Artículos sobre un tema similar

VMware frente a Proxmox: comparación de rendimiento
GitLab CI/CD: automatización de pruebas y despliegue de aplicaciones
Migración de VPS de VMware a Proxmox
Cambio en las licencias de VMware
Ejecución de Microsoft SQL Server en Linux
Copia de seguridad: el Proxmox Backup Server
Linux como router y cortafuegos
Cómo subir una imagen Docker al Registro Docker
Linux: gestión de volúmenes lógicos
Software RAID para Linux
Ejecutar una aplicación web detrás de un proxy
Migración de correo electrónico
Construcción multietapa Docker
Copia de seguridad de los datos al encender el ordenador
Podman
Importación de Windows a la virtualización Proxmox
Docker y correo PHP
Virtualización Proxmox
Docker y Cron
Proyecto Yocto: Cree un sistema operativo personalizado para dispositivos integrados
Preparación de un servidor Linux para ejecutar una aplicación web en Python
Cómo solucionar el bajo rendimiento de los archivos compartidos en Docker
Cómo empezar a utilizar Docker correctamente
Instalación de Linux en un servidor HPE ProLiant DL320e dedicado
Cómo poner a prueba una aplicación web
Por qué utilizar el sistema de archivos JFS
Cómo arrancar desde un disco de 4TB con GTP usando UEFI
Sistema de archivos Btrfs
Raspberry PI
WINE - ejecución de programas Windous en Linux
Sistema operativo GNU/Linux

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+