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

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

はじめに

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からいじるためのインタフェースを図にしました。

NSB-3NRV デバイス構成図

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としての性能測定など。