
QCSuper is a tool communicating with Qualcomm-based phones and modems, allowing to capture raw 2G/3G/4G radio frames, among other things.
QCSuper Qualcomm-आधारित फोन और मॉडेम के साथ संचार करने वाला एक टूल है, जो अन्य चीज़ों के अलावा कच्चे 2G/3G/4G (और कुछ मॉडलों के लिए 5G) रेडियो फ्रेम कैप्चर करने की सुविधा देता है।
यह आपको रूटेड Android फोन, USB डोंगल या किसी अन्य प्रारूप में मौजूदा कैप्चर का उपयोग करके इसका PCAP कैप्चर उत्पन्न करने की अनुमति देगा।

इंस्टॉल करने के बाद, आप अपने रूटेड फोन को USB में प्लग कर सकते हैं और एक संगत डिवाइस के साथ इसका उपयोग करना उतना ही सरल है जितना:```bash qcsuper --adb --wireshark-live
या, यदि आपने अपने फ़ोन पर मैन्युअल रूप से Diag पोर्ट एक्सपोज़ करना सक्षम किया है (संबंधित प्रक्रिया आपके फ़ोन मॉडेम और निर्माता के आधार पर भिन्न हो सकती है, अधिक स्पष्टीकरण के लिए नीचे देखें), या यदि आपने मोबाइल ब्रॉडबैंड डोंगल लगाया है:```bash
qcsuper --usb-modem auto --wireshark-live
यह Qualcomm Diag प्रोटोकॉल का उपयोग करता है, जिसे QCDM या DM (Diagnostic Monitor) भी कहा जाता है, ताकि आपके फोन के बेसबैंड से संचार किया जा सके।
क्या आप रिपोर्ट करना चाहते हैं कि आपका डिवाइस काम करता है या नहीं? आप एक Github issue खोल सकते हैं।
परिशिष्ट (Annexes):
ब्लॉग पोस्ट/डेमो: Presenting QCSuper: a tool for capturing your 2G/3G/4G air traffic on Qualcomm-based phones
अधिक दस्तावेज़:
QCSuper का हाल ही में Ubuntu LTS 22.04+ पर परीक्षण और विकास किया गया है और यह Windows 11 पर भी उपयोग किया गया है। यह कुछ Python मॉड्यूल पर निर्भर करता है। बेहतर संगतता के लिए Linux का उपयोग करने की सलाह दी जाती है।
इसे उपयोग करने के लिए, आपका फोन रूट होना चाहिए या USB पर diag सेवा पोर्ट उजागर करना चाहिए। अपने फोन के साथ संगतता की जाँच करने के लिए, GSMArena जैसी साइट पर फोन का मॉडल देखें और जाँचें कि उसमें Qualcomm प्रोसेसर है या नहीं।
QCSuper द्वारा उत्पादित PCAP फ़ाइलों को खोलने के लिए, आप 2G/3G फ्रेम के लिए किसी भी Wireshark 2.x - 4.x का उपयोग कर सकते हैं, लेकिन 4G फ्रेम के लिए आपको कम से कम Wireshark 2.5.x की आवश्यकता है (और 4G फ्रेम से डिक्रिप्ट किए गए व्यक्तिगत NAS संदेशों के लिए 2.6.x)। Ubuntu वर्तमान में सभी संस्करणों के लिए पर्याप्त नया बिल्ड प्रदान करता है।
5G फ्रेम को डिकोड करना Wireshark 3.6.x और उससे ऊपर के तहत परीक्षण किया गया था और यह स्वचालित रूप से Wireshark Lua प्लग-इन स्थापित करके किया जाएगा (Windows पर %APPDATA%\Wireshark\plugins में या Linux और macOS पर ~/.local/lib/wireshark/plugins में), जिसे DONT_INSTALL_WIRESHARK_PLUGIN=1 पर्यावरण चर सेट करके टाला जा सकता है, यदि आप इसे टालना चाहते हैं।
PyPI से QCSuper के स्थिर संस्करण को सिस्टम-व्यापी रूप से स्थापित करने के लिए, आप ये कमांड चला सकते हैं:```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.py कमांड का उपयोग करके, qcsuper/ निर्देशिका से QCSuper चलाएँ।
Linux पर, आप uv पैकेज मैनेजर का उपयोग करके QCSuper इंस्टॉल कर सकते हैं, जो 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 के रूप में चलाने की आवश्यकता है, उदाहरण के लिए क्योंकि आप मॉडेम डिवाइस से डेटा पढ़ रहे हैं, तो sudo के साथ uv का उपयोग करते समय qcsuper $PATH में नहीं हो सकता है, इसलिए इसके लिए कुछ ऐसा करने की आवश्यकता हो सकती है:```bash
sudo env "PATH=$PATH" qcsuper
यदि आप उपकरण के विकास में भाग लेना चाहते हैं, तो आप स्रोत को डाउनलोड करने के लिए इन कमांडों का उपयोग कर सकते हैं, फिर `~/.local/bin` में QCSuper के लिए स्रोत निर्देशिका की ओर सिम्बोलिक लिंक बना सकते हैं:```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 विंडोज़ पर चल सकता है, लेकिन आपको पहले से यह सुनिश्चित कर लेना चाहिए कि Google का ADB प्रॉम्प्ट आपकी मशीन पर आपके डिवाइस के साथ सही ढंग से चलता है, और आपको उस स्थिति में मैन्युअल रूप से libusb-win32 फ़िल्टर भी बनाने चाहिए (इसे स्थापित करने के बाद स्टार्ट मेनू में उपलब्ध उपयोगिता के माध्यम से), जहाँ आपके डिवाइस को स्यूडो-सीरियल USB पर Diag पोर्ट से सीधे कनेक्ट करने की आवश्यकता होती है।
(कृपया ध्यान दें कि यदि आप अपने डिवाइस का मोड-स्विच करते हैं, तो संबद्ध USB PID/VID बदल सकता है और इसके लिए libusb-win32 फ़िल्टर निर्माण उपयोगिता में ड्राइवर संबद्धता दोबारा करने की आवश्यकता हो सकती है - और/या स्थिति के आधार पर विंडोज़ परिधीय उपकरण प्रबंधक में)
विंडोज़ पर, आपको (Google के ADB कर्नेल ड्राइवरों के अतिरिक्त) अपने फ़ोन मॉडल के लिए अपने फ़ोन के USB ड्राइवर डाउनलोड और इंस्टॉल करने की आवश्यकता हो सकती है (इसमें सामान्य Qualcomm USB ड्राइवर शामिल हो सकते हैं)। कृपया निर्देशों के लिए Google पर अपने फ़ोन का मॉडल + "USB ड्राइवर" या "ADB ड्राइवर" खोजें।
फिर, आपको यह सुनिश्चित करना होगा कि आप adb का उपयोग करके अपने डिवाइस तक पहुँच सकते हैं। आप adb को डाउनलोड और सेटअप करने के तरीके पर एक ट्यूटोरियल यहाँ पा सकते हैं। आगे बढ़ने के लिए adb.exe shell (या आप जिस भी निष्पादन योग्य पथ का उपयोग करते हैं, QCSuper के qcsuper/inputs/external/adb फ़ोल्डर में ADB निष्पादन योग्य की एक प्रति मौजूद है) कमांड को एक प्रॉम्प्ट प्रदर्शित करना चाहिए।
फिर, इन लिंक्स का अनुसरण करें (इस टूल का हाल ही में विंडोज़ 11 पर परीक्षण किया गया है - यह विंडोज़ 7 पर काम करेगा इसकी गारंटी नहीं है) इस क्रम में:
%PATH% सिस्टम वेरिएबल अपडेट हो गया है।आवश्यक Python मॉड्यूल स्थापित करने के लिए, अपना कमांड प्रॉम्प्ट खोलें और टाइप करें:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
अपने कमांड प्रॉम्प्ट में, `cd` कमांड का उपयोग करके QCSuper वाले निर्देशिका में जाएँ। फिर आप कमांड निष्पादित कर सकते हैं (जो `py qcsuper.py` या `py3 qcsuper.py` से शुरू होनी चाहिए यदि आपने ऑनलाइन इंस्टॉलर से Python 3 स्थापित किया है, या `python3.exe .\qcsuper.py` यदि आपने इसे Windows Store से स्थापित किया है)।
जैसा ऊपर बताया गया है, यह संभव है कि आपको स्टार्ट मेनू में उपलब्ध उपयोगिता के माध्यम से `libusb-win32` फ़िल्टर जोड़ना पड़े, ताकि यह सुनिश्चित किया जा सके कि मोड-स्विच किए गए डिवाइस पर Diag पोर्ट के अनुरूप इंटरफ़ेस QCSuper को दिखाई दे (यदि ADB ड्राइवर काम कर रहा है और डिवाइस सही ढंग से रूटेड है, तो `--adb` फ़्लैग का उपयोग करके टूल चलाने का पहला असफल प्रयास मोड-स्विच को ट्रिगर करना चाहिए)।
<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>
## समर्थित प्रोटोकॉल
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/...)
* इसके अतिरिक्त, यह SIBs (सिस्टम इंफॉर्मेशन ब्लॉक्स, सभी उपयोगकर्ताओं को प्रसारित डेटा) को अलग GSMTAP फ्रेम्स में पुनः जोड़ने का समर्थन करता है, क्योंकि Wireshark वर्तमान में यह स्वयं नहीं कर सकता: फ़्लैग `--reassemble-sibs`
* 4G (LTE): परत 3 और उससे ऊपर (RRC/...)
* इसके अतिरिक्त, यह डिक्रिप्टेड NAS संदेशों को, जो RRC पैकेट में एन्क्रिप्टेड एम्बेडेड होते हैं, अतिरिक्त फ्रेम्स में रखने का समर्थन करता है: फ़्लैग `--decrypt-nas`
डिफ़ॉल्ट रूप से, आपके डिवाइस द्वारा भेजा गया IP ट्रैफ़िक शामिल नहीं होता, आप केवल सिग्नलिंग फ्रेम्स देखते हैं। आप `--include-ip-traffic` विकल्प का उपयोग करके अपने द्वारा उत्पन्न IP ट्रैफ़िक को शामिल कर सकते हैं (IP 2G/3G/4G में आपके डेटा ट्रैफ़िक के लिए लगभग परत 3 है, इस विवरण के साथ कि इसके हेडर संपीड़ित हो सकते हैं (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
Here is the current usage notice for QCSuper:
यहाँ 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 की ओर पाइप करना समर्थित है (gzipped सामग्री का पता नहीं चल सकता है)।
यह README फ़ाइल आपके फ़ोन को root करने (आपके फ़ोन को ऐसी कमांड चलाने में सक्षम बनाना जैसे "su") के लिए कोई गाइड नहीं है।
अधिकांश हाल के Android डिवाइसों में, bootloader को अनलॉक करने के लिए आपको पहले फ़ोन की developer settings में मौजूद "OEM/bootloader unlock" विकल्प का उपयोग करना होगा, फिर आप Magisk जैसे टूल का उपयोग कर सकते हैं जो आपके फ़ोन के bootloader के लिए एक patched image प्राप्त करने में सक्षम बनाएगा, जिसे आप बाद में fastboot मोड में अपने फ़ोन पर लोड कर सकेंगे।
QCSuper के पास आपके Qualcomm-आधारित डिवाइस पर अधिक आसानी से काम करने की संभावना तब होगी जब आपका फ़ोन rooted हो, लेकिन अक्सर ऐसे तरीके होते हैं जिनसे आपके फ़ोन को root किए बिना Qualcomm Diag USB मोड (जिसे "DM", Diag Monitor भी कहा जाता है) सक्षम किया जा सकता है। यह निर्भर करता है आपके फ़ोन विक्रेता पर और उदाहरण के लिए, आपके फ़ोन के डायलर कीपैड पर अंकों का एक जादुई संयोजन टाइप करने के माध्यम से होता है। अधिक विवरण के लिए कृपया नीचे "How to manually enable the diagnostic ports on my phone?" अनुभाग देखें।
अपने फ़ोन को root करने से पहले, याद रखें कि आप अपने OEM-unlocked फ़ोन पर TWRP जैसी वैकल्पिक recovery image लोड करना भी चाह सकते हैं ताकि TWRP जैसे टूल का उपयोग करके partition backup किया जा सके (यह उतना ही सरल हो सकता है जितना कि Fastboot के माध्यम से image लोड करना, TWRP की settings में ADB लिंक सक्षम करना, और /dev/block/by-name फ़ोल्डर में चयनित partitions पर adb pull का उपयोग करना)।
अपने फ़ोन मॉडल पर root करने या Diag मोड सक्षम करने के विशिष्ट निर्देशों के लिए, आप उपयुक्त कीवर्ड के साथ XDA-developers फ़ोरम पर जानकारी खोज सकते हैं।
Qualcomm/MSM Android-आधारित डिवाइसों पर जिनमें Linux kernel 4.9 या उससे पहले का संस्करण है (इसमें लगभग Android 12 तक के कुछ डिवाइस और Android 10 से पहले के सभी डिवाइस शामिल हैं), Qualcomm-आधारित Android डिवाइसों में सामान्यतः /dev/diag नामक एक system device होता है जो baseband के diagnostics port तक डेटा संचारित करने की अनुमति देता है।
Qualcomm/MSM Android-आधारित डिवाइसों पर जिनमें Linux kernel 4.14 या उसके बाद का संस्करण है (इसमें लगभग Android 10 से कुछ डिवाइस और Android 13 से सभी डिवाइस शामिल हैं), /dev/diag गायब हो गया, क्योंकि संबंधित diagchar मॉड्यूल हाल के AOSP/Linux kernels में डिफ़ॉल्ट रूप से अक्षम है।
Linux 4.9 या उससे पहले के MSM kernel वाले डिवाइसों पर, --adb फ़्लैग का उपयोग करते समय, QCSuper स्वचालित रूप से ADB के माध्यम से कनेक्ट करने का प्रयास करेगा, फिर /dev/diag डिवाइस से जुड़ने वाली एक executable utility को स्थानांतरित करने का प्रयास करेगा, ताकि इसे su -c /data/local/tmp/adb_bridge जैसी कमांड का उपयोग करके root के रूप में लॉन्च किया जा सके, और फिर डिवाइस के साथ TCP पर diagnostics डेटा संचारित करेगा (संबंधित TCP पोर्ट को ADB के माध्यम से आगे भी अग्रेषित करेगा)।
Linux 4.14 या उसके बाद के MSM kernel वाले डिवाइसों पर, --adb फ़्लैग का उपयोग करते समय, QCSuper स्वचालित रूप से ADB के माध्यम से कनेक्ट करने का प्रयास करेगा, फिर फ़ोन के USB पोर्ट को mode-switch करने के लिए su -c 'setprop sys.usb.config diag,adb' जैसी कमांड का उपयोग करने का प्रयास करेगा, और फिर --usb-modem auto फ़्लैग के समकक्ष निष्पादित करेगा (नीचे देखें)।
--usb-modem <value> फ़्लैग QCSuper को USB पर pseudo-serial port के माध्यम से Qualcomm diagnostics port से कनेक्ट करने की अनुमति देता है, जो ADB से स्वतंत्र रूप से, बाहरी डिवाइस का उपयोग करके Android-आधारित फ़ोन के Qualcomm diag प्रोटोकॉल से जुड़ने का सबसे सामान्य तरीका है।
--usb-modem <value> फ़्लैग का उपयोग करने के लिए, संबंधित फ़ोन पर Qualcomm diagnostic port सक्षम होना चाहिए, अन्यथा कहें तो फ़ोन को पहले से USB mode-switched होना चाहिए।
अपने डिवाइस को USB mode-switch करने का सबसे सामान्य तरीका root के रूप में setprop sys.usb.config diag,adb जैसी कमांड निष्पादित करना है, लेकिन कुछ फ़ोन विक्रेताओं के साथ Qualcomm diagnostics-over-USB मोड सक्षम करने के अन्य तरीके भी हो सकते हैं, उदाहरण के लिए कुछ डिवाइसों के लिए Diag को बिना root के सक्षम करने के संभावित तरीकों के लिए यह पृष्ठ देखें - इसमें अक्सर फ़ोन के डायलर कीपैड पर अंकों का एक जादुई संयोजन टाइप करना शामिल होता है।
अन्य डिवाइसों में, फ़ोन विक्रेता द्वारा हस्ताक्षरित और System-संबंधित अनुमतियों वाली APK फ़ाइल का उपयोग करके बिना rooting के Diag मोड सक्षम करना भी संभव हो सकता है (उदाहरण के लिए Xiaomi-आधारित डिवाइसों के लिए com.longcheertel.midtest APK के बारे में खोजें)।
एक बार जब आपके डिवाइस को सही ढंग से mode-switch कर दिया जाता है, तो ADB पर getprop sys.usb.config कमांड चलाने पर diag युक्त एक टेक्स्ट स्ट्रिंग प्रदर्शित होनी चाहिए।
फिर, आपके कंप्यूटर की ओर से, lsusb (Linux पर) चलाने पर आपके डिवाइस को संदर्भित करने वाली एक पंक्ति प्रदर्शित होनी चाहिए, उदाहरण के लिए:```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Note the `001:076` (bus index/device index identifier), and the `05c6:9091` (vendor ID/product ID) information present in this output.
Once you have this information available, **you may try to use a flag such as `--usb-modem 05c6:9091` or `--usb-modem 001:076`** with QCSuper (please respect the digit padding).
If this isn't conclusive, you may use the `lsusb -v -d 05c6:9091` command, which should produce detailed output, including the USB configurations, interfaces and endpoints for the corresponding USB device:```
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 आपको संबंधित डिवाइस पर उस कॉन्फ़िगरेशन और इंटरफ़ेस के पहचानकर्ताओं को मैन्युअल रूप से चुनने की अनुमति देता है, जिनसे आप कनेक्ट करने का प्रयास करना चाहते हैं (जिन्हें रॉ USB डिस्क्रिप्टर में bConfigurationValue और bInterfaceNumber के रूप में नामित किया गया है), उस स्थिति में जब इसे सही ढंग से पहचाना नहीं गया है। उदाहरण के लिए, --usb-modem 05c6:9091:1:0 फ़्लैग संबंधित डिवाइस पर क्रमशः कॉन्फ़िगरेशन 1 और इंटरफ़ेस 0 का चयन करेगा। --usb-modem 05c6:9091:1:4 कॉन्फ़िगरेशन 1 पर इंटरफ़ेस 4 का चयन करेगा।
यदि कॉन्फ़िगरेशन और इंटरफ़ेस इंडेक्स का विवरण निर्दिष्ट नहीं है, तो यह सिस्टम 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 मॉड्यूल) कैरेक्टर डिवाइस का चयन किया जाता है, यदि डिवाइस को कर्नेल मॉड्यूल द्वारा पहचाना और माउंट किया गया है (नीचे "USB मॉडेम के साथ QCSuper का उपयोग" अनुभाग देखें)।
वैकल्पिक रूप से, Linux पर, किसी दिए गए USB डिवाइस के इंटरफ़ेसों के अनुरूप /dev/ttyUSB* एंडपॉइंट्स को मैन्युअल रूप से बनाना भी संभव हो सकता है, जिनसे आप QCSuper का उपयोग करके --usb-modem /dev/ttyUSB0 जैसे फ़्लैग के साथ कनेक्ट कर सकेंगे (इसके लिए QCSuper को रूट अधिकारों के साथ चलाने की आवश्यकता हो सकती है), usbserial मॉड्यूल का उपयोग करके। इसके लिए, आप निम्न जैसे कमांड का उपयोग कर सकते हैं:```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## USB मॉडेम के साथ QCSuper का उपयोग करना
आप QCSuper का उपयोग USB मॉडेम के साथ कर सकते हैं जो Diag पोर्ट को उजागर करता है, `--usb-modem <device>` विकल्प का उपयोग करके, जहाँ `<device>` Linux पर स्यूडो-सीरियल डिवाइस का नाम है (जैसे `/dev/ttyUSB0`, `/dev/ttyHS2` और अन्य संभावनाएँ) या Windows पर COM पोर्ट का नाम (जैसे `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 के साथ भी काम नहीं करेगा। कुछ संभावित समस्याएँ (gotchas) निम्न हैं:
* आपने अपने डिवाइस के लिए उचित [मोड स्विचिंग](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) कमांड लागू नहीं किया।
* यदि आपने ऐसा डिवाइस खरीदा है जिसमें पहले किसी भिन्न ऑपरेटर का SIM था, तो आपका डिवाइस sim-locked हो सकता है। आपको पूर्व ऑपरेटर से अनलॉक कोड लेकर उसे डिवाइस में जमा करना पड़ सकता है, जैसे कि यह PIN कोड हो: `sudo mmcli -i 0 --pin=<your_unlock_code>`
यदि आपका Qualcomm-आधारित USB डिवाइस डिफ़ॉल्ट रूप से Diag पोर्ट उजागर नहीं करता है, तो आपको Diag पोर्ट सक्षम करने के लिए AT पोर्ट के माध्यम से निम्न टाइप करने की आवश्यकता हो सकती है:```
AT$QCDMG
कृपया ध्यान दें कि एक ही समय में केवल एक क्लाइंट Diag पोर्ट के साथ संचार कर सकता है। यह दो QCSuper इंस्टेंस, या QCSuper और ModemManager इंस्टेंस पर लागू होता है।
यदि आपके सिस्टम पर ModemManager सक्रिय है, तो QCSuper उसे Diag पोर्ट तक पहुंचने से रोकने के लिए गतिशील रूप से एक udev नियम जोड़ने और उसके डेमॉन को पुनः आरंभ करने का प्रयास करेगा, क्योंकि यह वर्तमान में इसे प्राप्त करने का सबसे अच्छा तरीका है। बंद होने पर यह इस नियम को हटा देगा।
QCSuper को निम्नलिखित के साथ सफलतापूर्वक परीक्षण किया गया है:
हालांकि, कैप्चर भाग के लिए, इसका उद्देश्य Qualcomm चिपसेट पर आधारित यथासंभव व्यापक डिवाइसों के साथ संगत होना है।
अन्य काम करने वाले डिवाइस यहां सूचीबद्ध हैं: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"
अपने डिवाइस के सफलतापूर्वक काम करने या न करने की सूचना Github issue खोलकर देने में संकोच न करें।
कुछ अन्य ओपन टूल्स हैं जो Diag प्रोटोकॉल के कुछ हिस्सों को लागू करते हैं, विभिन्न उद्देश्यों की पूर्ति करते हैं: