Recover Firmware

The following section goes into detail of the firmware recovery process for Carambola3 when it does not boot any further than U-Boot. This can happen during an accidental shutdown during the firmware upgrade process or any corrupted system files. Some recovery methods will require LAN and serial access. Note: any configuration changes made previously will be cleared!

Recover via USB

If your device has the new Caraboot bootloader (starting from version 2.0) then you may utilize the USB firmware recovery option.
Note: Your bootloader version is being printed upon power-on and visible via serial connection.

1. Format your USB drive as ​FAT32​ and copy the firmware. Make sure to rename your image to ​8dev_recovery.bin

2. Plug the USB drive into your Carambola3's USB port.

3. Keep holding the ​S1​ (reset-to-defaults) button and slightly press ​S2​ (hardware-reset) button, the bootloader will begin to search your USB drive for firmware. Wait for about 10 seconds (LED should have blinked 4 times by now) and release the ​S1​ button. The bootloader will begin flashing the firmware immediately. If no firmware can be detected on the USB drive then Carambola will attempt booting with default boot options.

Recover via U-Boot

ATENTION! It is possible to brick your board while making changes inside the bootloader so make sure you are entering correct commands. If you make a mistake while typing use CTRL+C instead of backspace!

1. Install tftp server.

2. Copy firmware to your tftp directory.

3. Set IP address on your tftp server's ethernet interface.

4. Reboot Carambola3 and press ESC when prompted to enter bootloader then press <Ctrl+C> a few times to clear console buffer.

5. Set local and server IP addresses:

setenv ipaddr
setenv serverip

6. Copy firmware from tftp server to Carambola3's RAM:

tftpboot 0x80060000 openwrt-8devices-v2.11-ar71xx-generic-carambola3-squashfs-sysupgrade.bin

7. Write firmware from RAM to FLASH memory. Warning: do not proceed with this step if step 6 failed !!!

sf erase 0xC0000 +${filesize}; sf write 0x80060000 0xC0000 ${filesize}

8. Reset board: