あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

ラズピッピ雑記

MagPi Issue 139にEjectが載っていた

定期購読のMagPiのあたらしい号が届いたので、ペラペラめくっていたところ……

唐突にEjectコマンド工作が飛び出してきて声が出ました。

エキセントリックな工作アイデアみたいな5〜6ページのプチ特集に掲載されていたんですが、まあよく10年以上も前のネタを掘り返してきたなあとw

ちなみに、 https://magpi.cc/akkiecd にアクセスすると、raspberrypi.com ではじめて取り上げられたときのLiz執筆の記事にジャンプしました。Magpi短縮URLが作られるのはこれが3つ目ですね。 https://magpi.cc/akkieMastodonアカウント、 https://magpi.cc/akkieblog はこのブログに飛びます。便利や……。

2月のRaspberry JAM Tokyoでやったスライドの基板実物がきたがミスってた

来ました。

早速組み立てて、同じように接続して通電したところ、パン!という音とともに、ちょっと焦げ臭い匂いがしてきました。やっちゃったぜ。

赤外線受信モジュールの向きが鏡になっていたらしく、新しいモジュールに交換してPicoの方を向くように差し替えて通電したら動作しました。設計ミスりました。よく確認しましょうとかスライドに書いたじゃんかよ〜〜〜〜。

というわけで、そのうちデータだけ修正したRev.2を作ってGithubに放流しようと思います。基板自体はもういらないので、これで使おうと思います。受信モジュールは登録の時しか使わないですからね。

Raspberry Pi 5に10GbE NICを乗せたやつを2台並べてiperf3で計測すると……

明日はオープンソースカンファレンス 2024 Tokyo/Springです。この記事の物体を展示予定なのでお近くの方はぜひ。

event.ospn.jp

OSCに10GbE NICのデモを持ち込みたい

これの続き。

akkiesoft.hatenablog.jp

10GbE NICが動くことがわかったので、OSCでデモをしたら映えるかなと思い、会社からNICを借りてきました。適当に余っているIntel X520を連れ出そうとしたら、部長から「そんな古いんじゃ消費電力デカくね?YOUこれ持っていきなよ(意訳)」と、Mellanox ConnectX-4 Lxを授かりました。社内的にはもう箪笥の肥やしになっていたものですが、10GbEどころか25GbEもいけるNICです。はげしい。<写真>

というわけで、これを持ち帰ってカーネルコンパイルを済ませ(mlx5_coreを有効にしました)、動作も確認できました。

手持ちのSolarFlareのカードがiperf3で3Gbps止まりだったのに対して、ConnectX-4は6Gbps==750MB/sを叩き出したので、PCIe 3.0x1が理論値8.0Gbpsなのと、NVMeがシーケンシャル700MB/sくらい出していることを考えると、ちゃんとPi 5のPCIeの性能を使えている感じがしますね。VERY GOOD.

対向のマシンがほしい

上記のテストはあくまで(10GbEスイッチを介して)自宅サーバーの10GbEとテストした結果です。OSCに持ち込むには対向のマシンが必要ですし、できればコンパクトな方が良いです。

手としては、ラズピッピで前回のブログで使えないと書いた安物PCIe変換をリトライするか、CM4のIOボードでやるかという感じでしたが、カーネルコンパイルして試した結果、

(1) どちらも共通して、/boot/firmware/cmdline.txtに「pcie_ports=compat pcie_aspm=off」を追加しないと、PCIeのリンクエラーが大量に出てなんかシステムがめちゃくちゃ不安定になったりする
(2) (1)の対策後、安物PCIe変換は動きそうだったのに対して、CM4はやはりダメそう

というわけで、Pi 5と安物PCIe変換のリトライで行く方向にしました。

なお、この間にながいずみさんからMisskey.ioでお声がけいただき、超立派なM.2→PCIe変換とATX電源のセットを譲って頂いたのですが、可搬性の都合から一旦見送りました。OSCが終わってから遊びたい所存。

