
QCSuper — это инструмент для взаимодействия с телефонами и модемами на базе Qualcomm, позволяющий, среди прочего, захватывать сырые радиочастотные кадры 2G/3G/4G.
QCSuper — это инструмент для работы с телефонами и модемами на базе Qualcomm, позволяющий, среди прочего, захватывать сырые радио-кадры 2G/3G/4G (а на некоторых моделях — 5G).
Он позволяет создавать захваты PCAP с помощью Android-телефона с root-доступом, USB-донгла или существующего захвата в другом формате.

После того как вы его установили, вы можете подключить свой телефон с root-доступом через USB, и его использование с совместимым устройством сводится к:```bash qcsuper --adb --wireshark-live
Или, если вы вручную включили Diag-порт на вашем телефоне (соответствующая процедура может различаться в зависимости от модема и производителя телефона, см. ниже дополнительные пояснения), или если вы подключили мобильный широкополосный USB-модем:```bash
qcsuper --usb-modem auto --wireshark-live
Для связи с базовым процессором телефона используется протокол Qualcomm Diag, также называемый QCDM или DM (Diagnostic Monitor).
Вы готовы сообщить, работает ли ваше устройство или нет? Вы можете открыть Github issue.
Приложения:
Запись в блоге/демонстрация: Представляем QCSuper: инструмент для захвата вашего 2G/3G/4G радиоэфирного трафика на телефонах на базе Qualcomm
Дополнительная документация:
В последнее время QCSuper тестировался и разрабатывался на Ubuntu LTS 22.04+, а также использовался в Windows 11. Он зависит от нескольких модулей Python. Для лучшей совместимости рекомендуется использовать Linux.
Для его использования ваш телефон должен быть рутирован или предоставлять доступ к сервисному порту diag через USB. Чтобы проверить совместимость с вашим телефоном, найдите модель телефона на сайте, например GSMArena, и проверьте, есть ли в нём процессор Qualcomm.
Чтобы открывать PCAP-файлы, создаваемые QCSuper, можно использовать любой Wireshark 2.x–4.x для кадров 2G/3G, но для кадров 4G требуется как минимум Wireshark 2.5.x (и 2.6.x для отдельных NAS-сообщений, расшифрованных из кадров 4G). В Ubuntu в настоящее время доступна достаточно свежая сборка для всех версий.
Декодирование кадров 5G тестировалось в Wireshark 3.6.x и выше и выполняется путём автоматической установки Lua-плагина Wireshark (в %APPDATA%\Wireshark\plugins в Windows или в ~/.local/lib/wireshark/plugins в Linux и macOS). Этого можно избежать, задав переменную окружения DONT_INSTALL_WIRESHARK_PLUGIN=1, если вы хотите отказаться от установки.
Чтобы установить стабильную версию QCSuper в систему из PyPI, выполните следующие команды:```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
Затем вы можете просто ввести `qcsuper` в терминале, чтобы запустить QCSuper.
Чтобы установить разрабатываемую версию в определённую папку, откройте терминал и введите следующее:```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
Затем запустите QCSuper из каталога qcsuper/, используя команду ./qcsuper.py в терминале.
В Linux вы можете установить QCSuper с помощью пакетного менеджера uv, который является современной альтернативой PIP.
Сначала выполните одну из этих команд в терминале, чтобы установить 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
Затем выполните это, чтобы установить последнюю стабильную версию:```bash
uv tool install qcsuper
В качестве альтернативы вы можете установить последнюю разрабатываемую версию с помощью этой команды:```bash uv tool install git+https://github.com/P1sec/qcsuper
Затем вы можете просто ввести это в свой терминал:```bash
qcsuper
Однако если вам нужно запускать qcsuper от имени root, например потому что вы читаете данные с модемного устройства, qcsuper может отсутствовать в $PATH при использовании uv с sudo, поэтому может потребоваться сделать что-то вроде:```bash
sudo env "PATH=$PATH" qcsuper
Если вы хотите принять участие в разработке инструмента, вы можете использовать следующие команды, чтобы загрузить исходный код, а затем создать символические ссылки на QCSuper в `~/.local/bin` в каталог исходного кода:```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 может работать в Windows, но заранее следует убедиться, что приглашение ADB от Google корректно запускается на вашей машине с вашим устройством, а также вручную создать фильтры libusb-win32 (через утилиту, доступную в меню «Пуск» после её установки) в том случае, если ваше устройство должно напрямую подключаться к Diag-порту через псевдо-последовательный USB.
(Обратите внимание: если вы переключаете режим вашего устройства, связанные USB PID/VID могут измениться, и может потребоваться заново выполнить привязку драйверов в утилите создания фильтров libusb-win32 — и/или в диспетчере периферийных устройств Windows, в зависимости от ситуации.)
В Windows вам может понадобиться (в дополнение к драйверам ядра ADB от Google) загрузить и установить USB-драйверы для вашего телефона, соответствующие его модели (это могут быть универсальные USB-драйверы Qualcomm). Поищите в Google инструкции по запросу «модель вашего телефона + "USB driver"» или «"ADB driver"».
Затем нужно убедиться, что вы можете получить доступ к устройству с помощью adb. Учебник о том, как загрузить и настроить adb, можно найти здесь. Команда adb.exe shell (или любой другой исполняемый файл, который вы используете; копия исполняемого файла ADB находится в папке qcsuper/inputs/external/adb внутри QCSuper) должна отобразить приглашение для продолжения.
Затем перейдите по следующим ссылкам (инструмент недавно тестировался на Windows 11 — не гарантируется его работа на Windows 7), чтобы:
%PATH% обновлена.Чтобы установить необходимые модули Python, откройте командную строку и введите:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
Оставаясь в командной строке, перейдите в каталог, содержащий QCSuper, с помощью команды `cd`. Затем вы можете выполнять команды (которые должны начинаться с `py qcsuper.py` или `py3 qcsuper.py`, если вы установили Python 3 из онлайн-установщика, или `python3.exe .\qcsuper.py`, если вы установили его из Microsoft Store).
Как уже отмечалось выше, возможно, вам придётся добавить фильтр `libusb-win32` с помощью утилиты, доступной в меню «Пуск», чтобы интерфейс, соответствующий порту Diag, был виден QCSuper на устройстве после переключения режима (первая неудачная попытка запустить инструмент с флагом `--adb` должна вызвать переключение режима, если драйвер ADB работает, а устройство правильно рутировано).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Скриншот добавления фильтра libusb-win32 для порта Diag телефона Mi">
</p>
## Поддерживаемые протоколы
QCSuper поддерживает захват нескольких мобильных радиопротоколов. Эти протоколы помещаются после [заголовка GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP) — стандартного заголовка (инкапсулированного в UDP/IP), позволяющего идентифицировать протокол, а пакеты GSMTAP помещаются в [файл PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat), который полностью анализируется с помощью Wireshark.
Протоколы 2G/3G/4G можно разбить на несколько "уровней": уровень 1 отвечает за цифровую радиомодуляцию и мультиплексирование, уровень 2 выполняет такие задачи, как фрагментация и подтверждение приёма, уровень 3 — это собственно сигнализация или пользовательские данные.
QCSuper чаще всего позволяет захватывать уровень 3, так как его наиболее практично анализировать с помощью Wireshark, и именно его протокол Diag предоставляет изначально (и здесь есть некоторая интересная информация).
* 2G (GSM): уровень 3 и выше (RR/...)
* 2.5G (GPRS и EDGE): уровень 2 и выше (MAC-RLC/...) для подтверждений приёма данных
* 3G (UMTS): уровень 3 и выше (RRC/...)
* Кроме того, он поддерживает пересборку SIB (System Information Blocks — системные информационные блоки, данные, транслируемые всем пользователям) в отдельные кадры GSMTAP, поскольку Wireshark в настоящее время не может сделать это сам: флаг `--reassemble-sibs`
* 4G (LTE): уровень 3 и выше (RRC/...)
* Кроме того, он поддерживает помещение расшифрованных сообщений NAS (которые встроены в зашифрованном виде в пакеты RRC) в дополнительные кадры: флаг `--decrypt-nas`
По умолчанию IP-трафик, отправляемый вашим устройством, не включается, вы видите только кадры сигнализации. Вы можете включить генерируемый вами IP-трафик с помощью опции `--include-ip-traffic` (IP является, по сути, уровнем 3 для вашего трафика данных в 2G/3G/4G, с учётом того, что его заголовки могут быть сжаты (ROHC) и может быть включён небольшой заголовок PPP).
Передаваемый вами трафик данных использует канал, отличный от сигнального трафика; этот канал настраивается через сигнальный трафик; QCSuper, таким образом, должен показывать вам все детали, касающиеся того, как инициируется этот канал.
## Примечание по использованию
Чтобы использовать QCSuper, вы указываете один вход (например: `--adb` (телефон Android), `--usb-modem`) и один или несколько модулей (`--wireshark-live` для открытия Wireshark, `--pcap-dump` для записи трафика в файл PCAP, `--info` для общей информации об устройстве...).
Вот несколько команд, которые вы можете ввести:```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
Или, если это недостаточно просто для работы:```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
Вот текущее уведомление об использовании 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.
Указание - для передачи данных из stdin или в stdout поддерживается (сжатое gzip содержимое может не обнаруживаться).
Этот файл README не является руководством по рутированию вашего телефона (получению возможности выполнять на телефоне такие команды, как "su").
На большинстве современных Android-устройств вы должны сначала использовать опцию «OEM/bootloader unlock», присутствующую в настройках разработчика телефона, чтобы разблокировать загрузчик. Затем вы можете воспользоваться таким инструментом, как Magisk, который позволит вам получить пропатченный образ для загрузчика вашего телефона; этот образ вы затем сможете загрузить на ваш телефон в режиме fastboot.
QCSuper будет работать проще на вашем устройстве на базе Qualcomm, если ваш телефон рутирован, но часто существуют способы включить USB-режим Qualcomm Diag (также известный как «DM», Diag Monitor) на вашем телефоне без рутирования. Это зависит от производителя вашего телефона и происходит, например, путём ввода магической комбинации цифр на клавиатуре набора номера вашего телефона. Пожалуйста, обратитесь к разделу «Как вручную включить диагностические порты на моём телефоне?» ниже для получения дополнительных сведений.
Перед рутированием вашего телефона помните, что вы также можете захотеть загрузить альтернативный образ восстановления, например TWRP, на ваш телефон с разблокированным OEM, чтобы выполнить резервное копирование разделов с помощью такого инструмента, как TWRP (это может быть так же просто, как загрузить образ через Fastboot, включить ADB-соединение в настройках TWRP и использовать adb pull для выбранных разделов в папке /dev/block/by-name папке`).
Для получения конкретных инструкций по рутированию или включению режима Diag для вашей модели телефона вы можете поискать информацию на форуме XDA-developers с соответствующими ключевыми словами.
На Android-устройствах на базе Qualcomm/MSM с ядром Linux 4.9 или более ранней версии (сюда входит примерно часть устройств вплоть до Android 12 и все устройства до Android 10) Android-устройства на базе Qualcomm обычно содержат системное устройство /dev/diag, которое позволяет передавать данные в диагностический порт базового процессора (baseband).
На Android-устройствах на базе Qualcomm/MSM с ядром Linux 4.14 или более поздней версии (сюда входит примерно часть устройств от Android 10 и все устройства от Android 13), /dev/diag исчез, так как соответствующий модуль diagchar отключён по умолчанию в последних ядрах AOSP/Linux.
На устройствах с ядром MSM Linux 4.9 или более ранней версии при использовании флага --adb QCSuper попытается автоматически подключиться через ADB, затем попытается передать исполняемую утилиту, подключающуюся к устройству /dev/diag, чтобы запустить её от имени root с помощью такой команды, как su -c /data/local/tmp/adb_bridge, и впоследствии передавать диагностические данные с устройства по TCP (также перенаправляя соответствующий TCP-порт через ADB).
На устройствах с ядром MSM Linux 4.14 или более поздней версии при использовании флага --adb QCSuper попытается автоматически подключиться через ADB, затем попытается переключить USB-режим порта телефона с помощью такой команды, как su -c 'setprop sys.usb.config diag,adb', и выполнит эквивалент флага --usb-modem auto (см. ниже).
Флаг --usb-modem <value> позволяет QCSuper подключаться к диагностическому порту Qualcomm через псевдопоследовательный порт по USB, независимо от ADB; это наиболее распространённый способ подключения к протоколу Qualcomm diag на Android-телефоне с использованием внешнего устройства.
Чтобы использовать флаг --usb-modem <value>, диагностический порт Qualcomm должен быть включён на соответствующем телефоне; иными словами, телефон должен быть заранее переключён в USB-режим.
Наиболее распространённый способ переключить ваше устройство в USB-режим — выполнить от имени root такую команду, как setprop sys.usb.config diag,adb, но могут быть и другие способы (у некоторых производителей телефонов) включить режим Qualcomm diagnostics-over-USB; см., например, эту страницу — там приведены возможные способы включения Diag без root для некоторых устройств; часто для этого нужно ввести магическую комбинацию цифр на клавиатуре набора номера телефона.
На других устройствах также может быть возможно использовать APK-файл, подписанный производителем телефона и имеющий системные разрешения, чтобы включить режим Diag без рутирования (например, поищите APK com.longcheertel.midtest для устройств на базе Xiaomi).
После того как ваше устройство было правильно переключено в нужный режим, выполнение команды getprop sys.usb.config через ADB должно показать текстовую строку, содержащую diag.
Затем на стороне вашего компьютера выполнение lsusb (в Linux) должно показать строку, относящуюся к вашему устройству, например:```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Обратите внимание на `001:076` (идентификатор шины/устройства), а также на информацию `05c6:9091` (идентификатор производителя/модели), присутствующую в этом выводе.
Когда эта информация будет у вас в наличии, **можно попробовать использовать такой флаг, как `--usb-modem 05c6:9091` или `--usb-modem 001:076`** вместе с QCSuper (соблюдайте разрядность цифр).
Если это не даст однозначного результата, можно воспользоваться командой `lsusb -v -d 05c6:9091`, которая должна выдать подробный вывод, включая конфигурации USB, интерфейсы и конечные точки соответствующего USB-устройства:```
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 позволяет вручную выбрать идентификаторы конфигурации и интерфейса, к которым вы хотите выполнить подключение на соответствующем устройстве (обозначенные как bConfigurationValue и bInterfaceNumber в сыром USB-дескрипторе), в случае, если оно определено некорректно. Например, флаг --usb-modem 05c6:9091:1:0 выберет соответственно конфигурацию 1 и интерфейс 0 на соответствующем устройстве. --usb-modem 05c6:9091:1:4 выберет интерфейс 4 в рамках конфигурации 1.
Если сведения об индексах конфигурации и интерфейса не указаны, будет выбран первый дескриптор интерфейса на системной USB-шине, который соответствует следующим критериям, в порядке предпочтения:
bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2При использовании флага --usb-modem auto выбирается первое устройство, предоставляющее USB-интерфейс, соответствующий этому критерию, и при необходимости в Linux выбирается нижележащее символьное устройство /dev/ttyUSB* (модуль usbserial) или /dev/ttyHS* (модуль hso) в случае, если устройство было обнаружено и подключено модулем ядра (см. раздел «Использование QCSuper с USB-модемом» ниже).
Кроме того, в Linux также может быть возможно вручную создать конечные точки /dev/ttyUSB*, соответствующие интерфейсам заданного USB-устройства, к которым вы сможете подключиться с помощью QCSuper, используя флаг вида --usb-modem /dev/ttyUSB0 (для этого может потребоваться запуск QCSuper с правами root), с помощью модуля usbserial. Для этого можно использовать команду вида:```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## Использование QCSuper с USB-модемом
Вы можете использовать QCSuper с USB-модемом, предоставляющим Diag-порт, с помощью опции `--usb-modem <device>`, где `<device>` — это имя псевдопоследовательного устройства в Linux (например, `/dev/ttyUSB0`, `/dev/ttyHS2` и другие возможности) или COM-порта в Windows (например, `COM2`, `COM3`).
Обратите внимание, что в большинстве конфигураций вам потребуется запускать QCSuper от имени root, чтобы иметь возможность использовать этот режим, особенно для устранения конфликтов, связанных с последовательным портом.
Если вы не знаете, какие устройства в `/dev` предоставляют Diag-порт, возможно, вам придётся перепробовать несколько из них. Вы можете попробовать автоопределение, остановив демон ModemManager (`sudo systemctl stop ModemManager`), и использовать следующую команду: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'`, затем нажмите Ctrl-C.
Обратите внимание: если вам вообще не удаётся использовать ваше устройство, например, с ModemManager, скорее всего, оно настроено не полностью и не будет работать и с QCSuper. Вот несколько возможных подводных камней:
* Вы не применили правильную команду [переключения режима](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) для вашего устройства.
* Если вы купили устройство, в котором ранее была SIM-карта другого оператора, ваше устройство может быть заблокировано оператором (sim-locked). Возможно, вам придётся использовать код разблокировки от прежнего оператора и ввести его в устройство, как если бы это был PIN-код: `sudo mmcli -i 0 --pin=<your_unlock_code>`
Если ваше USB-устройство на базе Qualcomm не предоставляет Diag-порт по умолчанию, вам может потребоваться ввести следующее через AT-порт, чтобы включить Diag-порт:```
AT$QCDMG
Обратите внимание, что одновременно только один клиент может общаться с портом Diag. Это касается двух экземпляров QCSuper или экземпляров QCSuper и ModemManager.
Если ModemManager активен в вашей системе, QCSuper попытается динамически добавить правило udev, чтобы предотвратить его доступ к порту Diag, и перезапустить его демон, так как в настоящее время это лучший способ добиться этого. При закрытии QCSuper это правило будет удалено.
QCSuper был успешно протестирован с:
Однако цель состоит в том, чтобы обеспечить совместимость с максимально возможным диапазоном устройств на базе чипсета Qualcomm, по крайней мере для части захвата.
Другие работающие устройства перечислены на: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"
Не стесняйтесь сообщать, работает ли ваше устройство или нет, открыв issue на Github.
Существует несколько других открытых инструментов, реализующих части протокола Diag для различных целей: