pocitacova mys ryba reprobedny letadlo cip
header

Lenovo ThinkPad X1 Carbon: Inbetriebnahme des LTE-Modems EM7544

1. Juli 2020

Lang: cs en de es

Das Lenovo ThinkPad X1 Carbon Generation 6 Notebook hat ein eingebautes LTE-Modem EM7544. Der Modemhersteller unterstützt Linux. Doch wie lassen sich dieses und andere moderne Modems unter Linux nutzen? Eine Anleitung, wie Sie das EM7544 unter Linux zum Laufen bringen, finden Sie in diesem Artikel.

Lenovo ThinkPad X1 Carbon: Inbetriebnahme des LTE-Modems EM7544

In meine Hände gelangte ein Lenovo ThinkPad X1 Carbon. Es funktioniert gut, ohne dass man irgendeine Fehlersuche machen muss, und für einen Laptop hat es eine relativ große Bildschirmauflösung.

Der Laptop hat einen Dual-Core-Prozessor mit Hyperthreading, so dass man von 4 CPUs im System sprechen kann. Der Arbeitsspeicher ist vom Typ DDR3L, mit insgesamt 16GB in meinem Modell. Die Auflösung des LCD-Bildschirms beträgt 2560x1440px.

Der Laptop hat standardmäßig eine integrierte WiFi-Karte. Und es hat kein DVD-Laufwerk, was heutzutage unnötig ist. Das macht den Laptop auch leicht und dünn.
Außerdem hat er: USB3, HDMI-Ausgang, Anschluss für ein handelsübliches Mikrofon mit Kopfhörer (natürlich auch integriertes Mikrofon und Lautsprecher), Touchpad und Trackpoint. Ein spezieller Anschluss für den Ethernet-Eingang, aber ich benutze USB-Ethernet, wenn ich es brauche, was schneller ist als USB3. Der Laptop hat auch eine integrierte Kamera mittlerer Qualität.

Er hat auch einen Micro SD Kartenleser. Man kann also keine Karten in Standard- und Minigröße ohne ein externes Lesegerät lesen. Wie bei Thinkpads üblich, hat es eine Hintergrundbeleuchtung. Genauer gesagt, eine zuschaltbare Tastatur-Hintergrundbeleuchtung. Die CapsLock-Taste und die Funktionstasten: Stummschaltung, Mikrofonstummschaltung und FnLock sind mit einer kleinen LED ausgestattet, die den Status anzeigt.

Sobald das Linux-Betriebssystem installiert ist, kann der Computer sofort genutzt werden.

Mein Modell verfügt auch über ein LTE-Modem, um das es in diesem Artikel gehen wird. Das Modem enthält auch ein GPS-Modul.

Die vollständige HW-Liste finden Sie unter lshw Lenovo ThinkPad X1 Carbon. Neben den erwarteten Komponenten verfügt das Notebook ab Werk auch über ein LTE-Modem. Verschiedene Generationen des ThinkPad X1 Carbon haben jedoch einen anderen Modemtyp installiert.
Laut Informationen im Internet wird das ThinkPad X1 Carbon mit den folgenden Modems ausgeliefert:

  • Fibocom L850-GL / Intel XMM7360 LTE-Modem
  • Sierra Wireless, Inc. Sierra Wireless EM7455

LTE-Modem EM7455

Interessanterweise erlaubt es das Modem, seine USB-ID zu ändern, so dass es sich dann als ein anderes Gerät im System melden kann. Laut Internet ist die Modem-Kennung je nach Notebook-Marke unterschiedlich (wahrscheinlich vom Hersteller voreingestellt), aber es handelt sich immer um dasselbe elektronische Bauteil. Zum Beispiel ist es auch in einem Dell-Laptop eingebaut. Das Modem kann als eines der folgenden drei Geräte identifiziert werden:

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

Das Modem ist intern über USB angeschlossen. Auf dem ThinkPad X1 Carbon meldet die lsusb-Ausgabe:

Bus 001 Device 009: ID 1199:9079 Sierra Wireless, Inc. Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
Laut Dokumentation sollte dieses Modem Geschwindigkeiten von bis zu 480Mbit/s haben, aber das hängt auch von den Parametern des Mobilfunknetzes ab.

Dumping von Informationen beim Booten oder Geräteanschluss (dmesg):

