For dual bank system, what happens is, as the device will be up and running with FW in one bank say âbank 0â (considering banks are bank 0 and bank 1), then the FW which is downloaded will be written into bank1 and committed in the bootloader env. Then on reboot, the device will come up with bank1 FW.
The FW usually consists of a kernel, rootfs, upgrade scripts, sometimes even bootloader. The k0/k1 is for the kernel and r0/r1 is for the rootfs of the two banks.
If you have any FW with you for the device that you are already using, you can untar/binwalk and check all its components.
BTW, here is the bootup logs from my VB HW.
Phoebus# bootm
Booting kernel from Legacy Image at 81000000 ...
Image Name: MIPS OpenWrt Linux-6.12.45
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 5189275 Bytes = 4.9 MiB
Load Address: 80100000
Entry Point: 80100000
Verifying Checksum ... OK
Uncompressing Kernel Image
[ 0.000000] Linux version 6.12.45 (mkverma@GIPL-SW164) (mips-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r31082+1-122135b964) 14.3.05
[ 0.000000] SoC Type: Realtek RTL9607C rev B (6831)
[ 0.000000] printk: legacy bootconsole [early0] enabled
[ 0.000000] CPU0 revision is: 0001a120 (MIPS interAptiv (multi))
[ 0.000000] MIPS: machine is Realtek RTL9607C Eng Board
[ 0.000000] earlycon: ns16550a0 at MMIO 0x18002000 (options '115200n8')
[ 0.000000] printk: legacy bootconsole [ns16550a0] enabled
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] Using appended Device Tree.
[ 0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT
[ 0.000000] VPE topology {2,2} total 4
[ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] percpu: Embedded 12 pages/cpu s18416 r8192 d22544 u49152
[ 0.000000] pcpu-alloc: s18416 r8192 d22544 u49152 alloc=124096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Kernel command line: earlycon
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[ 0.000000] Writing ErrCtl register=00000000
[ 0.000000] Readback ErrCtl register=00000000
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 65536
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[ 0.000000] NR_IRQS: 256
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] CPU clock is 1150
[ 0.000000] rtcl_clocks_init: clk_data.clk_num=2, ocp=1150000000, lx=200000000
[ 0.000000] clocksource: GIC: mask: 0xffffffffffffffff max_cycles: 0x10939a911d9, max_idle_ns: 440795210078 ns
[ 0.000002] sched_clock: 64 bits at 1150MHz, resolution 0ns, wraps every 2199023255551ns
[ 0.009212] clocksource: realtek_otto_timer: mask: 0xfffffff max_cycles: 0xfffffff, max_idle_ns: 19112604400 ns
[ 0.020672] Calibrating delay loop... 761.03 BogoMIPS (lpj=3805184)
[ 0.067493] pid_max: default: 32768 minimum: 301
[ 0.080660] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.088837] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.106773] rcu: Hierarchical SRCU implementation.
[ 0.112203] rcu: Max phase no-delay instances is 1000.
[ 0.119484] smp: Bringing up secondary CPUs ...
[ 0.125843] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0.125889] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.125900] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[ 0.125978] CPU1 revision is: 0001a120 (MIPS interAptiv (multi))
[ 0.200603] Counter synchronization [CPU#0 -> CPU#1]: passed
[ 0.238677] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0.238717] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.238728] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[ 0.238775] CPU2 revision is: 0001a120 (MIPS interAptiv (multi))
[ 0.590572] Counter synchronization [CPU#0 -> CPU#2]: passed
[ 0.627722] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0.627762] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.627774] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[ 0.627829] CPU3 revision is: 0001a120 (MIPS interAptiv (multi))
[ 0.700587] Counter synchronization [CPU#0 -> CPU#3]: passed
[ 0.736506] smp: Brought up 1 node, 4 CPUs
[ 0.742945] Memory: 236784K/262144K available (7951K kernel code, 638K rwdata, 1648K rodata, 10748K init, 249K bss, 23988K reserved)
[ 0.761585] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.772671] futex hash table entries: 1024 (order: 3, 32768 bytes, linear)
[ 0.785078] pinctrl core: initialized pinctrl subsystem
[ 0.793467] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.800946] FPU Affinity set after 15220 emulations
[ 0.818525] clocksource: Switched to clocksource realtek_otto_timer
[ 0.833909] NET: Registered PF_INET protocol family
[ 0.839659] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[ 0.848780] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.858150] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.866878] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.875491] TCP bind hash table entries: 2048 (order: 3, 32768 bytes, linear)
[ 0.883618] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.891645] MPTCP token hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.900152] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.907484] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.916256] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.925000] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[ 0.936971] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.943673] jffs2: version 2.2 (NAND) (SUMMARY) (ZLIB) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 0.967083] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[ 0.976788] printk: legacy console [ttyS0] disabled
[ 0.984011] 18002000.uart: ttyS0 at MMIO 0x18002000 (irq = 22, base_baud = 12500000) is a 16550A
[ 0.994182] printk: legacy console [ttyS0] enabled
[ 0.994182] printk: legacy console [ttyS0] enabled
[ 1.005091] printk: legacy bootconsole [early0] disabled
[ 1.005091] printk: legacy bootconsole [early0] disabled
[ 1.017531] printk: legacy bootconsole [ns16550a0] disabled
[ 1.017531] printk: legacy bootconsole [ns16550a0] disabled
[ 1.072005] brd: module loaded
[ 1.090232] spi-nand spi1.0: Micron SPI NAND was found.
[ 1.096086] spi-nand spi1.0: 256 MiB, block size: 128 KiB, page size: 2048, OOB size: 128
[ 1.105766] 5 fixed-partitions partitions found on MTD device spi1.0
[ 1.113021] Creating 5 MTD partitions on "spi1.0":
[ 1.118382] 0x000000000000-0x0000000e0000 : "boot"
[ 1.126270] 0x0000000e0000-0x000000100000 : "env"
[ 1.132989] 0x000000100000-0x000000120000 : "env2"
[ 1.141073] 0x000000120000-0x000000140000 : "static_conf"
[ 1.151276] 0x000000140000-0x000007d80000 : "ubi_device"
[ 1.267058] i2c_dev: i2c /dev entries driver
[ 1.277961] NET: Registered PF_INET6 protocol family
[ 1.287470] Segment Routing with IPv6
[ 1.291760] In-situ OAM (IOAM) with IPv6
[ 1.296288] NET: Registered PF_PACKET protocol family
[ 1.302394] 8021q: 802.1Q VLAN Support v1.8
[ 1.339496] clk: Disabling unused clocks
[ 1.392557] Freeing unused kernel image (initmem) memory: 10748K
[ 1.399316] This architecture does not have kernel memory protection.
[ 1.406504] Run /init as init process
[ 1.410587] with arguments:
[ 1.413884] /init
[ 1.416409] with environment:
[ 1.419911] HOME=/
[ 1.422534] TERM=linux
[ 1.784944] init: Console is alive
[ 1.789188] init: - watchdog -
[ 1.804396] kmodloader: loading kernel modules from /etc/modules-boot.d/
[ 1.814823] gpio_button_hotplug: loading out-of-tree module taints kernel.
[ 1.823943] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[ 1.834311] init: - preinit -
[ 4.178528] random: crng init done
ls: /sys/class/net/lan*: No such file or directory
BusyBox v1.37.0 (2025-09-17 08:35:36 UTC) multi-call binary.
Usage: basename FILE [SUFFIX] | -a FILE... | -s SUFFIX FILE...
Strip directory path and SUFFIX from FILE
-a All arguments are FILEs
-s SUFFIX Remove SUFFIX (implies -a)
mtd_get_mac_ascii: partition u-boot-env2 not found!
mtd_get_mac_ascii: partition u-boot-env2 not found!
mtd_get_mac_ascii: partition u-boot-env not found!
Cannot parse config file '/etc/fw_env.config': No such file or directory
Failed to find NVMEM device
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[ 8.673750] procd: - early -
[ 8.677273] procd: - watchdog -
[ 9.267780] procd: - watchdog -
[ 9.271754] procd: - ubus -
[ 9.330718] procd: - init -
Please press Enter to activate this console.
login[532]: root login on 'console'
BusyBox v1.37.0 (2025-09-17 08:35:36 UTC) built-in shell (ash)
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -| || | | || || |
|_____|| |||||___||| |____|
|| W I R E L E S S F R E E D O M
OpenWrt SNAPSHOT, r31082+1-122135b964
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
OpenWrt recently switched to the "apk" package manager!
OPKG Command APK Equivalent Description
opkg install apk add Install a package
opkg remove apk del Remove a package
opkg upgrade apk upgrade Upgrade all packages
opkg files apk info -L List package contents
opkg list-installed apk info List installed packages
opkg update apk update Update package lists
opkg search apk search Search for packages
For more https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet
root@(none):~# [ 9.785938] kmodloader: loading kernel modules from /etc/modules.d/*
[ 9.860222] kmodloader: done loading kernel modules from /etc/modules.d/*
[ 10.575390] urngd: v1.0.2 started.
root@(none):~# ubinfo -a
UBI version: 1
Count of UBI devices: 0
UBI control device major/minor: 10:127
root@OpenWrt:
root@OpenWrt:~# cat /proc/kmsg &
root@OpenWrt:~#
root@OpenWrt:~# cat /proc/cpuinfo
system type : Realtek RTL9607C rev B (6831)
machine : Realtek RTL9607C Eng Board
processor : 0
cpu model : MIPS interAptiv (multi) V2.0
BogoMIPS : 761.03
wait instruction : yes
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt eva
Options implemented : tlb tlbinv segments 4kex 4k_cache 32fpr prefetch mcheck ejtag llsc pindexed_dcache userlocal vint perf_cntr_f
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VPE : 0
VCED exceptions : not available
VCEI exceptions : not available
processor : 1
cpu model : MIPS interAptiv (multi) V2.0
BogoMIPS : 761.03
wait instruction : yes
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt eva
Options implemented : tlb tlbinv segments 4kex 4k_cache 32fpr prefetch mcheck ejtag llsc pindexed_dcache userlocal vint perf_cntr_f
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VPE : 1
VCED exceptions : not available
VCEI exceptions : not available
processor : 2
cpu model : MIPS interAptiv (multi) V2.0
BogoMIPS : 765.54
wait instruction : yes
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt eva
Options implemented : tlb tlbinv segments 4kex 4k_cache 32fpr prefetch mcheck ejtag llsc pindexed_dcache userlocal vint perf_cntr_f
shadow register sets : 1
kscratch registers : 0
package : 0
core : 1
VPE : 0
VCED exceptions : not available
VCEI exceptions : not available
processor : 3
cpu model : MIPS interAptiv (multi) V2.0
BogoMIPS : 761.03
wait instruction : yes
microsecond timers : yes
tlb_entries : 64
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt eva
Options implemented : tlb tlbinv segments 4kex 4k_cache 32fpr prefetch mcheck ejtag llsc pindexed_dcache userlocal vint perf_cntr_f
shadow register sets : 1
kscratch registers : 0
package : 0
core : 1
VPE : 1
VCED exceptions : not available
VCEI exceptions : not available