misskey.io

やっていき

構成はこんなかんじ。会社から借りてきすぎだろ。

  • 10GbE NICを搭載したPi 5(私物)を2台用意してiperf3をかけてあそぶ環境
    • ケーブルは会社からずっと借りっぱなしのDAC(余してるのでヨシ!)
    • 安物PCIe変換の方には外部電源として昔CD-ROMドライブを動かすのに使っていた電源を使用
  • iperf3を実行したり、デスクトップのデモとして使用するための、NVMe SSDを搭載したPi 5(会社でVPNサーバーにしようと調達していたものを拝借)を1台

Pi 5の公式電源が、ユーザー会のサンプル1つしかないため、これはNVMeの方に割り当てます。10GbE環境は5V3Aで動かすことになりますが、まあなんか動いたので良しとしつつ、OSはMicroSDカードにして省電力&挿しっぱなしにして現地での設営の手間を削減していきます。

MicroSDカードのOSセットアップは、コンパイル済みの環境に合わせてRPi OS(64-bit)を選択して、コンパイル済みのファイルをコピーして展開しました。

$ tar xzf pi-kernerl-pcie.tgz
$ sudo cp boot/firmware/initramfs_2712 boot/firmware/kernel_2712.img /boot/firmware/
$ sudo rsync -a lib/modules/6.1.77-v8-16k+ /lib/modules/
$ sudo reboot

起動してNICが認識しているのを確認したら、nmcliでIPアドレスを適当に固定します。

$ ip a
(略)
4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 24:8a:07:XX:XX:Xa brd ff:ff:ff:ff:ff:ff
5: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 24:8a:07:XX:XX:Xb brd ff:ff:ff:ff:ff:ff

$ nmcli con
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  db957665-1d22-36da-a7ae-2103d0958e43  ethernet  eth0   
preconfigured       e62b271f-03bf-4a79-b9db-8238d6f2b4e3  wifi      wlan0  
lo                  51f50ece-5d00-435e-a865-842930898cd4  loopback  lo     
Wired connection 2  09b5f6c9-5da5-3c17-aecb-1df3dc85f32a  ethernet  --     
Wired connection 3  fcaa7110-709b-3ca6-b07d-9e4c375d1eff  ethernet  --

$ sudo nmcli con mod "Wired connection 2" ipv4.method manual ipv4.addresses 192.168.10.2/24

もう一台も同じ作業を繰り返して(IPアドレスを適宜変更)構築は完了です。

iperf3実行用のデスクトップ環境の用意

デスクトップ環境と言いつつ、適当なスイッチングハブがなかったので、10GbE環境へのアクセスのために、USB-LAN変換を2本挿してオンボードのやつとブリッジポートにしました。nmcliでブリッジを作る手順は以下を参考にしました。

enakai00.hatenablog.com

# ブリッジつくるやつ
$ sudo nmcli con add type bridge ifname br0
$ sudo nmcli con modify bridge-br0 bridge.stp no
$ sudo nmcli con modify bridge-br0 ipv4.method auto

# ブリッジにぶら下げるやつ
$ sudo nmcli con add type bridge-slave ifname eth0 master bridge-br0
$ sudo nmcli con add type bridge-slave ifname eth1 master bridge-br0
$ sudo nmcli con add type bridge-slave ifname eth2 master bridge-br0

# オンボードポートの設定をとばすやつ
$ sudo nmcli con del "有線接続 1"

あとはOSCでやる練習も兼ねてKVMも揃える感じで配線。デスクトップ環境はモバイルルーターに接続する感じでやっていくこととして、これの無線経由でワンチャンMacとかからもアクセスできる想定としました。そんなわけで、ひととおり完成です。


iperf3を実行してみよう

片方をサーバーにしておいといて、

akkie@tengbe1:~ $ iperf3 -s

もう片方からテストを実行します。

