Posts by chewitt

    The common mistake with recursive copying is some form of cp -R /oldstorage/.kodi /newstorage/.kodi which results in the old Kodi userdata files being copied to /storage/.kodi/.kodi and since that's the wrong location you still see a clean install on restart.

    It also sounds like the clone worked (it booted) so the missing step was editing syslinux.cfg in the boot partition to change default boot mode from 'run' to 'boot'

    The WiFi module is part of the RK3566 SoC, so not removable

    That is incorrect. The WiFi module is a separate chip (Cypress CYW43455 according to schematics on the Pine64 website) connected to SDIO (WiFi) and serial UART (BT) lines of the SoC but not functionally part of the SoC itself. The module it always is a separate chip package soldered to the main PCB.

    It would be easier to disable the SDIO/BT module through device-tree changes (disable the sdio node, disable the BT node) than to physically modify the board by unsoldering chips, although that could also be done if you have the tools/skills.

    1. I'll have to ask the upstream kernel maintainers if suspend/resume are supported and expected to work. I won't guarantee it.

    2. In theory the kernel should handle the display device going away and coming back. Kodi only checks things at startup though so might not handle things properly even if things lower in the stack do. In either case the workaround will be (or should be) to run the 'getedid' script so the kernel (and thus Kodi) always sees the display device (via it's EDID data) as connected.

    3. If you are using official nightlies please try the latest image in my testing share and see if that fixes the issue? - I've added some kernel options to make iptables work but can't remember if that change has made it into official nightlies. I'm also unsure if I added all the options for Docker though.

    Seems like your USB drive is broken

    That's no the problem, because of how LE is packaged. To explain:

    In a conventional distro there are many thousands of files stored on disk with each file occupying at least one sector and some occupying many sectors. Bad sectors thus impact only a small number of files and if those are non-critical files you might throw some odd errors but the system keeps running until you do finally lose something important.

    LE is packaged as two compressed read-only files (KERNEL and SYSTEM) which are expanded into a virtual root filesystem on boot, with persistent storage (containing largely non-critical data) in /storage. If you have a bad sector impacting either KERNEL or SYSTEM their decompression fails fatally and the OS does not boot.

    Thus if the system boots, some odd USB errors from the boot drive were not fatal and the OS (in its entirety) is running.

    The log shows USB device 1-3 being mounted as /dev/sda without any issues. This is the boot device.

    The log shows USB device 1-4 throwing usb 1-4: string descriptor 0 read error: -22 but this is not the boot device.

    The log also shows Xorg failing to start an i915 (Intel GPU) card due to lack of DRI2 or DRI3.

    I would do the following:

    • Run "systemctl stop kodi" to stop the Xorg boot loop.
    • Move /storage/.kodi to /storage/.kodi-old to sidestep possible add-on issues
    • Use "connmanctl" to connect to WiFi and the Internet if needed (looks to have a stored config so prob. not needed)
    • Download (wget) the latest nightly 'Generic' (not Generic-Legacy) image to /storage/.update
    • Reboot to update

    Switching to the Generic (GBM) image should sidestep the issue with Xorg and leave you with a working system?

    But kodi doesn't move the files on the server: I'm confused.

    Kodi is dependent on the structure you create, it will not restructure/move/tidy things up for you. So you need a consistent structure and then (via advancedsettings.xml, which you create if it doesn't exist) you map that structure by telling it where the extras folder will be (consistently, if you want consistent results).

    If you found some pre-compiled module somewhere on the internet then you are stuck with trying to use a specific kernel version as the 'version magic' must match for the kernel to load the module.

    Unless the driver code is shockingly bad: If you're going to compile the out-of-tree module (as you have stated) it can be built against whatever kernel version is latest/used in our buildsystem and you don't need to care about the version.

    NB: User attempts to shortcut compiling in our buildsystem "because compiling an image takes ages" with some module compiled outside our buildsystem "because it'll be quicker" usually result in the user expending considerably more time/effort/frustration on the shortcut than just compiling the image in our buildsystem would have taken.