
Erfasst rohe 2G/3G/4G/5G-Mobilfunksignalisierung von Qualcomm-Basebands über Diag, erzeugt PCAP für Wireshark und stellt EFS-/Speicherdiagnosen bereit.
QCSuper ist ein Tool, das mit Qualcomm-basierten Telefonen und Modems kommuniziert und es ermöglicht, rohe 2G/3G/4G- (und bei bestimmten Modellen 5G-) Funkrahmen zu erfassen, unter anderem.
Es ermöglicht Ihnen, PCAP-Erfassungen zu generieren – entweder mit einem gerooteten Android-Telefon, einem USB-Dongle oder einer vorhandenen Erfassung in einem anderen Format.

Nachdem Sie es installiert haben, können Sie Ihr gerootetes Telefon per USB anschließen, und die Verwendung mit einem kompatiblen Gerät ist so einfach wie:```bash qcsuper --adb --wireshark-live
Oder, wenn du manuell das Freigeben eines Diag-Ports über dein Telefon aktiviert hast (das entsprechende Verfahren kann je nach Telefonmodem und Hersteller variieren, siehe unten für weitere Erklärungen), oder wenn du einen Mobilfunk-Dongle angeschlossen hast:```bash
qcsuper --usb-modem auto --wireshark-live
Es verwendet das Qualcomm-Diag-Protokoll, auch QCDM oder DM (Diagnostic Monitor) genannt, um mit dem Baseband deines Telefons zu kommunizieren.
Du bist bereit zu melden, ob dein Gerät funktioniert oder nicht? Du kannst ein Github-Issue eröffnen.
Anhänge:
Blogbeitrag/Demo: Vorstellung von QCSuper: Ein Tool zum Erfassen deines 2G/3G/4G-Funkverkehrs auf Qualcomm-basierten Telefonen
Weitere Dokumentation:
QCSuper wurde zuletzt auf Ubuntu LTS 22.04+ getestet und entwickelt und wurde auch unter Windows 11 verwendet. Es hängt von einigen Python-Modulen ab. Für eine bessere Kompatibilität wird die Verwendung von Linux empfohlen.
Zur Verwendung muss dein Telefon gerootet sein oder einen Diag-Dienstport über USB bereitstellen. Um die Kompatibilität mit deinem Telefon zu prüfen, suche das Modell des Telefons auf einer Website wie GSMArena und prüfe, ob es einen Qualcomm-Prozessor hat.
Um PCAP-Dateien zu öffnen, die von QCSuper erzeugt wurden, kannst du jede Wireshark-2.x- bis 4.x-Version für 2G/3G-Frames verwenden, aber du benötigst mindestens Wireshark 2.5.x für 4G-Frames (und 2.6.x für einzelne NAS-Nachrichten, die aus 4G-Frames entschlüsselt wurden). Ubuntu bietet derzeit einen ausreichend aktuellen Build für alle Versionen.
Das Dekodieren von 5G-Frames wurde unter Wireshark 3.6.x und höher getestet und erfolgt durch die automatische Installation eines Wireshark-Lua-Plugins (in %APPDATA%\Wireshark\plugins unter Windows oder in ~/.local/lib/wireshark/plugins unter Linux und macOS), was durch Setzen der Umgebungsvariable DONT_INSTALL_WIRESHARK_PLUGIN=1 vermieden werden kann, falls du dies umgehen möchtest.
Um die stabile Version von QCSuper systemweit von PyPI zu installieren, kannst du diese Befehle ausführen:```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
Danach kannst du einfach `qcsuper` in deinem Terminal eingeben, um QCSuper auszuführen.
Um die Entwicklungsversion in einem bestimmten Ordner zu installieren, öffne ein Terminal und gib Folgendes ein:```bash
# Download QCSuper
git clone https://github.com/P1sec/qcsuper
cd qcsuper
# Install dependencies
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade . --break-system-packages
Führen Sie dann QCSuper aus dem Verzeichnis qcsuper/ aus, indem Sie den Befehl ./qcsuper.py im Terminal verwenden.
Unter Linux können Sie QCSuper mit dem Paketmanager uv installieren, der eine moderne Alternative zu PIP ist.
Führen Sie zuerst einen der folgenden Befehle in Ihrem Terminal aus, um uv zu installieren:```bash
sudo snap install --classic astral-uv # On Ubuntu
sudo dnf install -y uv # On Fedora
sudo pacman -S uv # On Archlinux, Manjaro
curl -LsSf https://astral.sh/uv/install.sh | sh # On Debian and others
Führen Sie dann Folgendes aus, um die neueste stabile Version zu installieren:```bash
uv tool install qcsuper
Alternativ können Sie die neueste Entwicklungsversion mit folgendem Befehl installieren:```bash uv tool install git+https://github.com/P1sec/qcsuper
Du kannst das dann einfach in dein Terminal eingeben:```bash
qcsuper
Wenn Sie qcsuper jedoch als root ausführen müssen, zum Beispiel weil Sie Daten von einem Modemgerät lesen, ist qcsuper bei Verwendung von uv mit sudo möglicherweise nicht in $PATH, sodass möglicherweise so etwas erforderlich ist wie:```bash
sudo env "PATH=$PATH" qcsuper
Wenn Sie an der Entwicklung des Tools teilnehmen möchten, können Sie diese Befehle verwenden, um den Quellcode herunterzuladen und dann symbolische Links zu QCSuper in `~/.local/bin` in das Quellverzeichnis zu erstellen:```bash
git clone https://github.com/P1sec/qcsuper
cd qcsuper
uv sync # Create .venv in the current directory
uv tool install -e . # Create symlinks into ~/.local/bin
QCSuper kann unter Windows ausgeführt werden, aber Sie sollten zuvor sicherstellen, dass die ADB-Eingabeaufforderung von Google auf Ihrem Rechner mit Ihrem Gerät korrekt funktioniert, und Sie sollten außerdem manuell libusb-win32-Filter erstellen (über das Dienstprogramm, das nach der Installation im Startmenü verfügbar ist), falls Ihr Gerät sich direkt über pseudo-serielles USB mit dem Diag-Port verbinden muss.
(Bitte beachten Sie, dass sich bei einem Moduswechsel Ihres Geräts die zugehörige USB-PID/VID ändern kann und es erforderlich sein kann, die Treiberzuordnungen im libusb-win32-Filtererstellungsprogramm – und/oder je nach Fall im Windows-Geräte-Manager – erneut vorzunehmen)
Unter Windows müssen Sie möglicherweise (zusätzlich zu den Google-ADB-Kerneltreibern) die USB-Treiber Ihres Telefons für Ihr Telefonmodell herunterladen und installieren (dies kann generische Qualcomm-USB-Treiber einschließen). Bitte suchen Sie bei Google nach Ihrem Telefonmodell + „USB-Treiber" oder „ADB-Treiber" für Anweisungen.
Dann müssen Sie sicherstellen, dass Sie Ihr Gerät mit adb erreichen können. Eine Anleitung zum Herunterladen und Einrichten von adb finden Sie hier. Der Befehl adb.exe shell (oder welchen ausführbaren Pfad Sie auch verwenden, eine Kopie der ADB-Ausführungsdatei befindet sich im Ordner qcsuper/inputs/external/adb von QCSuper) muss eine Eingabeaufforderung anzeigen, um fortzufahren.
Folgen Sie dann diesen Links (das Tool wurde zuletzt unter Windows 11 getestet – es ist nicht garantiert, dass es unter Windows 7 funktioniert), um Folgendes zu tun:
%PATH% aktualisiert wurde.Um die erforderlichen Python-Module zu installieren, öffnen Sie Ihre Eingabeaufforderung und geben Sie Folgendes ein:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
Noch in Ihrer Eingabeaufforderung wechseln Sie mit dem Befehl `cd` in das Verzeichnis, das QCSuper enthält. Sie können dann Befehle ausführen (die mit `py qcsuper.py` oder `py3 qcsuper.py` beginnen sollten, wenn Sie Python 3 über das Online-Installationsprogramm installiert haben, oder mit `python3.exe .\qcsuper.py`, wenn Sie es aus dem Microsoft Store installiert haben).
Wie oben erwähnt, müssen Sie möglicherweise über das im Startmenü verfügbare Dienstprogramm einen `libusb-win32`-Filter hinzufügen, um sicherzustellen, dass die dem Diag-Port entsprechende Schnittstelle für QCSuper auf dem umgeschalteten Gerät sichtbar ist (ein erster fehlgeschlagener Versuch, das Tool mit dem Flag `--adb` auszuführen, sollte einen Moduswechsel auslösen, wenn der ADB-Treiber funktioniert und das Gerät korrekt gerootet ist).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Screenshot des Hinzufügens eines libusb-win32-Filters für den Diag-Port eines Mi-Telefons">
</p>
## Unterstützte Protokolle
QCSuper unterstützt das Erfassen einiger weniger Mobilfunkprotokolle. Diese Protokolle werden nach einem [GSMTAP-Header](http://osmocom.org/projects/baseband/wiki/GSMTAP) eingefügt, einem Standard-Header (in UDP/IP gekapselt), der die Identifizierung des Protokolls ermöglicht, und die GSMTAP-Pakete werden in eine [PCAP-Datei](https://wiki.wireshark.org/Development/LibpcapFileFormat) geschrieben, die mit Wireshark vollständig analysiert werden kann.
2G/3G/4G-Protokolle können in einige wenige "Schichten" unterteilt werden: Schicht 1 befasst sich mit der digitalen Funkmodulation und dem Multiplexing, Schicht 2 übernimmt Dinge wie Fragmentierung und Bestätigung, Schicht 3 ist die eigentliche Signalisierung oder die Nutzdaten.
QCSuper ermöglicht Ihnen meistens, auf Schicht 3 zu erfassen, da diese mit Wireshark am praktischsten zu analysieren ist und das Diag-Protokoll sie nativ bereitstellt (und einige interessante Informationen sind hier enthalten).
* 2G (GSM): Schicht 3 und darüber (RR/...)
* 2.5G (GPRS und EDGE): Schicht 2 und darüber (MAC-RLC/...) für Datenbestätigungen
* 3G (UMTS): Schicht 3 und darüber (RRC/...)
* Zusätzlich unterstützt es das Reassemblieren von SIBs (System Information Blocks, die an alle Nutzer gesendeten Daten) in separaten GSMTAP-Frames, da Wireshark dies derzeit nicht selbst kann: Flag `--reassemble-sibs`
* 4G (LTE): Schicht 3 und darüber (RRC/...)
* Zusätzlich unterstützt es das Einfügen entschlüsselter NAS-Nachrichten, die verschlüsselt in RRC-Pakete eingebettet sind, in zusätzliche Frames: Flag `--decrypt-nas`
Standardmäßig ist der von Ihrem Gerät gesendete IP-Verkehr nicht enthalten; Sie sehen nur die Signalisierungsframes. Sie können den von Ihnen erzeugten IP-Verkehr mithilfe der Option `--include-ip-traffic` einbeziehen (wobei IP sozusagen die Schicht 3 für Ihren Datenverkehr in 2G/3G/4G darstellt, abgesehen davon, dass seine Header komprimiert sein können (ROHC) und ein winziger PPP-Header enthalten sein kann).
Der von Ihnen gesendete Datenverkehr verwendet einen anderen Kanal als der Signalisierungsverkehr; dieser Kanal wird über den Signalisierungsverkehr eingerichtet. QCSuper sollte Ihnen daher alle Details anzeigen, die für die Initiierung dieses Kanals relevant sind.
## Nutzungshinweis
Um QCSuper zu verwenden, geben Sie eine Eingabequelle an (z. B. `--adb` (Android-Telefon), `--usb-modem`) und ein oder mehrere Module (`--wireshark-live` zum Öffnen von Wireshark, `--pcap-dump` zum Schreiben des Datenverkehrs in eine PCAP-Datei, `--info` für allgemeine Informationen über das Gerät ...).
Einige Befehle, die Sie eingeben können, sind:```bash
# Open Wireshark directly, using a rooted Android phone as an input,
# for compatible phones:
$ qcsuper --adb --wireshark-live
# ^ this command is equivalent to (prefer this when running as root):
$ qcsuper --adb --pcap-dump - | wireshark -k -i -
# Same, but dump to a PCAP file instead of opening Wireshark directly
$ qcsuper --adb --pcap-dump /tmp/my_pcap.pcap
Oder, wenn es nicht einfach genug ist, um zu funktionieren:```bash
$ qcsuper --usb-modem auto --wireshark-live
$ lsusb (..) Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode $ qcsuper --usb-modem 1d6b:0003 --wireshark-live # With vendor ID:product ID... $ qcsuper --usb-modem 002:001 --wireshark-live # ...or with bus ID:device ID
$ lsusb -v (..) $ qcsuper --usb-modem 1d6b:0003:1:0 --wireshark-live # With vendor ID:product ID:configuration:interface... $ qcsuper --usb-modem 002:001:1:0 --wireshark-live # ...or with bus ID:device ID:configuration:interface
$ qcsuper --usb-modem /dev/ttyUSB2 --wireshark-live
$ qcsuper --usb-modem /dev/ttyHS2 --wireshark-live
Hier ist der aktuelle Nutzungshinweis für QCSuper:```
usage: qcsuper [-h] [--cli] [--efs-shell] [--efs-shell2] [-v] (--adb | --adb-wsl2 ADB_WSL2 | --tcp IP_ADDRESS:TCP_PORT | --usb-modem TTY_DEV | --dlf-read DLF_FILE |
--json-geo-read JSON_FILE) [--info] [--pcap-dump PCAP_FILE] [--wireshark-live] [--memory-dump OUTPUT_DIR] [--dlf-dump DLF_FILE] [--json-geo-dump JSON_FILE]
[--decoded-sibs-dump] [--reassemble-sibs] [--decrypt-nas] [--include-ip-traffic] [--start MEMORY_START] [--stop MEMORY_STOP]
A tool for communicating with the Qualcomm DIAG protocol (also called QCDM or DM).
options:
-h, --help show this help message and exit
--cli Use a command prompt, allowing for interactive completion of commands.
--efs-shell Spawn an interactive shell to navigate within the embedded filesystem (EFS) of the baseband device.
--efs-shell2 Spawn an interactive shell to navigate within the embedded filesystem (EFS) of the baseband device. Use the secondary filesystem known as "alternate".
-v, --verbose Add output for each received or sent Diag packet.
Input mode:
Choose an one least input mode for DIAG data.
--adb Use a rooted Android phone with USB debugging enabled as input (requires adb).
--adb-wsl2 ADB_WSL2 Unix path to the Windows adb executable. Equivalent of --adb command but with WSL2/Windows interoperability.
--tcp IP_ADDRESS:TCP_PORT
Connect to remote TCP service exposing DIAG interface.
--usb-modem TTY_DEV Use an USB modem exposing a DIAG pseudo-serial port through USB.
Possible syntaxes:
- "auto": Use the first device interface in the system found where the
following criteria is matched, by order of preference:
- bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2
- bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2
- usbserial or hso device name (Linux/macOS): "/dev/tty{USB,HS,other}{0-9}"
- COM port identifier (Windows): "COM{0-9}"
- "vid:pid[:cfg:intf]" (vendor ID/product ID/optional bConfigurationValue/optional
bInterfaceNumber) format in hexa: e.g. "05c6:9091" or "05c6:9091:1:0 (vid and pid
are four zero-padded hex digits, cfg and intf are canonical values from the USB
descriptor, or guessed using the criteria specified for "auto" above if not specified)
- "bus:addr[:cfg:intf]" (USB bus/device address/optional bConfigurationValue/optional
bInterfaceNumber) format in decimal: e.g "001:003" or "001:003:0:3" (bus and addr are
three zero-padded digits, cfg and intf are canonical values from the USB descriptor)
--dlf-read DLF_FILE Read a DLF file generated by QCSuper or QXDM, enabling interoperability with vendor software.
--json-geo-read JSON_FILE
Read a JSON file generated using --json-geo-dump.
Modules:
Modules writing to a file will append when it already exists, and consider it Gzipped if their name contains ".gz".
--info Read generic information about the baseband device.
--pcap-dump PCAP_FILE
Generate a PCAP file containing GSMTAP frames for 2G/3G/4G, to be loaded using Wireshark.
--wireshark-live Same as --pcap-dump, but directly spawn a Wireshark instance.
--memory-dump OUTPUT_DIR
Dump the memory of the device (may not or partially work with recent devices).
--dlf-dump DLF_FILE Generate a DLF file to be loaded using QCSuper or QXDM, with network protocols logging.
--json-geo-dump JSON_FILE
Generate a JSON file containing both raw log frames and GPS coordinates, for further reprocessing. To be used in combination with --adb.
--decoded-sibs-dump Print decoded SIBs to stdout (experimental, requires pycrate).
PCAP generation options:
To be used along with --pcap-dump or --wireshark-live.
--reassemble-sibs Include reassembled UMTS SIBs as supplementary frames, also embedded fragmented in RRC frames.
--decrypt-nas Include unencrypted LTE NAS as supplementary frames, also embedded ciphered in RRC frames.
--include-ip-traffic Include unframed IP traffic from the UE.
Memory dumping options:
To be used along with --memory-dump.
--start MEMORY_START Offset at which to start to dump memory (hex number), by default 00000000.
--stop MEMORY_STOP Offset at which to stop to dump memory (hex number), by default ffffffff.
Das Angeben von -, um Daten von stdin zu pipen oder an stdout zu senden, wird unterstützt (gzippter Inhalt wird möglicherweise nicht erkannt).
Diese README-Datei ist kein Leitfaden zum Rooten deines Telefons (um dein Telefon dazu zu bringen, dir die Ausführung von Befehlen wie "su" zu ermöglichen).
Bei den meisten aktuellen Android-Geräten musst du zuerst die Option "OEM/Bootloader-Entsperrung" verwenden, die in den Entwickleroptionen des Telefons vorhanden ist, um den Bootloader zu entsperren. Danach kannst du ein Tool wie Magisk verwenden, das dir ein gepatchtes Image für den Bootloader deines Telefons liefert, das du dann im fastboot-Modus auf dein Telefon laden kannst.
QCSuper hat bessere Chancen, auf deinem Qualcomm-basierten Gerät problemlos zu funktionieren, wenn dein Telefon gerootet ist, aber es gibt oft Möglichkeiten, den Qualcomm-Diag-USB-Modus (auch bekannt als "DM", Diag Monitor) auf deinem Telefon zu aktivieren, ohne dass dein Telefon gerootet ist. Dies hängt von deinem Telefonhersteller ab und erfolgt beispielsweise durch die Eingabe einer magischen Zahlenkombination über die Wähltastatur deines Telefons. Weitere Einzelheiten findest du im Abschnitt "Wie aktiviere ich die Diagnoseports auf meinem Telefon manuell?" weiter unten.
Bevor du dein Telefon rootest, bedenke, dass du möglicherweise auch ein alternatives Recovery-Image wie TWRP auf dein OEM-entsperrtes Telefon laden möchtest, um eine Partitionssicherung mit einem Tool wie TWRP durchzuführen (es kann so einfach sein, das Image per Fastboot zu laden, den ADB-Link in den TWRP-Einstellungen zu aktivieren und adb pull auf ausgewählte Partitionen im Ordner /dev/block/by-name anzuwenden).
Für spezifische Anleitungen zum Rooten oder zum Aktivieren des Diag-Modus bei deinem Telefonmodell kannst du im XDA-Developers-Forum mit passenden Suchbegriffen nach Informationen suchen.
Auf Qualcomm/MSM-basierten Android-Geräten mit Linux-Kernel 4.9 oder älter (dies umfasst ungefähr einen Teil der Geräte bis Android 12 und alle Geräte vor Android 10) enthalten Qualcomm-basierte Android-Geräte normalerweise ein Systemgerät namens /dev/diag, das die Übertragung von Daten an den Diagnoseport des Basebands ermöglicht.
Auf Qualcomm/MSM-basierten Android-Geräten mit Linux-Kernel 4.14 oder neuer (dies umfasst ungefähr einen Teil der Geräte ab Android 10 und alle Geräte ab Android 13) ist /dev/diag verschwunden, da das entsprechende diagchar-Modul in neueren AOSP/Linux-Kerneln standardmäßig deaktiviert ist.
Bei Geräten mit einem MSM-Kernel mit Linux 4.9 oder älter wird QCSuper bei Verwendung des --adb-Flags automatisch versuchen, sich über ADB zu verbinden, dann versuchen, ein ausführbares Dienstprogramm zu übertragen, das eine Verbindung zum /dev/diag-Gerät herstellt, um es als Root mit einem Befehl wie su -c /data/local/tmp/adb_bridge zu starten und anschließend die Diagnosedaten mit dem Gerät über TCP zu übertragen (wobei auch der entsprechende TCP-Port über ADB weitergeleitet wird).
Bei Geräten mit einem MSM-Kernel mit Linux 4.14 oder neuer wird QCSuper bei Verwendung des --adb-Flags automatisch versuchen, sich über ADB zu verbinden, dann versuchen, den USB-Anschluss des Telefons umzuschalten (mode-switch) mit einem Befehl wie su -c 'setprop sys.usb.config diag,adb', und dann das Äquivalent des --usb-modem auto-Flags ausführen (siehe unten).
Das Flag --usb-modem <value> ermöglicht es QCSuper, sich über einen Pseudo-Seriell-Port über USB mit dem Qualcomm-Diagnoseport zu verbinden, unabhängig von ADB. Dies ist die häufigste Methode, um sich über ein externes Gerät mit dem Qualcomm-Diag-Protokoll eines Android-basierten Telefons zu verbinden.
Um das Flag --usb-modem <value> verwenden zu können, muss der Qualcomm-Diagnoseport auf dem entsprechenden Telefon aktiviert sein, anders gesagt das Telefon sollte zuvor per USB umgeschaltet worden sein (mode-switched).
Der gebräuchlichste Weg, dein Gerät per USB umzuschalten (mode-switch), ist die Ausführung eines Befehls wie setprop sys.usb.config diag,adb als Root, aber es kann auch andere Wege geben (bei bestimmten Telefonherstellern), um den Qualcomm-Diagnostics-over-USB-Modus zu aktivieren. Siehe zum Beispiel diese Seite für mögliche Wege, bei bestimmten Geräten Diag ohne Root zu aktivieren – das bedeutet oft, eine magische Zahlenkombination über die Wähltastatur des Telefons einzugeben.
Bei anderen Geräten ist es möglicherweise auch möglich, eine APK-Datei zu verwenden, die vom Telefonhersteller signiert ist und Systemberechtigungen besitzt, um den Diag-Modus ohne Rooting zu aktivieren (suche zum Beispiel nach der com.longcheertel.midtest-APK für Xiaomi-basierte Geräte).
Sobald dein Gerät korrekt umgeschaltet wurde, sollte die Ausführung des Befehls getprop sys.usb.config über ADB eine Textzeichenfolge anzeigen, die diag enthält.
Auf der Seite deines Computers sollte dann die Ausführung von lsusb (unter Linux) eine Zeile anzeigen, die auf dein Gerät verweist, zum Beispiel:```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Beachten Sie die `001:076` (Bus-Index/Geräte-Index-Kennung) sowie die `05c6:9091` (Hersteller-ID/Produkt-ID) Informationen, die in dieser Ausgabe enthalten sind.
Sobald Ihnen diese Informationen vorliegen, **können Sie versuchen, ein Flag wie `--usb-modem 05c6:9091` oder `--usb-modem 001:076`** mit QCSuper zu verwenden (bitte beachten Sie die Ziffernauffüllung).
Falls dies nicht eindeutig ist, können Sie den Befehl `lsusb -v -d 05c6:9091` verwenden, der eine detaillierte Ausgabe erzeugen sollte, einschließlich der USB-Konfigurationen, Schnittstellen und Endpunkte des entsprechenden USB-Geräts:```
Bus 001 Device 027: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.01
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x05c6 Qualcomm, Inc.
idProduct 0x9091 Intex Aqua Fish & Jolla C Diagnostic Mode
bcdDevice 5.04
iManufacturer 1 Xiaomi
iProduct 2 Mi 11
iSerial 3 d94f4341
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0086
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 4 Default composition
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 48
iInterface 0
[...]
QCSuper ermöglicht es Ihnen, die Kennungen der Konfiguration und der Schnittstelle, mit der Sie sich auf dem betreffenden Gerät zu verbinden versuchen möchten, manuell auszuwählen (im rohen USB-Deskriptor als bConfigurationValue und bInterfaceNumber bezeichnet), falls diese nicht korrekt erkannt werden. Beispielsweise wählt das Flag --usb-modem 05c6:9091:1:0 die Konfiguration 1 bzw. die Schnittstelle 0 auf dem betreffenden Gerät aus. --usb-modem 05c6:9091:1:4 wählt die Schnittstelle 4 über Konfiguration 1.
Wenn die Angabe der Konfigurations- und Schnittstellenindizes nicht spezifiziert ist, wird der erste Schnittstellendeskriptor auf dem USB-Bus des Systems ausgewählt, der die folgenden Kriterien in der Reihenfolge der Präferenz erfüllt:
bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2Bei Verwendung des Flags --usb-modem auto wird das erste Gerät ausgewählt, das eine USB-Schnittstelle bereitstellt, die diesen Kriterien entspricht, und falls erforderlich wird unter Linux das zugrunde liegende Zeichengerät /dev/ttyUSB* (usbserial-Modul) oder /dev/ttyHS* (hso-Modul) ausgewählt, falls das Gerät von einem Kernelmodul erkannt und eingebunden wurde (siehe Abschnitt „Verwendung von QCSuper mit einem USB-Modem“ unten).
Alternativ ist es unter Linux möglicherweise auch möglich, /dev/ttyUSB*-Endpunkte, die den Schnittstellen eines bestimmten USB-Geräts entsprechen, manuell zu erstellen, mit denen Sie sich über ein Flag wie --usb-modem /dev/ttyUSB0 mit QCSuper verbinden können (dies kann Root-Rechte für die Ausführung von QCSuper erfordern), unter Verwendung des usbserial-Moduls. Hierfür können Sie einen Befehl wie den folgenden verwenden:```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## Verwendung von QCSuper mit einem USB-Modem
Sie können QCSuper mit einem USB-Modem verwenden, das einen Diag-Port bereitstellt, und zwar mit der Option `--usb-modem <device>`, wobei `<device>` der Name des pseudo-seriellen Geräts unter Linux (wie `/dev/ttyUSB0`, `/dev/ttyHS2` und andere Möglichkeiten) oder des COM-Ports unter Windows (wie `COM2`, `COM3`) ist.
Bitte beachten Sie, dass Sie QCSuper in den meisten Konfigurationen als Root ausführen müssen, um diesen Modus nutzen zu können, insbesondere für den Umgang mit Störungen an seriellen Schnittstellen.
Wenn Sie nicht wissen, welche Geräte unter `/dev` den Diag-Port bereitstellen, müssen Sie möglicherweise mehrere davon ausprobieren. Sie können versuchen, ihn automatisch zu erkennen, indem Sie den ModemManager-Daemon stoppen (`sudo systemctl stop ModemManager`) und den folgenden Befehl verwenden: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` und dann Strg-C drücken.
Bitte beachten Sie, dass Ihr Gerät, wenn Sie es beispielsweise mit ModemManager nicht nutzen können, wahrscheinlich nicht vollständig eingerichtet ist und es auch mit QCSuper nicht funktionieren wird. Einige mögliche Stolperfallen sind:
* Sie haben den passenden [Modusumschaltung](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching)-Befehl für Ihr Gerät nicht angewendet.
* Wenn Sie ein Gerät gekauft haben, das zuvor eine SIM-Karte eines anderen Anbieters enthielt, kann Ihr Gerät SIM-gesperrt sein. Möglicherweise müssen Sie den Entsperrcode des früheren Anbieters verwenden und ihn dem Gerät wie einen PIN-Code übermitteln: `sudo mmcli -i 0 --pin=<your_unlock_code>`
Wenn Ihr auf Qualcomm basierendes USB-Gerät keinen Diag-Port standardmäßig bereitstellt, müssen Sie möglicherweise Folgendes über den AT-Port eingeben, um den Diag-Port zu aktivieren:```
AT$QCDMG
Bitte beachten Sie, dass immer nur ein Client gleichzeitig mit dem Diag-Port kommunizieren kann. Dies gilt für zwei QCSuper-Instanzen oder für QCSuper- und ModemManager-Instanzen.
Wenn ModemManager auf Ihrem System aktiv ist, versucht QCSuper dynamisch eine udev-Regel hinzuzufügen, um den Zugriff auf den Diag-Port zu verhindern, und startet dessen Daemon neu, da dies derzeit der beste Weg ist, dies zu erreichen. Beim Schließen wird diese Regel wieder entfernt.
QCSuper wurde erfolgreich getestet mit:
Es zielt jedoch darauf ab, für den Erfassungsteil mit der größtmöglichen Bandbreite an Geräten auf Basis eines Qualcomm-Chipsatzes kompatibel zu sein.
Weitere funktionierende Geräte sind aufgeführt unter: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"
Zögern Sie nicht, durch das Öffnen eines Github-Issue zu melden, ob Ihr Gerät erfolgreich funktioniert oder nicht.
Es gibt einige andere offene Tools, die Teile des Diag-Protokolls implementieren und verschiedene Zwecke erfüllen: