Hello Elly,

Thank you for your reply, and sorry my response has taken a while!

>
Most (non-server) Intel SoCs are supported by coreboot, from ~Core 2 Duo up to 
PantherLake (which *should* be released at CES 2026 in two days, but can't say 
more than that).

BayTrail and ApolloLake that you mentioned are fully supported, but don't have 
great documentation. They were used by Google in Chromebooks, so that should 
give you some ideas as to where to start.


This sounds encouraging!

One thing you should keep in mind is that APL/GLK SoCs are a bit "cursed".

They can boot from SPI... as well as eMMC (presumably they've been developed 
for automotive sector) and mFIT will nag you to fuse them with BootGuard 
(similar to BootROM verifying PBL with vendor's keys).

All of these boards boot from SPI Flash, although some do have eMMC, but that is only used for bulk storage (these are embedded modules, so we only use eMMC or NVMe for filesystems).

I will initially be concentrating on 2 modules, one with a baytrail soc and the other with elkhartlake, and both of these only have SPI Flash and eMMC - the Apollo Lake module I mentioned in my first email has lower priority at this time.


All APL systems I've seen in the wild were fused (with the exception of 
Chromebooks), but it will not be a problem if you have signing keys.

Could you tell me how would I detect if the devices have been fused?



As for unbricking/developing: Currently the cheapest/best SPI flashers you can 
get your hands on is either a Raspberry Pi Pico, or CH347.

They do however have a limitation of being 3.3V, so you will likely need to buy 
a 1.8V logic shifter as all APL systems I've seen in the wild used 1.8V SPI.

All of our boards are using 3v3 SPI flash devices.


As for recommendations, DediProg EM100 is the current "industry standard", but 
it's... not cheap.

Last time I've checked it cost close to 1000EUR/piece. It has a Spartan Xilinx 
6 FPGA inside (newer models likely have a Spartan 7) and supports both 1.8 and 
3.3V SPI chips.


I have just ordered an EM100. On all of these modules, the flash devices are located on the bottom of the board and there is only about 5mm clearance between the module and the carrier board (which has to be present at run-time), so it is tricky to connect to the flash devices themselves, however, there is a debug board available from the manufacturer which connects to a 40-pin connector on the module which exposes 7-segment displays for port-80/81, as well as a 14-pin SPI programmer interface designed for the Dediprog SF100 flash programmer, but I am sure I could make an adapter for this to connect to am EM100.

I watched a presentation of yours at 38c3 and started trying to poke around with the intelmetool.

On the baytrail module, I see the following output:

MEI found: [8086:f18] Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine

ME Status   : 0x1f0000d5
ME Status 2 : 0x60000000

ME: FW Partition Table      : OK
ME: Bringup Loader Failure  : NO
ME: Firmware Init Complete  : NO
ME: Manufacturing Mode      : YES
ME: Boot Options Present    : YES
ME: Update In Progress      : NO
ME: Current Working State   : Normal
ME: Current Operation State : (null)
ME: Current Operation Mode  : Normal
ME: Error Code              : No Error
ME: Progress Phase          : Host Communication
ME: Power Management Event  : Clean Moff->Mx wake
ME: Progress Phase State    : Host communication established

ME: Extend Feature not present

ME: circular buffer full, resetting...
ME: message (4) too large for buffer (255)
ME: GET FW VERSION message failed

I am guessing that because this board is in manufacturing mode, it is probably not locked down at all?

On the elkhartlake module, I see something completely different...

Initially intelmetool was saying that it could not find the management engine, but then I looked in the source, and noticed that elkhartlake is not even supported, so I found the ME device using lspci:

00:16.0 Communication controller: Intel Corporation Elkhart Lake Management Engine Interface (rev 11)

And then using the -n option of lspci I discovered 00:16.0 0780: 8086:4b70 (rev 11), so I added this deviceid to the source of intelmetool and with intelmetool -m -d, I see:

ME PCI device is hidden
RCBA addr: 0x00000000
Can't find ME PCI device

I have not dug much deeper, but at this stage I assume this will be a bit more of a challenge!

I now have all of the coreboot tools built under Yocto and installed on my devices, so I will continue probing to see what else I can gather from these boards.

- Hamish
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to