[ 1216.502735] usb 1-2: USB disconnect, device number 2
[ 1216.502950] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0
[ 1216.502981] qcserial 1-2:1.0: device disconnected
[ 1216.503078] qcserial ttyUSB1: Qualcomm USB modem converter now disconnected from ttyUSB1
[ 1216.503091] qcserial 1-2:1.2: device disconnected
[ 1216.503582] qcserial ttyUSB2: Qualcomm USB modem converter now disconnected from ttyUSB2
[ 1216.503592] qcserial 1-2:1.3: device disconnected
[ 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: new high-speed USB device number 6 using xhci_hcd
[ 1224.240134] usb 1-2: config 1 has an invalid interface number: 12 but max is 4
[ 1224.240148] usb 1-2: config 1 has an invalid interface number: 13 but max is 4
[ 1224.240152] usb 1-2: config 1 has an invalid interface number: 13 but max is 4
[ 1224.240156] usb 1-2: config 1 has no interface number 1
[ 1224.240158] usb 1-2: config 1 has no interface number 4
[ 1224.240739] usb 1-2: New USB device found, idVendor=1199, idProduct=9079, bcdDevice= 0.06
[ 1224.240745] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1224.240750] usb 1-2: Product: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
[ 1224.240753] usb 1-2: Manufacturer: Sierra Wireless, Incorporated
[ 1224.240757] usb 1-2: SerialNumber: LF62957506021014
[ 1224.247935] qcserial 1-2:1.0: Qualcomm USB modem converter detected
[ 1224.248032] usb 1-2: Qualcomm USB modem converter now attached to ttyUSB0
[ 1224.248496] qcserial 1-2:1.2: Qualcomm USB modem converter detected
[ 1224.248597] usb 1-2: Qualcomm USB modem converter now attached to ttyUSB1
[ 1224.249076] qcserial 1-2:1.3: Qualcomm USB modem converter detected
[ 1224.249180] usb 1-2: Qualcomm USB modem converter now attached to ttyUSB2
[ 1224.271148] cdc_mbim 1-2:1.12: cdc-wdm0: USB WDM device
[ 1224.271366] cdc_mbim 1-2:1.12 wwan0: register 'cdc_mbim' at usb-0000:00:14.0-2, CDC MBIM, 6a:7d:82:89:28:28
[ 1224.332605] cdc_mbim 1-2:1.12 wwp0s20f0u2i12: renamed from wwan0

Außerdem enthält das Modem auch GPS, was ich aber noch nicht ausprobiert habe.

LTE-Modems

Die heutigen Modems sind moderne, fortschrittliche Geräte, die viel mehr und besser können als die alten Geräte. Aber es ist immer noch möglich, mit ihnen über sogenannte AT-Befehle zu kommunizieren. AT-Befehle sind eine Möglichkeit, Modems oder andere Geräte, die über eine serielle Verbindung kommunizieren, zu steuern und zu konfigurieren.

Auch das Modem EM7455 lässt sich über AT-Befehle konfigurieren, so dass es möglich ist, seine Konfiguration zu lesen und zu ändern. Da es sich jedoch um ein modernes Gerät handelt, sind auch andere Methoden möglich, und man muss damit vertraut sein, um zu wissen, was man tut. Und das ist einer der Gründe, warum dieser Artikel mit einer Anleitung zur Verwendung eines modernen LTE-Modems geschrieben wurde.

Moderne Modems, einschließlich des Modems EM7455, ermöglichen die Kommunikation über das QMI-Protokoll oder MBIM Für diese Kommunikation werden unter Linux die mbimcli qmicli Dienstprogramme verwendet, die installiert werden müssen. In der Mageia-Distribution das Paket urpmi libqmi-utils.

Folien des Vortrags QMI, MBIM moderne Modems in Linux - Ich empfehle zu lesen! Es gibt visuelle Darstellungen der verschiedenen Technologien und der Schichten und wie sie miteinander kommunizieren.

Erste Kommunikation mit Modems

Um herauszufinden, in welchem Zustand sich das Modem befindet, verwenden Sie den Befehl:

qmicli -d /dev/cdc-wdm0 --dms-swi-get-usb-composition
[/dev/cdc-wdm0] Successfully retrieved USB compositions:
            USB composition 6: DM, NMEA, AT, QMI
        [*] USB composition 8: DM, NMEA, AT, MBIM
            USB composition 9: MBIM
Wie Sie sehen, kann sich das Modem auch in einem Zustand befinden, in dem es nur im MBIM-Modus kommuniziert.

Die Optionen mit "DM, NMEA, AT" bedeuten, dass das Modem gleichzeitig drei virtuelle serielle USB-Leitungen für die Kommunikation erstellt: Diagnostik, GPS und AT-Befehle.

/dev/ttyUSB0 - Anschluss für die Diagnoseüberwachung (DM)
/dev/ttyUSB1 = GPS-NMEA-Anschluss
/dev/ttyUSB2 - AT-Befehle

Das Modemgerät im System wird durch die folgende Datei dargestellt: /dev/cdc-wdm0

Ich konnte die Kommunikation mit QMI nicht zum Laufen bringen, daher verwende ich in Zukunft MBIM. Ich verwende den Status einschließlich serielle Leitungen für GPS und AT-Befehle.
Die Umschaltung zwischen diesen Zuständen erfolgt per Befehl:

qmicli -d /dev/cdc-wdm0 --dms-swi-set-usb-composition=6
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=reset
Und nach dem Neustart des Modems kommuniziert es bereits auf eine andere Art und Weise und die oben genannten seriellen Schnittstellen sind (nicht) im System sichtbar.

Für detaillierte Informationen über das Modem verwenden Sie den Befehl:

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

Vor dem Firmware-Upgrade sah die Informationsliste wie folgt aus:

