P14* P14s WAN 4G-Karte unter Linux zum laufen bringen

mipi

Member
Registriert
3 Jan. 2019
Beiträge
34
Hallo.

Ich habe in einem Thinkpad P14s Gen2 eine Quectel EM 120R-GL Karte für 4G Mobilnetz verbaut. Unter Windows 11 läuft sie, sie wird erkannt und verbindet sich auch, soweit so gut.

Unter Ubuntu 22.04 war sie zunächst auch im Startmenü/Gnome als Mobilfunk-Verbindung zu sehen, schien sich aber nicht zu verbinden. Sie schien aber die Verbindung herzustellen zu versuchen. Leider habe ich nicht rausbekommen, wie ich das debuggen kann. Ich hab auch gar nicht gesehen, wo ich die PIN für die Karte eintragen kann. Jetzt wird sie auch nicht mehr im Menü angezeigt, die Mobilfunk-Verbindung ist ganz raus ...

Ich bin in Linux/Ubuntu mäßig begabt, mit welchen Tools kann ich die Karte suchen und sie evtl. jenseits des Gnome Menüs bedienen?

Gruß Micha
 
Vielen Dank für den Tipp, das scheint der richtige Weg zu sein ... allerdings übersteigt das ein wenig mein Anwender-Dummy-Können. Wenn ich das erwähnte Skript laufen lasse, bekomme ich Fehler-Meldungen:

Code:
pi@mobilP14s:~/lenovo$ ./wwan.run
OK:1 http://de.archive.ubuntu.com/ubuntu jammy InRelease
OK:2 http://de.archive.ubuntu.com/ubuntu jammy-updates InRelease               
OK:3 http://security.ubuntu.com/ubuntu jammy-security InRelease               
OK:4 http://de.archive.ubuntu.com/ubuntu jammy-backports InRelease             
OK:5 https://ppa.launchpadcontent.net/kelebek333/mint-tools/ubuntu jammy InRelease
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
Alle Pakete sind aktuell.
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
gcc ist schon die neueste Version (4:11.2.0-1ubuntu1).
network-manager-gnome ist schon die neueste Version (1.24.0-1ubuntu3).
modemmanager ist schon die neueste Version (1.20.0-1~ubuntu22.04.3).
network-manager ist schon die neueste Version (1.36.6-0ubuntu2).
libqmi-utils ist schon die neueste Version (1.32.0-1ubuntu0.22.04.1).
Das folgende Paket wurde automatisch installiert und wird nicht mehr benötigt:
  nvidia-firmware-535-535.154.05
Verwenden Sie »sudo apt autoremove«, um es zu entfernen.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Snap "lenovo-wwan-dpr" holen
Zusicherungen für "lenovo-wwan-dpr" werden abgerufen
Snap installieren mit:
   snap ack lenovo-wwan-dpr_26.assert
   snap install lenovo-wwan-dpr_26.snap
mount: /home/pi/lenovo/snap: Spezialgerät lenovo-wwan-dpr_13.snap ist nicht vorhanden.
--2024-04-10 07:28:23--  https://gist.githubusercontent.com/joar/416f37fe81558f5be0d5131018eb7f2a/raw/b6a2a83620b044efc2d13aee86910743969218de/fcc-unlock.c
Auflösen des Hostnamens gist.githubusercontent.com (gist.githubusercontent.com) … 185.199.111.133, 185.199.109.133, 185.199.110.133, ...
Verbindungsaufbau zu gist.githubusercontent.com (gist.githubusercontent.com)|185.199.111.133|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 2019 (2,0K) [text/plain]
Wird in ‘fcc-unlock.c’ gespeichert.

fcc-unlock.c        100%[===================>]   1,97K  --.-KB/s    in 0s     

2024-04-10 07:28:23 (30,3 MB/s) - ‘fcc-unlock.c’ gespeichert [2019/2019]

./wwan.run: Zeile 20: 16107 Speicherzugriffsfehler  sudo env VERBOSE=1 ./fcc_unlock_v2
error: couldn't create manager: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 8 matched rules; type="method_call", sender=":1.233" (uid=1000 pid=16111 comm="mmcli -v --modem=0 -e " label="unconfined") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination=":1.23" (uid=0 pid=1059 comm="/usr/sbin/ModemManager " label="unconfined")
pi@mobilP14s:~/lenovo$

Ich habe mal zur vollständigkeit das Skript hier auch angehangen:

Code:
#! /bin/bash
# Download network-manager, modem-manager, etc.,...
sudo apt update
sudo apt install network-manager network-manager-gnome modemmanager libqmi-utils gcc
# Reference: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/402#note_1064882
mkdir -p ~/lenovo/snap
cd ~/lenovo
# Download the snap
snap download lenovo-wwan-dpr --edge
# Extract the snap files
sudo mount -t squashfs -o ro lenovo-wwan-dpr_13.snap /home/$(whoami)/lenovo/snap
# Download script by Joar Wandborg
wget https://gist.githubusercontent.com/joar/416f37fe81558f5be0d5131018eb7f2a/raw/b6a2a83620b044efc2d13aee86910743969218de/fcc-unlock.c
# automatically change the defines in fcc-unlock.c
sed 's@#define MBIM_DEVICE_PATH \(.*\)$@#define MBIM_DEVICE_PATH "/dev/wwan0mbim0"@g' -i fcc-unlock.c
sed "s@#define MBIM2SAR_SO_PATH \(.*\)\$@#define MBIM2SAR_SO_PATH \"/home/$(whoami)/lenovo/snap/usr/lib/mbim2sar.so\"@g" -i fcc-unlock.c
# Compile the script
gcc -o fcc_unlock_v2 fcc-unlock.c
# Run the script
sudo env VERBOSE=1 ./fcc_unlock_v2
# Enable the modem (use mmcli --list-modems to get the modem index - in this case 0)
mmcli -v --modem=0 -e
# Setup the connection, for Google Fi just pick the default T-Mobile profile, ignore their h2g2 APN 
nm-connection-editor &
modem-manager-gui &

Leider wird immer noch kein Gerät im Startmenü von Ubuntu angezeigt, in der Netzwerkkonfiguration ist zumindest schon etwas zu erkennen. Mit nm-connection-editor kan ich nun zumindest meine 4g Verbindung editieren, aber einloggen ist immer noch nicht.

Gruß
 
Der Fehler passiert hier:
Code:
./wwan.run: Zeile 20: 16107 Speicherzugriffsfehler  sudo env VERBOSE=1 ./fcc_unlock_v2

Das ist folgende Zeile im Skript:
Bash:
# Run the script
sudo env VERBOSE=1 ./fcc_unlock_v2

...und damit haben wir ein Problem. Hier wird fcc_unlock_v2 aufgerufen, was wiederum die kompilierte Variante von fcc-unlock.c ist. Der Fehler liegt also offenbar in fcc-unlock.c: https://gist.github.com/joar/416f37fe81558f5be0d5131018eb7f2a#file-fcc-unlock-c Und offenbar tritt der Fehler nicht nur bei dir auf. In deinem verlinkten Thread auch: https://forums.quectel.com/t/em120r-gl-for-linux/9350/8

Die Datei müssten wir jetzt debuggen. Speicherzugriffsfehler klingt nach einem Problem mit einem Pointer. So spontan fällt mir dabei folgende Zeile auf:

C:
#define MBIM2SAR_SO_PATH "/home/joar/ghidra/r2/lenovo-wwan-dpr_3.snap.squashfs/usr/lib/mbim2sar.so"

Da wird der Pfad des Snaps absolut auf einen Pfad vom User "joar" gesetzt. Dein User heißt aber "pi", daher müsste mindestens das "joar" durch "pi" ersetzt werden. Ob der Rest so passt, kann ich nicht kontrollieren. Jedenfalls wird in Zeile 35, und damit direkt zu Beginn der Ausführung, direkt darauf zugegriffen. Andererseits wird direkt darunter abgefangen, falls die Datei nicht existiert, sollte/könnte also nicht zu einem Speicherzugriffsfehler führen, sondern müsste stattdessen die Fehlermeldung ausgeben. Aber schauen wir weiter. Ein Problem könnte dann noch Zeile 47 sein:

C:
fcc_ops->Init(DEVICE_PATH);

Da wird direkt auf den Pointer "DEVICE_PATH" zugegriffen, der wiederum direkt mit "MBIM_DEVICE_PATH" gesetzt wird, welches wiederum auf "/dev/wwan0mbim0" steht. Eventuell passt der Pfad zum Modem-Device nicht? Hier wird auch kein Fehler abgefangen. Die danach folgenden Schritte müssten jedenfalls entweder Fehlermeldungen werfen oder im Anschluss eine Erfolgsmeldungen ausgeben. Da weder das eine, noch das andere kommt, passiert der Speicherzugriffsfehler auf jeden Fall vorher. Aber meine genannten Punkte, wo es passiert, sind nur Vermutungen. Da müsste man mal tiefer debuggen.
 
