URoad-Home2+を分解してみた3~OpenWrt起動編~

投稿者: | 3月 5, 2024

注意【追記】

URoad-Home2+専用のOpenWRTを作成したので、OpenWRTをインストールしたい場合はそちらを試してみてください。

URoad-Home2+(URoad-TEC101)へのOpenWRTのインストール方法

導入

前回の記事でUART(シリアルポート)をつないで、ログを読んだりしたので、今回はtftpでOpenWrtを転送してRAM上で実行しようと思います。記事書きながら思いましたが、loadbを使う方法の方が楽な気がします。(2022/12/24追記:loadbは死ぬほど遅いからおすすめしません)
今回の記事は友達に教えないと行けなかったので割りと丁寧に初心者向けに書いています。友達以外の玄人の方々は読みにくいかも知れませんがご了承下さい。
URoad-Home関係の記事の一覧と概要はこちら

下準備

今回はもちろんURoad-Home2+用のファームウェアは出てないので、構成の似たルータのものを片っ端から動かして、ある程度動作するものを探します。OpenWrt Table of Hardware: Full detailsとかを使うと探しやすいです。ダウンロードするのはRAM上で実行する用のinitramfsです(先程のTable of Hardwareだとinitramfsのファームウェアがなかったり古かったりするので、各機種のOpenWrtのTechdataやダウンロードフォルダに飛んでのダウンロードを推奨)。今回は色々試した結果、NETGEAR R6100がNANDが読めて、イーサネットが使える(eth1のみ)のでこれを使用しました。ただ、このあたりのNETGEAR機は一般的なU-Boot機とことなり、ヘッダーの4Byteのマジックナンバーが異なり、36 30 30 30となっていたので、27 05 19 56と書き換えてマジックナンバー後のCRCチェックサムの4Byteをこの記事どおりに計算し直して、ファームウェアは完成です。

ヘッダのマジックナンバーの変更
上はディフォルト、下が変更後

また、OpenWrtで落としてきたR6100用の物ではどうやらスイッチ用のチップ(Atheros QCA9882-2R4E)にリセットボタン用のGPIOが付いていて、そのチップが存在しないためリセットボタンが押されている判定になるのか、Fail Safeモードに入ってしまうので、スイッチ用のチップのドライバを抜いたバージョンをビルドしました。ビルド方法については今度の記事であげようと思います。とりあえずビルドしてヘッダを変更したものをアップロードしておきました

ドライバを抜きました

tftpサーバー側の準備はBuffaloのルーターの復旧方法と似ていて、U-Bootでtftpbootを実行するとわかるのですが、URoad-Home2+側に192.168.0.20のIPアドレスが割り当てられて、192.168.0.2をtftpサーバーとしてファイルのダウンロードを行います。
今回はtftpサーバがWindowsであることを想定して行います。まずはじめにパソコンとURoad-Home2+を有線LANで直接接続してください。このとき、URoad-Home2+のもう一つのポートに別の有線LANは接続しないでください。そして、コントロールパネルのネットワーク接続から接続したインターフェースのIPアドレスを192.168.0.2に変更します。

コンパネからIPアドレスを変更

tftpサーバは古のソフト3CDaemonを使用します。設定で適当なフォルダを設定して、そのフォルダの中に先程のファームウェアを入れておきます。3CDaemonのtftp serverをGOボタンを押して開始します。

3CDaemonの設定例

起動手順

1. U-Bootのコンソールに入る。
前回の記事に書いたとおりに、起動時に適当なキーを長押ししてコンソールに入ります。

2. tftpbootでファームウェアをメモリの0x81000000から置く
tftpboot 0x81000000 openwrt-ath79-nand-netgear_r6100-initramfs-kernel_URoad-Home2custom.bin
読み込みが全然成功しなかったりするときは、Ctr+cで一度中止し、パソコンのIPアドレスを見直して3CDaemon一度Stopして再度GOさせると上手く行ったりします。

上手く転送できた時の図

3. 起動!bootmコマンドで0x81000000から実行されます。
bootm

4. ログがある程度落ち着いたらエンターを押してコンソールを出します。これで起動は完了です。

5. 以下はOpenWrt上でのインターネットへのつなぎ方です
まず、eth1(ケースに書いてるところのLAN2)にインターネットに繋がっている有線LNAを接続します。DHCPサーバ機能の無効化の仕方がわからなかったので、インターネットに繋がりますが必要最低限の接続時間にしてください。

6. eth1を一旦無効にします。
ip link set eth1 down

7. IPアドレスを割り当てます。
ip address add IPアドレス/マスクbit数 dev eth1
ifconfig eth1 IPアドレス

8. eth0を有効化します。
ip link set eth1 up

9. ディフォルトルートを設定します。
route add default gw ディフォルトゲートウェイのIPアドレス netmask サブネットマスク

10. firewallを止めます。(必要に応じて)
service firewall stop

おわりに

次の記事では、JTAGを使ってNANDのダンプを取ります。

はじめに書きましたがloadb使えばよかったなーって…
このあと、自分はDDを使ってNANDのバックアップを取って、tftpで吸い出したんですが、どうやらベースとしたファームウェアによってcat /proc/mtdで得られるパーティションが異なるのでファームウェア依存なのかも知れません。(要研究)

NETGEAR WNDR3700ベースで読んでみた時
NETGEAR R6100ベースで読んでみた時

ちなみにインターネットにつながったのでopkgが使えて、luciがインストールできました。

コメントを残す

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

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