URoad-Home2+を分解してみた7~OpenWRTの作成~

投稿者: | 11月 13, 2023

目次

はじめに

前回は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関係の記事の一覧と概要はこちら

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)