
Cattura la segnalazione cellulare grezza 2G/3G/4G/5G dai baseband Qualcomm tramite Diag, genera output PCAP per Wireshark ed espone la diagnostica EFS/memoria.
QCSuper è uno strumento che comunica con telefoni e modem basati su Qualcomm, consentendo di catturare frame radio 2G/3G/4G grezzi (e su alcuni modelli 5G), tra le altre cose.
Ti permetterà di generare catture PCAP utilizzando un telefono Android rooted, un dongle USB o una cattura esistente in un altro formato.

Dopo averlo installato, puoi collegare il tuo telefono rooted via USB e, con un dispositivo compatibile, usarlo è semplice come:```bash qcsuper --adb --wireshark-live
Oppure, se hai abilitato manualmente l'esposizione di una porta Diag sul tuo telefono (la procedura corrispondente può variare a seconda del modem e del produttore del telefono, vedi sotto per ulteriori spiegazioni), oppure se hai collegato un dongle di banda larga mobile:```bash
qcsuper --usb-modem auto --wireshark-live
Utilizza il protocollo Qualcomm Diag, chiamato anche QCDM o DM (Diagnostic Monitor), per comunicare con il modem del telefono.
Vuoi segnalare se il tuo dispositivo funziona o non funziona? Puoi aprire una issue su GitHub.
Appendici:
Post del blog/demo: Presenting QCSuper: a tool for capturing your 2G/3G/4G air traffic on Qualcomm-based phones
Altra documentazione:
QCSuper è stato recentemente testato e sviluppato su Ubuntu LTS 22.04+ ed è stato utilizzato anche su Windows 11. Dipende da alcuni moduli Python. Si consiglia di usare Linux per una migliore compatibilità.
Per usarlo, il telefono deve essere rooted o esporre una porta di servizio diag via USB. Per verificare la compatibilità con il tuo telefono, cerca il modello del telefono su un sito come GSMArena e controlla se ha un processore Qualcomm.
Per aprire i file PCAP prodotti da QCSuper, puoi usare qualsiasi Wireshark 2.x - 4.x per i frame 2G/3G, ma ti serve almeno Wireshark 2.5.x per i frame 4G (e 2.6.x per i singoli messaggi NAS decifrati dai frame 4G). Ubuntu fornisce attualmente una build abbastanza recente per tutte le versioni.
La decodifica dei frame 5G è stata testata con Wireshark 3.6.x e versioni successive e viene eseguita installando automaticamente un plug-in Lua di Wireshark (in %APPDATA%\Wireshark\plugins su Windows o in ~/.local/lib/wireshark/plugins su Linux e macOS), cosa che può essere evitata impostando la variabile d'ambiente DONT_INSTALL_WIRESHARK_PLUGIN=1 se desideri evitarlo.
Per installare a livello di sistema la versione stabile di QCSuper da PyPI, puoi eseguire questi comandi:```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
Quindi, puoi semplicemente digitare `qcsuper` nel tuo terminale per eseguire QCSuper.
Per installare la versione di sviluppo in una cartella specifica, apri un terminale e digita quanto segue:```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
Quindi, esegui QCSuper dalla directory qcsuper/, usando il comando ./qcsuper.py nel terminale.
Su Linux, puoi installare QCSuper usando il gestore pacchetti uv, che è un'alternativa moderna a PIP.
Per prima cosa, esegui uno di questi comandi nel tuo terminale per installare uv:```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
Quindi, esegui questo per installare l'ultima versione stabile:```bash
uv tool install qcsuper
In alternativa, puoi installare l'ultima versione di sviluppo usando questo comando:```bash uv tool install git+https://github.com/P1sec/qcsuper
Puoi quindi semplicemente digitare questo nel tuo terminale:```bash
qcsuper
Tuttavia, se è necessario eseguire qcsuper come root, ad esempio perché si leggono dati da un dispositivo modem, qcsuper potrebbe non essere in $PATH quando si usa uv con sudo, quindi potrebbe essere necessario fare qualcosa come:```bash
sudo env "PATH=$PATH" qcsuper
Se desideri partecipare allo sviluppo dello strumento, puoi usare questi comandi per scaricare il sorgente, quindi creare link simbolici a QCSuper in `~/.local/bin` verso la directory del sorgente:```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 può essere eseguito su Windows, ma prima dovresti assicurarti che il prompt ADB di Google funzioni correttamente sulla tua macchina con il tuo dispositivo, e dovresti anche creare manualmente i filtri libusb-win32 (tramite l'utility accessibile dal menu Start dopo averlo installato) nel caso in cui il tuo dispositivo debba connettersi direttamente alla porta Diag tramite USB pseudo-serial.
(Nota: se cambi modalità al tuo dispositivo, il PID/VID USB associato potrebbe cambiare e potrebbe essere necessario rifare le associazioni dei driver nell'utility di creazione filtri libusb-win32 - e/o nel gestione periferiche di Windows a seconda dei casi)
Su Windows, potrebbe essere necessario (oltre ai driver kernel ADB di Google) scaricare e installare i driver USB del tuo telefono in base al modello (questo può includere driver USB Qualcomm generici). Cerca su Google il modello del tuo telefono + "USB driver" o "ADB driver" per istruzioni.
Poi, devi assicurarti di poter raggiungere il tuo dispositivo usando adb. Puoi trovare un tutorial su come scaricare e configurare adb qui. Il comando adb.exe shell (o qualunque percorso eseguibile tu usi, una copia dell'eseguibile ADB è presente nella cartella qcsuper/inputs/external/adb di QCSuper) deve mostrare un prompt per continuare.
Quindi, segui questi link (lo strumento è stato testato recentemente su Windows 11 - non è garantito che funzioni su Windows 7) per:
%PATH% sia stata aggiornata.Per installare i moduli Python richiesti, apri il prompt dei comandi e digita:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
Sempre nel prompt dei comandi, spostati nella directory che contiene QCSuper usando il comando `cd`. Potrai quindi eseguire i comandi (che dovrebbero iniziare con `py qcsuper.py` o `py3 qcsuper.py` se hai installato Python 3 dal programma di installazione online, oppure `python3.exe .\qcsuper.py` se lo hai installato da Microsoft Store).
Come già accennato sopra, è possibile che tu debba aggiungere un filtro `libusb-win32` tramite l'utilità disponibile nel menu Start per assicurarti che l'interfaccia corrispondente alla porta Diag sia visibile da QCSuper sul dispositivo con modalità cambiata (un primo tentativo fallito di eseguire lo strumento usando il flag `--adb` dovrebbe innescare un cambio di modalità se il driver ADB funziona e il dispositivo è rootato correttamente).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Screenshot of adding a libusb-win32 filter for the Diag port of a Mi phone">
</p>
## Protocolli supportati
QCSuper supporta la cattura di un piccolo numero di protocolli radio mobili. Questi protocolli vengono inseriti dopo un'[intestazione GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP), un'intestazione standard (incapsulata in UDP/IP) che consente di identificare il protocollo, e i pacchetti GSMTAP vengono inseriti in un [file PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat) completamente analizzabile con Wireshark.
I protocolli 2G/3G/4G possono essere suddivisi in alcuni "livelli": il livello 1 riguarda la modulazione radio digitale e il multiplexing, il livello 2 gestisce aspetti come la frammentazione e l'acknowledgement (conferma di ricezione), il livello 3 è la segnalazione vera e propria o i dati utente.
QCSuper ti permette il più delle volte di catturare a livello 3, poiché è il più pratico da analizzare con Wireshark, ed è ciò che il protocollo Diag fornisce nativamente (e qui ci sono alcune informazioni interessanti).
* 2G (GSM): Livello 3 e superiori (RR/...)
* 2.5G (GPRS e EDGE): Livello 2 e superiori (MAC-RLC/...) per le conferme di ricezione dei dati
* 3G (UMTS): Livello 3 e superiori (RRC/...)
* Inoltre, supporta il riassemblaggio dei SIB (System Information Blocks, i dati trasmessi a tutti gli utenti) in frame GSMTAP separati, dato che Wireshark attualmente non può farlo da solo: flag `--reassemble-sibs`
* 4G (LTE): Livello 3 e superiori (RRC/...)
* Inoltre, supporta l'inserimento dei messaggi NAS decifrati, che sono incorporati crittografati nei pacchetti RRC, in frame aggiuntivi: flag `--decrypt-nas`
Per impostazione predefinita, il traffico IP inviato dal tuo dispositivo non è incluso: vedi solo i frame di segnalazione. Puoi includere il traffico IP che generi usando l'opzione `--include-ip-traffic` (l'IP è pressoché il livello 3 per il traffico dati in 2G/3G/4G, con la precisazione che le sue intestazioni possono essere compresse (ROHC) e che può essere inclusa una piccola intestazione PPP).
Il traffico dati che invii utilizza un canale diverso dal traffico di segnalazione; questo canale viene configurato tramite il traffico di segnalazione; QCSuper dovrebbe quindi mostrarti tutti i dettagli relativi a come viene avviato questo canale.
## Note sull'utilizzo
Per usare QCSuper, specifichi un input (ad es.: `--adb` (telefono Android), `--usb-modem`) e uno o più moduli (`--wireshark-live` per aprire Wireshark, `--pcap-dump` per scrivere il traffico su un file PCAP, `--info` per informazioni generiche sul dispositivo...).
Ecco alcuni comandi che puoi digitare:```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
Oppure, se non è abbastanza semplice da funzionare:```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
Ecco l'avviso di utilizzo corrente per 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.
È supportato specificare - per convogliare dati da stdin o verso stdout (il contenuto gzippato potrebbe non essere rilevato).
Questo file README non è una guida su come effettuare il root del telefono (far sì che il telefono vi permetta di eseguire comandi come "su").
Nella maggior parte dei recenti dispositivi Android, devi prima utilizzare l'opzione "OEM/bootloader unlock" presente nelle impostazioni sviluppatore del telefono per sbloccare il bootloader, poi puoi usare uno strumento come Magisk che ti consentirà di ottenere un'immagine patchata per il bootloader del tuo telefono, che potrai poi caricare sul telefono in modalità fastboot.
QCSuper avrà più probabilità di funzionare facilmente sul tuo dispositivo basato su Qualcomm quando il telefono è rooted, ma spesso ci sono modi per abilitare la modalità USB Diag di Qualcomm (nota anche come "DM", Diag Monitor) sul telefono senza che sia rooted. Questo dipende dal produttore del telefono e passa, ad esempio, dalla digitazione di una combinazione magica di cifre sul tastierino numerico del telefono. Consulta la sezione "Come abilitare manualmente le porte diagnostiche sul mio telefono?" qui sotto per maggiori dettagli.
Prima di effettuare il root del telefono, ricorda che potresti anche voler caricare un'immagine di recovery alternativa come TWRP sul telefono con bootloader sbloccato OEM per eseguire un backup delle partizioni usando uno strumento come TWRP (può essere semplice come caricare l'immagine tramite Fastboot, abilitare il collegamento ADB nelle impostazioni di TWRP e usare adb pull su partizioni selezionate nella cartella `/dev/block/by-name``).
Per istruzioni specifiche sul root o sull'abilitazione della modalità Diag sul modello del tuo telefono, puoi cercare le informazioni sul forum XDA-developers con parole chiave appropriate.
Sui dispositivi Android basati su Qualcomm/MSM con kernel Linux 4.9 o precedente (questo include all'incirca parte dei dispositivi fino ad Android 12 e tutti i dispositivi prima di Android 10), i dispositivi Android basati su Qualcomm normalmente contengono un dispositivo di sistema chiamato /dev/diag che consente di comunicare dati alla porta diagnostica della banda base.
Sui dispositivi Android basati su Qualcomm/MSM con kernel Linux 4.14 o successivo (questo include all'incirca parte dei dispositivi da Android 10 e tutti i dispositivi da Android 13), /dev/diag è scomparso, poiché il modulo diagchar corrispondente è disabilitato per impostazione predefinita nei kernel AOSP/Linux recenti.
Sui dispositivi con kernel MSM Linux 4.9 o precedente, quando si usa il flag --adb, QCSuper proverà a connettersi automaticamente tramite ADB, tenterà quindi di trasferire un'utilità eseguibile che si connette al dispositivo /dev/diag, per avviarla come root usando un comando come su -c /data/local/tmp/adb_bridge, e successivamente trasmetterà i dati diagnostici dal dispositivo tramite TCP (inoltrando anche la porta TCP corrispondente attraverso ADB).
Sui dispositivi con kernel MSM Linux 4.14 o successivo, quando si usa il flag --adb, QCSuper proverà a connettersi automaticamente tramite ADB, tenterà quindi di commutare la modalità della porta USB del telefono usando un comando come su -c 'setprop sys.usb.config diag,adb', e poi eseguirà l'equivalente del flag --usb-modem auto (vedi sotto).
Il flag --usb-modem <value> consente a QCSuper di connettersi alla porta diagnostica Qualcomm tramite una porta pseudo-seriale su USB, indipendentemente da ADB, che è il modo più comune per connettersi al protocollo diag Qualcomm di un telefono Android usando un dispositivo esterno.
Per usare il flag --usb-modem <value>, la porta diagnostica Qualcomm deve essere abilitata sul telefono corrispondente, in altre parole il telefono deve essere stato commutato in modalità USB in anticipo.
Il modo più comune per commutare in modalità USB il tuo dispositivo è eseguire un comando come setprop sys.usb.config diag,adb come root, ma potrebbero esserci altri modi (con alcuni produttori di telefoni) per abilitare la modalità Qualcomm diagnostics-over-USB, vedi ad esempio questa pagina per possibili modi, per alcuni dispositivi, di abilitare Diag senza root - spesso implica digitare una combinazione magica di cifre sul tastierino del telefono.
In altri dispositivi, potrebbe anche essere possibile usare un file APK firmato dal produttore del telefono e con permessi relativi al sistema per abilitare la modalità Diag senza root (cerca ad esempio l'APK com.longcheertel.midtest per dispositivi basati su Xiaomi).
Una volta che il dispositivo è stato correttamente commutato in modalità USB, eseguire il comando getprop sys.usb.config tramite ADB dovrebbe mostrare una stringa di testo contenente diag.
Sul lato del tuo computer, poi, eseguendo lsusb (su Linux) dovrebbe mostrare una riga che si riferisce al tuo dispositivo, ad esempio:```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Nota l'identificatore `001:076` (indice bus/indice dispositivo) e le informazioni `05c6:9091` (ID vendor/ID prodotto) presenti in questo output.
Una volta disponibili queste informazioni, **puoi provare a usare un flag come `--usb-modem 05c6:9091` oppure `--usb-modem 001:076`** con QCSuper (rispettando il padding delle cifre).
Se questo non fosse conclusivo, puoi usare il comando `lsusb -v -d 05c6:9091`, che dovrebbe produrre un output dettagliato, incluse le configurazioni USB, le interfacce e gli endpoint del dispositivo USB corrispondente:```
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 ti consente di selezionare manualmente gli identificatori della configurazione e dell'interfaccia a cui desideri tentare di connetterti sul dispositivo interessato (designati come bConfigurationValue e bInterfaceNumber nel descrittore USB grezzo), nel caso in cui non venga rilevato correttamente. Ad esempio, il flag --usb-modem 05c6:9091:1:0 selezionerà rispettivamente la configurazione 1 e l'interfaccia 0 sul dispositivo interessato. --usb-modem 05c6:9091:1:4 selezionerà l'interfaccia 4 sulla configurazione 1.
Se il dettaglio degli indici di configurazione e interfaccia non è specificato, verrà selezionato il primo descrittore di interfaccia sul bus USB di sistema che risulta corrispondere ai seguenti criteri, in ordine di preferenza:
bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2Quando si usa il flag --usb-modem auto, viene selezionato il primo dispositivo che espone un'interfaccia USB conforme a questi criteri e, se necessario su Linux, viene selezionato il dispositivo a caratteri sottostante /dev/ttyUSB* (modulo usbserial) o /dev/ttyHS* (modulo hso), nel caso in cui il dispositivo sia stato rilevato e montato da un modulo del kernel (vedere la sezione "Uso di QCSuper con un modem USB" più avanti).
In alternativa, su Linux, potrebbe anche essere possibile creare manualmente gli endpoint /dev/ttyUSB* corrispondenti alle interfacce di un dato dispositivo USB, che potrai collegare usando QCSuper con un flag come --usb-modem /dev/ttyUSB0 (questo potrebbe richiedere l'esecuzione di QCSuper con privilegi di root), utilizzando il modulo usbserial. Per fare questo, puoi usare un comando come:```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## Uso di QCSuper con un modem USB
Puoi usare QCSuper con un modem USB che espone una porta Diag tramite l'opzione `--usb-modem <device>`, dove `<device>` è il nome del dispositivo pseudo-serial su Linux (come `/dev/ttyUSB0`, `/dev/ttyHS2` e altre possibilità) o della porta COM su Windows (come `COM2`, `COM3`).
Tieni presente che nella maggior parte delle configurazioni, dovrai eseguire QCSuper come root per poter usare questa modalità, in particolare per gestire l'interferenza sulla porta seriale.
Se non sai quali dispositivi sotto `/dev` espongono la porta Diag, potrebbe essere necessario provarne diversi. Puoi provare a rilevarlo automaticamente fermando il demone ModemManager (`sudo systemctl stop ModemManager`) e usando il seguente comando: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` e poi Ctrl-C.
Tieni presente che se non riesci a usare il tuo dispositivo con, ad esempio, ModemManager in primo luogo, è probabile che non sia completamente configurato e che non funzionerà neanche con QCSuper. Alcuni possibili problemi sono:
* Non hai applicato il corretto comando di [mode switching](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) per il tuo dispositivo.
* Se hai acquistato un dispositivo che in precedenza aveva una SIM di un altro operatore, il tuo dispositivo potrebbe essere bloccato tramite SIM. Potrebbe essere necessario usare il codice di sblocco del vecchio operatore e inviarlo al dispositivo, come se fosse un codice PIN: `sudo mmcli -i 0 --pin=<your_unlock_code>`
Se il tuo dispositivo USB basato su Qualcomm non espone una porta Diag per impostazione predefinita, potrebbe essere necessario digitare quanto segue attraverso la porta AT per abilitare la porta Diag:```
AT$QCDMG
Si prega di notare che un solo client può comunicare con la porta Diag alla volta. Questo vale per due istanze di QCSuper, oppure per istanze di QCSuper e ModemManager.
Se ModemManager è attivo sul sistema, QCSuper tenterà di aggiungere dinamicamente una regola udev per impedirgli di accedere alla porta Diag e riavvierà il suo demone, poiché attualmente è il modo migliore per ottenere questo risultato. Rimuoverà questa regola alla chiusura.
QCSuper è stato testato con successo con:
Tuttavia, mira a essere compatibile con la più ampia gamma possibile di dispositivi basati su chipset Qualcomm, per quanto riguarda la parte di cattura.
Altri dispositivi funzionanti sono elencati in: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"
Non esitate a segnalare se il vostro dispositivo funziona o meno aprendo una issue su Github.
Ci sono alcuni altri strumenti open source che implementano parti del protocollo Diag, con vari scopi: