NCP-HG100 LTEモデムクラッシュのソフト的な対処
マクさんです
例のワクチン一発目を撃たれたところですが、盤石なるセルフロックダウン体制を敷いておりまして、県境を超えない引きこもりリタイア暮らしを堪能しているところであります
なので、金が掛からず適度に攻略しがいのありそうな、NCP-HG100のモデムクラッシュ対策をソフト的にやってみた、という話。
その激安さ故に2台買っといた、NCP-HG100
1台目は目下のところ楽天UNLIMIT VIの試験運用中である。モデムクラッシュ対策の効果は、3か月連続運用したところ不具合は発生せず。来月(9月)にはADSLを解約して本運用するつもりだ
・・・
とゆーことで、試しに1台目と置き換えて様子をうかがってみたところ、ほどなくしてモデムクラッシュが発生。発生頻度は日に1~2回。スピードテストやファイルのダウンロードで起きやすいのも1台目と同様だ
モデムクラッシュは1台目に固有の問題ではないとわかった
そうとわかれば、ちゃちゃっとUSB接続をSuperSpeed(SS)からHighSpeed(HS)に変更して、モデムクラッシュが改善するかみてみようぞ!
まずは、先のブログエントリでソフト対策案として挙げた、
dts に maximum-speed = “high-speed”; を書いて(略
を試してみます。
結構遊べた手間がかかったのですが、結局ダメだった。詳細は省くが自分用の備忘録として作業の概要だけ書いておく
-
kernelに渡される(kernel jump直前の)dtbを取得して、dtsにする
-
dwc3@8a00000 { … } と、他それっぽいノードに、maximum-speed = “high-speed”; を追加
-
dtbにする
-
FITからRAM展開された後の dtbを置き換えたいので、アセンブラでdtb置換えコードを書く
-
U-Bootで、適当なアドレスにdtbと、dtb置換えコードを置く
-
FITイメージをロードする
-
実行中のU-Bootを書き換える。kernel ではなくdtb置換えコードへジャンプさせる
-
bootm
-
置き換えたdtbでkernelが起動
・・・
これで、dtbの置き換えはできましたが、HighSpeedにはならんかった
プロパティ拾ってくれてそうなdwc3のドライバコードを観察すると、どうやらhostの初期化では maximum_speed で何か変わる雰囲気がないみたいです(よくわかりません。理解度はゼロ)。dwc3/gadget.c では何か設定してるので、hostの速度を設定するためのプロパティじゃないのかも。(kernel 4.4では)
続いて、先のブログエントリで「簡単なんじゃね?」などと放言したSS PHYにリセットを掛けちゃう案です
適当に捜索し、dwc3/core.c の、dwc3_core_soft_reset() にそれっぽいリセット処理を発見。
GUSB3PIPECTL なるレジスタでリセットを掛けてみる
# devmem 0x08a0c2c0 32 0x830E0002
すると、無事にUSB死亡を確認😆・・・・いやいや、これは何かしら効いてるということではないか
じゃあってんで、さきに unbind してOSがUSBに触らないよーにしたらどうなるか、試してみよう
# echo -n "2-1" > /sys/bus/usb/drivers/usb/unbind
# devmem 0x08a0c2c0 32 0x830E0002
すると、新たに、HSで、デバイスが認識された!
これは・・・SS端子にテープ貼るのより簡単じゃね?
ただ単純に試してみたい動機で実装してみた。実運用はお勧めできませんが、パッチを置いておく
パッチは長々と書いてありますが、ほとんどモデムクラッシュ復帰処理です。前のブログエントリの修正も含んでいますし、実は起動時設定だけなら rc.local の変更だけ(パッチの後ろの方にある3行)です。ここの変更だけではモデムクラッシュして復帰処理が走るとSSになりますが、そもそもモデムクラッシュ自体が(略
資料も知見もなく、PHYをリセットしっぱなしで色々と平気なのか、マクさんは知りません。というかレジスタ名からしてPHYそのものではなくて内部IFだけのリセットなのかも知れません
# cat /sys/kernel/debug/usb/devices
なんかおかしいけど動いてる、という状態に他なりません。
ですので実用では、前のブログエントリで書いたSS端子マスクの方が良いです。なんといっても、SS接続がなければHSになる、これは仕様ということなので。
・・・
ちなみに実際、1週間動かしてみたところではモデムクラッシュは起きてないですね。やはりSS接続で顕在化する不具合がどこかに潜んでいると見て宜しかろう
ガジェット弄りたい欲望も満たされたし、こういう、1銭にもならない、納期も!品質も!!他人から求められない!!!
自己満活動っていうのは・・・・
・・・まさに、至高😀・・・