Edited at

NSB-3NR1T1MLV をLinux箱として使う (準備: インタフェースへのアクセス方法調査)

More than 1 year has passed since last update.


はじめに

ELECOMのNSB-3NRVシリーズはLinux搭載のNASです。LANを4ポート持っていたり、シリアルポートが出ているなど、NASとは無関係の方向でがんばっているハードウェアが特徴です。最近お安くなったせいか解析情報がちらほら出てきました。

1TBモデル NSB-3NR1T1MLV を先日入手しました。NASとして使う気は毛頭無く、ただのLinux箱にするつもりです。

手始めに各種インタフェースへのアクセス方法を調べました。


準備


  1. NSB-3NR1T1MLV (本体)

    ファームウェアは購入時(1.05-1514)のままアップデートしていません。


  2. CISCO準拠のシリアルケーブル

    先端がRJ-45になっているシリアルケーブルです。私はUSB接続のものを買いました。


  3. ターミナルエミュレータ

    シリアル通信ができるもの。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)を生成する必要があります。


参考情報


  1. テックアップナウ! - NSB-3NRシリーズNAS : 中身1

    rootログインして、システムの中を探索されています。


  2. Qiita - NSB-3NR1T1MLV を分解してみた

    分解方法、本体内部の写真や主要部品の情報。おかげさまで私は本体を開けずに済んでいます。


  3. ともちゃ日記 - エレコム NSB-3NR1T1MLV NetStor/NSB-3NRVシリーズ/BOX型LinuxNAS/1Bay/1TB

    HDD換装、NASとしての性能測定など。