OP has Lenovo Phaser ChromeBook which is a Google Octopus design.
My HP Blooguard is also a Google Octopus design so hardware will be identical. BIOS is MrChromebox so that is identical as well. MMC design follows a standard with two small boot blocks and an encrypted Replay Protected block. In this case, what I posted for my Google Octopus Chromebook should exactly match OP Lenovo Phaser Chromebook.
While Blooguard and Phaser will be very similar as they are based on the same baseboard (Octopus), that doesn’t mean that they use the same eMMC, or that the tuning is the same. They aren’t the same boards and don’t use the same firmware image.
I have no idea. It’s possible that the stock firmware does some tuning to the eMMC before booting that the UEFI firmware is not, would have to look at the depthcharge source
I was able to shrink the partition on /dev/sdb slightly and clone to /dev/mmcblk0 using dd in BionicPup, but it seems to not be bootable. gets to grub and i can select ubuntu, but then its reporting Buffer I/O error on dev mmcblk0, and wont load to OS
Thank you. Your MMC is a Kingston chip – I have the programming info data sheet. The Command Queue Host Controller Interface (CQHCI) is not being started by the kernel for your chip. It is likely that the kernel has put the chip in an incompatible mode.
Save the output of dmesg somewhere so I can see if there are any clues as to why the Linux kernel is disabling the mmc. There are error paths in the Kernel mmc driver that set the bus width to 0 to prevent mmc damage.
Thank you. Digesting the dmesg. It looks like the card quits responding when HS400 speed is selected. That should select a 200MHz mmc clock. The kernel driver doesn’t generally know what the host device values are for 200MHz it just requests them (efi bios call?). There should be some device recovery ops but I don’t see them in the dmesg.
Interesting. I’ve found that for whatever reason 32 bit bionic pup boots fine from a live USB and has no issues with reading and writing to the eMMC. I’ve been able to rewrite partition tables and clone the OS from the microSD, but then it’s not bootable as the OS can’t read the partitions. Perhaps it comes down to the kernel version
Bionic pup kernel version is? Does the dmesg output look clean without those CQHCI and SDHCI debug outputs? It may be what options are compiled into the kernel – post the config for the live version too.
That kernel does not have Command Queueing. No HCI debug because no error was found. The mmc driver in newer Linux kernels are generic with quirks for each host controller – 4.9.163 has individual drivers for each host controller.
HS400 mode is in the source code but fails without error/warning message. Does HS400 tuning fail for some reason? HS200 tuning appears to work. Is the clock wrong for HS400?
efi: No EFI runtime due to 32/64-bit mismatch with kernel means can’t use existing EFI calls/tables so the BionicPup 32-bit kernel is using it’s own built in tables.
Unfortunately, to debug further is going to require building Linux kernels with custom debugging checks. The only mmc kernel config option is to turn mmc debugging on. There are no mmc tuning options for the kernel config.
I’d bet that the HS400 clock is set wrong – can’t prove it.
I am going to check with my Computer Salvage guy next month to see if he has any Lenovo Phaser Chromebooks. I will will be out until then.
I’m having a crack at custom kernels but struggling with the code. Trying to disable HS400 with ChatGPTs help, but keep hitting an error at x509 certs when compiling