
Diag経由でQualcommベースバンドから生の2G/3G/4G/5Gセルラーシグナリングをキャプチャし、Wireshark用のPCAPを出力、EFS/メモリ診断を公開します。
QCSuper は、Qualcomm ベースのスマートフォンやモデムと通信するツールで、生の 2G/3G/4G(一部モデルでは 5G)無線フレームなどをキャプチャできます。
これを使うと、root化したAndroid端末、USBドングル、または別形式の既存キャプチャを使って、PCAPキャプチャを生成できます。

インストール後、互換性のあるデバイスでは、root化したスマートフォンをUSBに接続して、次のように簡単に使用できます:```bash qcsuper --adb --wireshark-live
または、手動で携帯電話のDiagポートを公開するように設定している場合(対応する手順は携帯電話のモデムやメーカーによって異なる場合があります。詳細は以下を参照してください)、またはモバイルブロードバンドドングルを接続している場合:```bash
qcsuper --usb-modem auto --wireshark-live
It uses the Qualcomm Diag プロトコル(QCDM または DM(Diagnostic Monitor)とも呼ばれます)を使用して、スマートフォンのベースバンドと通信します。
お使いのデバイスが動作するかどうかを報告していただけますか?Github issue を開いてください。
付録:
ブログ記事/デモ: QCSuper の紹介: Qualcomm ベースのスマートフォンで 2G/3G/4G の無線トラフィックをキャプチャするツール
その他のドキュメント:
QCSuper は最近、Ubuntu LTS 22.04+ でテストおよび開発され、Windows 11 でも使用されています。いくつかの Python モジュールに依存しています。互換性を高めるには Linux の使用をお勧めします。
使用するには、スマートフォンが root 化されているか、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/ ディレクトリから ./qcsuper.py コマンドを使用して QCSuper を実行します。
Linux では、PIP に代わる最新のパッケージマネージャーである uv を使用して QCSuper をインストールできます。
まず、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
ツールの開発に参加したい場合は、ソースをダウンロードしてから、ソースディレクトリを指す 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 でも動作しますが、事前に Google の ADB プロンプトがお使いのマシンとデバイスで正しく動作することを確認しておく必要があります。また、お使いのデバイスが疑似シリアル USB 経由で Diag ポートに直接接続する必要がある場合は、libusb-win32 フィルタを手動で作成する必要があります(インストール後にスタートメニューからアクセスできるユーティリティを使用します)。
(デバイスのモードを切り替えると、関連する USB PID/VID が変わる可能性があり、libusb-win32 フィルタ作成ユーティリティや、場合によっては Windows の周辺機器デバイスマネージャーでドライバの関連付けをやり直す必要があることに注意してください)
Windows では、(Google の ADB カーネルドライバに加えて)お使いのスマートフォンの機種に応じた USB ドライバをダウンロードしてインストールする必要がある場合があります(これには Qualcomm 汎用 USB ドライバが含まれる場合があります)。手順については、Google で「お使いのスマートフォンの機種名 + "USB driver"」または「"ADB driver"」を検索してください。
次に、adb を使用してデバイスにアクセスできることを確認する必要があります。adb のダウンロードとセットアップ方法のチュートリアルはここにあります。adb.exe shell(または使用する実行ファイルのパス。ADB 実行ファイルのコピーは QCSuper の qcsuper/inputs/external/adb フォルダにあります)コマンドがプロンプトを表示して続行できることを確認してください。
次に、以下のリンクを順に参照してください(このツールは最近 Windows 11 でテストされていますが、Windows 7 での動作は保証されていません):
%PATH% が更新されていることを確認するため、コマンドプロンプト/ターミナルを再起動してください。必要な Python モジュールをインストールするには、コマンドプロンプトを開いて次のように入力してください:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
コマンドプロンプトのまま、`cd` コマンドを使用して QCSuper を含むディレクトリに移動します。その後、コマンドを実行できます(オンラインインストーラーから Python 3 をインストールした場合は `py qcsuper.py` または `py3 qcsuper.py` で始まり、Windows ストアからインストールした場合は `python3.exe .\qcsuper.py` で始まります)。
上記のとおり、モードスイッチされたデバイス上の Diag ポートに対応するインターフェイスが QCSuper から見えるようにするために、スタートメニューにあるユーティリティを使用して `libusb-win32` フィルタを追加する必要がある場合があります(ADB ドライバが動作しており、デバイスが正しく root 化されている場合、`--adb` フラグを使用してツールを最初に実行したときに失敗すると、モードスイッチがトリガーされるはずです)。
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Mi スマートフォンの Diag ポートに libusb-win32 フィルタを追加するスクリーンショット">
</p>
## 対応プロトコル
QCSuper は、いくつかのモバイル無線プロトコルのキャプチャをサポートしています。これらのプロトコルは、プロトコルを識別できるようにする標準ヘッダー(UDP/IP にカプセル化される)である [GSMTAP ヘッダー](http://osmocom.org/projects/baseband/wiki/GSMTAP) の後に配置され、GSMTAP パケットは Wireshark で完全に分析可能な [PCAP ファイル](https://wiki.wireshark.org/Development/LibpcapFileFormat) に格納されます。
2G/3G/4G プロトコルはいくつかの「レイヤー」に分類できます。レイヤー1 はデジタル無線変調と多重化に関するもので、レイヤー2 は断片化や確認応答などの処理を担当し、レイヤー3 は本来のシグナリングまたはユーザーデータです。
QCSuper は、ほとんどの場合レイヤー3 でキャプチャできます。これは Wireshark での分析に最も実用的であり、Diag プロトコルがネイティブに提供するものだからです(ここにはいくつかの興味深い情報もあります)。
* 2G (GSM): レイヤー3 以上(RR/...)
* 2.5G (GPRS and EDGE): データの確認応答用のレイヤー2 以上(MAC-RLC/...)
* 3G (UMTS): レイヤー3 以上(RRC/...)
* さらに、Wireshark は現時点で独自に処理できないため、SIBs(System Information Blocks、全ユーザーにブロードキャストされるデータ)を個別の GSMTAP フレームに再構築することをサポートしています: フラグ `--reassemble-sibs`
* 4G (LTE): レイヤー3 以上(RRC/...)
* さらに、RRC パケット内に暗号化されて埋め込まれている NAS メッセージを復号し、追加のフレームに格納することをサポートしています: フラグ `--decrypt-nas`
デフォルトでは、デバイスが送信する IP トラフィックは含まれず、シグナリングフレームのみが表示されます。`--include-ip-traffic` オプションを使用すると、生成した IP トラフィックを含めることができます(IP は 2G/3G/4G におけるデータトラフィックのほぼレイヤー3 であり、ヘッダーが圧縮(ROHC)され、小さな PPP ヘッダーが含まれる場合があるという詳細があります)。
送信するデータトラフィックはシグナリングトラフィックとは異なるチャネルを使用します。このチャネルはシグナリングトラフィックを通じて設定されます。したがって、QCSuper はこのチャネルがどのように開始されるかに関するすべての詳細を表示するはずです。
## 使用上の注意
QCSuper を使用するには、1 つの入力(例: `--adb`(Android フォン)、`--usb-modem`)と 1 つ以上のモジュール(Wireshark を開くための `--wireshark-live`、トラフィックを PCAP ファイルに書き込むための `--pcap-dump`、デバイスに関する一般的な情報を取得するための `--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.
- を指定して標準入力からデータをパイプしたり、標準出力へパイプしたりすることがサポートされています(gzip 圧縮されたコンテンツは検出されない場合があります)。
この README ファイルは、スマホを root 化する方法(スマホで su などのコマンドを実行できるようにすること)のガイドではありません。
最近のほとんどの Android 端末では、まず電話の開発者向けオプションにある「OEM/ブートローダー ロック解除」オプションを使用してブートローダーのロックを解除する必要があります。次に、Magisk などのツールを使用して、スマホのブートローダー用のパッチ済みイメージを取得し、その後 fastboot モード でスマホに読み込むことができます。
QCSuper は、スマホが root 化されている場合、Qualcomm ベースの端末でより簡単に動作する可能性が高くなります。しかし、root 化しなくても Qualcomm Diag USB モード(「DM」、Diag Monitor とも呼ばれる)をスマホで有効にする方法がしばしばあります。これはスマホのベンダーに依存し、例えば、スマホのダイヤラー キーパッドで魔法のような数字の組み合わせを入力するなどの方法があります。詳細については、以下の「スマホの診断ポートを手動で有効にするには?」セクションを参照してください。
スマホを root 化する前に、OEM ロック解除済みのスマホに TWRP などの代替リカバリイメージを読み込んで、TWRP などのツールでパーティションのバックアップを実行することも検討してください(Fastboot 経由でイメージを読み込み、TWRP の設定で ADB リンクを有効にし、/dev/block/by-name フォルダ内の選択したパーティションに対して adb pull を使用するだけで完了する場合があります)。
スマホの機種における root 化や Diag モードの有効化について具体的な情報を求める場合は、適切なキーワードを使用して XDA-developers フォーラムで情報を検索するとよいでしょう。
Linux カーネル 4.9 以前を搭載した Qualcomm/MSM Android ベースの端末(Android 12 までの一部の端末と Android 10 より前のすべての端末がおおよそ含まれます)では、Qualcomm ベースの Android 端末は通常、ベースバンドの診断ポートとデータを通信できる /dev/diag というシステムデバイスを備えています。
Linux カーネル 4.14 以降を搭載した Qualcomm/MSM Android ベースの端末(Android 10 以降の一部の端末と Android 13 以降のすべての端末がおおよそ含まれます)では、対応する diagchar モジュールが最近の AOSP/Linux カーネルでデフォルトで無効になっているため、/dev/diag は存在しなくなりました。
Linux 4.9 以前の MSM カーネルを搭載した端末では、--adb フラグを使用すると、QCSuper は ADB 経由での接続を自動的に試み、次に /dev/diag デバイスに接続する実行可能ユーティリティを転送しようとし、su -c /data/local/tmp/adb_bridge のようなコマンドで root として起動し、その後 TCP 経由でデバイスと診断データを送受信します(対応する TCP ポートも ADB 経由で転送します)。
Linux 4.14 以降の MSM カーネルを搭載した端末では、--adb フラグを使用すると、QCSuper は ADB 経由での接続を自動的に試み、次に su -c 'setprop sys.usb.config diag,adb' のようなコマンドを使用してスマホの USB ポートをモード切り替えしようとし、その後 --usb-modem auto フラグと同等の処理を実行します(下記参照)。
--usb-modem <value> フラグを使用すると、QCSuper は ADB とは独立して、USB 上の擬似シリアルポートを介して Qualcomm 診断ポートに接続できます。これは、外部デバイスを使用して Android ベースのスマホの Qualcomm diag プロトコルに接続する最も一般的な方法です。
--usb-modem <value> フラグを使用するには、対応するスマホで Qualcomm 診断ポートが有効になっている必要があります。言い換えれば、スマホが事前に USB モード切り替えされている必要があります。
デバイスを USB モード切り替えする最も一般的な方法は、root で setprop sys.usb.config diag,adb のようなコマンドを実行することです。ただし、特定のスマホベンダーでは、Qualcomm の USB 経由診断モードを有効にする他の方法もあるかもしれません。例えば、このページ を参照してください。特定のデバイスで root なしで Diag を有効にする方法が紹介されており、多くの場合、スマホのダイヤラー キーパッドで魔法のような数字の組み合わせを入力する必要があります。
他のデバイスでは、スマホベンダーによって署名され、System 関連の権限を持つ APK ファイルを使用して、root 化せずに Diag モードを有効にできる場合もあります(例えば、Xiaomi ベースのデバイスについては com.longcheertel.midtest APK を調べてみてください)。
デバイスが正しくモード切り替えされると、ADB 経由で getprop sys.usb.config コマンドを実行すると、diag を含むテキスト文字列が表示されるはずです。
次に、コンピュータ側で(Linux 上で)lsusb を実行すると、あなたのデバイスを示す行が表示されるはずです。例:```
Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
この出力に含まれる `001:076`(バスインデックス/デバイスインデックス識別子)と `05c6:9091`(ベンダーID/プロダクトID)の情報に注意してください。
この情報が得られたら、QCSuper で **`--usb-modem 05c6:9091` や `--usb-modem 001:076` のようなフラグを試すことができます**(ゼロ埋めに注意してください)。
これで判断がつかない場合は、`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 では、関連デバイス上で接続を試みたい構成とインターフェースの識別子を手動で選択できます(生の 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 モジュール)キャラクタデバイスが選択されます(下記の「QCSuper を USB モデムで使用する」セクションを参照してください)。
別の方法として、Linux では、特定の USB デバイスのインターフェースに対応する /dev/ttyUSB* エンドポイントを手動で作成し、--usb-modem /dev/ttyUSB0 のようなフラグを指定して QCSuper で接続することも可能です(これには QCSuper を root 権限で実行する必要がある場合があります)。これには usbserial モジュールを使用します。たとえば、次のようなコマンドを使用できます:```
sudo rmmod usbserial
sudo modprobe usbserial vendor=0x05c6 product=0x9091
## QCSuper を USB モデムで使う
`--usb-modem <device>` オプションを使うと、Diag ポートを公開している USB モデムで QCSuper を使用できます。ここで `<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 でも動作しない可能性が高いことに注意してください。考えられる注意点は次のとおりです:
* デバイスに対して適切な[モード切替](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching)コマンドを適用していない。
* 以前に別の事業者の SIM が挿入されていたデバイスを購入した場合、そのデバイスは SIM ロックされている可能性があります。以前の事業者のロック解除コードを PIN コードと同じようにデバイスに送信する必要があるかもしれません: `sudo mmcli -i 0 --pin=<your_unlock_code>`
Qualcomm ベースの USB デバイスがデフォルトで Diag ポートを公開しない場合、Diag ポートを有効にするために AT ポート経由で次のコマンドを入力する必要があるかもしれません:```
AT$QCDMG
一度にDiagポートと通信できるクライアントは1つだけであることに注意してください。これは、2つのQCSuperインスタンス、またはQCSuperとModemManagerのインスタンスにも適用されます。
システム上でModemManagerがアクティブな場合、QCSuperは、ModemManagerがDiagポートにアクセスするのを防ぐudevルールを動的に追加し、そのデーモンを再起動しようとします。現在のところ、これがこの目的を達成する最善の方法であるためです。QCSuperを閉じると、このルールは削除されます。
QCSuperは以下のデバイスで正常にテストされています:
ただし、キャプチャ部分に関しては、Qualcommチップセットを搭載した可能な限り幅広いデバイスとの互換性を目指しています。
その他の動作確認済みデバイスは、https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working" にリストされています。
お使いのデバイスが正常に動作するかどうかを、Github issue を開いてお気軽にご報告ください。
Diagプロトコルの一部を実装し、さまざまな目的に役立つオープンなツールが他にもいくつかあります: