szemenovics~/doku
viktor@vsz:~/doku/hardware/dw5821e/linux$
LinuxWWANDell DW5821eModemManager

DW5821e: Factory Test Mode behebenAnleitung für Linux (getestet mit Kali)

Unter Linux lässt sich der Werkstestmodus ohne Zusatztreiber abschalten: ein AT-Befehl, ein Stromzyklus, Funk einschalten.

Gerät
Dell Latitude 5420
System
Kali Linux · ModemManager 1.24
Karte
DW5821e · 413c:81d7
Dauer
ca. 10 Minuten

Das Problem

Die Karte wird erkannt, die SIM wird gelesen, aber es gibt nie Netz. Dell-Treiber, Firmware-Pakete und das Dell Customer Kit Tool ändern daran nichts. Der Grund: Die Karte steht im Foxconn-Werkstestmodus (Factory Test Mode, FTM). Ein Foxconn-eigener Schalter im Speicher der Karte (NV-Item 2497) erzwingt ihn bei jedem Start und setzt den bekannten Qualcomm-Schalter (NV 453) immer wieder zurück.

  • mmcli -m 0 zeigt state: disabled und power state: low.
  • mmcli -m 0 --enable scheitert mit Invalid transition.
  • mbimcli --set-radio-state=on scheitert mit OperationNotAllowed.
  • Das FCC-Unlock-Skript von ModemManager gibt es für 413c:81d7 nicht – es ist hier aber auch nicht das Problem.

Vorbereitung

  • BIOS: Connection → WWAN Bus Mode → USB (siehe Windows-Anleitung, Schritt B).
  • Pakete: sudo apt install modemmanager libqmi-utils libmbim-utils. Extra-Treiber braucht Linux nicht.
  • Der AT-Port ist /dev/ttyUSB0 – ModemManager zeigt ihn als ttyUSB0 (at).
0

Hilfsskript anlegen

Ein kleines Skript schickt einen AT-Befehl an die Karte und gibt die Antwort aus. Einmalig anlegen:

bash
cat > ~/at.py << 'EOF'
import os, sys, time, tty
cmd = sys.argv[1]
fd = os.open("/dev/ttyUSB0", os.O_RDWR | os.O_NOCTTY); tty.setraw(fd)
os.write(fd, (cmd + "\r").encode()); time.sleep(2)
print(os.read(fd, 4096).decode(errors="ignore").strip())
os.close(fd)
EOF

Reparatur in fünf Schritten

1

Diagnose

ModemManager kurz anhalten, sonst belegt er den AT-Port:

bash
lsusb | grep 413c
sudo systemctl stop ModemManager
sudo qmicli -p -d /dev/cdc-wdm0 --device-open-mbim --dms-get-operating-mode
sudo python3 ~/at.py "AT+FTM?"
sudo python3 ~/at.py "AT+CFUN?"
Ergebnis · Screenshot
Kali Terminal factory-test, FTM 1, CFUN 5
Karte erkannt, aber „factory-test“, „Device is in: 1, FTM“, „+CFUN: 5“.
PrüfungTestmodus (Problem)Normalbetrieb (Soll)
--dms-get-operating-modeMode: 'factory-test'Mode: 'online'
AT+FTM?Device is in: 1, FTMDevice is in: 0, ONLINE
AT+CFUN?+CFUN: 5+CFUN: 1
mmcli -m anystate: disabledstate: registered
2

Testmodus abschalten

Außen einfache Anführungszeichen:

bash
sudo python3 ~/at.py 'AT^NV=2497,1,"01"'
Ergebnis · Screenshot
Antwort OK
Die Karte bestätigt den Befehl.
✔ So soll es sein

OK

✘ Wenn stattdessen

keine Antwort oder „Permission denied“: ModemManager gestoppt? Mit sudo ausgeführt?

3

Stromzyklus

sudo poweroff, 10 Sekunden warten, einschalten. Ein reboot reicht nicht immer, weil der WWAN-Slot dabei Strom behalten kann.

4

Kontrolle und Funk einschalten

bash
sudo systemctl stop ModemManager
sudo python3 ~/at.py "AT+FTM?"
sudo python3 ~/at.py "AT+CFUN=1"
sudo python3 ~/at.py "AT+CFUN?"
sudo qmicli -p -d /dev/cdc-wdm0 --device-open-mbim --dms-get-operating-mode
Ergebnis · Screenshot
Device is in 0 ONLINE, CFUN 1, Mode online
Testmodus weg: „0, ONLINE“, „+CFUN: 1“, „Mode: 'online'“.
✔ So soll es sein

Device is in: 0, ONLINE, +CFUN: 1 und Mode: 'online'.

✘ Wenn stattdessen

weiterhin 1, FTM oder phone failure – Schritt 2 wiederholen und wirklich ausschalten.

5

Netz prüfen und verbinden

bash
sudo systemctl start ModemManager
sleep 15
mmcli -m any | grep -Ei "state|signal|operator|access tech"
Ergebnis · Screenshot
mmcli state registered lte vodafone
Im LTE-Netz von Vodafone eingebucht.

Verbindung mit der APN des Anbieters anlegen (hier Vodafone):

bash
sudo nmcli c add type gsm ifname '*' con-name LTE apn web.vodafone.de
sudo nmcli c up LTE
mmcli -m any | grep -Ei "state|signal|operator"
Ergebnis · Screenshot
state connected
Verbindung aktiv: „state: connected“.
✔ So soll es sein

state: connected. Die Reparatur ist in der Karte gespeichert und gilt auch unter Windows.

Stolperfallen

  • ModemManager vor AT-Befehlen stoppen, sonst ist /dev/ttyUSB0 belegt.
  • NV 453 (Qualcomm) allein hilft nicht. Entscheidend ist NV 2497.
  • Ein Firmware-Flash mit fwupd behebt den Testmodus nicht; LVFS bietet für die Karte ohnehin nur die ältere 4.2.
  • AT+FTM=0 wird bestätigt, gilt aber nicht dauerhaft.

Quelle des Reparaturbefehls: MikroTik-Forum, DW5821e im Factory Test Mode. Alle Schritte habe ich an drei Karten selbst nachvollzogen. IMEI und QR-Codes sind in Fotos und Screenshots unkenntlich gemacht.