Posts by Wild Penguin

    iCrazy: a solution / workaround which might work for you is to get an HDMI audio extractor with Optical output. Just make sure the audio extractor can patch audio capabilities into the EDID. There are buggy extractors out there, which do not - which really cripples the device, as it becomes useless if connected to a display which reports "no audio" in it's capabilities! (sorry for OT).

    I just tried and uboot shipping with C1 images (*) has no problems with ext4load (well, at least for booting LiserTV; I haven't made any extensive tests!).

    I can also change variables pointing to KERNEL and SYSTEM image file locations. Only the latter is required for boot to find the SquashFS (AFAIK! and only if it is not in the root of partition mounted to /flash), but both are used by any autoupdate scripts (I presume!). I didn't check or test that functionality since I don't need it. I also didn't check if the variables are used similarly across other (all?) LibreELEC releases.

    In my setup, I've decided to put all LibreELEC files (of any release) in ext4 partition (which also has the Ubuntu root) in /boot/[RELEASE] folder, where [RELEASE] is specific to the version I intend to boot. That way they are nicely organized in their own folders, on an partition with ample space =)

    Ubuntu already has it's boot files also in it's root filesystems/boot (in addition to the FAT partition). It should be able to boot in a similar way from "just the ext4 partition". Not sure if there's any need to - just getting the *ELEC files off the partition will already make it quite nice and tidy.

    The changes I've made to boot.ini (LiserTV):

    In case someone reading this tries something similar: don't, unless you can fix it. Any autoupdate will fail after the chances, at least in case boot.ini is not in /flash directory anymore (and probably even if it is / this is untested). Obviously you need to adapt the paths and partition numbers according to your setup.

    Cheers!


    *) Well, most images - but since it's from 2011 and hasn't been updated since, it most probably it is the same u-boot on all non-ancient images floating around for the C1.

    p.s. I didn't bother on changing the FAT partition (containing the boot.ini) to ext4. But IMHO there's little benefit from converting it; the only benefit I can think of is reducing partition number by combining the root (of a OS) and u-boot boot partition, but there's a potential huge downside; in case the OS craps out for any reason (or, there is a power outage or anything) -> you risk having a corrupt boot partition for u-boot- So it is sensible to have a separate boot partition for sanity's sake in any case. In case the OS has an InitRD / anything on the boot partition only, it can be used to recover in some cases. But if anyone else tests this u-boot form ext4, please do tell if it works =)

    I've used dd, it's simple, available on any Linux and works fine, but it's also called DiskDestroyer for a reason. I'm always nervously checking that I've not mixed up a letter in the of= part =). I've though about giving balenaEtcher or some equivalent a go at some point (AFAIK these frontends are a bit more clever and won't let you that easily write over a hard disk as dd does; just not needing to type the device names is a huge safety improvement for owners of sloppy fingers!).

    I’m really trying to adapt it, but I'd rather just say experimentation. Now I have a working image, but I wouldn't say it's 100% done.

    http://libreelec.dtech.hu/snapshots/20211122/ (Source: https://github.com/dtechsrv/LibreELEC-AML/tree/odroid-c1)

    It contains almost all Kodi patches I have used for the boxes, including the fix for the IPTV problem, and I also enabled the dvb-latest driver package. However, the kernel of wrxtasy I used for this build is unfortunately very outdated.

    This is interesting information!

    I've used the LiserTV release for media uses for a few days, and it seems really responsive and stable! I'm not sure where it pulls it Kernel sources from, but:

    Code
    # uname -a
    
    Linux LaserTV 3.10.107 #1 SMP PREEMPT Tue Oct 27 19:15:52 UTC 2020 armv7l GNU/Linux

    For me, the u-boot is a whole new area, so unfortunately I can't answer your previous questions on the merits either, but all the experience comes in handy. If I understand correctly, you want a native ext2/ext4 partition instead of a squashfs + overlayfs for the system patrition, right?

    No, not quite. I want to read the squashfs file (SYSTEM) from another partition (so that I'm not forced to make a large FAT partition). I.e. I'm perfectly fine with the squasfs (i.e. SYSTEM) and storage partitions libreelec will be using, but the partially hardcoded location (as confirmed by the busybox init script) of the SYSTEM squasfs image file makes the setup a bit inflexible.

    The current partition layout I have is this:

    1. FAT partition (required by uboot, but not really anything else after uboot in the boot chain (*)
    2. Ubuntu root partition
    3. Storage partition for LE
    4. Storage partition for LE (another version)

    (At this point, an MBR partition table is full. I could make one of the partitions an extended partition, but really I think I don't need any more; but in case different releases of LibreELEC have different structures for the storage or any incompatibilities, I might or - alternatively - make some kind of file juggling every time I change the booted release; or in case I want to install any other OS, such as another Linux distribution, Lakka, Retropie etc...).

    The FAT partition will contain all LibreELECs individual SYSTEM files, KERNEL files (if they are different) and Ubuntu Kernel files, and INITRD files in case any of the OSes use one (some don't, as already pointed out). The total size of all these files will get quite large easily! It would be more handy to and tidy to have some (or all!) on some other partition.

    The Ubuntu root partition will be large in any case. One possibility in my case would be to move the SYSTEM (and KERNEL) files this partition into the folder /boot, but I haven't tested if the uboot can use ext4load (I've looked at the source and it looks like it should have it build in).

    Of course, this is just for my personal tinkering. I wouldn't recommend this to anyone who can not fix what they've broken ;)

    Cheers!

    *) Technically there's nothing preventing from making a uboot setup without an fat partition if I've understood it's documentation and source correctly, but it has been chosen as the most sensible choice for most situations. Any OS can read FAT, and it will usually contain only a few files, written rarely - so efficiency etc. is not really an issue. U-boot has (in the source, still not sure about this binary release) support for ext4, but such partitions could not be accessed (easily) from, say, a Windows computer.

    Hi Lannox,

    There is no information whatsoever in the screenshots you've posted. They contain errors about creating a pasteboard image.

    Hint: don't take screenshots of text content, instead copy+paste the text or use some pastebin client.

    Also, it is worthwhile to tell in the first post what (and everything) you've done. Things such as not following the installation instructions might be especially vital information, and this information may help to reduce time to troubleshoot your issue on this (or other) forums.

    I'm not familiar with raspberry pi imager tool, are you sure it supports creating LibreELEC images? It might expect something from the image file contents and modify them before burning (based on it's expectations).

    Lannox,

    Most (all?) LibreElec releases images are quite small. The images contain a partition table, where there is a small fat16 partition and a storage partition. But the storage partition is very small, the bare minimum and it should be resized to the maximum available on the block device. 27M will fill up immediately.

    For some reason LibreELEC skipped that part on your first boot this time. Frakkin64 gave one good suggestion as to why it might have happened.

    You have not told as the size of the SD card you are using. Try parted /dev/mmcblk0 print and post the output here.

    1. The kernel expects to find SYSTEM in the same partition as the KERNEL (or kernel.img) file. I'm not aware of a way to pass SYSTEM as a param but since I can't think of any reason to put it anywhere other than the boot partition I'm not sure it would be needed.

    2. "printenv" will show the u-boot environment via UART cable on a working board. If no UART you'll need to dive into the ancient Hardkernel sources. I wouldn't attempt to mess around with the default boot flow that's present in existing C1 images. It works, and the code behind it is crappy so by fiddling with it (from experience) you will only break something, and fixes bring new exiting bugs to play with.

    3. I'm not really sure what the question is. Leave the boot flow alone.

    Hi chewitt, thanks for your reply. It is helpful and helped to get me on the right track!

    1. There is no reason to put SYSTEM on another partition than the boot in a single-OS (LibreELEC) device. However I've tried to describe a use case where the reason might arise; if one has several OSes and/or several versions of a OS, say LibreELEC in this case. The FAT partition is very small per default, and a user might be in a situation where it can not be grown easily (this is a limit I actually faced, since I didn't realize the SYSTEM images are quite large).
    2. I'm trying to get away without using an UART cable, while that is always an option. I might just give it a shot by trial-and-error :-). I realize uboot is not (supposed to be) any kind of multiboot loader such as grub, but I'm trying to find out it's limits.
    3. I must admit my thoughts got a bit convoluted as I was trying to describe why I need the answer, but the actual question got lost =) The question in simple terms is: What is LibreELEC doing with the boot (Kernel) parameter?

    I'm definitely comfortable with fiddling with the boot, while I understand some users might not. Chances of bricking might be high for some devices, but the C1 (and similar) doesn't have any non-removable flash-memory. If I screw up to boot, I only need to get my eMMC / µSD readers ready or change a jumper on the device to choose the other memory to boot from. The overall goal here is to reduce the need to open the device (which I've installed in a case) and switch eMMC module / µSD cards or change the jumper. It gets tiresome over time, and I'd much rather use SSH (or keyboard) to change the OS.

    While typing a reply, I found the actual key files in the source: packages/sysutils/busybox/scripts/init. I believe that file has all the answers I need for boot and disk parameter handling at least for the releases I can find ;-). By a quick glance, seems like $boot is always mounted to /flash and $IMAGE_SYSTEM is mounted to /sysroot; looks like to current script can read an alternative file name (and path) for SYSTEM, however it needs to be on the /flash. So with this init script, the SYSTEM file must always reside in whatever gets mounted on /flash (i.e. given by boot parameter). This might have nothing to do with the KERNEL image file, btw..

    I will at some point test with e2load and e4load and reply here my findings. I believe one can get away with having the SYSTEM elsewhere (from boot.ini partition) by lying to busybox ;-). I Haven't tested yet, though, and I definitely wouldn't do this kind of testing on a device where recovery isn't trivial. I could of course build my own KERNEL and INITRD (I presume busybox along with init is in there) but I'm not sure it's worth the hassle. Maybe just as an exercise later...

    I've been in a situation, where I would like to watch a live video stream (TV), but since it doesn't at the time contain any interesting content, I would like to listen something else instead of whatever audio is in the stream. But still, I'd like to see the video feed so that I can stop the music when the actual interesting broadcast starts.

    So, I'd say there is another use case, but it's quite niche. I've though this is a first-world-problem and decided to live with it :-).

    But, broadly speaking: "override current audio (from a video-including content) with some other audio source" (I haven't actually browsed a movie list, so I'm not sure on OPs issue, but I presume the issue here is a preview with audio?). How it could be done in UI, is one issue. The design is not trivial. Another issue is, how easy/difficult this is technically, and if it is worth the effort.

    Hi lannox,

    For the record, df -h does not list partitions. It lists file systems along with their sizes and free space.

    Here, filesystem should be interpreted very freely. It can include things such as tmpfs which is usually allocated (thinly) in RAM etc.; not everything on the list might not always reside on a physical block device. This is common to any Linux system (and many derivatives; probably any *nix, probably OS X and MacOS with minor tweaks, *BSD?). In your case, only partitions on your mmcblk0 are those named mmcblk0p? in the listing you've posted. So you've used only around 528M on the disk.

    LibreELEC contains a very stripped down version of Linux ("just enough OS..."), but try lsblk or fdisk -l (or blkid ??? I don't remember what is on usual LibreELEC releases) to see what is actually going on with your disk.

    So, basically Klojum is on the point, I'd also do as he suggested. This is just some additional information (which can hopefully be useful in the future =) ).

    Hi,

    I have this quite old but still quite powerful device for it's age hanging around =).

    The LibreELEC images floating around for the device have an uboot right next to MBR, then a single FAT32 partition and the ext4 (ext2?) partition for storage. It's similar (or identical) compared to an Ubuntu partition table, except that the SYSTEM contains the root (ro) and the ext2(4?) is mounted to /storage. See: https://wiki.odroid.com/odroid-c1/soft…tab__odroid-c11 for reference. I've only deduced this, I've not looked at the source.

    The FAT16 partition is housing boot.ini, .dtb, KERNEL in addition to the aforementioned SYSTEM (and sometimes INITRD and a .bmp splash image, depending on who made the release).

    Now, I've managed to get (manual) multibooting working by replacing the boot.ini along with the SYSTEM file, and setting the variable pointing to STORAGE partition correctly. I can easily point to any alternative KERNEL and .dtb files, but the problem is the very large SYSTEM files. To test several versions, I can:

    • Rename the SYSTEM file every time I change boot.ini. But this way I need to make the fat16 partition very large to house the SYSTEM files!
    • Alternatively, copy the SYSTEM file to the FAT16 partition every time. This is a bit time consuming and causes writes which are ultimately unnecessary.

    The questions:

    1. Where does a Kernel in a LibreElec version look for the SYSTEM file? Is it always hardcoded to ${boot}/SYSTEM? Is there a way to pass a location for SYSTEM for the Kernel as a parameter? I'm sure the answer is somewhere in the sources (1, 2) but I don't know the source well enough to find the information, maybe someone can point me at it?
    2. How can I determine what commands does the uboot build I'm using support? Can it load with ext2load or ext4load? This way, I can keep the fat partition very lean and clean since KERNEL and .dtb could be anywhere! (3). Same comment on source diving as above!
    3. What are the constraints to where $boot needs to point at? I'm thinking about will a LibreElec version panic out in case I've pointed to a SYSTEM file somewhere else and/or loaded .dtb and KERNEL with ext[2,4]load. Is boot parameter only used for updates (and $boot mounted at /flash as ro)? If the answer is yes, then I can live with that since I don't really need any kind of autoupdate (this is testing, after all!).

    Cheers!

    The source repositories I'm referring to:

    1) https://github.com/dtechsrv/LibreELEC-AML (and images at http://libreelec.dtech.hu/S805/ ; relevant thread LE-9.2.8 builds for some Amlogic S905x, S802/S812 and S805 devices ; I haven't actually tested these images yet on the C1)

    2) https://github.com/Leverex/lisertv.os (an unofficial branch; relevant thread https://forum.odroid.com/viewtopic.php?f=116&t=39184 ).

    3) [EDIT]: AFAIK, here is the branch the uboot I'm using is based on: https://github.com/hardkernel/u-boot/tree/odroidc-v2011.03