Help us understand the problem. What is going on with this article?

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away