Thank you!
I read:
cFeon
QH16-104HrP
123M01A7
1226TDA
It is definitely an Eon SPI Flash, but I can't get a matching datasheet. From the "16", I guess this is a 16Mbit, and "104" is for 104MHz parts. The closest match is the EN25Q16A.
Back to your question, the firmware file contains a header that specifies the particular model of router to which the file is to be used for.
Here is the header for the Chinese firmware:
00000000: 0014 2fc0 135b 21e4 8ac8 bea9 9eff dd28 ../..[!........(
00000010: 3bf0 9abb 494d 4730 0014 b200 0702 0001 ;...IMG0........
00000020: 0000 0001 5a04 1234 0000 0000 0000 0000 ....Z..4........
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0080 000f 607f 000f 6100 ..........`...a.
00000060: 0005 3bf0 0014 9cf0 0000 1510 0000 0000 ..;.............
00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000090: 0000 0000 6e00 0080 0010 df38 0000 0000 ....n......8....
000000a0: 0000 1e01 fe00 0233 c6b8 50f0 8dd9 97a8 .......3..P.....
000000b0: 7e3b 0093 bcba 61de 7c0e 133e e75e aadc ~;....a.|..>.^..
000000c0: 9af0 84d1 ea6d ef21 2739 46a3 19bb 952c .....m.!'9F....,
000000d0: 55d5 7d3d 062b ddca 88e6 88ba 058b e990 U.}=.+..........
And here is the one for the English firmware:
00000000: 0014 2fc0 e686 2600 bf87 5396 58ce b6ee ../...&...S.X...
00000010: df5d 19df 494d 4730 0013 4c10 0702 1101 .]..IMG0..L.....
00000020: 0000 0001 5a04 1253 0000 0000 0000 0000 ....Z..S........
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0080 000e bfca 000e c050 ...............P
00000060: 0004 7670 0013 36c0 0000 1548 0000 0000 ..vp..6....H....
00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000090: 0000 0000 6e00 0080 0080 9d36 0000 0000 ....n......6....
000000a0: 0000 1e01 fe00 0233 c6b8 50f0 8dd9 97a8 .......3..P.....
000000b0: 7e3b 0093 bcba 61de 7c0e 133e e75e aadc ~;....a.|..>.^..
000000c0: 9af0 84d1 ea6d ef21 2739 46a3 19bb 952c .....m.!'9F....,
000000d0: 55d5 7d3d 062b ddca 88e6 88ba 058b e990 U.}=.+..........
I don't know the exact header format, but at offset 0x00000014, you get "494d 4730" in both files, which translate to "IMG0" in ASCII for both firmwares.
Then you have a value "0014 b200" and "0013 4C10" at offset 0x00000018 which match the total file length of the respective firmware file.
At offset 0x0000001c, you have a value "0702" for both firmware, probably for "TL-WR702N"...
Then the most interesting field is at offset 0x0000001e: it contains the value "0001" for the Chinese firmware, and "1101" for the English firmware: this is probably the revision number, which is different between the firmwares. This value will have to be changed, but unfortunately, there are some MD5 sum protecting the header against corruption and manual changes 
I don't know how these md5sum are computed, so I can't patch the firmware file to match your hardware.
There is a similar thread on the TL-MR11U/TL-MR3040 and TL-WR703N Chinese/English containing a Windows utility to patch the file and compute the MD5 accordingly, but unfortunately, it doesn't work for the TL-WR702N files 
https://forum.openwrt.org/viewtopic.php … 45#p168045
Maybe someone can help with this?
EDIT: the "IMG0" string seems to indicate that it is a VxWorks firmware
(Last edited by Squonk on 15 Dec 2012, 12:04)