あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Nano Pi Neo 2を買ってみた(マジでギガビット出てるわ!)

ちょっと前からアキバで見かけるようになったらしいNano Pi Neoの2の方を本家から直接購入してみました。そのほうが結局安かったので。

今までRaspberry Pi以外、類似とか便乗系シングルボードコンピュータは触ってこなかったのですが、なんとなく小ささに惹かれたというか、ギガビットに惹かれたというかで、珍しく触ってみようかなと思った次第です。

www.friendlyarm.com

ポチっとして10日くらいで到着しました。EMSで発送してくれたので通常の郵便より気持ち早く到着するかなー(帰省前に届くかなー)と期待したのですが、普通の郵便と同じくらいで、帰京した日に到着していました、そんなもんか。んで今日開封。

NetBSDのえびじゅんさん曰く、ヒートシンクは必須とのことだったのでヒートシンクと、ケースは3Dプリンターで出力されたものをセレクト。これでだいたい21ドル。送料は7ドル。

f:id:Akkiesoft:20170920221055j:plain

パッケージを開けると説明書2枚とGPIOピンヘッダと本体。

f:id:Akkiesoft:20170920221405j:plain

AllWinner H5チップのSoC。

f:id:Akkiesoft:20170920221442j:plain

ピンヘッダを取り付けつつ表面。しかしどちらの面もチップパーツがぎっしり。こんなに詰められるもんなんだなあと。デカ目のチップはRTL8211E。ギガニかと思いきやドライバーはsun8i_emacとか言うのになっていて、MACアドレスのベンダーID 02:01:38 もRealTekではなくて(と言うかどこのかわからんかった)、データシートの雰囲気だとSoCがMACアドレスを持っていて、それとつないで使うイメージなんでしょうか?わからんけど。

f:id:Akkiesoft:20170920223432j:plain

ケースに収めたところ。いかにも「3Dプリンターで出力しました!」みたいな感じが逆に好き。今まで3Dプリント生成物を所持したことがないので。

f:id:Akkiesoft:20170920221510j:plain

f:id:Akkiesoft:20170920223429j:plain

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に追記してやりました。よさげ。