akkie@tengbe2:~ $ iperf3 -c 192.168.10.1
Connecting to host 192.168.10.1, port 5201
[  5] local 192.168.10.2 port 60458 connected to 192.168.10.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   757 MBytes  6.35 Gbits/sec    1   1.56 MBytes       
[  5]   1.00-2.00   sec   758 MBytes  6.35 Gbits/sec    0   1.56 MBytes       
[  5]   2.00-3.00   sec   756 MBytes  6.34 Gbits/sec   12   1.56 MBytes       
[  5]   3.00-4.00   sec   758 MBytes  6.35 Gbits/sec    8   1.56 MBytes       
[  5]   4.00-5.00   sec   760 MBytes  6.38 Gbits/sec    0   1.56 MBytes       
[  5]   5.00-6.00   sec   759 MBytes  6.36 Gbits/sec    0   1.56 MBytes       
[  5]   6.00-7.00   sec   760 MBytes  6.38 Gbits/sec    0   1.56 MBytes       
[  5]   7.00-8.00   sec   759 MBytes  6.36 Gbits/sec    0   1.56 MBytes       
[  5]   8.00-9.00   sec   760 MBytes  6.38 Gbits/sec    0   1.56 MBytes       
[  5]   9.00-10.00  sec   759 MBytes  6.36 Gbits/sec    0   1.56 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  7.41 GBytes  6.36 Gbits/sec   21             sender
[  5]   0.00-10.00  sec  7.41 GBytes  6.36 Gbits/sec                  receiver

6.36Gbpsの結果が出ました。は、はええよ。サーバー側の10回の実行結果も6.36Gbpsで合っていますね。MB/sにすると795MB/sなので、まあ早い。

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  7.41 GBytes  6.36 Gbits/sec                  receiver

昨晩環境ができた直後は5Gbps台に落ちる回もあったので、発熱とか電源の兼ね合いもあるともちろんあると思われますが、それでも早いので、感動の性能ですね。

ちなみに、ここで片方のPi 5を手持ちのSolarFlareのカードにすると、やはり3Gbps台に落ちるようだったので、ドライバー的な問題かもしれませんし、だいぶ古いので、まあしょうがないかなという気はします。

まとめ&あしたの告知

  • Pi 5にMellanox ConnectX-4を乗せたものを2台用意して1:1でiperf3を実行すると6.36Gbps==795MB/sくらい出る
  • 手持ちのSolarFlareのカードは古すぎるので3Gbpsくらいしか出ない

というわけで、なんとか動く環境が作れたので、明日はOSCでこれの展示ができそうです。ヨカッタァ。

明日のOSCは去年と同じく浅草です。展示物は10GbEをメインにするので、今年一年回して来たものはいくつか引っ込めの予定です。また、tnishinagaさんがPi 5のJTAGデバッグデモをしに来てくれるそうなので、そちらもお楽しみに。なお、Pi 5のデバッグの話はraspi.jpのほうにも記事を寄稿いただきました。ありがてえありがてえ!

www.raspi.jp

www.raspi.jp

さぁ、機材を荷造りするか……。

WaveShareのPoE HATが来たので遊んでみる

昨晩書いたそばからWaveShareのPoE HATが到着したので早速遊びます。

今回買ったのはPi 5対応のPoE HAT(F)と、Pi 4対応のPoE HAT (E)のふたつ。


PoE HAT(F)

これ、そもそも買うかずっと迷っていたら、Jeffがレビュー動画を上げていて、使っているスイッチも同じだし、アリかなと思って買ってみた次第。公式がいつまで経っても出さないのが悪い。

www.youtube.com

(F)の基板裏面。ファンはPi 5のファンコネクタを使わずに独自の電源ピンから電力を供給するため、常時回転になります。ただ、Pi 5の公式ケースのファンと同じサイズのようなので、交換してしまうというのもアリかな?と、ちょっと思ってしまいました。また、12Vの出力ピンも用意されています。

乗せてみたところ。(F)の方には薄型のヒートシンクと固定用のナットとネジが付属しますが、PoEピンが移動したおかげで、なくても大丈夫な雰囲気は感じました。ヒートシンクも今回は一旦不使用で。

USB-C側はスカスカなので、こちらに立てるのはありかもしれません。無精しないで立てろそれはそう。

公式ケースとの相性は×。しょうがないので、いまのところは下のピンクのトレイ部分だけで使っています。常時稼働の予定も無いので、まあ良いでしょう。

動かした様子。写真だとあまり伝わらなさがありますが、LANケーブル1本で動くのって良いですよね。ちなみにこのPi 5向けにPXEブート+NFSルート環境を久々に作ってみたので、ストレージすら積んでいないです。ほんとうにLANケーブル1本。

スイッチはHPE Arubaの2530 8G PoE+を使っているので、管理画面からステータスが見られます。4.5Wほどで動いているようです。

ちなみに、ひとつ前の記事のPCIeボード環境をPoEでまかなおうとしたら、電圧不足なのかうまく起動しませんでした。まあ、さすがに無理やり過切るので、これはやめておきます。


PoE HAT(E)

(E)のほう。基板裏面はピンヘッダーのはんだ付け以外何もなくフラットです。貫通のピンソケットが表面に表面実装されていて、後ろから貫くタイプの実装です。

なので、ケースとか既存ヒートシンクがいると、結構干渉しちゃって意外と面倒な子でした。そっかあなるほど。こちらは常時稼働のプランがちょっとあったので、ややミスった感。連結ピンソケットで伸ばしてやる手はありますが、2x2のやつってあるのかな。写真のやつは、無理やり取り付けたら動作したのでOKとした図です。これは多分ヒートシンクをずらしたらいい感じに納まりそう。

2530 8G PoE+スイッチの表示。こちらはUSB SSDを繋いでいるので状況が違いますが、4.7Wほどと出ました。


まとめ

WaveShareのPoE HATボードでPi 5とかのPoEをやる話でした。PoE良いよね。

Pi 5のPoEに関しては公式が出るまでのつなぎとしては十分アリなのかなと思っています。これ、会社のVPNサーバーに突っ込んじゃおうかな(?)

Pi 4の方は、なんかいい感じの延長ピンソケットを探したいところです。アリエクを探しに行くかあ。

52PiのRaspberry Pi 5向けPCIe x1スロットボードを買ってみた。

52Piが販売していたP02 PCIe Slot For Raspberry Pi 5 Extension Adapter Boardをポチってみました。

P02 PCIe Slot for Raspberry Pi 5 Extension Adapter Board – 52Pi Store

1月末にポチったら支払いが確定したまま旧正月に入り、旧正月が終わっても発送のはの字もなかったため、定期的にメールで問い合わせたり、Forumに書いたりしたら全部無視され、製品ページにしれっと「発送に1ヶ月かかります」と追記されました(今見たら消えてた)が、その後やっと発送されて届きました。よって、先に言っておくと52Piのサポートはカスでした。ものは良かったんですけどね。おしい。なので、52Pi製品を取り扱っているGeekwormがAliExpressとかAmazonで売り始めたのを買うのがベターのような気がしました。

その前に

じつはAliExpressでM.2からPCIスロットに変換するボードというのを1月に300円くらいで仕入れまして、ワンチャンこれで動く可能性に賭けようとしたのですが、どうやら安すぎたらしく認識しなかったり何だりして不安定すぎたので断念していました。絵面は良かったんですけどね。

スロットに切り欠きがなかったので自分で加工したのですが、このときに壊したのかそもそも駄目だったのか。先に刺さるやつでテストすればよかったですね。まあ300円なので別に痛くも痒くもないですが。

GIGAZINEで同じようなボードを買って同じく加工していたようですが、あちらは動作したようですね。

52Pi P02 PCIe Slotのほう。