[24 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< Header:
<<<<<<   length      = 48
<<<<<<   type        = command (0x00000003)
<<<<<<   transaction = 2
<<<<<< Fragment header:
<<<<<<   total   = 1
<<<<<<   current = 0
<<<<<< Contents:
<<<<<<   service = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
<<<<<<   cid     = 'device-caps' (0x00000001)
<<<<<<   type    = 'query' (0x00000000)

[24 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 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 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> Header:
>>>>>>   length      = 196
>>>>>>   type        = command-done (0x80000003)
>>>>>>   transaction = 2
>>>>>> Fragment header:
>>>>>>   total   = 1
>>>>>>   current = 0
>>>>>> Contents:
>>>>>>   status error = 'None' (0x00000000)
>>>>>>   service      = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
>>>>>>   cid          = 'device-caps' (0x00000001)
>>>>>> Fields:
>>>>>>   DeviceType = 'remote'
>>>>>>   CellularClass = 'gsm'
>>>>>>   VoiceClass = 'no-voice'
>>>>>>   SimClass = 'removable'
>>>>>>   DataClass = 'umts, hsdpa, hsupa, lte'
>>>>>>   SmsCaps = 'pdu-receive, pdu-send'
>>>>>>   ControlCaps = 'reg-manual'
>>>>>>   MaxSessions = '8'
>>>>>>   CustomDataClass = '(null)'
>>>>>>   DeviceId = '014582001839910'
>>>>>>   FirmwareInfo = 'SWI9X30C_02.24.05.06'
>>>>>>   HardwareInfo = 'EM7455'

[/dev/cdc-wdm0] Device capabilities retrieved:
Device type: 'remote'
Cellular class: 'gsm'
Voice class: 'no-voice'
SIM class: 'removable'
Data class: 'umts, hsdpa, hsupa, lte'
SMS caps: 'pdu-receive, pdu-send'
Ctrl caps: 'reg-manual'
Max sessions: '8'
Custom data class: 'unknown'
Device ID: '014582001839910'
Firmware info: 'SWI9X30C_02.24.05.06'
Hardware info: 'EM7455'
[24 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 12
<<<<<<   data   = 02:00:00:00:0C:00:00:00:03:00:00:00

[24 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< Header:
<<<<<<   length      = 12
<<<<<<   type        = close (0x00000002)
<<<<<<   transaction = 3

[24 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 16
>>>>>>   data   = 02:00:00:80:10:00:00:00:03:00:00:00:00:00:00:00

[24 kvě 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] channel destroyed
[24 kvě 2020, 16:58:42] [Debug] Device closed

Firmware-Upgrade

Laut Internet gab es anfangs Modems mit alter Firmware, die problematisch war, so dass ein Firmware-Upgrade notwendig war. Ich aktualisiere die Firmware bei allen Geräten sofort, also habe ich auch hier ein Firmware-Update gemacht.
Ich habe mich dabei an hier orientiert: ThinkPad EM7455 flash firmware guide.

Im Modem können verschiedene Firmware-Versionen geladen sein. Die Auflistung der Informationen, welche Firmware im Modem geladen ist und welche Firmware verwendet wird, kann mit den Befehlen durchgeführt werden:

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

Firmware-Flash

Adresse, unter der Sie die Firmware für das LTE-Modem EM7455 herunterladen können

Wechseln Sie in das Verzeichnis der Firmware-Daten und flashen Sie die Firmware mit folgendem Befehl:

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

Auflistung des Flash-Fortschritts:

[root@FreeTux SWI9X30C_02.33.03.00_Sierra_001.023_000]#  qmi-firmware-update -d 1199 -u *.cwe *.nvu
loading device information before the update...
setting firmware preference:
firmware version: '02.33.03.00'
config version:   '001.023_000'
carrier:          'SIERRA'
rebooting in download mode...
download mode detected
downloading cwe image: SWI9X30C_02.33.03.00.cwe (64,4 MB)...
finalizing download... (may take more than one minute, be patient)
successfully downloaded in 73,60s (875,4 kB/s)
downloading cwe image: SWI9X30C_02.33.03.00_SIERRA_001.023_000.nvu (3,4 kB)...
finalizing download... (may take more than one minute, be patient)
successfully downloaded in 0,05s (63,4 kB/s)
rebooting in normal mode...
normal mode detected

------------------------------------------------------------------------
NOTE: in order to validate which is the firmware running in the
module, the program will wait for a complete boot; this process
may take some time and several retries.
------------------------------------------------------------------------

waiting some time for the device to boot...
loading device information after the update (1/12)...

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

original firmware revision was:
SWI9X30C_02.24.05.06 r7040 CARMD-EV-FRMWR2 2017/05/19 06:23:09
original running firmware details:
Model: EM7455
Boot version: SWI9X30C_02.24.05.06
AMSS version: SWI9X30C_02.24.05.06
SKU ID: 1102782
Carrier ID: 1
Config version: 002.026_000
original firmware preference details:
image 'modem': unique id '002.026_000', build id '02.24.05.06_GENERIC'
image 'pri': unique id '002.026_000', build id '02.24.05.06_GENERIC'

new firmware revision is:
SWI9X30C_02.33.03.00 r8209 CARMD-EV-FRMWR2 2019/08/28 20:59:30
new running firmware details:
Model: EM7455
Boot version: SWI9X30C_02.33.03.00
AMSS version: SWI9X30C_02.33.03.00
SKU ID: 1102782
Carrier ID: 182
Config version: 001.023_000
new firmware preference details:
image 'modem': unique id '001.023_000', build id '02.33.03.00_SIERRA'
image 'pri': unique id '001.023_000', build id '02.33.03.00_SIERRA'

NOTE: this device supports stored image management
with qmicli operations:
--dms-list-stored-images
--dms-select-stored-image
--dms-delete-stored-image

NOTE: this device supports firmware preference management
with qmicli operations:
--dms-get-firmware-preference
--dms-set-firmware-preference

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

firmware update operation finished successfully
==========================

Auflistung der Firmware-Informationen nach dem Upgrade:

[13 čen 2020, 10:19:29] [Debug] opening device...
[13 čen 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Queried max control message size: 4096
[13 čen 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 16
<<<<<<   data   = 01:00:00:00:10:00:00:00:01:00:00:00:00:10:00:00

[13 čen 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< Header:
<<<<<<   length      = 16
<<<<<<   type        = open (0x00000001)
<<<<<<   transaction = 1
<<<<<< Contents:
<<<<<<   max control transfer = 4096

[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 16
>>>>>>   data   = 01:00:00:80:10:00:00:00:01:00:00:00:00:00:00:00

[13 čen 2020, 10:19:32] [Debug] MBIM Device at '/dev/cdc-wdm0' ready
[13 čen 2020, 10:19:32] [Debug] Asynchronously querying device capabilities...
[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 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 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< Header:
<<<<<<   length      = 48
<<<<<<   type        = command (0x00000003)
<<<<<<   transaction = 2
<<<<<< Fragment header:
<<<<<<   total   = 1
<<<<<<   current = 0
<<<<<< Contents:
<<<<<<   service = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
<<<<<<   cid     = 'device-caps' (0x00000001)
<<<<<<   type    = 'query' (0x00000000)

[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 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 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> Header:
>>>>>>   length      = 196
>>>>>>   type        = command-done (0x80000003)
>>>>>>   transaction = 2
>>>>>> Fragment header:
>>>>>>   total   = 1
>>>>>>   current = 0
>>>>>> Contents:
>>>>>>   status error = 'None' (0x00000000)
>>>>>>   service      = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
>>>>>>   cid          = 'device-caps' (0x00000001)
>>>>>> Fields:
>>>>>>   DeviceType = 'remote'
>>>>>>   CellularClass = 'gsm'
>>>>>>   VoiceClass = 'no-voice'
>>>>>>   SimClass = 'removable'
>>>>>>   DataClass = 'umts, hsdpa, hsupa, lte'
>>>>>>   SmsCaps = 'pdu-receive, pdu-send'
>>>>>>   ControlCaps = 'reg-manual'
>>>>>>   MaxSessions = '8'
>>>>>>   CustomDataClass = '(null)'
>>>>>>   DeviceId = '014582001839910'
>>>>>>   FirmwareInfo = 'SWI9X30C_02.33.03.00'
>>>>>>   HardwareInfo = 'EM7455'

[/dev/cdc-wdm0] Device capabilities retrieved:
              Device type: 'remote'
           Cellular class: 'gsm'
              Voice class: 'no-voice'
                SIM class: 'removable'
               Data class: 'umts, hsdpa, hsupa, lte'
                 SMS caps: 'pdu-receive, pdu-send'
                Ctrl caps: 'reg-manual'
             Max sessions: '8'
        Custom data class: 'unknown'
                Device ID: '014582001839910'
            Firmware info: 'SWI9X30C_02.33.03.00'
            Hardware info: 'EM7455'
[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 12
<<<<<<   data   = 02:00:00:00:0C:00:00:00:03:00:00:00

[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< Header:
<<<<<<   length      = 12
<<<<<<   type        = close (0x00000002)
<<<<<<   transaction = 3

[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 16
>>>>>>   data   = 02:00:00:80:10:00:00:00:03:00:00:00:00:00:00:00

[13 čen 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] channel destroyed
[13 čen 2020, 10:19:32] [Debug] Device closed

Firmware-Auswahl

Die Auswahl der zu verwendenden Firmware kann mit dem Befehl z.B. vorgenommen werden:

qmicli -d /dev/cdc-wdm0 --dms-select-stored-image=modem3,pri1
Es kommt darauf an, unter welcher Nummer die Firmware im Modem gespeichert ist. Die Firmware kann auch aus dem Modem gelöscht werden, siehe die Dokumentation in den Links.

PIN

Über die Konsole ist es auch möglich, die PIN der SIM-Karte einzugeben und zu setzen usw. Ich habe es allerdings nicht persönlich ausprobiert. Der Befehl zum Abrufen des PIN-Status:

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

Systemeinrichtung für ein funktionierendes EM7455-Modem

Da das Gerät in verschiedenen Modi betrieben werden kann und man mit ihm mit verschiedenen Dienstprogrammen kommunizieren kann und es verschiedene Kommunikations Peripheriegeräte (serielle Leitung und AT-Befehle gegenüber dem Gerät) und verschiedene Kommunikationsprotokolle hat, war ich sehr verwirrt. Jetzt haben Sie einen Überblick darüber, was das Modem ermöglicht.
Sie brauchen keine AT-Befehle zu verwenden, damit es überhaupt funktioniert. Sie müssen nur das Gerät im MBIM-Modus haben und das gegebene Dienstprogramm.
Ein weiteres Problem war, dass, obwohl Mageia das Netzwerk-Applet verwendet, im Hintergrund ein Netzwerkmanager lief, den das Modem benutzte, und so blockierte das Modem die Kommunikation mit mir oder reagierte sehr langsam. Also deaktivierte ich den Netzwerkmanager und plötzlich reagierte das Modem schnell.

Da ich keinen Proxy zur Kommunikation mit dem Modem verwende, muss ich die Dienstprogramme ohne diesen Parameter aufrufen -p!

EM7455 online

Dieses Handbuch beschreibt die Einstellungen, wenn das Modem mit dem MBIM Protokoll kommuniziert. Daher habe ich das Modem auf diesen Modus (in diesem Fall Modus #8) eingestellt. Und diese Einstellung bleibt auch nach einem Neustart des Modems oder Laptops erhalten.

Um herauszufinden, ob das Modem EIN oder AUS ist, verwenden Sie den Befehl:

qmicli -p -d /dev/cdc-wdm0 --dms-get-operating-mode
Nachdem Sie die meisten Einstellungen geändert haben, müssen Sie das Modem neu starten (Reset läuft). Befehle zum Ändern des Modemstatus und zum Zurücksetzen:
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

Das Modem muss in den Onlinemodus geschaltet werden - was das Konfigurations-/Verbindungsskript automatisch tut. Aber es gibt ein Problem, dass nach dem Neustart des Modems/Laptops beim Versuch, in den Online-Status zu wechseln, das Modem eine Fehlermeldung ausgibt:

couldn't set operating mode: QMI protocol error (60):

EM7455 muss einen speziellen Befehl FCC_AUTH senden
Um den Befehl einzugeben:
qmicli -d /dev/cdc-wdm0 --dms-set-fcc-authentication
Dies muss nach jedem Neustart des Laptops durchgeführt werden, um das Modem neu zu starten, bevor es sich mit dem Mobilfunknetz verbindet!

Verbindungseinstellungen

Ich habe Vodafone mobiles Internet, also richte ich meine Anmeldedaten ein siehe unten. Ich habe eine Konfigurationsdatei /etc/qmi-network.conf und schrieb dort hinein:

APN=internet
Natürlich kann man dort auch andere Konfigurationsoptionen reinschreiben, zum Beispiel user und sein Passwort.

Es gibt viele Optionen, wie man die Verbindung zum LTE-Netz startet und wie man das Gerät und das Netz konfiguriert, und das kann man auch manuell machen. Ich habe jedoch nach vielen Versuchen ein bestehendes Skript verankert, das vorhandene Tools aufruft und die IP Netzwerkkonfiguration aus den empfangenen Daten des Netzbetreibers einrichtet, einschließlich der DNS Einstellungen. Ich verwende einen modifizierten Fork des Skripts, das das EM7455-Modem mit dem LTE verbindet und das Netzwerk konfiguriert.

Das Skript ruft tatsächlich

mbim-network /dev/cdc-wdm0 start
Man kann den Verbindungsstatus mit dem Befehl überprüfen:
mbim-network /dev/cdc-wdm0 status
Das Skript erhält dann Informationen über die Verbindung und die Einrichtung des Netzes, einschließlich der IP. Das Modem erhält diese Informationen vom Betreiber, nachdem die Verbindung hergestellt wurde. Sie können diese Informationen manuell mit einem Befehl auslesen, und derselbe Befehl ruft das vorbereitete Skript auf:
mbimcli -d /dev/cdc-wdm0 --query-ip-configuration --no-open=11 --no-close
Das Skript parst diese Netzwerkkonfigurationsdaten und setzt die IP-Adressen der Netzwerkschnittstellen und die DNS-Server. Und Mobiles Internet funktioniert plötzlich. Der Benutzer kann nun alles mit dem Befehl ausführen:
lte_start
Um das mobile Internet abzuschalten, lautet der Befehl:
lte_stop
Diese Skripte befinden sich im angegebenen Unterverzeichnis des GIT-Repositorys ./usr/local/bin/.

AT-Befehle

Um sich mit der seriellen Konsole des Modems zu verbinden, verwenden Sie den folgenden Befehl:

screen /dev/ttyUSB2 115200

Mit AT-Befehlen können Sie Modemparameter bearbeiten, das Modem zurücksetzen, seine Identifikation als USB-Gerät bearbeiten usw.
Die Eingabe von Befehlen kann wie folgt aussehen:

ATE1
AT!ENTERCND="A710"
AT!CUSTOM?
AT!CUSTOM="FASTENUMEN",2
AT!CUSTOM="FASTENUMEN",0
AT!PCOFFEN?
AT!PCOFFEN=2
AT!RESET
Für die Konfiguration, die Vernetzung und den mobilen Internetzugang werden AT-Befehle jedoch nicht benötigt, Wie man AT-Befehle verwendet und welche Befehle möglich sind, erfahren Sie unter den Links am Ende dieses Artikels.

QMI

Diese Kommunikation habe ich nicht erfolgreich zum Laufen gebracht, daher gehe ich nicht näher darauf ein. Es gibt ähnliche Dienstprogramme für QMI: qmi-network, qmicli usw...

rfkill

Wie jedes Notebook bietet auch das ThinkPad X1 Carbon die Möglichkeit, Peripheriegeräte per Software abzuschalten. Zu diesem Zweck wird das rfkill Dienstprogramm verwendet.

Verwenden Sie den folgenden Befehl, um die verfügbaren Geräte aufzulisten und Gerät 1 zu deaktivieren.

rfkill list all
rfkill unblock 1

Netzwerk-Manager

Ich habe auch NetworkManager eine Zeit lang ausprobiert. Dafür gibt es ein Konsolenprogramm namens mmcli.
Es können zum Beispiel folgende Befehle verwendet werden:

mmcli -L
mmcli -m 0

systemctl status ModemManager
systemctl status NetworkManager

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

# passt nur nach Ausführung von NetworkManager
mmcli -m 0 --create-bearer="apn=internet"

mmcli -m 0 --simple-disconnect

mmcli -m 0 -b 0 -c

Auflistung
mmcli -m 0 -b 0
Ich werde jedoch nicht auf deren Funktionalität eingehen, siehe Dokumentation.

Nach dem Protokoll usw. scheint es, dass man sich auch damit verbinden kann, aber auch dann muss man die Netzwerkschnittstelle konfigurieren.
View log dump:

journalctl --follow -u ModemManager -u NetworkManager
Es gelang mir, einen Zustand zu erreichen, in dem das Protokoll anzeigte, dass die Verbindung online war und auf welche IP-Werte das Netzwerk manuell eingestellt werden sollte.
kvě 30 20:01:15 FreeTux ModemManager[6279]: Address: 10.183.56.65/30
kvě 30 20:01:15 FreeTux ModemManager[6279]: Gateway: 10.183.56.66
kvě 30 20:01:15 FreeTux ModemManager[6279]: DNS #1: 217.77.165.211
kvě 30 20:01:15 FreeTux ModemManager[6279]: DNS #2: 217.77.165.81
kvě 30 20:01:15 FreeTux ModemManager[6279]: MTU: 1500

NetworkManager unterstützt auch GPS. Siehe die folgenden Befehle:

mmcli -m 1 --location-status
mmcli -m 1 --location-enable-gps-nmea
Auch hier gilt, dass weitere Details in der Dokumentation zu finden sind.

Network Manager scheint sowohl QMI als auch MBIM zu unterstützen. Ich habe dies jedoch nicht weiter untersucht und siehe die Dokumentation für weitere Details!

Wie deaktiviert man den NetworkManager in der Mageia-Distribution.

Batterie

Um eine unnötige Abnutzung des Akkus zu vermeiden, unterstützt das Notebook ein intelligentes Akkulademanagement. Weitere Informationen und Links finden Sie unter ThinkPad Wiki Akku.

Ich verwende die Mageia-Distribution, daher wird die Anleitung hauptsächlich für diese gelten. Zuerst kompiliere ich das Modul acpi_call. Nachdem ich es gebootet habe, kann ich die Entladung und Aufladung der Batterie durch das Skript tpbat-utils-acpi steuern.

Das Skript und das Modul werden aber gar nicht benötigt. Installieren Sie einfach das tlp-Dienstprogramm aus dem tlp-Paket. Damit wird ein Daemon installiert, der es erlaubt, die Energieverwaltung der Peripheriegeräte, einschließlich der Batterie, zu konfigurieren.
Verwenden Sie den folgenden Befehl, um den aktuellen Batteriestatus aufzulisten:

tlp-stat -b
Die Ausgabe könnte zum Beispiel so aussehen:
--- TLP 1.2.2 --------------------------------------------

+++ Battery Features: Charge Thresholds and Recalibrate
natacpi    = active (data, thresholds)
tpacpi-bat = inactive (kernel module 'acpi_call' not installed)
tp-smapi   = inactive (ThinkPad not supported)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = SMP
/sys/class/power_supply/BAT0/model_name                     = 00HW029
/sys/class/power_supply/BAT0/cycle_count                    = (not supported)
/sys/class/power_supply/BAT0/energy_full_design             =  52060 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  46360 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  30520 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Unknown (threshold effective)

/sys/class/power_supply/BAT0/charge_start_threshold         =     60 [%]
/sys/class/power_supply/BAT0/charge_stop_threshold          =     80 [%]

Charge                                                      =   65.8 [%]
Capacity                                                    =   89.1 [%]

+++ Recommendations
* Install acpi_call kernel module for ThinkPad battery recalibration
Das Programm tlp hat die Konfiguration in der Datei: /etc/default/tlp, wo man einfach die Zeilen auskommentiert, um die Entladung und Ladung der Batterie einzustellen:
START_CHARGE_THRESH_BAT0=55
STOP_CHARGE_THRESH_BAT0=80
und geben Sie ihm optional einen Wert Ihrer Wahl. Sie können den Wert manuell abrufen oder ihn durch Schreiben in Dateien festlegen:
/sys/class/power_supply/BAT0/charge_start_threshold
/sys/class/power_supply/BAT0/charge_stop_threshold

Mehr

Es gibt nur eine Sache, die mich bisher an dem Thinkpad X1 Carbon gestört hat: Bei der Wiedergabe von Videos flimmerte das Bild. Das Anpassen der Compositor-Einstellungen hat geholfen. In den KDE-Einstellungen habe ich das Rendering von opengl auf xrandr geändert.

Links

Skript, das EM7455 Modem eine Verbindung zum Internet herstellt
Folien: QMI, MBIM moderne Modems in Linux
ThinkPad EM7455 Flash-Firmware.
Firmware für das EM7455 LTE-Modem herunterladen

Ressourcen

Github-Repository und Informationen zur Modemeinrichtung Sierra
mbimcli
mbim-network
how-to-set-up-a-simple-data-connection-over-the-mbim-interface-using-libmbim-and-driver-cdc-mbim-in-linux
AT EM7455-Befehle und Modem

Weitere interessante Links

3g-4g-modems raspberry-pi-sierra-wireless-mc7304-modem-qmi-interface-setup
Das Skript swi_setusbcomp.pl, das binär mit dem Modem kommuniziert
ThinkPad X220 Skript, das das Modem einrichtet
Sierra EM7455 Modem und NetworkManager

Artikel zu einem ähnlichen Thema

Kubernetes
SAP HANA Datenbank
Befehl AT
Docker build multiarch image
VMware vs. Proxmox: Leistungsvergleich
GitLab CI/CD: Testautomatisierung und Anwendungsbereitstellung
VPS von VMware zu Proxmox migrieren
VMware-Lizenzierungsänderung
Ausführen von Microsoft SQL Server unter Linux
Sicherung: der Proxmox Backup Server
Linux als Router und Firewall
Hochladen eines Docker-Images in die Docker-Registry
Linux: Verwaltung logischer Datenträger
Linux-Software-RAID
Ausführen einer Webanwendung hinter einem Proxy
Migration von Postfächern
Mehrstufige Docker-Erstellung
Sichern Ihrer Daten durch Einschalten des Computers
Podman
Importieren von Windows in die Proxmox-Virtualisierung
Docker und PHP-Mail
Proxmox-Virtualisierung
Docker und Cron
Yocto-Projekt: Erstellen eines eigenen Betriebssystems für eingebettete Geräte
Vorbereiten eines Linux-Servers für die Ausführung einer Webanwendung in Python
Wie man eine schlechte Dateifreigabeleistung in Docker behebt
Wie man Docker richtig einsetzt
Installation von Linux auf einem dedizierten HPE ProLiant DL320e Server
Wie man eine Webanwendung einem Belastungstest unterzieht
Warum das JFS-Dateisystem verwenden
Booten von einer 4TB-Festplatte mit GTP unter UEFI
Wie installiert man das Betriebssystem Mageia Linux ohne DVD-Laufwerk
Btrfs-Dateisystem
Raspberry PI
Wie man die Fernwiedergabe über das Netzwerk auf einem DLNA-Fernseher einrichtet
Mandriva Linux im laufenden Betrieb aktualisieren
WINE - Ausführen von Windous Programmen unter Linux
GNU/Linux-Betriebssystem

Newsletter

Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben News-Abonnement.


+