
QCSuper is a tool communicating with Qualcomm-based phones and modems, allowing to capture raw 2G/3G/4G radio frames, among other things.
QCSuper es una herramienta que se comunica con teléfonos y módems basados en Qualcomm, permitiendo capturar tramas de radio 2G/3G/4G (y 5G en ciertos modelos) en bruto, entre otras cosas.
Te permitirá generar capturas PCAP de ello usando ya sea un teléfono Android rooteado, un dongle USB o una captura existente en otro formato.

Después de instalarlo, puedes conectar tu teléfono rooteado por USB y usarlo, con un dispositivo compatible, es tan simple como:```bash qcsuper --adb --wireshark-live
O, si has habilitado manualmente la exposición de un puerto Diag en tu teléfono (el procedimiento correspondiente puede variar según el módem y el fabricante de tu teléfono, consulta más abajo para más explicaciones), o si has conectado un dongle de banda ancha móvil:```bash
qcsuper --usb-modem auto --wireshark-live
Utiliza el protocolo Diag de Qualcomm, también llamado QCDM o DM (Diagnostic Monitor) para comunicarse con el módem de tu teléfono.
¿Estás dispuesto a informar de que tu dispositivo funciona o no? Puedes abrir un issue en GitHub.
Anexos:
Entrada de blog/demo: Presentación de QCSuper: una herramienta para capturar tu tráfico aéreo 2G/3G/4G en teléfonos basados en Qualcomm
Más documentación:
QCSuper se ha probado y desarrollado recientemente en Ubuntu LTS 22.04+ y también se ha usado en Windows 11. Depende de algunos módulos de Python. Se recomienda usar Linux para una mayor compatibilidad.
Para usarlo, tu teléfono debe estar rooteado o exponer un puerto de servicio diag por USB. Para comprobar la compatibilidad con tu teléfono, busca el modelo del teléfono en un sitio como GSMArena y verifica si tiene un procesador Qualcomm.
Para abrir archivos PCAP generados por QCSuper, puedes usar cualquier Wireshark 2.x - 4.x para tramas 2G/3G, pero necesitas al menos Wireshark 2.5.x para tramas 4G (y 2.6.x para mensajes NAS individuales descifrados fuera de las tramas 4G). Ubuntu actualmente proporciona una compilación lo bastante reciente para todas las versiones.
La decodificación de tramas 5G se probó con Wireshark 3.6.x y superior y se realizará mediante la instalación automática de un complemento Lua de Wireshark (en %APPDATA%\Wireshark\plugins en Windows o en ~/.local/lib/wireshark/plugins en Linux y macOS), que se puede evitar configurando la variable de entorno DONT_INSTALL_WIRESHARK_PLUGIN=1 si deseas evitarlo.
Para instalar la versión estable de QCSuper en todo el sistema desde PyPI, puedes ejecutar estos comandos:```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
Después, simplemente puedes escribir `qcsuper` en tu terminal para ejecutar QCSuper.
Para instalar la versión de desarrollo en una carpeta específica, abre una terminal y escribe lo siguiente:```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
Luego, ejecuta QCSuper desde el directorio qcsuper/, usando el comando ./qcsuper.py en la terminal.
En Linux, puedes instalar QCSuper usando el gestor de paquetes uv, que es una alternativa moderna a PIP.
Primero, ejecuta uno de estos comandos en tu terminal para instalar 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
Luego, ejecuta esto para instalar la última versión estable:```bash
uv tool install qcsuper
Alternativamente, puedes instalar la última versión de desarrollo usando este comando:```bash uv tool install git+https://github.com/P1sec/qcsuper
Entonces puedes simplemente escribir esto en tu terminal:```bash
qcsuper
Sin embargo, si necesitas ejecutar qcsuper como root, por ejemplo porque estás leyendo datos desde un dispositivo módem, qcsuper puede no estar en $PATH cuando usas uv con sudo, por lo que esto puede requerir hacer algo como:```bash
sudo env "PATH=$PATH" qcsuper
Si deseas participar en el desarrollo de la herramienta, puedes usar estos comandos para descargar el código fuente y luego crear enlaces simbólicos a QCSuper en `~/.local/bin` hacia el directorio del código fuente:```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 puede ejecutarse en Windows, pero antes debe asegurarse de que el símbolo del sistema de ADB de Google se ejecute correctamente en su máquina con su dispositivo, y también debe crear manualmente los filtros libusb-win32 (mediante la utilidad accesible desde el Menú Inicio después de instalarla) en caso de que su dispositivo necesite conectarse directamente al puerto Diag a través de USB pseudo-serial.
(Tenga en cuenta que si cambia el modo de su dispositivo, el PID/VID USB asociado puede cambiar y puede ser necesario rehacer las asociaciones de controladores en la utilidad de creación de filtros libusb-win32 - y/o en el administrador de dispositivos periféricos de Windows dependiendo del caso)
En Windows, es posible que necesite (además de los controladores de kernel ADB de Google) descargar e instalar los controladores USB de su teléfono según su modelo (esto puede incluir controladores USB genéricos de Qualcomm). Busque en Google el modelo de su teléfono + "USB driver" o "ADB driver" para obtener instrucciones.
Luego, debe asegurarse de que puede acceder a su dispositivo mediante adb. Puede encontrar un tutorial sobre cómo descargar y configurar adb aquí. El comando adb.exe shell (o la ruta del ejecutable que utilice; hay una copia del ejecutable de ADB en la carpeta qcsuper/inputs/external/adb de QCSuper) debe mostrar un símbolo del sistema para continuar.
Luego, siga estos enlaces (la herramienta se ha probado recientemente en Windows 11 - no se garantiza que funcione en Windows 7) para:
%PATH% se haya actualizado.Para instalar los módulos de Python necesarios, abra su símbolo del sistema y escriba:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
Todavía en el símbolo del sistema, muévete al directorio que contiene QCSuper usando el comando `cd`. A continuación puedes ejecutar comandos (que deberían comenzar con `py qcsuper.py` o `py3 qcsuper.py` si instalaste Python 3 desde el instalador en línea, o `python3.exe .\qcsuper.py` si lo instalaste desde Microsoft Store).
Como se ha indicado anteriormente, es posible que tengas que añadir un filtro `libusb-win32` mediante la utilidad disponible en el menú Inicio para asegurarte de que la interfaz correspondiente al puerto Diag sea visible para QCSuper en el dispositivo con el modo cambiado (un primer intento fallido de ejecutar la herramienta con la opción `--adb` debería provocar un cambio de modo si el controlador ADB funciona y el dispositivo está correctamente rooteado).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Captura de pantalla de cómo añadir un filtro libusb-win32 para el puerto Diag de un teléfono Mi">
</p>
## Protocolos compatibles
QCSuper permite capturar un puñado de protocolos de radio móvil. Estos protocolos se colocan después de una [cabecera GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP), una cabecera estándar (encapsulada en UDP/IP) que permite identificar el protocolo, y los paquetes GSMTAP se colocan en un [archivo PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat) que se puede analizar completamente con Wireshark.
Los protocolos 2G/3G/4G se pueden dividir en unas pocas "capas": la capa 1 se ocupa de la modulación y multiplexión de la radio digital, la capa 2 maneja cosas como la fragmentación y el acuse de recibo, la capa 3 es la señalización o los datos de usuario propiamente dichos.
QCSuper te permite, en la mayoría de los casos, capturar en la capa 3, ya que es la más práctica de analizar con Wireshark, y es lo que el protocolo Diag proporciona de forma nativa (y aquí hay información interesante).
* 2G (GSM): Capa 3 y superiores (RR/...)
* 2.5G (GPRS y EDGE): Capa 2 y superiores (MAC-RLC/...) para acuses de recibo de datos
* 3G (UMTS): Capa 3 y superiores (RRC/...)
* Además, soporta el reensamblado de SIB (Bloques de Información del Sistema, los datos difundidos a todos los usuarios) en tramas GSMTAP separadas, ya que Wireshark actualmente no puede hacerlo por sí mismo: opción `--reassemble-sibs`
* 4G (LTE): Capa 3 y superiores (RRC/...)
* Además, soporta colocar mensajes NAS descifrados, que están incrustados cifrados dentro de los paquetes RRC, en tramas adicionales: opción `--decrypt-nas`
Por defecto, el tráfico IP enviado por tu dispositivo no se incluye; solo ves las tramas de señalización. Puedes incluir el tráfico IP que generes usando la opción `--include-ip-traffic` (siendo IP prácticamente la capa 3 para tu tráfico de datos en 2G/3G/4G, con el detalle de que sus cabeceras pueden estar comprimidas (ROHC) y puede incluirse una pequeña cabecera PPP).
El tráfico de datos que envías utiliza un canal diferente del tráfico de señalización; dicho canal se establece mediante el tráfico de señalización; por lo tanto, QCSuper debería mostrarte todos los detalles relevantes sobre cómo se inicia este canal.
## Aviso de uso
Para usar QCSuper, especificas una entrada (p. ej.: `--adb` (teléfono Android), `--usb-modem`) y uno o más módulos (`--wireshark-live` para abrir Wireshark, `--pcap-dump` para escribir tráfico en un archivo PCAP, `--info` para obtener información genérica sobre el dispositivo...).
Algunos comandos que puedes escribir son:```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
O, si no es lo suficientemente simple para funcionar:```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
Aquí está el aviso de uso actual para 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.
Especificar - para canalizar datos desde stdin o hacia stdout es compatible (el contenido comprimido con gzip puede no detectarse).
Este archivo README no es una guía sobre cómo hacer root a tu teléfono (conseguir que tu teléfono te permita ejecutar comandos como "su").
En la mayoría de los dispositivos Android recientes, primero debes usar la opción "desbloqueo OEM/bootloader" disponible en los ajustes de desarrollador del teléfono para desbloquear el bootloader, y luego puedes usar una herramienta como Magisk que te permitirá obtener una imagen parcheada para el bootloader de tu teléfono, que luego podrás cargar en tu teléfono en modo fastboot.
QCSuper tendrá más posibilidades de funcionar fácilmente en tu dispositivo basado en Qualcomm cuando tu teléfono tenga root, pero a menudo hay formas de habilitar el modo USB Diag de Qualcomm (también conocido como "DM", Diag Monitor) en tu teléfono sin tener root. Esto depende de tu fabricante de teléfono y se logra, por ejemplo, escribiendo una combinación mágica de dígitos en el teclado de marcación del teléfono. Consulta la sección "¿Cómo habilitar manualmente los puertos de diagnóstico en mi teléfono?" a continuación para más detalles.
Antes de hacer root a tu teléfono, recuerda que también puedes querer cargar una imagen de recuperación alternativa como TWRP en tu teléfono con el OEM desbloqueado para realizar una copia de seguridad de particiones usando una herramienta como TWRP (puede ser tan simple como cargar la imagen mediante Fastboot, habilitar el enlace ADB en los ajustes de TWRP, y usar adb pull sobre las particiones seleccionadas en la carpeta /dev/block/by-name).
Para instrucciones específicas sobre cómo hacer root o habilitar el modo Diag en tu modelo de teléfono, puedes buscar información en el foro de desarrolladores de XDA con las palabras clave adecuadas.
En dispositivos Android basados en Qualcomm/MSM con kernel Linux 4.9 o anterior (esto incluye aproximadamente parte de los dispositivos hasta Android 12 y todos los dispositivos anteriores a Android 10), los dispositivos Android basados en Qualcomm normalmente contienen un dispositivo de sistema llamado /dev/diag que permite comunicar datos al puerto de diagnóstico del módem de banda base.
En dispositivos Android basados en Qualcomm/MSM con kernel Linux 4.14 o posterior (esto incluye aproximadamente parte de los dispositivos desde Android 10 y todos los dispositivos desde Android 13), /dev/diag desapareció, ya que el módulo diagchar correspondiente está deshabilitado por defecto en los kernels AOSP/Linux recientes.
En los dispositivos con kernel MSM Linux 4.9 o anterior, al usar el indicador --adb, QCSuper intentará conectarse mediante ADB automáticamente, luego intentará transferir una utilidad ejecutable que se conecta al dispositivo /dev/diag, para lanzarla como root usando un comando como su -c /data/local/tmp/adb_bridge, y posteriormente transmitirá los datos de diagnóstico con el dispositivo a través de TCP (también reenviando el puerto TCP correspondiente mediante ADB).
En los dispositivos con kernel MSM Linux 4.14 o posterior, al usar el indicador --adb, QCSuper intentará conectarse mediante ADB automáticamente, luego intentará cambiar el modo del puerto USB del teléfono usando un comando como su -c 'setprop sys.usb.config diag,adb', y después ejecutará el equivalente del indicador --usb-modem auto (ver más abajo).
El indicador --usb-modem <valor> permite a QCSuper conectarse al puerto de diagnóstico de Qualcomm a través de un puerto pseudo-serial sobre USB, independientemente de ADB, que es la forma más común de conectarse al protocolo diag de Qualcomm de un teléfono Android usando un dispositivo externo.
Para usar el indicador --usb-modem <valor>, el puerto de diagnóstico de Qualcomm debe estar habilitado en el teléfono correspondiente, es decir, el teléfono debería haber sido cambiado de modo USB previamente.
La forma más común de cambiar el modo USB de tu dispositivo es ejecutar un comando como setprop sys.usb.config diag,adb como root, pero puede haber otras formas (con ciertos fabricantes de teléfono) de habilitar el modo de diagnóstico de Qualcomm sobre USB, consulta por ejemplo esta página para ver posibles formas, en ciertos dispositivos, de habilitar Diag sin root; a menudo implica escribir una combinación mágica de dígitos en el teclado de marcación del teléfono.
En otros dispositivos, también puede ser posible usar un archivo APK firmado por el fabricante del teléfono y con permisos relacionados con el sistema para habilitar el modo Diag sin hacer root (busca, por ejemplo, información sobre el APK com.longcheertel.midtest para dispositivos Xiaomi).
Una vez que tu dispositivo haya sido correctamente cambiado de modo, ejecutar el comando getprop sys.usb.config a través de ADB debería mostrar una cadena de texto que contenga diag.
En el lado de tu computadora, luego, ejecutar lsusb (en Linux) debería mostrar una línea que haga referencia a tu dispositivo, por ejemplo:```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Tenga en cuenta el `001:076` (identificador de índice de bus/índice de dispositivo) y la información `05c6:9091` (ID de proveedor/ID de producto) presente en esta salida.
Una vez que tenga esta información disponible, **puede intentar usar una opción como `--usb-modem 05c6:9091` o `--usb-modem 001:076`** con QCSuper (por favor, respete el relleno de dígitos).
Si esto no es concluyente, puede usar el comando `lsusb -v -d 05c6:9091`, que debería producir una salida detallada, incluyendo las configuraciones USB, interfaces y endpoints para el dispositivo USB correspondiente:```
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 le permite seleccionar manualmente los identificadores de la configuración y de la interfaz a la que desea intentar conectarse en el dispositivo en cuestión (designados como bConfigurationValue y bInterfaceNumber en el descriptor USB sin procesar), en el caso de que no se detecte correctamente. Por ejemplo, la opción --usb-modem 05c6:9091:1:0 seleccionará respectivamente la configuración 1 y la interfaz 0 en el dispositivo en cuestión. --usb-modem 05c6:9091:1:4 seleccionará la interfaz 4 sobre la configuración 1.
Si no se especifica el detalle de los índices de configuración e interfaz, seleccionará el primer descriptor de interfaz en el bus USB del sistema que coincida con los siguientes criterios, por orden de preferencia:
bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2Al utilizar la opción --usb-modem auto, se escoge el primer dispositivo que exponga una interfaz USB que cumpla estos criterios, y si es necesario, en Linux se selecciona el dispositivo de caracteres subyacente /dev/ttyUSB* (módulo usbserial) o /dev/ttyHS* (módulo hso), en el caso de que el dispositivo haya sido detectado y montado por un módulo del kernel (consulte la sección "Uso de QCSuper con un módem USB" más abajo).
Alternativamente, en Linux, también puede ser posible crear manualmente los endpoints /dev/ttyUSB* correspondientes a las interfaces de un dispositivo USB determinado, a los que podrá conectarse mediante QCSuper con una opción como --usb-modem /dev/ttyUSB0 (esto puede requerir ejecutar QCSuper con privilegios de root), usando el módulo usbserial. Para ello, puede utilizar un comando como:```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## Usando QCSuper con un módem USB
Puedes usar QCSuper con un módem USB que exponga un puerto Diag utilizando la opción `--usb-modem <device>`, donde `<device>` es el nombre del dispositivo pseudo-serial en Linux (como `/dev/ttyUSB0`, `/dev/ttyHS2` y otras posibilidades) o del puerto COM en Windows (como `COM2`, `COM3`).
Ten en cuenta que en la mayoría de las configuraciones, necesitarás ejecutar QCSuper como root para poder usar este modo, especialmente para manejar la interferencia del puerto serie.
Si no sabes qué dispositivos bajo `/dev` exponen el puerto Diag, es posible que tengas que probar varios de ellos. Puedes intentar autodetectarlo deteniendo el daemon de ModemManager (`sudo systemctl stop ModemManager`) y usando el siguiente comando: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` y luego Ctrl-C.
Ten en cuenta que si no puedes usar tu dispositivo con, por ejemplo, ModemManager en primer lugar, es probable que no esté completamente configurado y que tampoco funcione con QCSuper. Algunas posibles trampas son:
* No aplicaste el comando [cambio de modo](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) adecuado para tu dispositivo.
* Si compraste un dispositivo que anteriormente tenía una SIM de otro operador, tu dispositivo puede estar bloqueado por SIM. Es posible que tengas que usar el código de desbloqueo del operador anterior e introducirlo en el dispositivo, como si fuera un código PIN: `sudo mmcli -i 0 --pin=<your_unlock_code>`
Si tu dispositivo USB basado en Qualcomm no expone un puerto Diag por defecto, es posible que necesites escribir lo siguiente a través del puerto AT para habilitar el puerto Diag:```
AT$QCDMG
Tenga en cuenta que solo un cliente puede comunicarse con el puerto Diag al mismo tiempo. Esto se aplica a dos instancias de QCSuper, o a instancias de QCSuper y ModemManager.
Si ModemManager está activo en su sistema, QCSuper intentará añadir dinámicamente una regla de udev para impedirle el acceso al puerto Diag y reiniciar su demonio, ya que actualmente es la mejor forma de lograrlo. Suprimirá esta regla al cerrarse.
QCSuper se probó con éxito con:
Sin embargo, tiene como objetivo ser compatible con la gama más amplia posible de dispositivos basados en un chipset Qualcomm, para la parte de captura.
Otros dispositivos que funcionan se enumeran en: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"
No dude en informar si su dispositivo funciona correctamente o no abriendo un issue en Github.
Hay algunas otras herramientas de código abierto que implementan partes del protocolo Diag, con diversos propósitos: