ConnectX-4で激安25Gbpsチャレンジ(MCX4421A-ACQN)

激安25Gbpsチャレンジしてたので記事にします。

はじめに

10Gbps超のネットワーク、憧れますよね(使い道はない)
今やるなら、Mellanox ConnectX-4が候補にあがります。

ConnectX-4はヤフオクで8000円くらい、アリエクで6000円くらいです。(2025/9時点)
※ ConnectX-3の40Gbpsは最近のOSでドライバ非対応なので長期的に使うにはリスク高め

そんな中、アリエクで謎の基板付きConnect-X4が3000円前後で売ってました。
通常版(?)の半額で手が滑ったのでチャレンジ記録です。

今回のネタ

3000円のConnectX-4はこちら。(2025/9時点。 ちょっと値上がりしています。)

MCX4421A-ACQN

妙に安いので調べたところサーバ向けのOCP2.0という規格のボード + PCIeに変換するアダプタ のようです。

ちなみに現在のOCP規格は3.0で別物コネクタらしく、型落ちのコレは破格で販売されている様子。

さて、届いたのがこちら。サーバから抜き取った純正中古品に見えます。

まずはアダプタとボードを外してみます。
アダプタはOCP2.0→PCIex8の単純な変換アダプタでした。

…さて、ファンに使えそうなコネクタとネジ穴がありますね。
熱暴走で通信不能事件を別のカードで経験しているので、ファンを取り付けます。

電圧が5Vだったので、5Vの40mmファンを買ってXHコネクタに交換、接続します。
そういえば届いたうち1枚は見覚えのある他社のロゴ入り

ケーブルは6cmくらいでOK。

起動確認

今回は直結でテストしていきます。(25Gbpsのスイッチは10万円超えるので…)

SFP28モジュールはアリエクで2000円/個のSFP-25G-SRを調達。
OSは都合によりProxmox VE 9.0です。

起動してlspciであっさり認識。

lspci -v

ethtoolでも認識OK。

ethtool -m

不具合覚悟で買ってみましたが、割とあっさり起動しました。

速度検証

あとは速度検証です。aptで入ったiperf 3.18で確認。

retrがかなり多い印象はありますが、一応21Gbpsが出るところまでは確認できました。やったね

このボードを使うときの注意点として、PCIe2.0 x8 or PCIe3.0 x4以上が必須です。
ここに気づかずにPCIe2.0 x4やPCIe3.0 x2で接続して12.5Gbpsしか出ず、数ヶ月お蔵入りになっていました。

安定性についてはしばらく運用して検証してみます。

おわりに

retrは気になりますが、10Gbps超を実現できたので良しとしましょう。

あとは…この速度を活かすために何をしよう?

PONで遊んでみる その2 (GPON VOLT)

PONネタ その2、今回はOLT側を買ってみたのネタです。

今回のアイテム

今回紹介するのはこちら、VOLT(Virtual OLT)です。

見た目はスティック型ONUと同じですが、こちらは親機側です。
小規模環境で簡易的な光配線を行うためのデバイスのようです。(アパートとか?)
アリエクで1万円くらい。

PACBTECH PAC-VOLT

基本的には、「仮想OLT」という名前通り、基本的には上流のネットワークをそのまま子機に流す(設定機能なし)デバイスのようです。

見た目はStick ONUとそっくり(同じ)。
内部的にはTX/RXで波長や出力が違うため別物です。
(購入したものは最大16台まで接続可。PONの規格としては1ポートあたり256台だとか)

使ってみる

さて繋いでみましょう。
理屈的にはほぼBIDIのSFPモジュールですが、分岐前提のためTXが高出力になっています。
このまま繋ぐとONU側の感度を超えるため不具合が起きます。(経験済み)

OLT出力

今回はPON OLTで遊ぶのが目的なので、8分岐の光スプリッタを使ってみます。
OLTx1に対してONUx2を接続し、1:N接続するのがゴール。

接続イメージ図

今回は適当に立てた隔離DHCPサーバの直下にVOLTを接続、その下にONUを接続していきます。
(こういうデバイスはあるのにルータは余っていないので、環境準備に手間取りました)

HG8120Cの場合

ルータ自体がDHCPサーバを立てているため前回同様に192.168.100.1で起動し、WANがリンクアップしました。
認証情報自体は送っているものの、VOLT側が全部許可しているようです。(多分)

HG8120C

これを見るとRX側のReference Valueが「-27 to -8 dBm」となっています。道理で6dBmを直結したらハングするわけだ

