In June I purchased an RB450Gx4. It has been running perfectly until a few days ago. While I was making some (hopefully unrelated) configurational changes I lost connection to the router. The router disappeared from the network and has been unresponsive ever since.
I bought a USB to serial cable to get more information. This is the serial output after boot:
When I reboot the router I still get the "data is corrupted" message and the router can't boot. I don't know what else to do besides re-installing the OS, that didn't help.
I suspect the NAND is defective and I should return this board to my distributer.
Am I correct or does anyone have a suggestion what could help?
Thanks for your reply Nathan. I tried the ‘e’ option to format the NAND.
This is the serial output:
Do you realy want to format your storage device?
that would result in losing all your data
type "yes" to confirm: yes
formatting nand... done!
After that Netinstall completes successfully with the same serial output as before. I noticed that the first step Netinstall does is formatting the NAND again.
Then after reboot unfortunately the same “data is corrupted” message.
It’s possible that your flash did indeed fail and is physically defective. But it’s also possible that this is a RouterBOOT bug…it’s not exactly the same, but it is similar enough to what some CRS317 owners reported here to make me suspicious: thread link
CRS3xx and RB450Gx4 are both ARM-based, so this could be a related ARM RouterBOOT issue. But best bet is probably to talk to support@mikrotik.com via e-mail to see what they say.
I have noticed strange behavior with more recent RouterBOOTs, at least on some other architectures like mmips. I have not tested ARM RouterBOOT yet, but it seems as though RouterBOOT can memorize the offset of the kernel on the boot partition and in certain circumstances continue to attempt to load the kernel from that offset even if it isn’t located there anymore. (Please note that this is just a theory based on some interesting observations I’ve made on boards that use smaller SPI NOR flash instead of parallel NAND, and is not confirmed.)
It would be interesting to have you try the following:
Do a format via RouterBOOT (option ‘e’), as you have already tried.
After format, instead of proceeding to Netinstall, have RouterBOOT try to boot from flash even though you know it will fail (because it’s empty).
After this, go ahead and also reset RouterBOOT settings back to defaults (option ‘r’).
Let RouterBOOT yet again try to boot from the empty flash memory, and fail.
After these steps, try Netinstall again, and see what happens.
If you hear from MikroTik support, please update us here; I am very curious about the outcome of this specific problem.
Nathan … Question for ya … If you have created a primary and fallback partition, would this suspect RouterBOOT issue affect the booting of both partitions, being a low level operation? Or would just one be impacted and the other will boot normally?
`
Good question, since I am mainly basing my guess on experiences I’ve had while playing with newer RouterBoards that have smaller NOR flash (16MiB) that RouterBOOT won’t let you partition (where RouterBOOT is still YAFFS-aware but can look inside of “/bootimage” – which is really just the system NPK – for the kernel itself). I don’t know whether RouterBOOT on a device with large NAND would behave the same way, and I don’t even know for sure that there is an actual problem…this is all just a hypothesis at this point that still needs further testing.
However, you bring up a good point: it might be worth attempting to have RouterBOOT format the flash, and then also divide it up into 2 or more partitions before attempting Netinstall again. That could potentially break the “spell” and at least get boldrouter’s Gx4 back up and running.
Do a format via RouterBOOT (option ‘e’), as you have already tried.
Serial output:
your choice: e - format nand
Do you realy want to format your storage device?
that would result in losing all your data
type "yes" to confirm: yes
formatting nand... done!
After format, instead of proceeding to Netinstall, have RouterBOOT try to boot from flash even though you know it will fail (because it’s empty).
Check, it failed
Serial output:
RouterBOOT backup booter 6.42
RB450Gx4
CPU frequency: 716 MHz
Memory size: 1024 MiB
NAND size: 512 MiB
Press any key within 2 seconds to enter setup..
loading kernel... kernel not found or data is corrupted
Please, check ethernet cable...
After this, go ahead and also reset RouterBOOT settings back to defaults (option ‘r’).
Check, this results in a direct reboot
Let RouterBOOT yet again try to boot from the empty flash memory, and fail.
Check, it failed, same error
After these steps, try Netinstall again, and see what happens.
Serial output:
Welcome to MikroTik Router Software remote installation 6.42.7
Press Ctrl-Alt-Delete to abort
mac-address: CC:2D:E0:F4:3F:79
mac-address: CC:2D:E0:F4:3F:78
mac-address: CC:2D:E0:F4:3F:77
mac-address: CC:2D:E0:F4:3F:76
mac-address: CC:2D:E0:F4:3F:7A
software-id: ****-**** key:
**********************************
Waiting for installation server...
Found server at 08:00:27:47:2B:C6
Formatting disk.........
installed routeros-arm-6.42.7
Writing configuration...
Software installed.
Press ENTER to reboot
After Netinstall completes successfully and a reboot, I get the same error message as before.
I will contact MikroTik support and wil give an update as soon as I have a response.
I created 2 partitions, and formatted and installed Router OS on each by changing the active partition. In both cases the installation was a success, bit still the kernel not fount or data is corrupted message on both partitions. I even tried with 8 partitions and installed it on the last one. Same result.
I contacted support for this issue, and they suggested to update the firmware via serial. The send me the firmware I should use.
Serial output during firmware update:
your choice: g - upgrade firmware
Upgrade firmware options:
e - upgrade firmware over ethernet
s - upgrade firmware over serial port
your choice: s - upgrade firmware over serial port
xmodem receiver ready, waiting for data...
press <Ctrl>+X several times to cancel transfer
press any key to continue...
file transfer ok
writing new firmware.......... OK
please reboot to run new booter
And this worked! The device is able to boot again. The “kernel not found” message is not displayed anymore.
Serial output after reboot:
RouterBOOT booter 6.42.7
RB450Gx4
CPU frequency: 716 MHz
Memory size: 1024 MiB
NAND size: 512 MiB
Press any key within 2 seconds to enter setup..
loading kernel... OK
setting up elf image... OK
jumping to kernel code
Starting...
Starting services...
MikroTik 6.43 (stable)
MikroTik Login:
Thank you all for your help. In the end my issue was resolved by updating the firmware via serial.
Cool beans, though updating the firmware really shouldn’t have been “necessary” per-se. If that fixed it, that tells me that either there was a bug in the older bootloader that you somehow managed to trip and which was fixed in the updated loader, or there was actually some change in how some newer versions of 6.42.x are being packaged that requires a bootloader update to be understood. The latter seems less likely than the former to me.
To be clear, the only thing that you did was to update the bootloader firmware, right? You didn’t have to re-Netinstall after the firmware update? It just instantly “found” the copy of RouterOS that was already on there from previous Netinstall attempts and it started right up?
The backup bootloader doesn’t get touched during firmware upgrades, so I suppose you could try to force the backup bootloader (which should still be the old 6.42 version) to start and see if it still throws that error on the same hardware and with the same (bit-for-bit) installation that bootloader 6.42.7 clearly now works with.