Természetesen nem titkos, szivesen megosztom. Felelősséget nem vállalnék érte, illetve lehet másképp/egyszerűbben is meg lehet oldani ezt-azt, de nálam ez működött többféle eszközön. Első körben lehet picit kusza lesz, de valójában nem egy agysebészet csak matekozni kell kicsit
Amire szükség van:
-flash csipp
nézd meg hogy az eredeti és a cseredarab is azonos feszültségű legyen! (többnyire 3.3V, de előfordul 1.8V-os is!)
-flash iró eszköz
Lehet az ebay-en venni pár $-ért
http://www.ebay.com/itm/1Pcs-CH341A-Series-24-EEPROM-BIOS-Writer-25-SPI-Routing-LCD-Flash-USB-Programmer-/321941984473?hash=item4af53cd4d9:g:ycgAAOSw8-tWZOej
továbbá ajánlott a forrasztásmentes programozáshoz:
http://www.ebay.com/itm/SO8-SOP8-To-DIP8-EZ-Programmer-Adapter-Socket-Converter-Module-Wide-150-Mile-/331577246751?hash=item4d338b441f:g:~EoAAOSwpdpVdWhc
vagy
http://www.ebay.com/itm/SOIC-SOP8-to-DIP8-EZ-Programmer-Adapter-Socket-Wide-200mil-208mil-Arduino-Module-/151864393491?hash=item235bd2bf13:g:mEkAAOSw~bFWL4ng
attól függően hogy 150 vagy 208mil széles e az IC (ez kiderül az adatlapjáról, az utolsó pár betű/szám mondja meg, pontosan azt keresd)
vagy ha nem akarod megvárni amig ideér és van egy régi géped párhuzamos porttal, akkor SPIPGM
http://rayer.g6.cz/programm/programe.htm
-kell a u-boot
Bár elméletben lehetne dump-olni az eddigi rendszerről is, de egyrészt az butuska, másrészt esélyes hogy nem támogatja a nagyobb flash-t, igy érdemes egyből a már emlitett pepe2k-félét használni, ha támogatott az eszközöd
https://github.com/pepe2k/u-boot_mod
Most sehol nem látom a készre forditottakat, lehet mostmár nem lehet megúszni a saját forditást:
https://dev.wlan-si.net/ticket/1191
(linux környezet kell hozzá, jó pl vmware-ben egy ubuntu)
-kell az ART partició tartalma
ami a wifi egyedi konfigurációs térképét tartalmazza. Ha ez elveszik akkor nem fog menni a wifi, ha egy idegennel pótlod akkor éled de nem lesz optimális a működése. Bár magából a leforrasztott flash-ből is vissza lehetne nyerni, de egyszerűbb a még futó rendszerből kinyerni: beazonositás, dump, majd letöltés böngészővel
root@OpenWrt-MR3220:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00010000 "u-boot"
mtd1: 0010e400 00010000 "kernel"
mtd2: 002c1c00 00010000 "rootfs"
mtd3: 000f0000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 003d0000 00010000 "firmware"
dd if=/dev/mtd4 of=/tmp/art.backup
ln -s /tmp/art.backup /www/art.backup
http://router-ip/art.backup
Ha ez megvan, akkor össze kell ollózni az új firmware-t. Ehhez egy hexa editorra lesz szükség, mint pl a Free Hex Editor Neo
http://www.hhdsoftware.com/free-hex-editor
A pontos partició méreteket igy lehet megtalálni: (fontos ellenőrizni, mert ha nálad más a kiosztás az gondot fog okozni!)
root@OpenWrt-MR3220:~# dmesg | grep 0x0000
...
[ 0.770000] 0x000000000000-0x000000020000 : "u-boot"
[ 0.770000] 0x000000020000-0x00000012e400 : "kernel"
[ 0.790000] 0x00000012e400-0x0000003f0000 : "rootfs"
[ 0.830000] 0x000000300000-0x0000003f0000 : "rootfs_data"
[ 0.830000] 0x0000003f0000-0x000000400000 : "art"
[ 0.840000] 0x000000020000-0x0000003f0000 : "firmware"
Ha átváltod a hexa értéket decimálisra és osztod 1024-el, akkor kijönnek a poziciók KB-ban. Ha a nagyobból kivonod a kisebbet, akkor kijön a méretük.
Nyisd meg a u-boot image-et, nézd meg hogy a végén miből van sok és azzal folytasd (FF vagy 00, most nincsen előttem) egészen 0x20000-ig ha kisebb. Utána kell ollózni a letöltött openwrt image-et ami tartalmazza a kernel-t és rootfs-t. Ezt is tovább kell tölteni üressel (szintén FF vagy 00, nézd meg mire végződött az openwrt image) egészen a <flash mérete>-64KB-ig, vagyis 8MB-os esetén 0x7EFFFF-ig, 16MB-nál 0xFEFFFF-ig, majd 0x7F0000/0xFF000-től jöhet az ART partició dump-ja. Igy végül kapsz egy pontosan 8388608/16777216 byte hosszú image-et amit lehet belesütni a flash-be, és mennie kell. Egy szépséghiba lehet, ha az adott OpenWrt firmware nem illeszkedik automatikusan a megnövekedett flash mérethez (továbbra is csak 4MB-nak hiszi) - ekkor lehet magát az OpenWrt-t is újra kell forditani egy apró módositás után, de ha eddig eljutottál, ez se fog gondot okozni, azt is leirom ha szükség lesz rá...
Esetleg láttam egy kissé kőbunkó, de működőképes megoldást a hardveres flash iró helyett: le kell forrasztani a gyári flash-t és minden lábát párhuzamosan bedrótozni a 2 flash-nek, kivéve a CS-t. Az aktiv csipp CS-jét csatlakoztatni kell, a másikat tápra húzni, akkor nem reagál a buszon érkező parancsokra. Először a gyári flash-el el kell inditani a vasat a u-boot konzolig, majd a gyári CS-jét tápra, az új flash-ét pedig a CS vonalra kell kötni és kezdődhet az erase/load/write művelet. Ezt is össze lehet guglizni hogy hogyan működik pontosan - főleg a u-boot restore debrick kifejezésekre keresve. Igy is a helyére lehet rakni az új flash-be a u-boot, kernel+rootfs és ART particiókat...