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.

Ich habe mir 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 Gerät 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-Verbindung getrennt, Gerät Nummer 2
[ 1216.502950] qcserial ttyUSB0: Qualcomm USB-Modem-Konverter jetzt von ttyUSB0 getrennt
[ 1216.502981] qcserial 1-2:1.0: Gerät getrennt
[ 1216.503078] qcserial ttyUSB1: Qualcomm USB-Modem-Konverter ist jetzt von ttyUSB1 getrennt
[ 1216.503091] qcserial 1-2:1.2: Gerät nicht angeschlossen
[ 1216.503582] qcserial ttyUSB2: Qualcomm USB-Modem-Konverter ist jetzt von ttyUSB2 getrennt
[ 1216.503592] qcserial 1-2:1.3: Gerät getrennt
[ 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: neues Hochgeschwindigkeits-USB-Gerät Nummer 6 mit xhci_hcd
[ 1224.240134] usb 1-2: config 1 hat eine ungültige Schnittstellennummer: 12 aber max ist 4
[ 1224.240148] usb 1-2: config 1 hat eine ungültige Schnittstellennummer: 13, aber max ist 4
[ 1224.240152] usb 1-2: config 1 hat eine ungültige Schnittstellennummer: 13, aber max ist 4
[ 1224.240156] usb 1-2: config 1 hat keine Schnittstellennummer 1
[ 1224.240158] usb 1-2: config 1 hat keine Schnittstellennummer 4
[ 1224.240739] usb 1-2: Neues USB-Gerät gefunden, idVendor=1199, idProduct=9079, bcdDevice= 0.06
[ 1224.240745] usb 1-2: Neue USB-Gerätestrings: Mfr=1, Product=2, SerialNumber=3
[ 1224.240750] usb 1-2: Produkt: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
[ 1224.240753] usb 1-2: Hersteller: Sierra Wireless, Incorporated
[ 1224.240757] usb 1-2: SerienNummer: LF62957506021014
[ 1224.247935] qcserial 1-2:1.0: Qualcomm USB-Modem-Konverter erkannt
[ 1224.248032] usb 1-2: Qualcomm USB-Modem-Konverter jetzt an ttyUSB0 angeschlossen
[ 1224.248496] qcserial 1-2:1.2: Qualcomm USB-Modem-Konverter erkannt
[ 1224.248597] usb 1-2: Qualcomm USB-Modem-Konverter ist jetzt an ttyUSB1 angeschlossen
[ 1224.249076] qcserial 1-2:1.3: Qualcomm USB-Modem-Konverter erkannt
[ 1224.249180] usb 1-2: Qualcomm USB-Modem-Konverter ist jetzt an ttyUSB2 angeschlossen
[ 1224.271148] cdc_mbim 1-2:1.12: cdc-wdm0: USB WDM Gerät
[ 1224.271366] cdc_mbim 1-2:1.12 wwan0: Register 'cdc_mbim' auf usb-0000:00:14.0-2, CDC MBIM, 6a:7d:82:89:28:28
[ 1224.332605] cdc_mbim 1-2:1.12 wwp0s20f0u2i12: umbenannt von 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] USB-Zusammensetzungen erfolgreich abgerufen:
            USB-Komposition 6: DM, NMEA, AT, QMI
        [USB-Zusammensetzung 8: DM, NMEA, AT, MBIM
            USB-Zusammensetzung 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 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht (übersetzt)...
<<<<<< Header:
<<<<<< Länge = 48
<<<<<< Typ = Befehl (0x00000003)
<<<<<< Transaktion = 2
<<<<<< Fragment-Kopfzeile:
<<<<<< gesamt = 1
<<<<<< aktuell = 0
<<<<<< Inhalt:
<<<<<< service = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
<<<<<< cid = 'device-caps' (0x00000001)
<<<<<< typ = 'abfrage' (0x00000000)

[24 Mai 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Empfangene Nachricht...
>>>>>> RAW:
>>>>>> Länge = 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] Empfangene Nachricht (übersetzt)...
>>>>>> Header:
>>>>>> Länge = 196
>>>>>> Typ = Befehl-fertig (0x80000003)
>>>>>> Transaktion = 2
>>>>>> Fragment-Kopfzeile:
>>>>>> gesamt = 1
>>>>>> aktuell = 0
>>>>>> Inhalt:
>>>>>> status error = 'Keine' (0x00000000)
>>>>>> dienst = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
>>>>>> cid = 'geräte-kappen' (0x00000001)
>>>>>> Felder:
>>>>>> DeviceType = 'remote'
>>>>>> CellularClass = 'gsm'
>>>>>> VoiceClass = 'no-voice'
>>>>>> SimClass = 'abnehmbar'
>>>>>> DataClass = 'umts, hsdpa, hsupa, lte'
>>>>>> SmsCaps = 'pdu-empfangen, pdu-senden'
>>>>>> ControlCaps = 'reg-manuell'
>>>>>> MaxSessions = '8'
>>>>>> CustomDataClass = '(null)'
>>>>>> GeräteId = '014582001839910'
>>>>>> FirmwareInfo = 'SWI9X30C_02.24.05.06'
>>>>>> HardwareInfo = 'EM7455'

[/dev/cdc-wdm0] Geräteeigenschaften abgerufen:
Gerätetyp: 'remote'
Mobilfunkklasse: 'gsm'
Sprachklasse: 'no-voice'
SIM-Klasse: 'herausnehmbar'
Datenklasse: 'umts, hsdpa, hsupa, lte'
SMS-Hauben: 'pdu-empfangen, pdu-senden'
Strg-Kappen: 'reg-manuell'
Maximale Sitzungen: '8
Benutzerdefinierte Datenklasse: 'unbekannt'
Geräte-ID: '014582001839910'
Firmware-Informationen: 'SWI9X30C_02.24.05.06'
Hardware-Infos: 'EM7455'
[24 Mai 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht...
<<<<<< RAW:
<<<<<< length=12
<<<<<< Daten = 02:00:00:0C:00:00:00:00:00:03:00:00:00

[24 May 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht (übersetzt)...
<<<<<< Header:
<<<<<< Länge = 12
<<<<<< Typ = schließen (0x00000002)
<<<<<< Transaktion = 3

[24 Mai 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Empfangene Nachricht...
>>>>>> RAW:
>>>>>> Länge = 16
>>>>>> Daten = 02:00:00:80:10:00:00:00:00:03:00:00:00:00:00:00:00:00

[24. Mai 2020, 16:58:42] [Debug] [/dev/cdc-wdm0] Kanal zerstört
[24. Mai 2020, 16:58:42] [Debug] [Gerät geschlossen

Upgade-Firmware

Laut Internet gab es anfangs Modems mit alter Firmware, die problematisch war, so dass ein Upgrade notwendig war Firmware-Upgrade. 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 Fortschritts der Fälschung:

[root@FreeTux SWI9X30C_02.33.03.00_Sierra_001.023_000]# qmi-firmware-update -d 1199 -u *.cwe *.nvu
Laden der Geräteinformationen vor dem Update...
Einstellen der Firmware-Präferenz:
Firmware-Version: '02.33.03.00'
Konfigurationsversion: '001.023_000'
Träger: 'SIERRA'
Neustart im Download-Modus...
Download-Modus erkannt
Herunterladen des cwe-Images: SWI9X30C_02.33.03.00.cwe (64,4 MB)...
Abschluss des Downloads... (kann mehr als eine Minute dauern, haben Sie Geduld)
erfolgreich heruntergeladen in 73,60s (875,4 kB/s)
cwe-Bild herunterladen: SWI9X30C_02.33.03.00_SIERRA_001.023_000.nvu (3,4 kB)...
Abschluss des Downloads... (kann mehr als eine Minute dauern, haben Sie Geduld)
erfolgreich heruntergeladen in 0,05s (63,4 kB/s)
Neustart im normalen Modus...
Normaler Modus erkannt

------------------------------------------------------------------------
HINWEIS: Um zu überprüfen, welche Firmware auf dem Modul läuft
Modul läuft, wartet das Programm auf einen vollständigen Bootvorgang; dieser
kann einige Zeit dauern und mehrere Wiederholungen erfordern.
------------------------------------------------------------------------

einige Zeit warten, bis das Gerät hochgefahren ist...
Laden der Geräteinformationen nach der Aktualisierung (1/12)...

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

Die ursprüngliche Firmware-Revision war:
SWI9X30C_02.24.05.06 r7040 CARMD-EV-FRMWR2 2017/05/19 06:23:09
Details zur ursprünglichen laufenden Firmware:
Modell: EM7455
Boot-Version: SWI9X30C_02.24.05.06
AMSS-Version: SWI9X30C_02.24.05.06
SKU-ID: 1102782
Träger-ID: 1
Konfig-Version: 002.026_000
Einzelheiten zu den ursprünglichen Firmware-Einstellungen:
image 'modem': eindeutige ID '002.026_000', Build-ID '02.24.05.06_GENERIC'
Bild 'pri': eindeutige Kennung '002.026_000', Build-Nummer '02.24.05.06_GENERIC'

Die neue Firmware-Revision lautet:
SWI9X30C_02.33.03.00 r8209 CARMD-EV-FRMWR2 2019/08/28 20:59:30
neue laufende Firmware Details:
Modell: EM7455
Boot-Version: SWI9X30C_02.33.03.00
AMSS-Version: SWI9X30C_02.33.03.00
SKU-ID: 1102782
Träger-ID: 182
Konfig-Version: 001.023_000
Details zur neuen Firmware-Einstellung:
image 'modem': eindeutige ID '001.023_000', Build-ID '02.33.03.00_SIERRA'
Bild 'pri': eindeutige Kennung '001.023_000', Build-Nummer '02.33.03.00_SIERRA'

HINWEIS: Dieses Gerät unterstützt die Verwaltung gespeicherter Bilder
mit qmicli-Operationen:
--dms-list-stored-images
--dms-select-stored-image
--dms-delete-stored-image

HINWEIS: Dieses Gerät unterstützt die Verwaltung von Firmware-Einstellungen
mit qmicli-Operationen:
--dms-get-firmware-preference
--dms-set-firmware-preference

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

Firmware-Aktualisierungsvorgang erfolgreich abgeschlossen
==========================

Auflistung der Firmware-Informationen nach dem Upgrade:

[13 Jun 2020, 10:19:29] [Debug] opening device...
[13 Jun 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Abgefragte maximale Größe der Steuernachricht: 4096
[13 Jun 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht...
<<<<<< RAW:
<<<<<< Länge = 16
<<<<<< Daten = 01:00:00:00:10:00:00:00:01:00:00:00:10:00:00:00:00

[13 Jun 2020, 10:19:29] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht (übersetzt)...
<<<<<< Header:
<<<<<< Länge = 16
<<<<<< Typ = offen (0x00000001)
<<<<<< Transaktion = 1
<<<<<< Inhalt:
<<<<<< max control transfer = 4096

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Empfangene Nachricht...
>>>>>> RAW:
>>>>>> Länge = 16
>>>>>> Daten = 01:00:00:80:10:00:00:00:00:01:00:00:00:00:00:00:00:00

[13 Jun 2020, 10:19:32] [Debug] MBIM Gerät an '/dev/cdc-wdm0' bereit
[13 Jun 2020, 10:19:32] [Debug] Asynchrone Abfrage der Gerätefähigkeiten...
[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht...
<<<<<< RAW:
<<<<<< Länge = 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] Gesendete Nachricht (übersetzt)...
<<<<<< Header:
<<<<<< Länge = 48
<<<<<< Typ = Befehl (0x00000003)
<<<<<< Transaktion = 2
<<<<<< Fragment-Kopfzeile:
<<<<<< gesamt = 1
<<<<<< aktuell = 0
<<<<<< Inhalt:
<<<<<< service = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
<<<<<< cid = 'geräte-kappen' (0x00000001)
<<<<<< typ = 'abfrage' (0x00000000)

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Empfangene Nachricht...
>>>>>> RAW:
>>>>>> Länge = 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] Empfangene Nachricht (übersetzt)...
>>>>>> Header:
>>>>>> Länge = 196
>>>>>> Typ = Befehl-fertig (0x80000003)
>>>>>> Transaktion = 2
>>>>>> Fragment-Kopfzeile:
>>>>>> gesamt = 1
>>>>>> aktuell = 0
>>>>>> Inhalt:
>>>>>> status error = 'Keine' (0x00000000)
>>>>>> dienst = 'basic-connect' (a289cc33-bcb-8b4f-b6b0-133ec2aae6df)
>>>>>> cid = 'geräte-kappen' (0x00000001)
>>>>>> Felder:
>>>>>> DeviceType = 'remote'
>>>>>> CellularClass = 'gsm'
>>>>>> VoiceClass = 'no-voice'
>>>>>> SimClass = 'abnehmbar'
>>>>>> DataClass = 'umts, hsdpa, hsupa, lte'
>>>>>> SmsCaps = 'pdu-empfangen, pdu-senden'
>>>>>> ControlCaps = 'reg-manuell'
>>>>>> MaxSessions = '8'
>>>>>> CustomDataClass = '(null)'
>>>>>> GeräteId = '014582001839910'
>>>>>> FirmwareInfo = 'SWI9X30C_02.33.03.00'
>>>>>> HardwareInfo = 'EM7455'

[/dev/cdc-wdm0] Geräteeigenschaften abgerufen:
              Gerätetyp: 'remote'
           Mobilfunkklasse: 'gsm'
              Sprachklasse: 'no-voice'
                SIM-Klasse: 'herausnehmbar'
               Datenklasse: 'umts, hsdpa, hsupa, lte'
                 SMS-Hauben: 'pdu-empfangen, pdu-senden'
                Strg-Kappen: 'reg-manuell'
             Maximale Sitzungen: '8
        Benutzerdefinierte Datenklasse: 'unbekannt'
                Geräte-ID: '014582001839910'
            Firmware-Informationen: 'SWI9X30C_02.33.03.00'
            Hardware-Informationen: 'EM7455'
[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht...
<<<<<< RAW:
<<<<<< length=12
<<<<<< Daten = 02:00:00:0C:00:00:00:00:00:03:00:00:00

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Gesendete Nachricht (übersetzt)...
<<<<<< Header:
<<<<<< Länge = 12
<<<<<< Typ = schließen (0x00000002)
<<<<<< Transaktion = 3

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Empfangene Nachricht...
>>>>>> RAW:
>>>>>> Länge = 16
>>>>>> Daten = 02:00:00:80:10:00:00:00:00:03:00:00:00:00:00:00:00:00

[13 Jun 2020, 10:19:32] [Debug] [/dev/cdc-wdm0] Kanal zerstört
[13 Jun 2020, 10:19:32] [Debug] [Gerät geschlossen

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 EM7544-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 im Hintergrund laufen ließ 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!

EM7544 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:

could'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 device, etc.
Die Eingabe von Befehlen kann wie folgt aussehen:

ATE1
AT!ENTERCND="A710"
AT!CUSTOM?
AT!CUSTOM="FASTENUMEN",2
AT!CUSTOM="BEFESTIGENUMEN",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

Ich habe diese Mitteilung nicht erfolgreich durchgeführt, 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 NetwokManager 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 NetzwerkManager

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.
May 30 20:01:15 FreeTux ModemManager[6279]: Adresse: 10.183.56.65/30
30. Mai 20:01:15 FreeTux ModemManager[6279]: Gateway: 10.183.56.66
30. Mai 20:01:15 FreeTux ModemManager[6279]: DNS #1: 217.77.165.211
30. Mai 20:01:15 FreeTux ModemManager[6279]: DNS #2: 217.77.165.81
30. Mai 20:01:15 FreeTux ModemManager[6279]: MTU: 1500

NetwokManager 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 von pam könnte zum Beispiel so aussehen:
--- TLP 1.2.2 --------------------------------------------

+++ Batteriefunktionen: Schwellenwerte laden und rekalibrieren
natacpi = aktiv (Daten, Schwellenwerte)
tpacpi-bat = inaktiv (Kernel-Modul 'acpi_call' nicht installiert)
tp-smapi = inaktiv (ThinkPad wird nicht unterstützt)

+++ ThinkPad Batteriestatus: BAT0 (Haupt / Intern)
/sys/class/power_supply/BAT0/Hersteller = SMP
/sys/class/power_supply/BAT0/model_name = 00HW029
/sys/class/power_supply/BAT0/cycle_count = (nicht unterstützt)
/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 = Unbekannt (Schwellenwert wirksam)

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

Ladung = 65.8 [%]
Kapazität = 89.1 [%]

+++ Empfehlungen
* Installieren Sie das Kernelmodul acpi_call für die Rekalibrierung des ThinkPad-Akkus.
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 die Kommunikation mit binär mit dem Modem kommuniziert
ThinkPad X220 Skript, das das Modem einrichtet
Sierra EM7455 Modem und NetworkManager

Artikel zu einem ähnlichen Thema

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
Btrfs-Dateisystem
Raspberry PI
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.


+