Weird install to emmc problem

I bought a Tanix TX3 (2gb ram, 1 Gbit ethernet) a long time ago. I think it was around Coreelec 19.
Back then i booted from a Coreelec SD, and immediately installed it to emmc (single boot), and have been running it ever since.

I was updating regularly up to Coreelec 21.3 with no problems, always running from emmc, until i decided to test drive Coreelec 22.
The update f***d things up and rendered the box unbootable even with a new coreelec 21.3 SD while pressing the pin method),
I was forced to reinstall a tanix firmware with the amlogic usb tool and start again.
The problem is, this time i can not install to emmc.

The single boot install option complains it cannot find necessary partitions,
quote from the tool output:

Free space of ‘partition CE_FLASH’: 512MB
Warning: Could not find ‘dto’ partition!
Could not find ‘CE_STORAGE’ partition!
Failed to read size of partition ‘CE_STORAGE’!
Failed to create new partition table!

The dual boot install option complains about different things,
quote from the tool output:

Deflate need more space to compress left 22528 bytes
Failed to compress data to dtb: -1!
Could not remove node ‘/partitions’ from dtb0!
Failed to write the new partition table to eMMC!

How come the first emmc install with Coreelec 19 succeeded with no problem, and now it is impossible?

Any ideas?

If you an you run from an SD or USB? If so why do you need to install to emmc?

I don’t get any issues from using sd card/usb on 5 boxes now. I have also installed to emmc earlier but do not think I ever noticed any improvements.

I’ve done it in all my current and previous boxes, simply because emmc is faster. Just by a margin in some operations, a lot faster in others.

But the question is not why i am not sticking to SD, of course i can.

The question is why it was possible 5-6 years ago and it’s impossible now…

Probably because of ever changing underlying Android versions which use the same media with their numerous partition changes.

C/P: Android devices typically use anywhere from six to over forty partitions, with the exact number varying significantly by manufacturer, device model, and Android version.

Android was removed from the box immediately after purchase, and was flashed years later with the same android firmware. So, that cannot be the reason.

No change in the installed android, the difference has to be in Coreelec…

An update on my post here: https://discourse.coreelec.org/t/weird-install-to-emmc-problem/58175

I posted that on my Tanix TX3 (s905x3 with 2bg ram and Gbit ethernet) although i had succesfully installed CoreElec on emmc (single boot) right after purchase via ceemmc tool, i failed to do the same after a crash that left the box unbootable, even thouhg i flashed the box back to the same Tanix android firmware with amlogic usb burning tool.

I thought i had flashed CoreElec V-19 over Android back then, so i did not try any version before that. All versions i tried (V-19 and newer) failed to flash with ceemmc tool.
It turns out, when i first replaced Android, i had flashed Coreelec version 9.2.6. This version flashed perfectly again, replacing Android on my box. After this, updating through versions was simple.

Now for my new wierd problem…

All versions worked fine (except Wifi which never worked on this box with CoreElec), but at least ethernet worked so i was OK., including on Piers 22 beta1.
Only after updating to the latest V22 nightly i lost ethernet also, so I lost all connectivity.

The wierd problem is that reverting Coreelec to V22 Beta1 (where ethernet worked before), does not bring ethernet back.

Any advise?

I found the cause for this, it’s a simple bug in the dtb code for this device.

All generic devices for a specific SOC (s905x3, s905x4 etc) with same ram amount but different ethernet speed have a different dtb according to their ethernet speed.
As an example sm1_s905x3_2g.dtb or sm1_s905x3_4g.dtb for 100 MBit ethernet, and sm1_s905x3_2g_1gbit.dtb or sm1_s905x3_4g_1gbit.dtb for 1000 MBit ethernet. What’s important, is that the difference MUST be coded in the dtb.

This box (the Tanix TX3, but i am sure it applies to other generic boxes with the same SOC) is that the 2 dtb’s (sm1_s905x3_2g.dtb and sm1_s905x3_2g_1gbit.dtb) have the same internal name in the dtb code which is “sm1_s905x3_2g” for both ethernet speeds.

So when someone flashes the box for the first time and copies the correct dtb (sm1_s905x3_2g_1gbit.dtb copied as dtb.img), it works. On an update, the update code reads the internal dtb code and replaces the 1000 MBit dtb with the 100 MBit dtb simply because they have the same internal name.
And of course it does not work.

Perhaps the developers can correct this so other users do not bump into the same bug.

Thanks.

Will be fixed.

While on that perhaps you could have a look at the ceemmc tool bug as well.
Installing Coreelec v9.2.6 ceemmc (single or dual boot) succeeds with no errors, with Coreelec v19 + ceemmc install fails:

Single boot:

Free space of ‘partition CE_FLASH’: 512MB
Warning: Could not find ‘dto’ partition!
Could not find ‘CE_STORAGE’ partition!
Failed to read size of partition ‘CE_STORAGE’!
Failed to create new partition table!
Dual boot:

Deflate need more space to compress left 22528 bytes
Failed to compress data to dtb: -1!
Could not remove node ‘/partitions’ from dtb0!
Failed to write the new partition table to eMMC!

On the same hardware, with the same Android version.

Good point….