NSB-3NR1T1MLVにGentooを入れる

rootで入っていろいろとかやってたんですがいろいろクソで腹立ってきたのでGentooを入れます

準備する物

  • プラスドライバー
  • SATAでディスクが繋げられる適当なLinuxマシン
  • USBシリアル変換
  • Ciscoの機器で使うRJ45できしめんのケーブル
  • WD赤がもったいないと思うなら適当なSATAのディスク

手順1: HDDを抜く

真面目にNASとして使う気は全くないので最初から入ってるWD赤はだいぶもったいないです。というわけでその辺に転がってるHDDに交換します。私はその辺にあった500GBの2.5inchHDDに入れ替えました。

f:id:misodengaku:20180124234222p:plain

分解についてですがケースの隙間に薄くて強いカードのような物を差し込んで分解していくと簡単です。SIMカードの殻が強くて薄く、マイナスドライバーとかでこじるより傷つけづらいのでオススメです。

f:id:misodengaku:20180124230717p:plain

ケース背面角からカードを差し込んでちょっとづつバラしていきます。分解記事の写真を参考に爪を狙って浮かせていくと意外とあっけなくケースが開きます。

qiita.com

手順2: HDDにGentooを展開する

実は別にHDD抜く必要はないんですが実際にGentooをインストールするディスクを別の適当なLinuxマシンに接続します。

fdiskあたりで適当にパーティションを整えてmkfs.ext4でもしておきます。

f:id:misodengaku:20180124231901p:plain

ext4でフォーマットできたら適当なディレクトリにマウントしてcdし、Gentooのstage3を落としてきてtar xjf stage3~とでもして展開します。

今回はstage3-armv7a_hardfp-20161129.tar.bz2を使います。適当にJAISTあたりのミラーあたりから落として使うディスクに展開しておきます。

今のうちに展開したstage3内の/etc/fstabを書き換えておきます。

#/dev/BOOT          /boot           ext2            noauto,noatime  1 2
/dev/sda1               /               ext4            noatime         0 1
#/dev/SWAP              none            swap            sw              0 0
#/dev/cdrom             /mnt/cdrom      auto            noauto,ro       0 0
#/dev/fd0               /mnt/floppy     auto            noauto          0 0

こんな感じになっていればおそらくOKです。

展開が済んだらディスクはアンマウントしてNASに繋ぎ、電源が入りそうな程度にNASを組み戻しておきましょう。

手順3: U-bootいじる

本体背面ConsoleポートにCiscoきしめんを接続し、USBシリアル変換で適当なPCに繋いでTeraTermあたりでシリアルポートを開きます。baudrateは115200bps

シリアルコンソールを覗きながら本体の電源スイッチを押すと以下のような表示が出るので即座に適当なキーを押してブートを止めます。

U-Boot 2009.11 (Nov 25 2015 - 09:00:48) GoldenGate SoC ASIC

DRAM:   1 GB
NAND:  512 MiB
In:    serial
Out:   serial
Err:   serial
Net:   Connect GMAC1 to CPU
Goldengate
Hit any key to stop autoboot:  5

キーを押すとU-bootのコンソール画面に入れます。この状態でとりあえず以下の文字列をコピペで投入します。

setenv bootargs root=/dev/sda1 init=/sbin/init console=ttyS0,115200 SB_PHY=PPSS ni_napi_budget=16 qm_acp_enable=0 ni_rx_noncache=0 qm_int_buff=0 ethaddr0=BC:5C:4C:27:A5:9B ethaddr1=BC:5C:4C:27:A5:9C ethaddr2=00:50:c2:77:88:99 wifiaddr0=00:01:73:01:FF:10 wifiaddr1=00:01:73:01:FF:20 mtdparts=cs752x_nand_flash:1024K@0x00100000(uboot-env0),1024K@0x00300000(uboot-env1),1024K@0x00400000(sb0),1024K@0x00500000(sb1),153600K@0x01200000(rootfs),174080K@0x0A800000(rootfs_data),6144K@0x00C00000(kernel2),153600K@0x152000
saveenv
set bootargs root=/dev/sda1 init=/bin/sh console=ttyS0,115200 SB_PHY=PPSS ni_napi_budget=16 qm_acp_enable=0 ni_rx_noncache=0 qm_int_buff=0 ethaddr0=BC:5C:4C:27:A5:9B ethaddr1=BC:5C:4C:27:A5:9C ethaddr2=00:50:c2:77:88:99 wifiaddr0=00:01:73:01:FF:10 wifiaddr1=00:01:73:01:FF:20 mtdparts=cs752x_nand_flash:1024K@0x00100000(uboot-env0),1024K@0x00300000(uboot-env1),1024K@0x00400000(sb0),1024K@0x00500000(sb1),153600K@0x01200000(rootfs),174080K@0x0A800000(rootfs_data),6144K@0x00C00000(kernel2),153600K@0x152000
run bootcmd

