【悪癖】NCP-HG100をOpenWrt25.12.4にしたらIPv6が使えないから適当に対策した

障害内容

NCP-HG100、modemmanager、楽天モバイル環境で、OpenWrtを24.10.5から25.12.4に更新
WWANにIPv6アドレスが降ってこない
24.10.5に戻しても直らない
etc/configの設定ファイルは変えてない

原因究明

設定ファイルでipv4v6を指定しても、モデムのPDP Context(不揮発設定)にIPv4設定が書き込まれる
モデムにIPv4v6を書きこんでおいてもIPv4設定が上書きされてしまう

なのでモデムはIPv6通信しないことになる

対策方針

Copilotに質問してみると、上から目線で正攻法を提案してきやがった
曰く、モデム設定の書き換え判断処理をデバッグしたらいいじゃん?
というのだが、
こちとら無職のおっさんなんだから、まともなJTAGデバッガとか持ってない😉
まともなJTAGデバッガなら5分でデバッグできる内容を
gdbの準備したりログ仕込んだりしてデバッグするほどには気分が乗らず。

コードをあさってると、モデムにPDP Contextを書き込むっぽい処理を発見したので、

コイツを無効化してモデムへの書き込みを阻止すりゃ解決するんじゃね!?😆という適当方針で決定!!!!

効果確認

モデムにIPv4設定が上書きされなくなり、IPv6通信ができるよーになった

工事手順

  1. make clean; make V=s で正常にバイナリができるのを確認
  2. build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/modemmanager-1.24.0/src/mm-broadband-modem-qmi.c の、 static void store_profile_run (GTask *task) で、変数初期化の後あたりに以下を追記
    /* モデムへの書き込みを無効化 */
    g_task_return_boolean (task, TRUE);
    g_object_unref (task);
    return;
  1. make V=sで差分ビルド
  2. sysupgrade
  3. モデムのPDP ContextにIPv4v6設定を書き込む
    俺環境(atinout利用)
    echo ‘AT+CGDCONT=1’ | atinout – /dev/ttyUSB2 –
    echo ‘AT+CGDCONT=1,”IPV4V6″,”rakuten.jp”‘ | atinout – /dev/ttyUSB2 –
  4. qmicliでやるなら(なんかよく競合する印象・動作未確認)
    qmicli -d /dev/cdc-wdm0 –wds-modify-profile=3gpp,1,apn=rakuten.jp,pdp-type=IPV4V6

雑感

NCP-HG100弄りブログになってる現状。なんかもうちょっと日常生活のあれこれとかを書いてくブログにするつもりだったんけどね

思ってた以上に無職ニート適性があったみたいで、日々なんもしないんだからブログ書くのもまあやらないよね

これが本当に快適で、

FIREして人生謳歌するぞー!

みたいなポジティブ野望は無いからね。

やりたくないことをやらなくていい生活。俺が求めてるのはコレだったんよ😊