There are two possibilities either bootloader configures it or kernel. In case of stock firmware they use old 2.6 kernel which doesn't have device tree to look in. In OpenWRT there is a device tree to describe (and I hope configure) needed drivers, but it syntax is difficult to me to understand, but progressing slowly. Definitively other users/developers had similar issue (incl. CPE devices), but I couldn't find solid answer how they overcome it.
Probably you could prepare OEM-like image which will have also u-boot partition incorporated. Again dd
, hexedit
, and osafeloader
will be your friends, but I would recommend to use OpenWRT initramfs
with kmod-mtd-rw
module added/installed (it enable write to every read-only partition; attention - you may brick your device).
Here is what nvrammanager tool displays
$ nvrammanager -s
start=====>
partition 01: name = fs-uboot , base = 0x00000000, size = 0x00020000 Bytes, usedFlag = 1
partition 02: name = partition-table , base = 0x00020000, size = 0x00002000 Bytes, usedFlag = 1
partition 03: name = default-mac , base = 0x00030000, size = 0x00001000 Bytes, usedFlag = 1
partition 04: name = support-list , base = 0x00031000, size = 0x00000100 Bytes, usedFlag = 1
partition 05: name = product-info , base = 0x00031100, size = 0x00000400 Bytes, usedFlag = 1
partition 06: name = soft-version , base = 0x00032000, size = 0x00000100 Bytes, usedFlag = 1
partition 07: name = os-image , base = 0x00040000, size = 0x00180000 Bytes, usedFlag = 1
partition 08: name = file-system , base = 0x001c0000, size = 0x00600000 Bytes, usedFlag = 1
partition 09: name = user-config , base = 0x007c0000, size = 0x00030000 Bytes, usedFlag = 1
partition 10: name = radio , base = 0x007f0000, size = 0x00010000 Bytes, usedFlag = 1
partition 11: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 12: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 13: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 14: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 15: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 16: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 17: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 18: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 19: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 20: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 21: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 22: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 23: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 24: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 25: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 26: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 27: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 28: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 29: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 30: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 31: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
partition 32: name = , base = 0x00000000, size = 0x00000000 Bytes, usedFlag = 0
=============================================================
Other Addition Partition:
partition 01: name = mac , base = default-mac , size = 6 Bytes, offset = 0 Bytes
partition 02: name = device-id , base = default-mac , size = 40 Bytes, offset = 32 Bytes
partition 03: name = signature , base = default-mac , size = 256 Bytes, offset = 96 Bytes
partition 04: name = region , base = default-mac , size = 8 Bytes, offset = 356 Bytes
partition 05: name = sign-flag , base = default-mac , size = 6 Bytes, offset = 400 Bytes
partition 06: name = config-info , base = user-config , size = 0 Bytes, offset = 0 Bytes
partition 07: name = soft-version , base = soft-version, size = 0 Bytes, offset = 0 Bytes
partition 08: name = flash , base = (null) , size = 0 Bytes, offset = 0 Bytes
Why you want to go back to CPE u-boot? Maybe effort should go to understand how the SoC switch is configured on OEM firmware and than translate it to OpenWRT (very likely specific DTS configs).
I'm right now reviewing TP-Links source code/scripts to find something there.