UHDのログ機能を使う


こんにちはドルフィンシステム福島です。

前回は「NI-USRPとUHDの共存には注意が必要」と題してNI-USRPとUHDは共存してインストールは出来るが環境変数を共有しているため、正常に動作しないことがあることをお伝えしました。

今回は前回の続きです、UHDの環境変数を設定してログの取り方を解説します。

UHDのツール

UHDのツールというと一番身近なのは、
  • uhd_find_devices : 接続されているUSRPを検出する
  • uhd_usrp_probe : 接続されているUSRPのデバイス情報を取得する。
の2つだと思います。

uhd_find_devices

イーサネットでもUSBでもPCI Expressでもインターフェイスは問わず、接続されているUSRPの情報を出力します。


uhd_usrp_probe

接続されているUSRPの詳しい情報を表示します。
シリアル番号やファームウェアのバージョン、搭載されているRFドーターボードや対応周波数帯など細かく見ることが出来ます。


UHDのログ出力先ファイルを指定する

UHDのログをファイルに出力するには、出力先のパスを環境変数 UHD_LOG_FILEに設定します。

システムのプロパティ→詳細設定→環境変数、と進んで、
PC全体で環境変数を有効にする場合は「システム環境変数」の「新規」を、
ログインしているユーザだけで有効にするには「ユーザー環境変数」の「新規」を、
クリックして下図のように環境変数UHD_LOG_FILEにパスを設定します。



存在しないフォルダのパスを設定すると、自動的にフォルダを作成しログを出力する、というような器用なことはなくログファイルが出力されません。
存在しているフォルダパスを設定して下さい。

出力するログレベルを設定する

環境変数UHD_LOG_LEVELで出力するログレベルを指定します。
fatal,error,waring,info,debug,traceの5段階で指定し、デフォルトはinfoです。


以下に、uhd_find_devicesを実行した際にファイルに出力されたメッセージを掲げます。
今回はtrace, debug, infoの違いが表れていませんが、実行内容によっては出力に差が出ると思われます。
ログを取るときは、最初はtraceで出来るだけ細かいログを出力してみて、徐々に調整していけば良いでしょう。

Trace

2019-Jun-17 13:29:27.197966,0x573c,log.cpp:460,2,UHD,Win32; Microsoft Visual C++ version 14.0; Boost_105900; UHD_3.12.0.0-release
2019-Jun-17 13:29:31.850859,0x573c,rpc_client.hpp:58,2,NIRIO,rpc_client stopping...
2019-Jun-17 13:29:31.850859,0x573c,rpc_client.hpp:62,2,NIRIO,rpc_client stopped.
2019-Jun-17 13:29:31.850859,0x573c,device.cpp:110,4,UHD,Device discovery error: input stream error

Debug

2019-Jun-17 13:30:12.197522,0x5c50,log.cpp:460,2,UHD,Win32; Microsoft Visual C++ version 14.0; Boost_105900; UHD_3.12.0.0-release
2019-Jun-17 13:30:16.860119,0x5c50,rpc_client.hpp:58,2,NIRIO,rpc_client stopping...
2019-Jun-17 13:30:16.860119,0x5c50,rpc_client.hpp:62,2,NIRIO,rpc_client stopped.
2019-Jun-17 13:30:16.860119,0x5c50,device.cpp:110,4,UHD,Device discovery error: input stream error

Info

2019-Jun-17 13:30:34.200065,0x41bc,log.cpp:460,2,UHD,Win32; Microsoft Visual C++ version 14.0; Boost_105900; UHD_3.12.0.0-release
2019-Jun-17 13:30:38.836196,0x41bc,rpc_client.hpp:58,2,NIRIO,rpc_client stopping...
2019-Jun-17 13:30:38.836196,0x41bc,rpc_client.hpp:62,2,NIRIO,rpc_client stopped.
2019-Jun-17 13:30:38.836196,0x41bc,device.cpp:110,4,UHD,Device discovery error: input stream error

Warning

2019-Jun-17 13:31:14.189279,0x4ba4,log.cpp:460,2,UHD,Win32; Microsoft Visual C++ version 14.0; Boost_105900; UHD_3.12.0.0-release
2019-Jun-17 13:31:18.837694,0x4ba4,device.cpp:110,4,UHD,Device discovery error: input stream error

Error

2019-Jun-17 13:31:44.665086,0x2280,log.cpp:460,2,UHD,Win32; Microsoft Visual C++ version 14.0; Boost_105900; UHD_3.12.0.0-release
2019-Jun-17 13:31:49.328093,0x2280,device.cpp:110,4,UHD,Device discovery error: input stream error

Fatal

出力なし

参考

出力するログのフォーマットも変更することが出来ます。詳細は以下のURLを参考にして下さい。

UHDロギング機能
https://files.ettus.com/manual/log_8hpp.html

まとめ

  • 環境変数UHD_LOG_FILEを指定することでログファイルを出力できる。
  • 環境変数UHD_LOG_LEVELで出力するログのレベルを制御することが出来る。
というわけで、今回はUHDのログ出力を行ってみました。
uhd_find_deviceやuhd_usrp_probe以外のコマンドもログ出力に対応しているものはあると思います。
またUHDのプログラムを作る際にはこの環境変数に対応してログ出力をしてみると良いと思います。

私たちドルフィンシステムは、お客様の様々な要望に答えられるような知見の蓄積・環境の構築を行い、最適な無線システムを提案していけるよう努力しております。

SDRを用いた無線システムのご要望はドルフィンシステムへ。

ドルフィンシステムでは、一緒に働いてくれるエンジニアを募集しています!
ご興味のある方はお気軽にご連絡ください!
件名に「採用情報」と書いたメールをinfo@dolphinsystem.jpにお送りください。
お待ちしています。

以上、ドルフィンシステム福島でした。

コメント