3DプリンタでMini-ITXのNASケースを印刷して自作する

3年半ほどNanoPi M4を使ったNASを運用していた。 しかし、Armbianのメンテナーがいなくなったり、瞬電でmicroSDが死んだりと運用し続けるうえで問題点が増え、ついでにHDDの容量も4TBから増やしたいので、新しいNASを組むことにした。

Single Board ComputerでNASを組むという選択肢

今まで使っていたNanoPi M4の良かった点として、HDDへの給電が容易であることがあげられる。SATA HATは12VのDCジャックで給電可能で、それを4pinペリフェラル電源とNanoPi M4へ分配してくれる。

他のNAS用のSBCとしてはRadxaのSATA HATがある。しかし、4pinペリフェラルでのみ給電可能で、4pinペリフェラル電源を用意するには結局ATX電源が必要であるため、コンパクトにはまとまらない。ATX電源は意外と大きい。

Mini-ITXNASを組む(ケース)

市場にはMini-ITXケースが数多く出回っているがそのニッチさからか、本体数万円のものが多く、Aliexpressなどで売っているものはその大きさから送料が軒並み1万円近い。また、ATX電源が大きいのであまりコンパクトにならない。Mini-ITXの寸法は170mm×170mmなので大体の家庭用3Dプリンタでケースが印刷できるサイズである。そのため、今回は3DプリンタMini-ITXNASケースを印刷して運用することにした。

放射ノイズ?知らない子ですね。巷にあふれてる透明なサイドパネルに導電性を持たせているまともな商品がいくつあるんだよ。

3Dプリンタのフィラメントは難燃性でないし、燃えたら自己消化性も期待できないので、本当に自己責任である。

電源問題

電源はHDD数台とボードが動けばいいので200Wもいらない。数百W程度であれば、DCジャックからATX24pinに給電する電源ボードが売っているのでこれを試してみることにした。 (中略) 自己責任

Mini-ITXのボード

要件としては

  • そんなにCPUパワーはいらない。むしろ省電力化したいのでオンボードCPU。
  • 今までNanoPi M4に2.5GbEをつなげていたので、2.5GbE以上は必須。
  • SATAポートが4ポート以上は欲しい

というボードを探していたが、まともに手に入るオンボードCPUのMini-ITXボードはCPUの世代が古く、新しい世代のCPUはベアボーンしか存在しない。そこで、Aliexpressも探してみるとIntel Celeron N5105搭載で2.5GbE×4、SATA×6、M.2×2のおあつらえ向きなボードが売っていた。25,000円と決して安くないものをAliexpressで買うのは怖いが、ほかに売っていないものはしかたがない。そう、やむを得ないと自分に言い聞かせてボードはこれを購入した。

ケースの印刷と組み立て

200mmの印刷上限ギリギリの直方体を印刷することをしたことがなく、たくさん失敗した。

もともと複数パーツを組み合わせる設計だったが、大きな直線を印刷するので反りがひどく、印刷終了直前は樹脂の弾性によって精度が足りず、設計を白紙に戻した。800g近いフィラメントを一気に印刷するのでノズルが詰まり、3年ほど使ったi3megaのヒートベッドの温度センサの配線が断線し、それを直したら今度はヒートベッドの給電線が金属疲労で粉になっていた。

そんなこんなで印刷し終わったケースがこれである。

Mini-ITXのボードも無事?着弾した。 動作確認をしてみると、HDMIが死んでいる以外は一応正常に動作した。(DPは生きているのでヨシッ!)DC-ATX給電も正常に動作しているのでこれで行こうと思う。(SATA給電のケーブルがやけに細いのが若干怖いが...)

16GBのメモリモジュールも認識したのでIdeapad S540のメモリ交換で余っていた4GBと合わせてメモリは20GBで運用することにした。OSドライブは同じくIdeapad S540のSSD交換で余っていた256GBのNVME SSDを使いまわし、HDDは最近発売されたWDのCMRの6TBのWD60EZAXを3枚購入した。

そんなこんなで組み立てていくのであるが、配線のクリアランスがあまりにもなさすぎる。

ファンはScytheの9cmファンを買ったのだが、ファンとのクリアランスがL字SATAコネクタでもギリギリで明らかに設計ミスである。誰だよこれ設計したの 薄型ファンを買うとよかったのだろうが、普通の厚さのファンを買ってしまったので後の祭りである。

