NI USRP-2900(Ettus B200)の動作は不安定

NI USRPシリーズの中にNI USRP-2900というデバイスがあります。
これは製造元のEttus ResearchではB200と呼ばれているデバイスで、名称は違いますが内部の基板は一緒です。(以下では名称をB200に統一します)
公式には対応されていませんがB200はLabVIEWで使用することが出来ます(B200miniは不可)。
B200が今までのUSRPと違うのは、サイズが小さいこと、USB接続でバスパワー動作することが特徴で、追加の電源や機材を必要とすることなく普通のノートPCに接続することができます。
つまりソフトウェア無線環境がノートPCだけで作れてしまうのです。
そこでドルフィンシステムもB200をソフトウェア無線デバイスとして使用するべく購入し動作確認テストを行いました。

USB接続の限界とデータ落ち

USRP Nシリーズはイーサネットで接続をするため、連続してデータ取得が間に合わず都度都度切断されてしまいます。
これに対応する方法は存在していて25M IQレートでも安定して送受信を行うことが出来るようになるのですが、PXI接続のUSRP-RIOに比べると危うい接続方法であることは変わりません。
B200に期待したのはUSB接続の安定性。イーサネットよりも安定していることを期待していました。
しかし実際にベンチマークを取った結果は以下の通りです。

ベンチマーク環境

PC
ThinkPad T430
CPU
Intel Core i7 3520M @ 2.90GHz
インターフェイス
USB 3.0(直結)
ベンチマークソフト
benchmark_rate (UHD)


Windows7 120秒

Msps
10
15
20
25
30
35
40
45
61.44
Num received samples
1.2G       
1.8G
2.4G
3G
3.6G
4.2G
4.8G
5.4G
5.4G
Num dropped sample
156.9K
0
0
1.5M
143K
0
222K
349K
1.91G
Num overflows detected
3
0
0
11
2
0
4
4
33227

Ubuntu Linux 120秒

Msps
10
15
20
25
30
35
40
45
61.44
Num received samples
1.2G
1.8G
2.4G
3.G
3.6G
4.2G
4.8G
5.4G
492.905M
Num dropped sample
0
0
0
0
0
0
0
0
121.483M
Num overflows detected
0
0
0
0
0
0
0
0
2456
Msps : IQレート(サンプリングレート)。10なら10Msps
Num received samples : 受信した総サンプル数
Num dropped sample : 取りこぼしたサンプル数
Num overflows detected : 取りこぼした回数

以上の表には、120秒連続でIQデータを受信し、その送受信サンプル数、データ落ちサンプル数、データ落ち回数を表にしてあります。
ThinkPad T430という現在ではそれほどでもないスピードのノートPCを使用して、ベンチマークを取得しています。

まず上側のWindows7を見ると、
  1. 上限の61.44Mspsは1/3程データ落ちしているので限界のようですが、
  2. 10Mspsでも45Mspsでも発生していますので、確実に大丈夫というレートはなさそうです。
  3. もっと高速なIntel Core i7 4790 @ 3.60GHz搭載PCでも傾向は同じだった。
事が言えます。

次にLinuxの方を見ると、とても安定しています。
  1. 61.44MspsはWindowsと同じでハードウェアの限界に見える
  2. 他のレートでは安定している。
  3. 表に出してはいませんが、40Mspsを600秒連続取得してもデータ落ちは発生しませんでした。
  4. とはいうものの他のプロセスが動作してCPU時間を食うと転送が落ちます。安定しているかどうかは程度の問題です。
というわけでWindows ではCore i7の早いPCを使用していてもデータ落ちが発生しています。
WindowsよりもLinuxの方が安定してデータ取得が出来ています。
ベンチマークソフトはデータ取得だけで他に高負荷な処理はしていません。なのに10Msps程度でもデータ落ちが発生していますので、B200のデータ取得そのものに問題があります(後述)。

対策ならず

Windows上で安定して動かすために、ベンチマークソフトの修正、OSの環境設定、OSの変更などあらゆる対策をとってみましたが、データ落ちの発生を回避することは出来ませんでした。
弊社と日本NIさんとも連携して調査にあたりましたが、根本的な対策には至りませんでした。
  1. 日本NIでも再現した
  2. 本社でもこの現象は把握している
    1. Why Am I Getting Lower Than Expected Streaming Rates on my NI 2900/2901 Device?
    2. http://digital.ni.com/public.nsf/allkb/CDDC3DE200B4A9D486257F8700761DF7?OpenDocument
  3. Ettusが公開しているベンチマークはLinuxで取得したベンチマーク。詳細な動作環境などは不明。
    1. (2016/06/16時点で非公開を確認しました)
      USRP B200 and B210 - USB 3.0 Streaming Rate Benchmarks
      https://kb.ettus.com/detail/usrp-b200-and-b210-usb-30-streaming-rate-benchmarks
  4. USRP-RIOと違いDMA転送ができないため(PIO?)CPU速度が重要
というわけで、2016/06/16現在ではNI USRP-2900, Ettus B200は安定的なデバイスとして使用することができません。USBの接続方式(ドライバのできが悪い?)に起因する問題のため、ユーザ側で手の施しようがありません。どうしても使用する場合は、動作させるOSや他のプロセスの動作状況を把握・操作した上で、限定的な使用目的に限った方が良さそうです。

GPS NMEAはデータ送受信中は取得できない

ソフトウェア無線機にGPSが搭載されていたら、
「ドローンに搭載して通信しつつGPSで取得した位置情報を元に航跡を記録したい」
と、いうことをしたいと思いますが残念ながら出来ません。
こちらはLabVIEWでの動作になりますが、IQデータ収録中はGPSからのデータを取得することでIQデータ落ちが発生してしまいます。
仕様のようです。とても残念ですね。

GPSの位置ずれ問題

2016/07/13 追記
これは位置がずれているのではなくて、NMEAデータの60進数10進数の取違でした。
NMEAが出力する緯度経度は60進数で出力されますが、Google マップ等で指定する緯度経度は10進数で指定します。
私は60進数の値をGoogle マップに入れていたので、位置がずれているように見えていました。
誠に申し訳ありませんでした。
対応は以下のコードをVIで作ればOKでした。
60進の緯度経度情報を10進緯度経度へ

B200にはGPSDOモジュールを搭載するとGPSに同期したクロックやトリガを使用することができます。
複数のB200を一度に収録開始したりするには便利ですね。

で、このGPSからはNMEAを取得できますので、GPS時間や位置情報を取得することができます。
早速取得してみると・・・


緯度
経度
現在値
35.733411
139.710588
GPSの値
35.439905
139.426270
0.293506
0.284318
なんと衛星が8ヶ見つかっているにもかかわらず、位置が大幅にずれています。
現在位置は池袋ですが、表示位置は神奈川県の綾瀬市。

clip_image001
こちらの現象の原因は不明。GPSDOの故障ではないか?と言われましたが・・・
さらに今後調査していきます。

コメント