Stick ONUの場合

疎通画面のようなリッチなものはありません。
このモデルは起動時にOLTにDHCPがあればDHCP Relay/Option 125あたりで動いて、リンクがなければstatic ipで起動するようです。

Stick ONU

GPON StatusがO5なので疎通OK(らしい)

まとめ

こう見ると、下のレイヤがEthernetでもPONでも同様に使えるところにインターネットを感じますね〜
機材ネタ公開が終わったらパケット調査とiperf測定しようかな?

ところで…

  • 測定機の測定値が6dBm
  • ONUでの測定値が-25dBm
  • 分岐は8ポートなので計算上は減衰9dB程度
    …20dB近くどこかで減衰してる?要調査ですね

おまけ

光回線を引くと「光あれ」ってポストするネタあったので「光アレー(Array)」みたいなネタをしたかった。割とスルーされた。

PONで遊んでみる その1 (XPON ONU)

生成AIの流行で、「実際にやってみた」の価値がかなり上がっている気がします。

…というわけで、唐突にPONを揃えてみたので遊んでみたレポートです。
手元にあるので4部作、本格的に遊ぶには機材追加が必要かも

第1部はXPON ONUからいきます。わかりやすいので

前置き

まずは規格の説明から。

ONUとPON

ONU (Optical Network Unit)

光回線を引くと付いてくるやつです。光回線の子機。
今回は某フリマアプリで調達しました。出品者はどうやって購入したんですかねえ…?

NTTのONU

他の機材とつなげてみようのために買いました。詳細はまた今度。

PON (Passive Optical Network)

このあたりを見るとわかりやすいかも

PONって何? | 技術の豆知識 | ブロードバンドシステム | 情報通信ソリューション統括部門|古河電気工業株式会社

割と名前のままで、受動式の光ネットワークシステムです。

サーバとかでよく見る(?)光接続との大きな違いが、1:Nで通信ができることです。

  • 親機 → 子機(ダウンロード)
    → 親機1台が全機器にパケットを投げて、子機が必要なデータを読み取ります。

  • 子機 → 親機(アップロード)
    → 親機が送信許可を出すと子機が一気に送信(バースト送信)します。

親機側が制御するので、親機1ポートに対して子機が数十台〜数百台以上つながる構造になっています(とはいえ台数増えると速度落ちると思う)

これの何が嬉しいか? この分岐がただの光分岐(下りは等分/上りは結合するだけ)なので、故障箇所が減らせて廉価になります。
あと上りと下りの周波数を変える(BIDI)構成が多く、光ファイバが1本で済みます。
一般のご家庭に配布するのにピッタリですね。

ちなみに、子機は「ONU」で、親機は「OLT」と呼びます。OLTは次回。

GPONとEPON

PON規格は大雑把に2系統あります。

EPON (Ethernet PON)

よく見るNTTのONUがこちらです、EthernetパケットをPONで送ります。
日本だとNTTで使われています。中国電信とかでも使われているそうです。

GPON (Gigabit PON)

最大2.5Gbpsが出るPONです、内部的にはATMを拡張したものが使われているそう。(なんでこんな名前に…)
NURO光はこちらを採用しています。

XPON

EPONとGPONを両立したものがXPON、タイトルのものです。
Xの理由はクロスとかじゃないですかね…? (あとGPONの10Gbps版がXGS-PON or XPONと呼ばれてるらしく紛らわしい)

本題

というわけで、今回はこのXPON ONUです。
通常タイプ(HUAWEI) とSFPタイプを買ってみました。

Huawei XPON ONU (HG8120C)

ごく普通のONUです。アリエクで1000円くらい。

Huawei HG8120C

UIもごく一般的なWebUIで、DHCP機能と電話線など一通りの機能を揃えてます。

普及製品って性能比で強いですねえ…

スティックONU (DFP-34X-2C2)

SFPコネクタに刺すタイプのONUです。アリエクで5000円くらい。
コレをHUBやメディアコンバータに挿せばIPで繋がります。

DFP-34X-2C2

このモデルだとUIが簡素でDHCP機能はありません。
とはいえこのサイズでPONのログインと通信できるのは凄いですね

コンパクトなのは良いのですが、流石にこのサイズだと熱い。
放置して30分で60度近くまで発熱します。

締め

キリが悪いのでここまで。OLTも買ったので次は接続確認するよ

hello, codex. bye,claude code. (2025/8/25)

ブログに書く内容に迷っていたのですが、普段の日記で十分ネタになるようなので書いていきます。
(見返したらポエムですねこれ)

