目次
はじめに
前回はURoad-Home 2+上のWiMAXモジュールであるMTE-N100の解析を行いました。また、前々回でURoad-Home 2+自体のコンソールに入って色々調べたので、今回はURoad-Home 2+専用のOpenWRTを作成します。
インストール方法等はも一つの記事「URoad-Home2+(URoad-TEC101)用OpenWRT」で説明しています。
URoad-Home関係の記事の一覧と概要はこちら
ソースコード
ソースコードはこちらから。2023/08/20時点でのLast Releaseの22.03.5です。ビルド方法はOpenWRTのgithubや、Takumi Suedaさんの「ファームの礎『OpenWrt』解説・ビルド編」やこちらのページを見てみてください。
自分が使用した.configファイルも載せておきます。
追加・変更したファイルは個別で下からダウンロードできます。
OpenWRTを作成するために行った大まかな手順
今回は、URoad-Home2+を分解してみた3~OpenWrt起動編~のときとは異なり、デバイスツリーソースを書くところから始めます。基本的な流れはこんな感じでした。
0. 構成が似たOpenWRTでサポートされている機種をToH(Table of Hardware)などを使って見つける
1. 似た構成のデバイスツリーソースを参考に、デバイスツリーソース(dtsファイル)(今回は、target/linux/ath79/dts/ar9344_modacom_uroad-tec101.dts)を書く
NANDやeth周りの基本的な部分から書き始める
2. デバイスツリーソースがある程度できたら、メイクファイル(今回は、target/linux/ath79/image/nand.mk)を追記する。
3. NANDとeth周りができたらとりあえずビルドしてみて、initramfs-kernelが起動するか、NANDに焼いてみて問題ないかをチェックする
4. 問題がなかったらGPIO周りをデバイスツリーソースに書き加えていく(まあ、1で一気にやっても良いが)
5. 今回の場合はGPIOをLANのリンクに合わせて点滅させる必要があったので、ledsの設定ファイル(target/linux/ath79/nand/base-files/etc/board.d/01_leds)に書き加える。
6. インターフェイスの構成を元のファームウェアに近づけたかったので、networkの設定ファイル(target/linux/ath79/nand/base-files/etc/board.d/02_network)に書き加える。
7. 更に、MTE-N100との通信のために、IPアドレスを固定する必要があったので、初回起動時に実行されるファイル(target/linux/ath79/nand/base-files/etc/uci-defaults/99_ip_setting.sh)を記述。
8. ついでに192.168.1.1:8080でMTE-N100の管理画面を出すように99_ip_setting.shに追記
書いたファイルについて
ar9344_modacom_uroad-tec101.dts
target/linux/ath79/dts/ar9344_modacom_uroad-tec101.dts
言わずもがなデバイスツリーソースです。AR9344はイーサネット周りの設定が複雑らしく、よく分からずにとりあえず動くように記述してあります。よくわかってないです。NANDのパーティションを少しいじっていて、rootfs、linux2、rootfs2を結合して一つのubiパーティションにしています。
nand.mk
target/linux/ath79/image/nand.mk
URoad-Home 2+をビルドする際の設定です。一番下に追記しました。MTE-N100との通信で必要なkmod-usb2とkmod-usb-net-rndisをインストールするようにしてあります。
01_leds
target/linux/ath79/nand/base-files/etc/board.d/01_leds
ar9344_modacom_uroad-tec101.dtsに記述したLEDをどのように光らせるかを記述しています。wifiはデバイスツリーソース上で設定ができますが、LANの設定はこのファイル内で行っています。
02_network
target/linux/ath79/nand/base-files/etc/board.d/02_network
AR9344から直接生えているeth0とeth1はともにLANで、MTE-N100のeth2がwanとなる必要があったので、このファイルでその設定を記述しています。これを書かないと、eth0がWAN、eth1がLAN、eth2は未所属となってしまいます。
99_ip_setting.sh
target/linux/ath79/nand/base-files/etc/uci-defaults/99_ip_setting.sh
MTE-N100との通信を行う、eth2が何故か自動でIPが割り当てられなかったので、このファイルでIPの割当を記述しています。また、DNSサーバを設定しないと名前解決ができなかったので、DNSの設定も行っています。
追加で192.168.1.1:8080にアクセスしたときにMTE-N100の設定画面が出るように設定してあります。これによって、複数ネットワークに所属している機器からURoad-Home2+に接続したときにもMTE-N100の管理画面にアクセスできます。
問題点
・eth0(LAN1)とeth1(LAN2)の挙動が微妙です。一応どちらも通信できます。
・eht0は1000Mbpsで内部的に固定されていて、LANケーブルが刺さっていなくてもdownせず、upしたままです。また、それに伴ってLAN1のLEDも点きっぱなしです。
・eth1は正常に認識され、up・downがされますが、tx time out的なエラーがたまにコンソールに流れます。
・5GHz帯のWiFiを発信中はWiFiの青LED、2.4GHz帯のWiFiを発信中は緑LEDを光らせたかったが、どちらも緑が点いてしまいます。
・オリジナルのファームウェアのWebのアップデートから導入ができません。(オリジナルのアップデート用ファームウェアを入手できないため)
おわりに
長かったURoad-Home2+編もこれでやっと終わりです(多分)。初めてのOpenWRT(というかLinux)での新機種向けのデバイスツリーソースを書きました。まあ、似た構成の機種があったので比較的かんたんでした←eth周りおかしいだろ!ChatGPTと二人三脚だったくせに!
eth周りが修正できたらpull requestしてもいいかもしれません。URoad-Home無印の方もいじらないとな…
URoad-Home関係の記事の一覧と概要はこちら