mthmulders Posted May 11, 2018 Posted May 11, 2018 Hi all, After years of running Armbian on my Cubox i4 without problems, I am suddenly in a situation that I don't understand. For some reason, I decided to reboot it, and now it doesn't work anymore. Using a micro-USB cable and my Macbook, I connected to the serial line to grab some logging: U-Boot SPL 2017.11-armbian (Jan 24 2018 - 22:39:16) Trying to boot from MMC1 U-Boot 2017.11-armbian (Jan 24 2018 - 22:39:16 +0100) CPU: Freescale i.MX6Q rev1.5 996 MHz (running at 792 MHz) CPU: Extended Commercial temperature grade (-20C to 105C) at 41C Reset cause: POR Board: MX6 Cubox-i DRAM: 2 GiB MMC: FSL_SDHC: 0 *** Warning - bad CRC, using default environment auto-detected panel HDMI Display: HDMI (1024x768) In: serial Out: serial Err: serial Net: FEC starting USB... USB0: Port not available. USB1: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found U-Boot script /boot/boot.scr 907 bytes read in 98 ms (8.8 KiB/s) ## Executing script at 12000000 ## Error: "autodetectfdt" not defined ** File not found /boot/dtb/ ** ** Unrecognized filesystem type ** ** File not found /dtb/ ** 5783761 bytes read in 483 ms (11.4 MiB/s) 5546904 bytes read in 427 ms (12.4 MiB/s) ## Loading init Ramdisk from Legacy Image at 14800000 ... Image Name: uInitrd Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 5783697 Bytes = 5.5 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK I suspect that ## Error: "autodetectfdt" not defined is the culprit. Is there a way I can solve this? I would prefer not to flash the micro-SD, since it contains quite some data I'd like to preserve...
Igor Posted May 11, 2018 Posted May 11, 2018 Try this. Insert SD card on some Linux computer and flash attached files: dd if=SPL of=/dev/SD_CARD_DEVICE bs=512 seek=2 status=noxfer dd if=u-boot.img of=/dev/SD_CARD_DEVICE bs=1K seek=42 status=noxfer Make sure you flash SDcard and not your hard drive. Device name on your computer will be something like /dev/sdb or /sdbc ... SPL u-boot.img 1
mthmulders Posted May 11, 2018 Author Posted May 11, 2018 Thanks for the reply! I've modified the commands a bit since the version of dd on my Macbook doesn't know/support them: sudo dd if=SPL of=/dev/disk3 bs=512 seek=2 78+0 records in 78+0 records out 39936 bytes transferred in 0.004992 secs (7999987 bytes/sec) sudo dd if=u-boot.img of=/dev/disk3 bs=1024 seek=42 235+1 records in 235+1 records out 240776 bytes transferred in 0.019943 secs (12073209 bytes/sec) But to no avail... Re-inserting the microSD in the Cubox, I still have ## Executing script at 12000000 ## Error: "autodetectfdt" not defined ** File not found /boot/dtb/ ** ** Unrecognized filesystem type ** ** File not found /dtb/ **
mthmulders Posted May 11, 2018 Author Posted May 11, 2018 It might be completely wrong... But I noticed a definition for autodetect on GitHub. Imagine I would do the following: drop to the U-Boot prompt give this command:setenv autodetectfdt "if test ${cpu} = 6SOLO || test ${cpu} = 6DL; then setenv fdt_prefix imx6dl; else setenv fdt_prefix imx6q; fi; if test ${board} = mx6-cubox-i; then setenv fdt_file ${fdt_prefix}-cubox-i.dtb; else setenv fdt_file ${fdt_prefix}-hummingboard.dtb; fi;" give this command:saveenv reboot ... would that work? Or would it just completely mess up my U-Boot? ;-)
Igor Posted May 11, 2018 Posted May 11, 2018 You can try to boot manually but later you need to downgrade u-boot. I am already fixing things in the repository. http://apt.armbian.com/pool/main/l/linux-u-boot-cubox-i-next/ .35 = ok .38 = broken
mthmulders Posted May 11, 2018 Author Posted May 11, 2018 Well, this is interesting... The autodetectfdt-related error is gone, but now I have this: Found U-Boot script /boot/boot.scr 907 bytes read in 98 ms (8.8 KiB/s) ## Executing script at 12000000 ** File not found /boot/dtb/-hummingboard.dtb ** ** Unrecognized filesystem type ** ** File not found /dtb/-hummingboard.dtb ** 5783761 bytes read in 483 ms (11.4 MiB/s) 5546904 bytes read in 427 ms (12.4 MiB/s) ## Loading init Ramdisk from Legacy Image at 14800000 ... Image Name: uInitrd Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 5783697 Bytes = 5.5 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ERROR: Did not find a cmdline Flattened Device Tree Could not find a valid device tree SCRIPT FAILED: continuing... AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode flags: ncq stag pm led clo only pmp pio slum part No port device detected! Device 0: Model: Firm: Ser#: Type: Hard Disk Capacity: not available ... is now current device ** Bad device size - sata 0 ** starting USB... USB0: Port not available. USB1: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Device 0: device type unknown ... is now current device ** Bad device usb 0 ** ** Bad device usb 0 ** FEC Waiting for PHY auto negotiation to complete......... TIMEOUT ! Could not initialize PHY FEC BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 It still says it doesn't have a flattened device tree (I hoped that having autodetectfdt would create the flattened device tree), but it seems I was wrong there. Any other thoughts, maybe?
mthmulders Posted May 13, 2018 Author Posted May 13, 2018 Well, good news: my Cubox is booting again! Thanks again for the support, Igor. Here's what I did: I looked at the definition of autodetectfdt that I mentioned earlier. I saw it sets two other variables: fdt_prefix and fdt_file. I figured out their values based on the results of printenv cpu and printenv board. Then I booted the Cubox with a micro-USB cable attached and stopped autoboot. I gave the following commands: setenv fdt_prefix imx6q setenv fdt_file ${fdt_prefix}-cubox-i.dtb setenv autodetectfdt "if test ${cpu} = 6SOLO || test ${cpu} = 6DL; then setenv fdt_prefix imx6dl; else setenv fdt_prefix imx6q; fi; if test ${board} = mx6-cubox-i; then setenv fdt_file ${fdt_prefix}-cubox-i.dtb; else setenv fdt_file ${fdt_prefix}-hummingboard.dtb; fi;" saveenv Then the autoboot succeeded and I was able to log in, over the serial line. So I could upgrade U-Boot to 5.44 and reboot again. The system now boots fine! 1
Recommended Posts