何とかピンセットなどを使い、HDDとの配線をしてケースに収めた。 なんだかんだ構想から2ヶ月以上かかってしまったが、一応形にすることはできた。

印刷時とカバーの色が変わっているのは電源スイッチとLEDの穴を設計し忘れたあほがいるからである。

ベンチマーク

無事組みあがったのでTrueNAS Scaleを入れてSMB共有のフォルダに対してCrystalDiskMarkをとってみた。

まあ、キャッシュ内ならこんなもんである。

大まかにかかった費用

  • 本体
購入物 価格(当時)
CW-N5105-NAS 25,000
DC-ATX給電ボード 1,500
120W AC-DC電源 2,200
フィラメント2色 4,000
ペリフェラル4pin→L字SATA×4分岐 900
L字SATA×4分岐 700
9cmケースファン×2 1,800
4ピンファン電源3分岐ケーブル 600
失敗したフィラメント 4,000
DDR4メモリ16GB 4,900
余っていたDDR4メモリ4GB ?
余っていたSSD256GB ?
M3スペーサー・ナット・ねじ 400くらい
---- ----
本体代合計 46,000+α
  • ストレージ
購入物 価格(当時)
WD60EZAX 3台 32,000

まあ、x86_64で6ベイNASで2.5GbE対応とスペックの割には安いけど、自作なんでこんなもんだろう。

モデルデータはGithubにおいておきます。

github.com

USB PDトリガデバイス給電のファンコン自作

先日、LXW-10G2/2G4の中古が2万円だったので購入したが、こいつ発熱がひどいのに冷却ファンがついておらず、この夏の暑さに耐えられず、リンクダウンが頻発するようになったので、余っている12cmPCファンを取り付けることにした。この記事はそのためのファンコンを製作したものである。

USB PDトリガ

最近のUSB Type-C充電器はUSB PDという規格に準拠していれば、5V以上の電圧を出力できるらしい。規格上は5/9/15/20Vの4段階らしいが、Quick Charge 2.0では12V出力ができたおかげで、12V出力ができるPD充電器が世の中に存在している。 USB PDでは給電デバイスに対して欲しい電力を通信する必要があり、USB PDトリガIC(IP2721など)を利用すると指定した電圧を出力するように通信してくれる。

PCケースファン

PCケースファンの話をすると、ファンの端子形状には3ピンと4ピンがあり、3ピンのピンアサインは「GND-12V-回転数測定」で、4ピンは「GND-12V-回転数測定-回転数制御(PWM)」となっているらしい。回転数測定のピンは、オープンドレインで回転数=周波数となるような信号が出ている。PWM信号のスイッチング周波数は25kHzなので、後はこれらをマイコンで測定・制御してやればファンコンが作れる。

成果物

https://github.com/MurakamiShun/FANController-USB_PD_powered

f:id:Akisutex:20210706005040j:plain
回路

f:id:Akisutex:20210706005058j:plain
動作中

とりあえず、USB PDトリガだけ購入して手元にあるもので作ってみた。マイコンが2個乗っているのは、大量に余っていた&2個の方がカッコよく見えるからである。ロマンだよロマン

3ピンファンの電圧制御は回路が大きくなってしまうため、断念した。レギュレータもDC-DCコンバータを使えば消費電力が微塵なりとも減るだろうが、数十mWの変化しかないだろうし、安さ優先で、さらにPWMも21.9kHzで25kHzに足りてないし、きれいなPWMが出ていない等々、妥協点が多いが、思いのほかきれいにできた(自画自賛)。

自作したい人は、GitHubに必要なものを一式上げているので"個人利用の範疇"で自作してください。

しかし、自作には変わりないので、充電器が壊れようがファンが壊れようが火を噴こうが自己責任で作ってください。

ライセンスの注意

過去に面倒になったことがあるので明記しておきます。ウッ トラウm

ライセンスとしてはCC BY-NC-SA 4.0なので改変したものを「公開・再配布」する場合は同じライセンスで行い、GitHubのリンクを張るなどして著作権の明記を行ってください。個人で勝手に使う分には好きにしてください。

ただし、代替部品を使う場合は改変に含めません。レギュレータを3端子レギュレータ、回転数抑制にPDトリガを9Vに付け替えたり、PIC12F1822以外のPICマイコンを使う(ただし、ソースコードを変更する場合は改変に含めます)、コンデンサの容量違いを使う等々。

収益化された配信・ブログ等は自身の創作性やコメントが含まれた動画や静止画が投稿されることを原則として、それらが含まれない投稿やコピーに過ぎない投稿はライセンス違反とします。

R8152のドライバをdkmsでkernel update時に自動コンパイルするための自分用メモ

すぐに忘れるので自分用メモ。

# apt install dkms

Realtek公式ページからドライバをダウンロード。 移動。

# mv r8152-バージョン /usr/src/

Makefileの15行目の

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

KERNELDIR ?= /lib/modules/$(KVER)/build

へ変更。dkms.confの作成

PACKAGE_NAME="r8152"
PACKAGE_VERSION="バージョン"
BUILT_MODULE_LOCATION[0]="."
BUILT_MODULE_NAME[0]="r8152"
MAKE[0]="'make' KVER=${kernelver} modules"
CLEAN="make clean"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="yes"

追加&ビルド&インストール

# dkms add -m r8152 -v バージョン
# dkms build -m r8152 -v バージョン
# dkms install -m r8152 -v バージョン

ここを参考にR8152用に少し変更を加えた。ありがとうございました。

IdeaPad S540 (14, AMD) のメモリ増設をした

 昨年の夏にIdeaPad S540を54000円ほどで購入し、半年使用してみたが仮想マシンを立ち上げると明らかにメモリが足りない。初期設定のままだと、GPUに2GBも割り振られているので、512MBに変更してもメモリ不足に悩まされていた。S540のメモリ構成は4GB(オンボード)+4GB(メモリスロット)なので、メモリスロットの4GBを16GBに交換して、合計を20GBにした。
 追加するメモリは、dosparaでF4-2666C18S-16GRSを注文。  S540の分解にはT5トルクスドライバが必須であるので、近くのホームセンターで買ってきた。さらに、必須ではないが、裏蓋を開けるために100円ショップで吸盤を買ってきた。
 必要なものがそろったので分解していく。 f:id:Akisutex:20200528164306j:plain  S540は裏蓋を外すのにドライバなどを差し込む隙間がないので、吸盤があると便利。 f:id:Akisutex:20200528164331j:plain 裏蓋を開けると中央に金属の箱で隠されたメモリスロットがあるので、交換。 f:id:Akisutex:20200528164336j:plain 交換後、Windowsで確認すると無事に認識していた。これで仮想マシンを立ち上げてもメモリ不足にならなくて済む。f:id:Akisutex:20200528164930p:plain

NanoPi M4&USB-LAN2500RでNASを組んだ感想

 この記事は、NanoPi M4(2GB)とUSB-LAN2500RでNASを組む際に使用した金額と雑感である。

買ったもの 値段
Nano Pi M4 2GB $50
SATA Hat $25
Nano Pi用ヒートシンク $6.99
送料 $13
USB-LAN2500R ¥3800
↑のヒートシンク ¥20
ATX電源(中古) ¥2200
100均ケース ¥110
3Dプリンタのフィラメント(使用分) ¥500
12cmファン ¥370
合計 $95+¥7000

 2万円未満で4ベイの2.5GbE対応NASが組めたと考えれば安いのではないだろうか?(そう思うようにしよう)
 本音を言えば、2.5GbEのスイッチングハブ10GbEと大差ないくらいに高い。そのため、使い道があるのかといえば、まだない。また、Nano Pi M4を買った時期が去年の夏だったので当時は選択肢がなかったが、今なら、Helios64を買えば簡単に安く5ベイで2.5GbE対応なNASが買えるので、作る過程や無粋な見た目が嫌だという人は、そっちを買うことをお勧めする。

2.5GbEの発熱がひどい

先月、SD-PE25GLAN-1LとUSB-LAN2500Rを買ったが、発熱がひどいのにヒートシンクが両者ともついてないので、あったまるとリンクが落ちる。 akisutex.hatenablog.com

なので、手元にあったRaspberry Pi 3のヒートシンクを張り付けた。こんな小さなヒートシンクでは冷却が足りてないようにも感じるが、ましになったので良しとする。 f:id:Akisutex:20200325153005j:plain