
QCSuper is a tool communicating with Qualcomm-based phones and modems, allowing to capture raw 2G/3G/4G radio frames, among other things.
QCSuper est un outil qui communique avec les téléphones et modems basés sur Qualcomm, permettant de capturer les trames radio brutes 2G/3G/4G (et pour certains modèles 5G), entre autres.
Il vous permettra de générer des captures PCAP à l'aide d'un téléphone Android rooté, d'une clé USB ou d'une capture existante dans un autre format.

Après l'avoir installé, vous pouvez brancher votre téléphone rooté en USB et, avec un appareil compatible, son utilisation est aussi simple que :```bash qcsuper --adb --wireshark-live
Ou, si vous avez manuellement activé l'exposition d'un port Diag sur votre téléphone (la procédure correspondante peut varier selon le modem et le fabricant de votre téléphone, voir ci-dessous pour plus d'explications), ou si vous avez branché une clé haut débit mobile :```bash
qcsuper --usb-modem auto --wireshark-live
Il utilise le protocole Diag de Qualcomm, également appelé QCDM ou DM (Diagnostic Monitor), afin de communiquer avec le modem de votre téléphone.
Vous souhaitez signaler que votre appareil fonctionne ou ne fonctionne pas ? Vous pouvez ouvrir une issue Github.
Annexes :
Article de blog/démo : Présentation de QCSuper : un outil pour capturer votre trafic aérien 2G/3G/4G sur les téléphones basés sur Qualcomm
Documentation complémentaire :
QCSuper a été récemment testé et développé sur Ubuntu LTS 22.04+ et a également été utilisé sous Windows 11. Il dépend de quelques modules Python. Il est conseillé d'utiliser Linux pour une meilleure compatibilité.
Pour l'utiliser, votre téléphone doit être rooté ou exposer un port de service diag via USB. Pour vérifier la compatibilité avec votre téléphone, recherchez le modèle du téléphone sur un site comme GSMArena et vérifiez s'il possède un processeur Qualcomm.
Pour ouvrir les fichiers PCAP produits par QCSuper, vous pouvez utiliser n'importe quelle version de Wireshark 2.x - 4.x pour les trames 2G/3G, mais vous avez besoin d'au moins Wireshark 2.5.x pour les trames 4G (et 2.6.x pour les messages NAS individuels déchiffrés à partir des trames 4G). Ubuntu fournit actuellement une version suffisamment récente pour toutes les versions.
Le décodage des trames 5G a été testé sous Wireshark 3.6.x et supérieur et se fera via l'installation automatique d'un plug-in Lua Wireshark (dans %APPDATA%\Wireshark\plugins sous Windows ou dans ~/.local/lib/wireshark/plugins sous Linux et macOS), ce qui peut être évité en définissant la variable d'environnement DONT_INSTALL_WIRESHARK_PLUGIN=1 si vous souhaitez l'éviter.
Afin d'installer la version stable de QCSuper à l'échelle du système depuis PyPI, vous pouvez exécuter ces commandes :```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
Ensuite, vous pouvez simplement taper `qcsuper` dans votre terminal pour exécuter QCSuper.
Pour installer la version de développement dans un dossier spécifique, ouvrez un terminal et tapez ce qui suit :```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
Ensuite, exécutez QCSuper depuis le répertoire qcsuper/, en utilisant la commande ./qcsuper.py dans le terminal.
Sur Linux, vous pouvez installer QCSuper à l'aide du gestionnaire de paquets uv, une alternative moderne à PIP.
Tout d'abord, exécutez l'une de ces commandes dans votre terminal afin d'installer 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
Ensuite, exécutez ceci pour installer la dernière version stable:```bash
uv tool install qcsuper
Alternativement, vous pouvez installer la dernière version de développement à l'aide de cette commande :```bash uv tool install git+https://github.com/P1sec/qcsuper
Vous pouvez ensuite simplement taper ceci dans votre terminal:```bash
qcsuper
Cependant, si vous avez besoin d'exécuter qcsuper en tant que root, par exemple parce que vous lisez des données à partir d'un périphérique modem, qcsuper peut ne pas être dans $PATH lorsque vous utilisez uv avec sudo, cela peut donc nécessiter de faire quelque chose comme :```bash
sudo env "PATH=$PATH" qcsuper
Si vous souhaitez participer au développement de l'outil, vous pouvez utiliser ces commandes afin de télécharger la source, puis créer des liens symboliques vers QCSuper dans `~/.local/bin` pointant vers le répertoire source:```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 peut fonctionner sous Windows, mais vous devez au préalable vous assurer que l'invite ADB de Google fonctionne correctement sur votre machine avec votre appareil, et vous devez également créer manuellement des filtres libusb-win32 (via l'utilitaire accessible dans le menu Démarrer après son installation) dans le cas où votre appareil doit directement se connecter au port Diag via un USB pseudo-série.
(Veuillez noter que si vous changez de mode sur votre appareil, le PID/VID USB associé peut changer et il peut être nécessaire de refaire les associations de pilotes dans l'utilitaire de création de filtres libusb-win32 - et/ou dans le gestionnaire de périphériques Windows selon le cas)
Sous Windows, vous devrez peut-être (en plus des pilotes de noyau ADB de Google) télécharger et installer les pilotes USB de votre téléphone en fonction de son modèle (cela peut inclure des pilotes USB Qualcomm génériques). Veuillez rechercher sur Google le modèle de votre téléphone + "USB driver" ou "ADB driver" pour obtenir des instructions.
Ensuite, vous devez vous assurer que vous pouvez atteindre votre appareil en utilisant adb. Vous pouvez trouver un tutoriel sur la façon de télécharger et de configurer adb ici. La commande adb.exe shell (ou tout autre chemin d'exécutable que vous utilisez, une copie de l'exécutable ADB est présente dans le dossier qcsuper/inputs/external/adb de QCSuper) doit afficher une invite pour continuer.
Ensuite, suivez ces liens (l'outil a été testé récemment sur Windows 11 - son fonctionnement n'est pas garanti sur Windows 7) afin de :
%PATH% a été mise à jour.Pour installer les modules Python requis, ouvrez votre invite de commandes et tapez :```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
Toujours dans votre invite de commandes, déplacez-vous vers le répertoire contenant QCSuper à l'aide de la commande `cd`. Vous pouvez ensuite exécuter des commandes (qui devraient commencer par `py qcsuper.py` ou `py3 qcsuper.py` si vous avez installé Python 3 depuis l'installeur en ligne, ou `python3.exe .\qcsuper.py` si vous l'avez installé depuis le Windows Store).
Comme indiqué ci-dessus, il est possible que vous deviez ajouter un filtre `libusb-win32` via l'utilitaire disponible dans le menu Démarrer afin de garantir que l'interface correspondant au port Diag soit visible par QCSuper sur le périphérique dont le mode a été commuté (une première tentative échouée d'exécution de l'outil avec l'option `--adb` devrait déclencher une commutation de mode si le pilote ADB fonctionne et que le périphérique est correctement rooté).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Capture d'écran de l'ajout d'un filtre libusb-win32 pour le port Diag d'un téléphone Mi">
</p>
## Protocoles pris en charge
QCSuper permet de capturer une poignée de protocoles radio mobiles. Ces protocoles sont placés après un [en-tête GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP), un en-tête standard (encapsulé dans UDP/IP) permettant d'identifier le protocole, et les paquets GSMTAP sont placés dans un [fichier PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat) entièrement analysable avec Wireshark.
Les protocoles 2G/3G/4G peuvent être décomposés en quelques « couches » : la couche 1 concerne la modulation et le multiplexage radio numériques, la couche 2 gère des choses comme la fragmentation et l'accusé de réception, la couche 3 est la signalisation proprement dite ou les données utilisateur.
QCSuper vous permet le plus souvent de capturer au niveau de la couche 3, car c'est la plus pratique à analyser avec Wireshark, et c'est ce que le protocole Diag fournit nativement (et quelques informations intéressantes s'y trouvent).
* 2G (GSM) : Couche 3 et au-delà (RR/...)
* 2.5G (GPRS et EDGE) : Couche 2 et au-delà (MAC-RLC/...) pour les accusés de réception de données
* 3G (UMTS) : Couche 3 et au-delà (RRC/...)
* De plus, il prend en charge le réassemblage des SIB (System Information Blocks, les données diffusées à tous les utilisateurs) dans des trames GSMTAP séparées, car Wireshark ne peut actuellement pas le faire lui-même : option `--reassemble-sibs`
* 4G (LTE) : Couche 3 et au-delà (RRC/...)
* De plus, il prend en charge le placement des messages NAS déchiffrés, qui sont incorporés chiffrés dans les paquets RRC, dans des trames supplémentaires : option `--decrypt-nas`
Par défaut, le trafic IP envoyé par votre périphérique n'est pas inclus, vous ne voyez que les trames de signalisation. Vous pouvez inclure le trafic IP que vous générez avec l'option `--include-ip-traffic` (l'IP étant essentiellement la couche 3 de votre trafic de données en 2G/3G/4G, si ce n'est que ses en-têtes peuvent être compressés (ROHC) et qu'un minuscule en-tête PPP peut être inclus).
Le trafic de données que vous envoyez utilise un canal différent du trafic de signalisation ; ce canal est configuré via le trafic de signalisation. QCSuper devrait donc vous montrer tous les détails pertinents sur la façon dont ce canal est initié.
## Note d'utilisation
Afin d'utiliser QCSuper, vous spécifiez une entrée (par exemple : `--adb` (téléphone Android), `--usb-modem`) et un ou plusieurs modules (`--wireshark-live` pour ouvrir Wireshark, `--pcap-dump` pour écrire le trafic dans un fichier PCAP, `--info` pour des informations génériques sur le périphérique...).
Quelques commandes que vous pouvez saisir sont :```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
Ou, si ce n'est pas assez simple pour fonctionner :```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
Voici la notice d'utilisation actuelle de 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.
Spécifier - pour rediriger les données depuis stdin ou vers stdout est pris en charge (le contenu gzipé peut ne pas être détecté).
Ce fichier README n'est pas un guide sur la façon de rooter votre téléphone (obtenir que votre téléphone vous permette d'exécuter des commandes telles que « su »).
Sur la plupart des appareils Android récents, vous devez d'abord utiliser l'option « OEM/bootloader unlock » présente dans les paramètres développeur du téléphone afin de déverrouiller le bootloader, puis vous pouvez utiliser un outil tel que Magisk qui vous permettra d'obtenir une image patchée pour le bootloader de votre téléphone, que vous pourrez ensuite charger sur votre téléphone en fastboot mode.
QCSuper aura plus de chances de fonctionner facilement sur votre appareil basé sur Qualcomm lorsque votre téléphone est rooté, mais il existe souvent des moyens d'activer le mode USB Qualcomm Diag (également connu sous le nom de « DM », Diag Monitor) sur votre téléphone sans avoir à le rooter. Cela dépend de votre fournisseur de téléphone et passe, par exemple, par la saisie d'une combinaison magique de chiffres sur le clavier numérique de votre téléphone. Veuillez consulter la section « Comment activer manuellement les ports de diagnostic sur mon téléphone ? » ci-dessous pour plus de détails.
Avant de rooter votre téléphone, rappelez-vous que vous pouvez également vouloir charger une image de récupération alternative telle que TWRP sur votre téléphone déverrouillé OEM afin d'effectuer une sauvegarde de partition à l'aide d'un outil tel que TWRP (cela peut être aussi simple que de charger l'image via Fastboot, d'activer le lien ADB dans les paramètres de TWRP, et d'utiliser adb pull sur les partitions sélectionnées dans le dossier /dev/block/by-name).
Pour des instructions spécifiques sur le root ou l'activation du mode Diag sur votre modèle de téléphone, vous pouvez rechercher des informations sur le forum XDA-developers avec des mots-clés appropriés.
Sur les appareils Android basés sur Qualcomm/MSM utilisant un noyau Linux 4.9 ou antérieur (cela inclut approximativement une partie des appareils jusqu'à Android 12 et tous les appareils antérieurs à Android 10), les appareils Android basés sur Qualcomm contiennent normalement un périphérique système appelé /dev/diag qui permet de communiquer des données vers le port de diagnostic de la bande de base.
Sur les appareils Android basés sur Qualcomm/MSM utilisant un noyau Linux 4.14 ou ultérieur (cela inclut approximativement une partie des appareils à partir d'Android 10 et tous les appareils à partir d'Android 13), /dev/diag a disparu, car le module diagchar correspondant est désactivé par défaut dans les noyaux AOSP/Linux récents.
Sur les appareils utilisant un noyau MSM Linux 4.9 ou antérieur, lors de l'utilisation du drapeau --adb, QCSuper essaiera de se connecter automatiquement via ADB, tentera ensuite de transférer un utilitaire exécutable se connectant au périphérique /dev/diag, afin de le lancer en tant que root à l'aide d'une commande telle que su -c /data/local/tmp/adb_bridge, puis transmettra les données de diagnostic avec l'appareil sur TCP (en redirigeant également le port TCP correspondant via ADB).
Sur les appareils utilisant un noyau MSM Linux 4.14 ou ultérieur, lors de l'utilisation du drapeau --adb, QCSuper essaiera de se connecter automatiquement via ADB, tentera ensuite de commuter le mode du port USB du téléphone à l'aide d'une commande telle que su -c 'setprop sys.usb.config diag,adb', puis exécutera l'équivalent du drapeau --usb-modem auto (voir ci-dessous).
Le drapeau --usb-modem <value> permet à QCSuper de se connecter au port de diagnostic Qualcomm via un port pseudo-série sur USB, indépendamment d'ADB, ce qui est le moyen le plus courant de se connecter au protocole diag Qualcomm d'un téléphone Android à l'aide d'un périphérique externe.
Afin d'utiliser le drapeau --usb-modem <value>, le port de diagnostic Qualcomm doit être activé sur le téléphone correspondant, autrement dit le téléphone doit avoir été commuté en mode USB au préalable.
Le moyen le plus courant de commuter le mode USB de votre appareil est d'exécuter une commande telle que setprop sys.usb.config diag,adb en tant que root, mais il peut exister d'autres moyens (avec certains fournisseurs de téléphone) pour activer le mode diagnostics-sur-USB de Qualcomm, voir par exemple cette page pour les moyens possibles, pour certains appareils, d'activer Diag sans root – cela implique souvent de saisir une combinaison magique de chiffres sur le clavier numérique du téléphone.
Sur d'autres appareils, il peut également être possible d'utiliser un fichier APK signé par le fournisseur du téléphone et disposant de permissions liées au système afin d'activer le mode Diag sans root (recherchez l'APK com.longcheertel.midtest pour les appareils Xiaomi par exemple).
Une fois que votre appareil a été correctement commuté, l'exécution de la commande getprop sys.usb.config via ADB devrait afficher une chaîne de texte contenant diag.
Côté ordinateur, l'exécution de lsusb (sous Linux) devrait alors afficher une ligne faisant référence à votre appareil, par exemple :```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Notez l'identifiant `001:076` (index de bus/index de périphérique), ainsi que les informations `05c6:9091` (ID constructeur/ID produit) présentes dans cette sortie.
Une fois que vous disposez de ces informations, **vous pouvez essayer d'utiliser une option telle que `--usb-modem 05c6:9091` ou `--usb-modem 001:076`** avec QCSuper (veuillez respecter le padding des chiffres).
Si cela n'est pas concluant, vous pouvez utiliser la commande `lsusb -v -d 05c6:9091`, qui devrait produire une sortie détaillée, notamment les configurations USB, les interfaces et les points de terminaison du périphérique USB correspondant :```
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 vous permet de sélectionner manuellement les identifiants de la configuration et de l'interface auxquelles vous souhaitez tenter de vous connecter sur l'appareil concerné (désignés comme bConfigurationValue et bInterfaceNumber dans le descripteur USB brut), dans le cas où ce dernier n'est pas détecté correctement. Par exemple, l'option --usb-modem 05c6:9091:1:0 sélectionnera respectivement la configuration 1 et l'interface 0 sur l'appareil concerné. --usb-modem 05c6:9091:1:4 sélectionnera l'interface 4 sur la configuration 1.
Si le détail des index de configuration et d'interface n'est pas spécifié, il sélectionnera le premier descripteur d'interface sur le bus USB du système qui correspond aux critères suivants, par ordre de préférence :
bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2Lorsque l'option --usb-modem auto est utilisée, le premier appareil exposant une interface USB conforme à ces critères est sélectionné et, si nécessaire sous Linux, le périphérique caractère sous-jacent /dev/ttyUSB* (module usbserial) ou /dev/ttyHS* (module hso) est sélectionné, dans le cas où l'appareil a été détecté et monté par un module du noyau (voir la section "Utilisation de QCSuper avec un modem USB" ci-dessous).
Alternativement, sous Linux, il peut également être possible de créer manuellement des points de terminaison /dev/ttyUSB* correspondant aux interfaces d'un périphérique USB donné, auxquels vous pourrez vous connecter à l'aide de QCSuper avec une option telle que --usb-modem /dev/ttyUSB0 (cela peut nécessiter d'exécuter QCSuper avec les droits root), en utilisant le module usbserial. Pour cela, vous pouvez utiliser une commande telle que :```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## Utilisation de QCSuper avec un modem USB
Vous pouvez utiliser QCSuper avec un modem USB exposant un port Diag à l'aide de l'option `--usb-modem <device>`, où `<device>` est le nom du périphérique pseudo-série sous Linux (comme `/dev/ttyUSB0`, `/dev/ttyHS2` et d'autres possibilités) ou du port COM sous Windows (comme `COM2`, `COM3`).
Veuillez noter que dans la plupart des configurations, vous devrez exécuter QCSuper en tant que root pour pouvoir utiliser ce mode, notamment pour gérer les interférences sur les ports série.
Si vous ne savez pas quels périphériques sous `/dev` exposent le port Diag, vous devrez peut-être en essayer plusieurs. Vous pouvez tenter de le détecter automatiquement en arrêtant le démon ModemManager (`sudo systemctl stop ModemManager`), puis en utilisant la commande suivante : `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` puis Ctrl-C.
Veuillez noter que si vous n'êtes pas capable d'utiliser votre périphérique avec, par exemple, ModemManager en premier lieu, il est probable qu'il ne soit pas totalement configuré et qu'il ne fonctionnera pas non plus avec QCSuper. Quelques pièges possibles sont :
* Vous n'avez pas appliqué la commande de [changement de mode](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) appropriée pour votre périphérique.
* Si vous avez acheté un périphérique qui avait auparavant une carte SIM d'un autre opérateur, votre périphérique est peut-être verrouillé par opérateur (sim-locked). Vous devrez peut-être utiliser le code de déverrouillage de l'ancien opérateur et le soumettre au périphérique, comme s'il s'agissait d'un code PIN : `sudo mmcli -i 0 --pin=<your_unlock_code>`
Si votre périphérique USB basé sur Qualcomm n'expose pas de port Diag par défaut, vous devrez peut-être saisir ce qui suit via le port AT afin d'activer le port Diag :```
AT$QCDMG
Veuillez noter qu'un seul client peut communiquer avec le port Diag à la fois. Cela s'applique à deux instances de QCSuper, ou à des instances de QCSuper et de ModemManager.
Si ModemManager est actif sur votre système, QCSuper tentera d'ajouter dynamiquement une règle udev pour l'empêcher d'accéder au port Diag et redémarrer son démon, car c'est actuellement la meilleure façon d'y parvenir. Il supprimera cette règle à la fermeture.
QCSuper a été testé avec succès avec :
Il vise cependant à être compatible avec la plus large gamme possible d'appareils basés sur un chipset Qualcomm, pour la partie capture.
D'autres appareils fonctionnels sont répertoriés ici : https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"
N'hésitez pas à signaler si votre appareil fonctionne ou non en ouvrant une issue GitHub.
Il existe quelques autres outils open source implémentant des parties du protocole Diag, à des fins diverses :