そして本題。パッケージと内容物はこんな感じ。えっと、パッケージに伝票シール直張りで、たまげました。52Pi直販すげえな、たまげました。内容物に問題なかったのでよかったんですけど。中身の方は、ボード、Pi 5を立てる用のネジとナット、PCIe用FPCケーブル、マニュアルとドライバー。ドライバーこそ添付しなくて良くないですか?その気遣いをするなら後述のボードを浮かせるナットが欲しかったです。

Pi 5を乗せたところまで。ポゴピンはPi 5の5VとGNDに接触します。

裏面はFPCコネクター以外何もないこざっぱりとしたようす。

10GbEカードを差し込んで動かしたところ。PCIスロットの分だけ基板を浮かせるためのナットがないため、そのままではだいぶ不格好です。

仕方ないので、手持ちのネジ袋から20mmくらいのナットネジを4つとネジを留める用のナット2つ出して、基板のPCIeスロット側の穴2つと、Pi 5の電源側の穴2つに取り付けました。

これで見かけの方はだいぶ良くなりました。


動かす

今回は手持ちのSolarFlareの10GbEカードを動かしてみました。電源は変換ボードのスイッチで内部電源、外部電源を選択できますが、内部電源にして、公式の電源アダプター(※ユーザー会所有のサンプル品)を使いました。一応これで問題なく動きましたが、外部電源を使ったほうがなんとなく安心な説はあるかもしれません。

で、SolarFlareの10GbEカードはカーネルコンパイルが必要なので、ソースを引っ張ってきてコンパイルします。が、なんかrpi-sourceのPi5対応をどうもまだやっていないか、やってたけど壊れているらしく、とにかくrpi-sourceを使って使用中のカーネルソースコードを引っ張ってくることができないため、ブランチ指定でGithubからcloneする感じのようです。

そのへんの面倒をいい感じにしてくれるコマンドを作っている有志がいるので、これを使わせてもらいました。

https://forums.raspberrypi.com/viewtopic.php?t=343387

ダウンロードしてzipを展開したあと、chmod +x build-kernelで実行権限をつけます。私は-uオプションで一度コンパイルしたあと自分で/usr/src/linuxに移動してmenuconfigをやり直して二度手間になりましたが、多分以下のコマンドでmenuconfigに入ってくれると思います。

$ sudo ./build-kernel --branch rpi-6.1.y -c 5  -j 4 -m

で、menuconfigでSolarFlareのドライバーを有効化してコンパイルしてインストール。そして再起動すると無事10GbEカードが認識しました。(あ、PCIeの有効化の諸々は済ませてあったので省略していますが、52Piのマニュアルを読むなり、NVMeのPi 5での使い方を調べるなりすれば設定できると思います。)

同じ10GbEカード使用のESXiサーバー内のVMとiperf3でベンチマークした結果は3.2Gbpsほどでした。昔CM4でSolarFlareとX520の1:1で試したときは2.7Gbpsほどだったので、500Mbpsくらい早くなったといえば早くなりましたが、いちおうPCIe3.0x1相当のオプションにはしたので、もうちょっと出てもいいような気はしました。また後日試す。試してからブログ書けよそれはそう。

akkiesoft.hatenablog.jp

ちなみに、ブートデバイスにしていたUSB SSDをhdparmでシーケンシャルリードさせながらiperf3をしても3.2Gbpsで、SSDも340MB/s出せていたので、帯域を食い合うということはなさそうに見えました。ここももうちょっと試して別途追加でブログってみましょう。

まとめ

52Piにハラハラさせられながらも、PCIスロットボードを輸入で購入して遊んでみる話でした。びっくりするほど問い合わせが全部スルーされたので、直接買うのは今後ないと思います。

WaveShareでPoE+ボードをポチるなどしているところですが、こちらはすぐに発送されたので問い合わせるまでもなく、まあ、差を感じてしまいますね……。そうそう、PoE+も楽しみにしておるところです。わくてか〜。