📶

パソコンで携帯基地局を見てみよう!「LTE-Cell-Scanner」インストールから実行まで

2024/11/09に公開

アマチュア無線や航空無線受信、ADS-B受信など様々な形で活用されている汎用SDRドングル RTL-SDR、音声を聞く以外にさらに面白いことに使うことができるんです。
有志のソフトウェアを使って身近な場所にある携帯基地局(LTE基地局)を探すことができます。
今回は「LTE-Cell-Scanner」というソフトウェアを使用して実際に試してみます。

想定環境

OS Ubuntu 22.04 LTS
SDRレシーバー RTL-SDR Blog V4

・Git, CMake, GCC等必要なビルドツール群が用意されていること。

ビルドとインストール

下準備

まず、必要なライブラリをインストールします。

sudo apt install pkg-config libusb-1.0-0-dev libpthread-stubs0-dev libopenblas-pthread-dev libboost-dev libboost-thread-dev libitpp-dev libopenblas-dev libfftw3-dev opencl-headers

そして、このパッケージはRTL-SDR Blog V3までをお使いの方、その他RTL-SDR互換ドングルをお使いの方のみインストールしてください。

sudo apt install librtlsdr-dev

RTL-SDR Blog V4用ドライバーの準備 (該当する方のみ)

RTL-SDR Blog V4を使う方は、RTL-SDR Blog公式の最新ドライバーを適用する必要があります。
V3までのハードウェアとV4のハードウェアにはほとんど互換性がなく、V4非対応のドライバーを使うと正しく受信できません。
Ubuntu公式リポジトリで配布されているのもはV3までのものなので、自前でビルドしてあげる必要があります。

https://github.com/rtlsdrblog/rtl-sdr-blog をクローンします。

git clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog

ビルドを行います。

mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make

ドライバーのインストールと、関係ないドライバが当たらないよう設定を行います。

sudo make install
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf

ここまでできたら、一旦OSを再起動してください。

LTE-Cell-Scannerのビルド

https://github.com/JiaoXianjun/LTE-Cell-Scanner をクローンします。

git clone https://github.com/JiaoXianjun/LTE-Cell-Scanner
cd LTE-Cell-Scanner

ビルドを行います。

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

src/ 以下にバイナリができます。
いちいちバイナリがある場所に移動して使いたくない!という場合は sudo make install でインストールできます。

これで準備完了です!

LTE-Cell-Scannerの使い方

このソフトウェアは、「CellSearch」というコマンドと「LTE-Tracker」というコマンドがあります。それぞれの使い方を解説します。

CellSearch

CellSearch はシンプルなコマンドで、指定した周波数にあるセルを検索します。
--freq-start という引数に周波数を指定します。
Hz単位で指定するため変換する必要がありますが、指数表記が使えるため、MHz単位の値にe6を書き加えれば見やすく指定できます。
--freq-end に終わりの周波数を指定するとセルが見つかるまで0.1MHzずつずらして検索してくれますがとんでもなく時間がかかるので自分でやったほうがいいです。

867.5MHzにあるセルを探す場合

CellSearch --freq-start 867.5e6

セルが見つかった場合、次のように表示されます。

Detected a FDD cell! At freqeuncy 867.5MHz, try 0
    cell ID: [セルID]
     PSS ID: 1
    RX power level: -32.2652 dB
    residual frequency offset: 3704.97 Hz
    k_factor: 0.999996

cell IDがPCIです。RX power levelが受信強度です。値が0に近いほど強度があるということになります。

検出終了後、簡易的なスキャン結果が表示されます。

Detected the following cells:
DPX:TDD/FDD; A: #antenna ports C: CP type ; P: PHICH duration ; PR: PHICH resource type
DPX CID A      fc   freq-offset RXPWR C nRB P  PR CrystalCorrectionFactor
FDD 000 2    867.5M        3.7k -32.2 N  50 N one 1.0000041820743676979
単語 説明
DPX 無線通信方式の違い。FDD[1] または TDD[2]
CID セルID。PCI[3]とも。
A アンテナポート数。2 = 2MIMO。
fc 検出されたセルの周波数
RXPWR 受信強度。0dBに近いほど強度が高い
C CP (Cyclic Prefix)[4]。通常N (Normal CP)ですが、Starlink Direct To Cellなどのサービスでは今後E (Extended CP)を使用する可能性があります[5]
nRB Number of RBs。セルに割り当てられているリソースブロックの数。詳細は後述。
P PHICH[6]
PR PHICH resource type
CrystalCorrectionFactor 不明。この数値はSDRドングルの補正に利用されることがよくある。

nRBの値は帯域幅に変換することができます。

nRB BW
15 3MHz
25 5MHz
50 10MHz
75 15MHz
100 20MHz

LTE-Tracker

LTE-Trackerは、指定した周波数にあるセルを継続的に検索し、品質などを測定できるコマンドです。
-f に検索したい周波数を指定します。

885MHzにあるセルを検索したい場合
LTE-Tracker -f 885e6

なお、最低でも1セル見つからないと起動前の補正ができずLTE-Trackerが使えません。

測定中このような画面が出ます。
青文字のHealthはセルの情報をデコードできている割合を示しています。セルが遠くなったり掴めなくなったりしてデコードできなくなると数字がだんだん減少していってリストから消えます。
十字キー上下でセルごとの項目を選んでEnterキーか十字キー右を押すと、次のようにグラフが表示されます。

私自身この画面は理解していないため、参考程度に...。
十字キー左で最初のリスト画面に戻ることができます。

おまけ

各キャリアの周波数一覧

※RTL-SDRドングルで受信できる範囲のものを掲載しています。

docomo

周波数 帯域幅
788MHz 10M
882.5MHz 15M
885MHz 10M
1503.4MHz 15M

au

周波数 帯域幅
778MHz 10M
865MHz 10M
867.5MHz 15M
1490.9MHz 10M

Softbank

周波数 帯域幅
798MHz 10M
947.8MHz 5M
955MHz 10M
1480.9MHz 10M

楽天モバイル

周波数 帯域幅
771.5MHz 3M

よくある質問

RTL-SDRドングルが対応している周波数は?

24〜1750MHz程度です。携帯通信のバンドであればBand 3(上りの一部), Band 8, Band 11, Band 18, Band 19, Band 21, Band 28に相当します。

周波数は合っているのにセルが表示されない

SDRドングルの性能が低いか、アンテナの性能が低くノイズが多い可能性があります。RTL-SDR Blog公式のドングルを使うか、より性能が高いものに変えてみてください。

さいごに

PCで基地局を探せるLTE-Cell-Scannerを紹介しました。
このソフトウェアはHackRFやBladeRFにも対応しており、RTL-SDRドングルが対応している周波数以上にいるバンドの検索もできますので、興味があれば試してみてください。

JiaoXianjun/LTE-Cell-Scanner
https://github.com/JiaoXianjun/LTE-Cell-Scanner

rtlsdrblog/rtl-sdr-blog
https://github.com/rtlsdrblog/rtl-sdr-blog

脚注
  1. Frequency Division Duplex。 上りと下りに異なる周波数を利用する。https://ja.wikipedia.org/wiki/周波数分割複信 ↩︎

  2. Time Division Duplex。上りと下りは同じ周波数を利用し、時分割で共用する。https://ja.wikipedia.org/wiki/時分割複信 ↩︎

  3. Physical Cell ID ↩︎

  4. https://www.sharetechnote.com/html/5G/5G_FrameStructure.html#RadioFrame_Structure ↩︎

  5. https://x.com/scott23192/status/1746623500196917739 ↩︎

  6. https://www.sharetechnote.com/html/Handbook_LTE_PHICH_PHICHGroup.html ↩︎

Discussion