ちょっと前からアキバで見かけるようになったらしいNano Pi Neoの2の方を本家から直接購入してみました。そのほうが結局安かったので。
今までRaspberry Pi以外、類似とか便乗系シングルボードコンピュータは触ってこなかったのですが、なんとなく小ささに惹かれたというか、ギガビットに惹かれたというかで、珍しく触ってみようかなと思った次第です。
ポチっとして10日くらいで到着しました。EMSで発送してくれたので通常の郵便より気持ち早く到着するかなー(帰省前に届くかなー)と期待したのですが、普通の郵便と同じくらいで、帰京した日に到着していました、そんなもんか。んで今日開封。
NetBSDのえびじゅんさん曰く、ヒートシンクは必須とのことだったのでヒートシンクと、ケースは3Dプリンターで出力されたものをセレクト。これでだいたい21ドル。送料は7ドル。
パッケージを開けると説明書2枚とGPIOピンヘッダと本体。
AllWinner H5チップのSoC。
ピンヘッダを取り付けつつ表面。しかしどちらの面もチップパーツがぎっしり。こんなに詰められるもんなんだなあと。デカ目のチップはRTL8211E。ギガニかと思いきやドライバーはsun8i_emacとか言うのになっていて、MACアドレスのベンダーID 02:01:38 もRealTekではなくて(と言うかどこのかわからんかった)、データシートの雰囲気だとSoCがMACアドレスを持っていて、それとつないで使うイメージなんでしょうか?わからんけど。
ケースに収めたところ。いかにも「3Dプリンターで出力しました!」みたいな感じが逆に好き。今まで3Dプリント生成物を所持したことがないので。
OSは公式が配布しているUbuntu Core Xenialを選択。SDカードに焼いていざ起動。……IPアドレスがわからない。Raspbianのraspberrypi.localみたいな感じでアクセスできるわけでもなく、DHCPリースでもわからなかったので会社での起動テストは諦めて自宅でUART接続してウォッチ。取得はできてたけど先述の通りギガニだと思いこんでいたので謎ベンダーIDを見落としていただけのようでした。UART接続からログインしてIPアドレスが取れたので無事接続。早速ホスト名を設定してavahi-daemonを入れて名前アクセスできるようにしました。
やってみたかったことの1つとして、製品ページでは890Mbpsくらいでるというのがどんくらいマジなのかと言うのの計測でした。iPerf3で計測。相手はMacBook AirにUSB-GbEを挿したやつ。
Nano Pi Neo2をサーバーにしてMacから測定したもの。1回目が遅めですがその後は850〜900Mbpsで安定して平均850Mbps。最初のは省エネ設定かなんか?
$ iperf3 -c 192.168.29.123 Connecting to host 192.168.29.123, port 5201 [ 5] local 192.168.29.112 port 54141 connected to 192.168.29.123 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 65.0 MBytes 545 Mbits/sec [ 5] 1.00-2.00 sec 108 MBytes 907 Mbits/sec [ 5] 2.00-3.00 sec 107 MBytes 902 Mbits/sec [ 5] 3.00-4.00 sec 107 MBytes 902 Mbits/sec [ 5] 4.00-5.00 sec 107 MBytes 901 Mbits/sec [ 5] 5.00-6.00 sec 108 MBytes 909 Mbits/sec [ 5] 6.00-7.00 sec 101 MBytes 848 Mbits/sec [ 5] 7.00-8.00 sec 103 MBytes 861 Mbits/sec [ 5] 8.00-9.00 sec 107 MBytes 895 Mbits/sec [ 5] 9.00-10.00 sec 100 MBytes 841 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 1014 MBytes 851 Mbits/sec sender [ 5] 0.00-10.00 sec 1013 MBytes 849 Mbits/sec receiver iperf Done.
今度はMacをサーバーにしてNano Pi Neo2から測定。これも1回目は遅めながら800Mbps弱だったので平均的には888Mbpsと製品ページ通りの結果に。
$ iperf3 -c 192.168.29.112 Connecting to host 192.168.29.112, port 5201 [ 4] local 192.168.29.123 port 35216 connected to 192.168.29.112 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 94.6 MBytes 793 Mbits/sec 0 339 KBytes [ 4] 1.00-2.00 sec 107 MBytes 901 Mbits/sec 0 339 KBytes [ 4] 2.00-3.00 sec 107 MBytes 899 Mbits/sec 0 379 KBytes [ 4] 3.00-4.00 sec 107 MBytes 898 Mbits/sec 36 290 KBytes [ 4] 4.00-5.00 sec 108 MBytes 903 Mbits/sec 0 331 KBytes [ 4] 5.00-6.00 sec 106 MBytes 892 Mbits/sec 2 297 KBytes [ 4] 6.00-7.00 sec 108 MBytes 904 Mbits/sec 0 328 KBytes [ 4] 7.00-8.00 sec 107 MBytes 898 Mbits/sec 0 331 KBytes [ 4] 8.00-9.00 sec 107 MBytes 898 Mbits/sec 0 332 KBytes [ 4] 9.00-10.00 sec 107 MBytes 896 Mbits/sec 1 307 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 1.03 GBytes 888 Mbits/sec 39 sender [ 4] 0.00-10.00 sec 1.03 GBytes 887 Mbits/sec receiver iperf Done.
ギガビットつんでるボードって、実際には100Mbpsの壁を取っ払うためにあって実際の速度はUSB2.0の実効速度未満みたいなもんだろうと思いこんでいた(ラズピッピはこの考え方でUSB-GbEを挿すと300Mbpsくらいまで出せるよ)のですが、こいつはマジっぽいです。やべー。
そうなるとスペック的には512MBのメモリかSDカードの速度が足を引っ張りそうな感じですけど、CPUで計算してギガビットEthernetで結果を転送してやるみたいな使い方ができそうな気がしました。iperf中は1コアがほぼフルに使われる以外のこりの3コアは暇そうにしてたので、3コアで計算、1コアでEthernet転送みたいな感じでしょうか。ストレージをNFSとかにしてWebサーバーとか?
これをどう活用するとかはなんも考えてないですが、I2Sが刺さるっぽいので、次はDACを接続して100Mbpsの現環境とどのくらい変化するもんか試してみましょうかね。あとは安定性の確認かしらん。
メモ: STAT LEDの役割を変える
起動後に青色のSTAT LEDが延々と点滅していてなにかとおもったら、正常に起動したことを示しているとのことで、アホか!うっとうしいわ!となりました。無効化する方法を探したらありました。良かった。
DietPi / Fuzon • View topic - NanoPi Neo: Enable function of blue status LED
いずれもrootユーザーで実行すれば変わります。
# 無効化 echo 0 >/sys/class/leds/nanopi\:blue\:status/brightness echo none >/sys/class/leds/nanopi\:blue\:status/trigger # 有効化(点滅に戻す) echo 1 >/sys/class/leds/nanopi\:blue\:status/brightness echo heartbeat >/sys/class/leds/nanopi\:blue\:status/trigger # 有効化(MicroSDストレージのACTランプとして使う) echo 1 >/sys/class/leds/nanopi\:blue\:status/brightness echo mmc0 >/sys/class/leds/nanopi\:blue\:status/trigger
MicroSDストレージのACTランプとして使うのが理想っぽい気がしたので、echo mmc0〜の行を/etc/rc.localに追記してやりました。よさげ。