ここ数ヶ月、claude codeを使ってAIプログラミングを進めてきました。
モデルは進化を続けるので最終的には人間が律速になる、なので人間がいなくても進む開発体制がベストです。LLMのミスは人間の無意識なガードレールの欠落なので、本来は機械的に弾けるべきです。

そんな考えの私の結論は、claude codeをやめてGPT-5 codexメインにすることにしました。

理由:

  • claude codeに丸投げするとハードコードや同じ処理を複数個所に実装するケースが多発した
  • ちょっと複雑なタスクを投げるとclaude codeは近視的な修正をしがち
  • codexの場合はある程度全体を見て修正や提案を行える

端的に言えば、claude codeに5回指示してようやく直ったコードより、codexが2回で実装したコードの方が適切に考慮されたコードが出ます。$100→$200にはなりますが、毎日の指示での消耗を省けるならお得でしょう。
(イケてない実装を直させるのに毎週の休日1日潰れてるのに嫌気が差したとも言います)

印象:

ところでclaude codeですが、モデルの劣化など様々な噂が出ていますが、私の所感としては「用途が違う」が感想です。
使い方やセットアップ(+試した時期)が違うのに同軸で語ってもすれ違うなと

claude codeはきちんと体系立てたプロジェクトで、部分的な修正をかけつづける場合に強力です。
MCPサーバなど連携機能も充実しています。
フレームワークをきっちり作って監視して実装できる人には向いてる。(cursorでいいじゃん?そうかも…)   

逆に、丸投げスタイルだったりフレームワークなしで実装したりするのが不得意です。(最初は問題ないのでモックはサクッと作れる、修正で問題が起きていく)

geminiやcodexだとコード全体をある程度は把握して修正するようで、このような初歩的なミスは少ない傾向にあります。

まとめ:

すでに開発の仕組みが整った組織であればclaude codeは優秀に見えます。ただ、個人でプロセスをAIに任せながら(丸投げ開発の婉曲表現)進める場合には、後半で修正地獄になります。(なりました。)
私はAI丸投げ開発でどれだけ作れるのかを見ているので、codexの方が適していると判断しました。

おまけ

ひとまず、

  • reasoning_effort を highにする
    • 雑な実装で手直し発生するくらいなら最初から全力でやってもらいましょう
  • --dangerously-bypass-approvals-and-sandbox 引数をつける
    • 現行codexはsandboxで動くので実行権限が弱いです。claude codeの--dangerously-skip-permission相当があるので、捨て環境ならこちらをつけたほうが良さげ

で運用を進めています。

あとccusage相当のcodex版を作らせてみました
GitHub - cer12u/codex-usage: OpenAI codex usage report (experimental)
が、usage limitがいつ来るか取れないんですね〜…厄介

Arduino互換ボードでprogrammer is not respondingが出たときの対処

小ネタレベルでも定期的に書く習慣をつけようと思い立ちました、書く頻度を上げようと思います。溜まってる小ネタ分は書こうかな?

今回のネタ

  • Arduinoの互換ボードで書き込もうとすると、「programmer is not responding」が出て書き込めない

状況

アリエクでつい20枚くらいArduino Nano互換ボードを買いまして、 動作確認しようとすると書き込みエラーになったので調査しました。

Arduino IDEでひとまずLチカでもと書き込もうとするのですが、このエラーが出ます。

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
……

ボード自体はlsusbで表示されます。

Bus 001 Device 010: ID 1a86:7523 QinHeng Electronics CH340 serial converter

2025/5に買ったボードにはATMEGA328PBが載っていました。 (ATMEGA328Pがディスコンになり、今ではマイナーチェンジのPBの方が安いらしいですね)

対処法

不良品やドライバなどを疑って調べていましたが、単に設定の問題でした。

bootloaderがどこかのタイミングで変更されていたようです、古いBootloaderを指定するとうまくいきました。

Tools > Processor > ATmega328P (Old Bootloader)

※逆に、Oldを使うとエラーになり、無印を使うと正常に書き込めるケースもあるようです。

変更後はあっさり書き込みが終わります。

おわりに

こういう小ネタが逆に見つからなかったりするので、文書化は大切だなあと思う次第です。LLMで読んで解決できると楽になりそうですね

Quest3のコントローラが認識しなくなった時のメモ

後で書き直そうシリーズです。

半年ぶりにQuest3を起動したら左コントローラが動かなくなったので対応してました。
色々あって動くようになったのでメモを公開しておきます。

