RK3399 (eg: NanoPC T4) has stopped working after Kernel 6.x

  • Moved from here https://github.com/LibreELEC/LibreELEC.tv/issues/9562

    Describe the bug

    RK3399 (eg: NanoPC T4) has stopped working after Kernel 6.x
    No HDMI output and boot

    How to reproduce

    Steps to reproduce the behavior:

    1. Go to https://libreelec.tv/downloads/rockchip/ or https://test.libreelec.tv/13.0/Rockchip/nanopc-t4/
    2. Download LE13 nightlies / LibreELEC 12.0 / LibreELEC 11.0 which has Kernel 6.x inside, burn it to an sd card, and boot from it
    3. NO HDMI output. There is no boot either, even the empty space of SD card has not been expanded, so there is no SSH access

    Information

    • LibreELEC Version: 12.0 / 11.0 / LE13 nightlies
    • Hardware Platform: NanoPC T4

    Log file

    No log because I can't ssh into it because of the failure of the boot

    Context

    LibreELEC 10.0 which has kernel 5.x works

  • Go to Best Answer
  • You need to share the u-boot (early stage boot) serial uart output. This will either show what stage of boot something fails at, or nothing which indicates a more fundamental u-boot compile/packaging issue.

  • You need to share the u-boot (early stage boot) serial uart output. This will either show what stage of boot something fails at, or nothing which indicates a more fundamental u-boot compile/packaging issue.

    I will order a TTL to USB adaptor , it will take days, when it's ready, I will paste the TTL log here


    It just amazes me that after two stable releases, no one noticed it even can't boot

  • You need to share the u-boot (early stage boot) serial uart output. This will either show what stage of boot something fails at, or nothing which indicates a more fundamental u-boot compile/packaging issue.

    UART/TTL log of Libreelec 12

    Then it hangs

  • The log of LibreELEC 13 nightly

    Please Note that I have an official Android installed in the internal eMMC , so the boot sequence directly failed and it booted into the Android in eMMC directly

    this only happens with LibreELEC 13 nightly in SDCard, LibreELEC 12 will get stuck, and LibreELEC 10 will boot successfully


    If I interrupt the boot sequence with ctrl+c and interact with the uBoot, force it to boot from mmc1


  • PostS12

    I've tried many versions of images

    Those Don't work

    Official LE 12,11, nightly won't boot, most SD cards get stuck at

    Code
    SecureInit ret = -2, SecureMode = 0

    a few SD cards directly boot the system on the internal eMMC

    What works:

    1. balbes150 's unofficial LE , which is Kernel 6.x too, works with all SD cards on my hands

    balbes150
    November 25, 2019 at 12:41 PM

    2. Official LE 10

  • Rockchip CPUs, if they find a bootloader in the internal memory, start with that and possibly try to launch the operating system from the SD card.

    but if I remember correctly your vendor's bootloader (which is the one you have with the Android installation) is not able to launch the mainline bootloader (which is the one used starting from libreelec 11) and vice versa. you can see this from the fact that libreelec 10 works instead (because it has the vendor rockchip bootloader) and also the unofficial builds you mentioned.

    more information can be found here

    Boot option - Rockchip open source Document

    the only options I know of are

    - install libreelec in your emmc
    - delete your emmc so that the board, finding nothing in the internal memory, boots entirely from the SD card

  • ilmich Thanks for your kind reply

    After I erase the internal eMmc with dd , LE 12 boots successfully

    But I still have some questions:

    LibreELEC 11.0 uses kernel 6.1.x (not mainline), LibreELEC 12.0 uses kernel 6.6.x (not mainline)

    while balbes150 's unOfficial LE uses kernel 6.12.3 (latest stable) , it can boot successfully, so which means it uses a vendor rockchip bootloader?

    so,may I have any idea about why the Official LE not to use the a vendor rockchip bootloader ?

    Is there any official way to install LE to the internal eMMC ?

  • LibreELEC 11.0 uses kernel 6.1.x (not mainline), LibreELEC 12.0 uses kernel 6.6.x (not mainline)

    Libreelec uses the latest LTS version of the mainline kernel (i.e., the official one, not the RockChip one), which is available when the stable version is released.

    The 6.12 kernel will (probably) be used in libreelec 13, which is currently still in development.

    Is there any official way to install LE to the internal eMMC ?

    Official no, so if you have problems (in reality, it's very unlikely that you have them), you may not have support. But if you want to install it in your internal emmc, just write an image of Libreelec (previously saved on a SD card) with dd after starting it from the SD card.

  • So, may I know why the Official LE does not use a vendor rock chip bootloader?

    LE packaging assumes we are the sole OS being installed on a device (so we don't need to consider other OS bootloaders) and we choose to use and champion upstream open-source codebases whenever possible. RK3399 is well supported by current u-boot so there is no need for our releases to use vendor sources.