<div dir="ltr"><div><div>I have a Dell Chromebook 11 (Google codename 'Wolf') which I'd like to install a custom coreboot ROM on. Although John Lewis provides ROMs here <a href="https://johnlewis.ie/custom-chromebook-firmware/rom-download/">https://johnlewis.ie/custom-chromebook-firmware/rom-download/</a>, I'd rather not use them for a few reasons:</div><div><br></div><div>1) It's replacing one 'closed' ROM with another, in the sense it's from a 3rd party with no public repo or build scripts. Although it's possible to extract the coreboot config used to build them, it's not possible to reproduce and modify the payloads.</div><div>2) I don't need his closed 'Jeltka' payload.</div><div>3) I'd like to experiment with other payloads, custom splash screens etc.</div><div>4) I wouldn't learn anything, and I'm interested!</div><div><br></div><div>With that in mind, this guide here looked ideal (although there's no date on it): <a href="https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/upstream-coreboot-on-intel-haswell-chromebook">https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/upstream-coreboot-on-intel-haswell-chromebook</a></div><div><br></div><div>However, that prompted some questions, which I'm hoping someone here might be able to help with. (I did ask in the #chromimum-os IRC channel, but they suggested Google coreboot developers would be more likely to help here).</div><div><br></div><div>1) What blobs do I use?</div><div><br></div><div>Although the guide sensibly says to backup the existing bios with 'flashrom -r', it also says to extract a bios.bin from /usr/sbin/chromeos-firwmwareupdate (I've posted details of both at the end). From the latter, it goes on to get you to extract four blobs:</div><div><br></div><div>- SPI Descriptor</div><div>- Management Engine</div><div>- MRC</div><div>- VBIOS</div><div><br></div><div>The first discrepancy is that the guide says the 'Management Engine firmware' is only in the latter, but I was able to use ifdtool on both images to extract the same set of three files. The flashregion_0_flashdescriptor.bin files were identical, though the other two were different despite being the same size.</div><div><br></div><div>The other thing is there's no reason given as to why one would use the MRC and VBIOS blobs from the extract, rather than the backup. Curiously, they are slightly different sizes (again details below). Looking at the config it seems the extracted bios image was built with from a Google coreboot fork four months older than the one backed up from the machine.</div><div><br></div><div><br></div><div>2) Which mainboard do I use for the Dell Chromebook 11?</div><div><br></div><div>Assuming I have the correct four proprietary blobs, the next thing is choosing the right mainboard. The guide I link to mentions suggests 'Falco', but I don't see how, without knowing the target, such a suggestion could be meaningful?</div><div><br></div><div>Looking here <a href="https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices">https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices</a> Falco appears to be unique to the HP Chromebook 14. The mainboard codename for my Chromebook is 'Wolf', and that's not in coreboot upstream.</div><div><br></div><div>Comparing 'src/mainboard/google' in Google's fork, and coreboot upstream:</div><div><br></div><div><a href="http://review.coreboot.org/gitweb?p=coreboot.git;a=tree;f=src/mainboard/google;h=60045af24d9760f7a52555a5ef6ef3fdc77676b7;hb=HEAD">http://review.coreboot.org/gitweb?p=coreboot.git;a=tree;f=src/mainboard/google;h=60045af24d9760f7a52555a5ef6ef3fdc77676b7;hb=HEAD</a></div><div><a href="https://chromium.googlesource.com/chromiumos/third_party/coreboot/+/firmware-wolf-4389.24.B/src/mainboard/google/">https://chromium.googlesource.com/chromiumos/third_party/coreboot/+/firmware-wolf-4389.24.B/src/mainboard/google/</a></div><div><br></div><div><br></div><div>It seems there is at least some attempt to merge upstream, and yet wolf isn't there. Is there a particular reason some mainboards are missing? Did Google stop doing so for some reason?</div><div><br></div><div>I also note the Google keep the coreboot config source controlled: <a href="https://chromium.googlesource.com/chromiumos/third_party/coreboot/+/firmware-wolf-4389.24.B/configs/config.wolf">https://chromium.googlesource.com/chromiumos/third_party/coreboot/+/firmware-wolf-4389.24.B/configs/config.wolf</a></div><div><br></div><div><br></div><div>Thanks</div><div><br></div><div>Marcos</div><div><br></div><div><br></div><div>--- Some further ROM details ---</div><div><br></div><div>bios extracted with 'flashrom -r' from my Dell Chromebook 11:</div><div><br></div><div>chromebook11.rom: 8192 kB, bootblocksize 3144, romsize 8388608, offset 0x700000</div><div>alignment: 64 bytes, architecture: x86</div><div><br></div><div>Name                           Offset     Type         Size</div><div>cmos_layout.bin                0x700000   cmos_layout  1164</div><div>pci8086,0406.rom               0x7004c0   optionrom    65536</div><div>cpu_microcode_blob.bin         0x710500   microcode    41024</div><div>config                         0x71a5c0   raw          5536</div><div>fallback/vboot                 0x71bbc0   stage        15083</div><div>(empty)                        0x71f700   null         2136</div><div>fallback/romstage              0x71ff80   stage        42497</div><div>fallback/coreboot_ram          0x72a600   stage        91450</div><div>fallback/payload               0x740b80   payload      54898</div><div>u-boot.dtb                     0x74e240   mrc_cache    7919</div><div>(empty)                        0x750180   null         327192</div><div>mrc.bin                        0x79ffc0   spd          190180</div><div>(empty)                        0x7ce700   null         120984</div><div>spd.bin                        0x7ebfc0   spd          1536</div><div>(empty)                        0x7ec600   null         77144</div><div><br></div><div>Extracting config shows "# This image was built using git revision 52034fc1537d4a38e792e700cbc8e9dd1fc36a9c", which is a commit hash from Google's fork:</div><div><br></div><div>commit cef55018e4e936af9a758675353e332df4d9d1a6</div><div>Author: David Wu <<a href="mailto:David_Wu@quantatw.com">David_Wu@quantatw.com</a>></div><div>Date:   Tue Apr 29 12:59:04 2014 -0700</div><div><br></div><div><br></div><div>bios extracted from the chromeos-firwmwareupdate utility (which on my machine is a 7.7M binary built on 27th Apr this year):</div><div><br></div><div>bios.bin: 8192 kB, bootblocksize 3144, romsize 8388608, offset 0x700000</div><div>alignment: 64 bytes, architecture: x86</div><div><br></div><div>Name                           Offset     Type         Size</div><div>cmos_layout.bin                0x700000   cmos_layout  1164</div><div>pci8086,0406.rom               0x7004c0   optionrom    65536</div><div>cpu_microcode_blob.bin         0x710500   microcode    43072</div><div>config                         0x71adc0   raw          5536</div><div>fallback/vboot                 0x71c3c0   stage        15083</div><div>(empty)                        0x71ff00   null         88</div><div>fallback/romstage              0x71ff80   stage        42497</div><div>fallback/coreboot_ram          0x72a600   stage        91491</div><div>fallback/payload               0x740bc0   payload      54898</div><div>u-boot.dtb                     0x74e280   mrc_cache    7919</div><div>(empty)                        0x7501c0   null         327128</div><div>mrc.bin                        0x79ffc0   spd          191020</div><div>(empty)                        0x7cea40   null         120152</div><div>spd.bin                        0x7ebfc0   spd          1536</div><div>(empty)                        0x7ec600   null         77144</div><div><br></div><div>Extracting config shows "# This image was built using git revision 52034fc1537d4a38e792e700cbc8e9dd1fc36a9c", which is also a commit hash from Google's fork, but older:</div><div><br></div><div>commit 52034fc1537d4a38e792e700cbc8e9dd1fc36a9c</div><div>Author: Marc Jones <<a href="mailto:marc.jones@se-eng.com">marc.jones@se-eng.com</a>></div><div>Date:   Thu Dec 12 13:13:30 2013 -0700</div><div><br></div><div><br></div><div>Differences in SPI/ME from backed up ROM and the one extracted from firmwareupdate tool:</div><div><br></div><div>marcosscriven@ubuntuvm:~/coreboot/util/ifdtool$ ls -altr frombackup/</div><div>total 8200</div><div>-rw-r--r-- 1 marcosscriven marcosscriven 6291456 May  8 19:20 flashregion_1_bios.bin</div><div>-rw-r--r-- 1 marcosscriven marcosscriven    4096 May  8 19:20 flashregion_0_flashdescriptor.bin</div><div>-rw-r--r-- 1 marcosscriven marcosscriven 2093056 May  8 19:20 flashregion_2_intel_me.bin</div><div>drwxrwxr-x 2 marcosscriven marcosscriven    4096 May  8 19:20 .</div><div>drwxrwxr-x 4 marcosscriven marcosscriven    4096 May  8 19:21 ..</div><div><br></div><div>marcosscriven@ubuntuvm:~/coreboot/util/ifdtool$ ls -altr fromextract/</div><div>total 8200</div><div>-rw-r--r-- 1 marcosscriven marcosscriven 6291456 May  8 19:20 flashregion_1_bios.bin</div><div>-rw-r--r-- 1 marcosscriven marcosscriven    4096 May  8 19:20 flashregion_0_flashdescriptor.bin</div><div>-rw-r--r-- 1 marcosscriven marcosscriven 2093056 May  8 19:20 flashregion_2_intel_me.bin</div><div>drwxrwxr-x 4 marcosscriven marcosscriven    4096 May  8 19:21 ..</div><div>drwxrwxr-x 2 marcosscriven marcosscriven    4096 May  8 19:21 .</div><div><br></div><div>marcosscriven@ubuntuvm:~/coreboot/util/ifdtool$ diff frombackup/ fromextract/</div><div>Binary files frombackup/flashregion_1_bios.bin and fromextract/flashregion_1_bios.bin differ</div><div>Binary files frombackup/flashregion_2_intel_me.bin and fromextract/flashregion_2_intel_me.bin differ</div></div><div><br></div></div>