起きたこと

  • 久々にヘッドセットを起動すると、本体のアップデート(v71)とコントローラのアップデートが行われた
  • コントローラアップデートの後、左コントローラが短い点滅3回→長い点滅3回→短い点滅3回(モールス信号のSOS)を繰り返す
  • Metaへの交換申請を出して交換完了したが、またアップデート完了後にSOS点滅を繰り返すようになった

やったこと(解決編)

  1. Quest3を起動する
  2. Quest3本体を初期化「せずに」、スマートフォンのMeta Horizonアプリからコントローラのペアリング解除画面に進む
    (初期化するとペアリング解除画面まで進めなくなります。コントローラのリセットがダメだったらやる、の方がよさそうです。)
  3. 正常な方のコントローラのペアリングを解除して、再度ペアリングする
     (手順確認のためです、必要だったかは不明。)
  4. エラーになっている方のコントローラのペアリング画面を開いて、解除するボタンが出た状態で少し待つ
     →このあたりでダメ元でペアリング操作(Yと三を4秒程度長押し)すると左コントローラが再接続されて、アップデートがまた走りました。

やったこと(試行錯誤編)

  • サポートの案内の手順でリセット(Xを長押しして三を5回タップ)を試しましたが、リセットが動いていなさそうでした。
  • 本体の初期化も試しましたが、結果的に本体側からの操作が全くできなくなり詰みました。(後で気づきましたが、片方ペアリング後で一度スリープに入れると進むようです。)
  • サポートセンターに問い合わせてコントローラの交換対応しました。(感謝です) →が結局ペアリングしたらSOS点滅しました。いじってたら解決編に書いた手順で直りました。

締め

真面目に書こうとすると公開までに時間かかるのでメモレベルで公開します。(調べても分からないとつらいので…)気力がわいたら推敲します

VIVE Focus3の振り返り(WIP)

VIVEの新製品、VIVE Focus VisionがFocus3にかなり近いらしいのでFocus3を使っていて出てきたアレコレ(主に問題点)を書いておきます。
Focus3/XR Elite/Focus Visionあたりは似た問題に悩まされると思います。
擁護するなら、安定するとまともに動作する傾向があります。

n=1だったりバージョンアップで変わったりするので、2024.10までの参考情報にしてください。
まずは走り書きで書いておきます、今後書き直しや更新していくつもりです。

ソフトウェア面

起動後5分くらいでたまに数十秒応答がなくなる

  • 確認時期: 2023年ごろ(継続)

  • 原因がまだわかっていません、起きない環境もあるらしい

  • 接続して数分したあたりでFPSが急激に下がって一瞬戻る挙動を数十秒繰り返します。そのあと通信ロストして十数秒待つと復活、そのあとは安定動作します。
  • 動作的にはSteamVR画面が見えなくなるのでHMDとPC間の接続が切れているようです。パケット見て切り分けが必要そう

Quest Linkをインストールした環境だとうまく動かない(ガクガクになる)

  • 確認時期: 2023.10ごろ

  • Quest Link用の情報と何かが干渉するようです。

  • Quest Linkと同時に入れると数秒レベルの遅延だったり数FPSしか出なかったりと使い物にならなくなりました。両方アンインストールしてVBSのみ入れると改善しました。
  • 先に入れたほうが安定して使えるようで、VBSを入れてからQuest Linkを入れるとQuest側が誤作動しました。
  • うまく動くケースもあるようですが、原因切り分けが非常に面倒なので今はPCをVBS専用にしています。

スリープ復帰で「アイトラッカーを認識できません」

  • 確認時期: 2024.2ごろ?

  • スリープから復帰したときにアイトラが認識できないエラーが出ます。

    • スリープ復帰の失敗か、バージョン不一致あたりで起きている気配。
  • 再起動とか出ますが、経験則では5割は放置しても動きます。4割はケーブル差し直し+アプリ起動しなおしで治ります。残り1割はHMD再起動とVBS再起動で治ります。

音が出ない

  • 確認時期: 2022年ごろ

  • 一時期起きていた気がしますが、最近は起きていません。

  • 多分Windows側のサウンド切り替えがうまく動いていない

突然シャットダウンする

  • 確認時期: 2024.06ごろ

  • 一時期、バッテリー残量50%あたりでHMDが突然シャットダウンすることがありました。

  • 一時的には電源をつなぎっぱなしで改善、恒久ではいつの間にか治っていました。
    多分ファームウェアで要求電力が増えて電力不足でシャットダウンしたんじゃないかなあと…(原因不明)

ハードウェア面

フェイスクッション

  • フェイスクッションがへたれるとアイトラッカーの精度が落ちる気がします。(目が閉じた状態になりがち)
    • トラッカーと目の距離がある程度離れてないと検出精度が落ちるようです。フェイスクッションがへたれると距離が縮まって、それで精度が落ちている印象があります。
  • 2年目くらいで気になり始めたので寿命ではありますが、クッションが純正しかなくて6000円くらいするんですよね…

バッテリー膨張

  • バッテリーが1個膨張して壊れました、電源周りで無茶な使い方すると危険かも

    • 延長ケーブルを作って使っていたので、接触抵抗で供給電力落ちていたのが原因かも
    • そもそも使い始めて2年(製造から3年)だったので寿命説もあり
  • 充電状態で使っていて温度エラーが出るようになったらバッテリーに注意してください。そろそろ死ぬ可能性あるぞ

アイ/フェイシャルのトラッカー関連

  • どちらのトラッカーも、USB接続すればOBSで見えるのでアプリを作れば動く可能性があります、ただSRAnipalに流し込んで動くかは不明です。
  • ProEye系はカメラ2個のリッチ仕様だったらしいですが、Focus系はカメラ1個になっています。

  • SRAnipalを取得するために以前はVIVE Console (Beta)を入れる必要がありました。今も一応入れていますが、そろそろ入れなくても動くのかなあ…?

  • ↑ SRAnipalの最新版をVIVEサイトからダウンロードできなくなったため。 2023.10ごろからVIVE Console[Beta]に同梱されたものを流用する形式になっていました。

VRChat向け情報

VRCFTを使うとOSCの動作が暴れる (口がバタバタする)

  • VBSの設定に「アイ/フェイシャルトラッカーの情報を送る」のチェックボックスがありますが、これをOFFにしてください。
    • VBSのパラメータとVRCFTのパラメータが異なるようで、口の開きの値が交互に入力されて暴れるようです。
    • 強引に対応しようにも、VBSの値は公開されてないので自力デバッグ/実装になります。
      VBSに忠誠を誓う意気込みでなければVRCFTのみにした方が平和です。
      (売っている顔トラは知っている限り全てVRCFT向け。)
    • FT非対応アバターで目が閉じた状態になるのもOFFにしたら治った気がします。

VBSのコントローラの互換設定

  • Resoniteと逆に、互換設定はON推奨です。
  • 互換設定をOFFにするとハンドサインがほとんど動かなくなります。

Resonite

コントローラの設定

  • コントローラの互換設定はOFFにしましょう。ONにするとWandコントローラ扱いになるようです。

スリープ復帰で目が閉じたまま

  • 両方のコントローラのトリガーをガチャガチャしてると復帰します。(謎)

目線が動かない

  • ProEyeと実装が違うようで、目線が動きません。
  • RawEyeDataコンポーネントだと入っているようなので、視線を動かしたければ自前実装する必要があります。

アイトラが動かない

発生時期: 2024.09ごろ

  • Focus Vision向けファームに上がったあたりで動かなくなりました、謎
  • issueが上がってるらしいですが、多分対応は当面先です。

アプリがハングする

  • NeosVRで使っているとき、アイトラッカーとフェイシャルトラッカー両方をつけないと動かない(3秒ごとに1秒ハングする)状態でした
  • 対策はありません、アイトラとフェイシャル両方買って使ってください。
  • Resoniteで治った可能性はある

たまに認識しない

  • 起動引数で明示的にSRAnipalを起動させましょう。
  • たまにそれでも認識しないので、その時はアプリ再起動してください。

ハンドトラッキング

  • Resoniteだとデフォルトで一応シームレスに切り替えできます。
    • ハンドポーズをとりたいときは使えるかもしれません

Facial設定方法

  • 前は専用のアプリでSRAnipalを入れていましたが、今は少し手順が変わっています。
  • VIVE Business Streamingのインストール先の下の「ViveVR_openxr/ViveOpenXRFaicalTracking」フォルダの下にあるファイルをResoniteのほうに上書きする必要があります。
  • ViveOpenXRFacialTracking.dllとjsonが重要らしいです。(SRAnipalも一応更新した方がいいかも)

締め

色々書いてますけど、Facial/Eyeトラッカーのある環境に慣れると非搭載機に戻れなくなるんですよね~…これだけ問題あっても次もVIVE系買うことになるかも