おそらく唐突にカーネルのロードが始まってしばらくするとshが起動してくるはずです。これで無事GentooNAS上で動き出しました!

手順4: Gentooの設定

当然Gentooが動いてるというのは嘘でまだカーネル/bin/shが動いてるだけです。この状態で最低限以下の設定をしておきます。

  • passwd root
  • nano /etc/inittabとでもして s0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100s0:12345:respawn:/sbin/agetty -L 115200 ttyS0 vt100 に書き換える(9600→115200)

よく覚えてないですがだいたいこんなもんでしょう。気が済んだら再起動します。rebootとかは効かないので電源ケーブルを引っこ抜いて再度電源を投入します。

手順5: 起動したら勝ち

電源を入れてみて、ブート中のログに OpenRC 0.21.7 is starting up Gentoo Linux (armv7l) みたいな色つきの文字が見えたらだいたい勝ちです。たぶんログインプロンプトが出てくるので普通のGentooマシンとして使いましょう。

おわり

元々入ってたLinux上でいろいろやったんですけどイライラ度合いが半端じゃないのでおとなしくまともなLinuxを入れましょう

今後の目標としてはカーネルを入れ替えたい さっさとソースコード開示しろ

安全靴生活のすすめ

1年ぐらい前から普段履きの靴として安全靴を履いている。

[ミドリ安全] 作業靴 スニーカー ISA805 静電

安全靴を履いてると他人に言うとよく安全靴!?と言われるが割と普通に生活できるし良いことも多いのでまとめていく

以下はミドリ安全 ISA805を前提とした感想

メリット

  • 何より安全靴なので作業などしてるときに足に物を落としても全く痛くない
  • 一般的な安全靴の印象として足先に鉄心が入っているイメージがあるが樹脂なのでほとんど普通の靴と重さが変わらない
  • 物を落としても大丈夫なのだから東武東上線などの治安の悪い路線を利用する際に他人に足を踏まれても全く問題ない(私が安全靴を履くようになった理由の60%はこれ)。
  • 静電気を靴底から逃がしてくれる、接地している安心感
  • ハイグリップで安心
  • リフレクター付きで夜も安心

デメリット

  • 割とインソールが剥がれてくる
    • 接着しちゃってもいいけどちょっとな、みたいな気分
  • デザインが(あんまり)選べない
    • f:id:misodengaku:20171206032832p:plain
    • 色は割といろいろある
    • 長靴タイプとか紐のとかもあるはず
    • 個人的にはあまり気にしてないので気にならない

総評

デメリットに対して圧倒的にメリットが多いことがわかったので安全靴を買いましょう

静電気対策してへんのはお前だけ

DE10-Nano その2

Web上に転がってる資料がみんなQuartus IIのものでQuartus Primeになってしまった今、微妙にいろんなところが違ってしんどいんだけどめげずに頑張っていきたい

名前は聞いたことあったけど使ったことはなかったIPを使ってみる

一番簡単そうなところでPLLがIPとしてまとまってるらしいので使ってみる

f:id:misodengaku:20170905021455p:plain

Tools => IP catalogでIP catalogを表示させてPLLで検索するとAltera PLLが出てくるのでクリック

f:id:misodengaku:20170905021710p:plain

適当にケツにpllとでも名付ける

f:id:misodengaku:20170905021812p:plain

パラメータを変えてく、変えるべきところはReference Clock FrequencyとDesired Frequencyぐらいだけど50MHz入れたらなんか1MHz強ぐらいまでしか落とせなかったのでとりあえず10MHzを作ってあとは手で回していくことにする。

ついでにEnable locked output portとかいうののチェックを外してみたけど別にどっちでも良さそう、何もわからん

もういいわとなったらFinishをクリックでコードが生成される

f:id:misodengaku:20170905022123p:plain

生成されたコードがプロジェクトに勝手に追加されたかどうかは忘れたけどされてなければする

で、実際に生成されたコードを呼びだそうと思ったけどここがよくわからなくて、結局は雰囲気でこんなコードを書いた

生成されたIPと自分のコードを紐付けるところがよくわからなかったんだけど、要は普通のCとかと一緒で、

module pll (
        input  wire  refclk,   //  refclk.clk
        input  wire  rst,      //   reset.reset
        output wire  outclk_0  // outclk0.clk
    );

こんなモジュールを使いたいときはこう呼ぶ

wire clk0;
pll pll_0(clk_50, , clk0);

これでclk0にPLLから出てきた10MHzのパルスが流れるっぽい。

Cとかと違って指定しなければ未配線になるだけっぽいのでRSTとか知らねえよ的なピンがあったらガンガン無視していくといいっぽいことがわかった。

ところで

ここまで奮闘してきたけどよく見てみたらDE10-NanoのUser Manual見るとかなり丁寧なチュートリアルが載ってるっぽい。

www.terasic.com.tw

このままむやみやたらと殴り合っても勝てる気がしないので今後はUser Manualの通り進めていこうと思います。おわり

DE10-Nanoを買った

15380円でDigikeyからDE10-Nano Kitを買った。

www.digikey.jp

DE0-Nanoとかとどれが良いんだろうと思いながら悩んでいたけど結局一番新しそうな物を選んだ。

https://www.digikey.jp/product-detail/ja/terasic-inc/P0496/P0496-ND/6817231

PYNQとかもいいなと思ったけどなんとなくQuartusを使ったことがあったのでAlteraに。

f:id:misodengaku:20170831213814p:plain

ピン多すぎてなんだこりゃと言いながらLEDをパカパカさせるコードを書いてとりあえず動かしてはみたものの、どうやらSoC側のLinuxが勝手に上がってきたりして制御を持って行かれるらしくよくわからんことになってる。

めんどくさそうなのでLinux側触りたくないけど触らざるを得ない感じだし、最終的にはLinux側と繋げたいからこそSoC乗ってるボードを選んだのでなんとか上手く付き合っていきたい気持ち

NVR500のNTT向けOEM品Biz Box N500に関する情報

ACアダプタなし品を安く買えたのでメモ書き

NVR500のファームは食えない

型番違うって言われて蹴られる(実験済み)

けどtelnetで入ったらnetvolante関連コマンドも叩けるしそんな困らない気もする

ファームウェアのbinファイル眺めてたらなんとなくヘッダの構造見えてきたので頑張ればわけわからんファーム食わせることも可能なんだろうか

ACアダプタ

ヤマハ純正のACアダプタはバカ高くて買う気にならない

RT58iやWLX302に付属しているACアダプタが同等品らしいのでACアダプタ付きRT58iあたりを安価に購入できればそれでよさそう、ただRT58iもまだ需要があるらしく激安価で買うのは厳しそう

自分が手元で試した感じではどうやらNVR500/N500に適合するプラグはEIAJ#4っぽい、偶然手元にあったAterm WG600HPかなんかのACアダプタがまさにそれだったので試しに使ってみているが快調に動作している

f:id:misodengaku:20170423212925j:plain

というわけでNVR500/N500向けのACアダプタを安価に調達したければ

  • 家の中とかハードオフ辺りに転がっているACアダプタの中から適合するものを見つけ出す
  • ヤフオク辺りでゴミみたいな値段で売ってるACアダプタ付きのRT58iを買う
  • 秋月辺りで12V 1~2A出力ぐらいのACアダプタ+EIAJ#4への変換プラグとかケーブルを買う

などが考えられる(以上はおすすめ順)

さくらのIoT Platformでパトライトを光らせる

この投稿は さくらインターネット Advent Calendar 2016 の 15日目の記事です。

パトライト時代の到来

今、パトライト社製の積層信号灯(以下パトライト)が空前の大ブームです。ネットワークやサーバーなどの真面目な監視からパカパカ付けたり消したりするだけの面白半分までありとあらゆる場面でパトライトが活躍しています。

パトライトを持たせて喜ぶ我々のような人種がパトライトを見てまず考えるのは「自分でプログラムを書いて好き勝手パトライトを付けたり消したりしたい」とかそういった類のことでしょう。パトライト社もそういった需要に応えるべくEthernetでLANに接続し、TCPなどで操作が可能なパトライトを製造、販売しています。しかし、Ethernetコントローラーの載ったパトライトの販売価格は数万円もし、個人が面白半分で買うのには敷居が高い商品となっています。

一方、Ethernetコントローラーや点灯に必要な回路を含まない積層信号灯のみの部品であれば6000円強で購入することが出来ます。

www.monotaro.com

ということは、点灯に必要な回路とEthernetコントローラーなどの遠隔操作に必要なインターフェースが載ったハードウェアをある程度安価に製作できれば、既製品を買うより大幅に安く、またおもちゃとしては既製品より遙かに優れたパトライトが手に入ることになります。

これらの目的を達成するためのハードウェアとしてまず始めに思い浮かぶのがRaspberry Piでしょう。しかしパトライトを制御するのには少々冗長で、おまけにハードウェアとしての安定性もいまいち(1ヶ月連続稼働させたらmicroSDが物理的に破壊されるなど)です。

Ethernet喋れるマイコンどっかから持ってくるかな、めんどくさいなー等と考えていたところ、ちょうどその辺にさくらのIoT Platformのαモジュール(以下さくらの通信モジュール)が転がっており、せっかくならということでこれに適当なマイコンをくっつけて3G回線経由で遠隔操作可能なパトライトを製作することとしました。

iot.sakura.ad.jp

目標

「さくらの通信モジュール経由で遠隔操作可能なパトライトを点滅させるハードウェアの製作」が大きな目標となります。これを大まかに分けると

の製作が必要となります。

ハードウェア

f:id:misodengaku:20160602164535j:plain まずパトライトですが、LCE-302A-RYGをAmazonで購入しました。この記事の執筆時点ではモノタロウで買った方が安いのでそちらが良いでしょう。

余談ですがLCEシリーズは2017年9月で生産終了予定だそうです。後継機種はLR4型とのことですが実物を持っていないため今回の回路が使用できるかは不明です。

マイコンの選定ですが、使った経験があり安心感があることからSTM32を用いることとしました。具体的には秋月でチップ単体が販売されていることからSTM32F303K8T6を使用します。 変換基板を用いればユニバーサル基板でも作れますが、せっかくなのでEAGLEでプリント基板の設計もすることにします。

さくらの通信モジュールとの接続にはUART,SPI,I2Cを使うことができますがなんとなくI2Cを使うことに。とはいえなんか事故ったら嫌だしどうせプリント基板作るのでSPIとかも出来るだけ配線していく方針。

電源が少々曲者で、通信モジュールが5V、STM32が3.3V、パトライト本体が24Vを必要とします。 この中でダルいのはもちろん24Vで、12Vぐらいならその辺に転がっていがちだけど24Vは・・・ 選択肢としては24VのACアダプタで24Vを取ってきて5Vと3.3Vを作るか、5Vあたりから昇圧して24Vにするかの2つがありました。 後者はその辺によくある5V電源を利用することができるのですが、いかんせん昇圧DCDCコンバータが微妙に値が張る割にいまいちパッとせず、それならいくら新規に購入することになるとはいえ 24VのACアダプタを新たに買った方が安く上がりそうだということで24V給電→回路上で5Vと3.3Vを作る方針にしました。

ファームウェア

以前Nucleoにmbed IDEコンパイルしたバイナリを書き込んでさくらの通信モジュールを使おうとしたところ、何をどうやってもI2Cでは接続できず、SPIで接続すると動くなどの大変怪しい挙動をしたので開発環境としてのmbedは使わない方針に。素直にSTM32CubeMXでコード生成することにしました(CubeMXが素直かどうかは議論の余地がありますが・・・)。 まああとはHALでI2C叩いていくだけです。ファームウェアのソースはGithubに置いてあります。

github.com

基板

f:id:misodengaku:20161123210642j:plain EAGLEで回路を書き、Fusion PCBで発注しました。 Fusion PCBでは注文フォームにガーバービューワーが付いており、ちゃんと書き出せたかどうか注文前に見ることができたのでプリント基板を発注するのが初めての私でも安心して注文できました。

送料込みで$16.03なのでちゃんと設計する手間を考えたとしてもユニバーサル基板でチマチマやってるのがバカらしく感じるお値段ですが、一番安い国際郵便で送ったため注文が11/2、到着が11/23だったので丸3週間かかりました。まあここは金を積めば早くなる?はずなのでケチるのが悪いのですが・・・ 肝心の基板の質ですが、そもそも大したことない回路なので大満足です。シルクがかすれ気味でしたがまあどうせ自分しか組まないし・・・

完成

f:id:misodengaku:20161203182304j:plain いろいろな過程をすっ飛ばして完成図です。部品買う段になって急遽使う部品を変えたりした結果わけわからないことになりましたがひとまず動いているようです。 f:id:misodengaku:20161212211911j:plain 何をするでもなくオフィスにパトライトを放置していたところいつの間にか「出勤」「在宅勤務」「退勤」とダンボールが貼り付けられていました

おしまい

f:id:misodengaku:20161215205649j:plain なんだかまとまらなくなってしまいましたがさくらのIoT Platform βに対応した新バージョンを発送するぜ!というメールがついさっきElecrowから来たのでその時しっかり書きたい