Vielen Dank für deine Bemühungen, aber ich befürchte, das übersteigt meine Fähigkeiten. Ein Define oder Path zu ändern hätte ich ja hinbekommen, aber einen fremden Code zu debuggen ... da schnalle ich ab. Unter Ubuntu 24.04 bin ich ein wenig weiter gekommen, aber scheinbar sind da die Einwahlpunkte/APNs für Vodafone (in meinem Fall) nicht richtig gesetzt.

Bin am überlegen, ob ich jetzt schon mein System auf 24.04 beta umziehe

Hätte nicht gedacht, dass das so kompliziert ist.
 
Vielen Dank für deine Bemühungen, aber ich befürchte, das übersteigt meine Fähigkeiten. Ein Define oder Path zu ändern hätte ich ja hinbekommen, aber einen fremden Code zu debuggen ... da schnalle ich ab. Unter Ubuntu 24.04 bin ich ein wenig weiter gekommen, aber scheinbar sind da die Einwahlpunkte/APNs für Vodafone (in meinem Fall) nicht richtig gesetzt.
In erster Linie kannst du den Pfad in dem einem Define ja mal anpassen (joar durch pi ersetzen) und prüfen, ob die genannte Datei dann im genannten Pfad liegt, außerdem das zweite Define mal prüfen (heißt das Modem /dev/wwan0mbim0?). Ggf. ist im ersten Pfad auch mehr anzupassen, du kannst ja mit "find" nach der Datei suchen:
Bash:
find /home -iname mbim2sar.so

Bin am überlegen, ob ich jetzt schon mein System auf 24.04 beta umziehe
Bis 24.04 als Release erscheint ist es ja nicht mehr lange hin. Ist das Problem darin denn gelöst?
 
Bis 24.04 als Release erscheint ist es ja nicht mehr lange hin. Ist das Problem darin denn gelöst?
Ich habe es mal vom Stick gestartet und es erkennt das Modem und zeigt es im Menü an, aber der Connect ist mir da auch nicht gelungen .... eine Frage der Zugangsdaten?
 
Möglich, aber aus der Ferne schwer zu beurteilen.
 
Ich habe es mal vom Stick gestartet und es erkennt das Modem und zeigt es im Menü an, aber der Connect ist mir da auch nicht gelungen .... eine Frage der Zugangsdaten?
Versuche das nochmal und lese dann mittels journal -r das Journal aus. Aus den Einträgen da sollte ersichtlich sein, wenn es nur falsche Zugangsdaten waren.
 
Die Spezies vom Ubuntu Forum haben mir einen Tipp gegeben, der mir etwas weiter geholfen hat. Nachdem man mir dort geraten hatte mit dem Befehl "sudo systemctl status ModemManager.service | cat" den Zustand der Karte abzufragen. erhielt ich den Status "couldn't enable interface: 'Invalid transition'", das konnte ich googlen und stieß auf eine frische bug-Beschreibung zu Ubuntu 24.04 mit einem Workaround. Jetzt funktioniert sie!

Allerdings habe ich folgendes Problem: Sie und die Verbindung wird nicht in den Gnome-Einstellungen/im Systemmenü angezeigt, sodass ich weder den Status überprüfen kann noch die Verbindung stoppen oder starten kann.

Wie bekomme ich das ins Menü oder wie kann ich das vom Terminal aus kontrollieren?
 
Zuletzt bearbeitet:
Ich würde mal das Network-Manager applet starten (nm-applet) und schauen, ob die Verbindung da angezeigt wird.
 
Sie wird! Dieses Applet tut genau was ich brauche, genau das müsste jetzt dauerhaft im Systemmenü angezeigt werden ... allerdings werden noch einige Fehlermeldungen ausgeworfen und man müsste das Applet beim Start einbinden können ....
 
Bezüglich Autostart:

cp /usr/share/applications/nm-applet.desktop ~/.config/autostart/

und dann in der kopierten Datei die Zeile

NotShowIn=KDE;GNOME;

in

NotShowIn=KDE;

ändern.

Dann sollte das Applet beim nächsten Login automatisch gestartet werden.
 
Funktioniert, vielen Dank, das beobachte ich jetzt erst einmal ...
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben