follow me

PQI Air Pen、OpenWrt化(開封編)

PQI Air PenのOpenWrt化について、未開封での書換え手順は別途記載するとして、先に開封した状態での書換えを纏めておきます。
u-bootから書換えるというお話です。


OpenWrt化用のパッチとバイナリ。
PQIAirPen_trunk_r50015.patch
openwrt-ar71xx-generic-pqi-air-pen-squashfs-sysupgrade.bin
無線については、日本国内で出力を行った場合、電波法違反となります。
また、ファームウェアの書換え、分解等は、メーカーサポートが受けれなくなる為、自己責任となります。
ファームウェア書換えは自己責任である旨ご理解下さい。

書換えに対して注意が幾つか。
純正ファームには基本戻らないと考えておいてください。(戻せない訳ではないですが)

PQI Air Penは以下の様なDualImage構成を取っており、OpenWrt化した際に容量が確保できなくなる為、SingleImage構成に作り直す前提でOpenWrtパッチを作成しています。
DualImage構成を維持したい方は、パーティション構成を変更、sysupgradeの変更等が必要となります。
今回は、uImage、rootfs、uImage2、rootfs2をfirmwareパーティションとしてしまう形としています。
NVRAMも不要となりますが、念の為残しました。
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "ART"
mtd3: 00010000 00010000 "NVRAM"
mtd4: 00140000 00010000 "uImage"
mtd5: 00280000 00010000 "rootfs"
mtd6: 00140000 00010000 "uImage2"
mtd7: 00280000 00010000 "rootfs2"
mtd8: 00010000 00010000 "CONF"
私が作成したOpenWrtパッチでは以下の様になります。
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "art"
mtd3: 00010000 00010000 "NVRAM"
mtd4: 00780000 00010000 "firmware"
mtd5: 00140000 00010000 "kernel"
mtd6: 00640000 00010000 "rootfs"
mtd7: 00420000 00010000 "rootfs_data"
mtd8: 00010000 00010000 "CONF"

u-bootは、有線Etherは使用出来ます。
tfpbootでイメージを転送して、cp.bして書き込めば簡単にOpenWrt化できます。
デフォルトでは、tftpサーバを「192.168.1.1」、ファイル名を「0201A8C0.img」として取得します。
注意するのは、CONF領域は絶対に壊さないということ。
CONF領域を消すと、ライセンスが無いと言われ起動できなくなります。
また、bootmでアドレス指定しても必ず、読み出すアドレスは0x9f070000か0x9f7f0000の2種類のどちらかになります。
サイズ等は、書き換えるバイナリに合わせるとして、こんな感じで問題なし。
ar7240> tftpboot
dup 1 speed 100
*** Warning: no boot file name; using '0201A8C0.img'
Using eth0 device
TFTP from server 192.168.1.1; our IP address is 192.168.1.2
Filename '0201A8C0.img'.
Load address: 0x81000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##
done
Bytes transferred = 3670020 (380004 hex)
ar7240> erase 0x9f070000 +0x380004

First 0x7 last 0x3f sector size 0x10000
  63
Erased 57 sectors
ar7240> cp.b 0x81000000 0x9f070000 0x380004
Copy to Flash... write addr: 9f070000
done
ar7240> boot

GPIOについては、LED、Button共に割り当て済みですが、USBの切り替えについてはサポートしていません。
純正ファームウェアでは、PCに繋いだ際にuSDスロットがPC側から見える形となっていますが、切り替えを行っているだろうGPIOを見つけていないので、対応していない状態になります。(必要にも思えないので探す予定もありませんが。)


最後に少し嵌ったCONF領域について。
1バイト目が「00」の場合は、「0x9f070000」から起動、「01」の場合「0x9f7f0000」から起動を行う形でDualImage構成を実現している。
また17バイト目からのデータが存在しないと、ライセンスが無いと判断され、起動できなくなります。
u-bootでbootさせた時に呼び出されるプログラムがチェックを行っている模様。
      00010203 04050607 08090A0B 0C0D0E0F  0123456789ABCDEF
0000  0000FFFF FFFFFFFF FFFFFFFF FFFFFFFF  ................
0010  FFEA7018 2F8D7757 ED44C840 AAFFFFFF  ..p./.wW.D.@....


純正ファームでのファームアップデートはどうなっているのか?
/sbin/fwUpgradeがアップデートプログラム本体だが、案の定バイナリ。
読み取れる箇所から未開封での書換え方法のヒントを得る。
やはり、一度でsquashfsな構成に書き換えるのは難しそうである。踏み台方式で手順を確立する。
touch /tmp/FWU
flash_erase /dev/kernel2 cnt 0x14 > /dev/null 2>&1
/dev/kernel2
flash_erase /dev/fs2 cnt 0x28 > /dev/null 2>&1
/dev/fs2
flash_erase /dev/confdata cnt 1 > /dev/null 2>&1
No firmware image found
flash_erase /dev/kernel cnt 0x14 > /dev/null 2>&1
/dev/kernel
flash_erase /dev/filesystem cnt 0x28 > /dev/null 2>&1
/dev/filesystem
[2016/12/21 12:14追記]
純正ファームで起動した場合、rootfsが普通にマウントされた状態で起動する為、ddで書き込み等行った場合壊れてしまいます。
マウントされていない方を書換えて、再起動するという順序を踏まないと書換えが完了できない。
PQI Air Pen、OpenWrt化(開封編) | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。