はじめに
ELECOMのNSB-3NRVシリーズはLinux搭載のNASです。LANを4ポート持っていたり、シリアルポートが出ているなど、NASとは無関係の方向でがんばっているハードウェアが特徴です。最近お安くなったせいか解析情報がちらほら出てきました。
1TBモデル NSB-3NR1T1MLV を先日入手しました。NASとして使う気は毛頭無く、ただのLinux箱にするつもりです。
手始めに各種インタフェースへのアクセス方法を調べました。
準備
-
NSB-3NR1T1MLV (本体)
ファームウェアは購入時(1.05-1514)のままアップデートしていません。 -
CISCO準拠のシリアルケーブル
先端がRJ-45になっているシリアルケーブルです。私はUSB接続のものを買いました。 -
ターミナルエミュレータ
シリアル通信ができるもの。Tera Term とか PuTTY とか RLogin とかお好みでどうぞ。
構成図
NSB-3NR1T1MLVに接続されている諸々の部品をLinuxからいじるためのインタフェースを図にしました。
RS-232C
CISCO準拠のシリアルケーブルを背面CONSOLE端子に接続すると、115200bpsで通信できます。
電源オンでU-BOOTが表示された後、Linuxが立ち上がる様子をみることができます。そのままrootログインも可。
GPIO
ボタン・ブザー・LED・OLED(前面ディスプレイ)がGPIOに接続されています。
通常は /usr/bin/lcdNotifyD
がこれらのGPIOを制御しています。
ボタン
GPIO | I/O | 機能 | value=0 | value=1 |
---|---|---|---|---|
GPIO80 | IN | ボタン(Display) | 押した | 離した |
GPIO79 | IN | ボタン(Function) | 押した | 離した |
GPIO37 | IN | ボタン(初期化) | 押した | 離した |
本体前面のDisplayボタンとFunctionボタン、それと底面の初期化ボタンはGPIOで読み取ることができます。
表のvalueは、 /sys/class/gpio/gpio**/value
の意味です。
# echo 79 > /sys/class/gpio/export
# cat /sys/class/gpio/gpio79/value # ボタンを押した状態で
0
# cat /sys/class/gpio/gpio79/value # ボタンを離した状態で
1
電源ボタンはよく分かっていません。 /sbin/pwr-test
がボタンを監視しているようです。
ブザー
GPIO | I/O | 機能 | value=0 | value=1 |
---|---|---|---|---|
GPIO86 | OUT | ブザー | 停止 | 鳴動 |
音階は調整できなさそうです。
ちなみにGPIOへの書き込みはこんな感じで。
# echo 1 > /sys/class/gpio/gpio86/value # ブザーを鳴らす
# echo 0 > /sys/class/gpio/gpio86/value # ブザーを止める
OLED
GPIO | I/O | 機能 | value=0 | value=1 |
---|---|---|---|---|
GPIO64 | OUT | OLED(?) | OFF | ON |
GPIO65 | OUT | OLED(?) | OFF | ON |
GPIO66 | OUT | OLED(SCL) | L | H |
GPIO67 | OUT | OLED(SDA) | L | H |
本体前面のディスプレイは16文字2行のOLEDです。I2Cで表示制御します。コマンドはSO1602と似ています。
残念ながら、OLEDは /dev/i2c-0
とはつながっておらず、ソフトでGPIOを制御してSDA・SCLを生成することになります。
詳細は長くなるのでまた後日。
LED
GPIO | I/O | 機能 | value=0 | value=1 |
---|---|---|---|---|
GPIO84 | OUT | LED(INFO: 橙) | 消灯 | 点灯 |
GPIO54 | OUT | LED(ERROR: 赤) | 消灯 | 点灯 |
GPIO53 | OUT | LED(HDD: 緑) | 消灯 | 点灯 |
本体前面の3個のLED(INFO・ERROR・HDD)はGPIOで制御可能です。
Ethernet
eth0はPHY(RTL8211)を経由してINTERNETポートにつながります。
eth1はRTL8367RBに接続されています。このICは、「Layer 2 Managed 5+2-Port 10/100/1000M Switch Controller」とされています。ざっくりな理解では、RTL8367RBは4ポートのスイッチングハブで、3ポートはLAN端子、1ポートは本体内部でeth1と1000Base-T接続していると考えればそれほど間違っていないかと。
http://www.realtek.com/products/productsView.aspx?Langid=1&PNid=18&PFid=15&Level=5&Conn=4&ProdID=300
カーネルモジュール(rtl83xx)をioctlでいじるとRTL8367RBの潜在能力を解放できそうな感じです。
ちなみに本機を普通に使うとeth1はdownしたままですが、LAN1~LAN3は3ポートのスイッチングハブとして振る舞うようです。
eth2は使えません。
ファン制御
/dev/i2c-0
経由でAMC6821が接続されています。冷却用のファン制御と温度測定をするICですが、本機にはファンは付いていません。おそらく、2ベイモデルのNSB-3MSシリーズのファン制御用なのでしょう。
温度は読み出せます。下の例では0x1E = 30℃。
# i2c_test -a 0x4d -s 1 -o 0xb -r
read phy 0x4D register 0xB = 0x1E
外部記憶
HDDとは別に、512MBのFlashを内蔵しています。システムは内蔵Flashに入っており、HDDは基本的にデータ専用。
ルートファイルシステムは組み込みLinuxらしく凝った作りになっています。ファイルシステムの構造については参考情報をご覧ください。
USB
特に調べていません。
まとめ
- NSB-3NR1T1MLVの各種インタフェースをLinuxからアクセスする方法を調べました。
- Ethenetは、内部から見えるインタフェースはeth0・eth1の2つで、eth0はINTERNET端子に対応。eth1はスイッチングハブIC(RTL8367RB)を経由してLAN1~LAN3端子と接続されています。
- その他多くのインタフェースはGPIO接続です。前面ディスプレイ(OLED)の表示制御には、ソフトでGPIOを制御してI2C通信信号(SDA・SCL)を生成する必要があります。
参考情報
-
テックアップナウ! - NSB-3NRシリーズNAS : 中身1
rootログインして、システムの中を探索されています。 -
Qiita - NSB-3NR1T1MLV を分解してみた
分解方法、本体内部の写真や主要部品の情報。おかげさまで私は本体を開けずに済んでいます。 -
ともちゃ日記 - エレコム NSB-3NR1T1MLV NetStor/NSB-3NRVシリーズ/BOX型LinuxNAS/1Bay/1TB
HDD換装、NASとしての性能測定など。