Prototype Qualcomm APQ8009-based board not booting

I know this is not the right place for this, but this is one of the only places where I have found people who are knowledgeable about Qualcomm-specifics.

I have a P1 prototype of the Anki Vector robot. The main board has a Micron 8GB/8Gb eMCP chip, alongside an APQ8009 (essentially an MSM8909) CPU. It is from the first ever batch of Vector boards.

This board came to me completely blank. It was never used - no bytes written on the flash. When it boots up, it goes right to QDL mode.

I have other newer prototypes which are not blank. Note that these are all unfused. I decided to take a whole flash dump from one of those and flash it onto the P1 board. This dump, when flashed onto other prototye boards which weren’t blank, boots up perfectly fine. The P1 still didn’t boot.

I am using bkerler/edl for dumping and flashing.

This is the UART output:

Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.1.2.C2-00037
S - IMAGE_VARIANT_STRING=DAASANAZA
S - OEM_IMAGE_VERSION_STRING=CRM
S - Boot Config, 0x000000e1
B -      1566 - PBL, Start
B -      4542 - bootable_media_detect_entry, Start
B -     75323 - bootable_media_detect_success, Start
B -     75327 - elf_loader_entry, Start
B -     76917 - auth_hash_seg_entry, Start
B -     77178 - auth_hash_seg_exit, Start
B -     92514 - elf_segs_hash_verify_entry, Start
B -    151601 - PBL, End
B -    165188 - SBL1, Start
B -    222924 - boot_flash_init, Start
D -        30 - boot_flash_init, Delta
B -    229512 - boot_config_data_table_init, Start
D -     19520 - boot_config_data_table_init, Delta - (0 Bytes)
B -    253638 - CDT version:3,Platform ID:8,Major ID:1,Minor ID:0,Subtype:0
B -    259860 - pm_device_init, Start
B -    263215 - pm_device_init, TEST - MSM8909 detected
B -    268613 - pm_device_init, INFO - PM8909 is selected
B -    283162 - PM_SE

PM_SE is when it resets into QDL. I assume this is because it selected the “PM8909”, when that is not what is actually on the board. The board has a PM8916 PMIC.

This is what shows in a normal UART output:
(note that later Vector models have a 4GB/4Gb eMCP Kingston chip, if it matters)

Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.1.2.C2-00037
S - IMAGE_VARIANT_STRING=DAASANAZA
S - OEM_IMAGE_VERSION_STRING=CRM
S - Boot Config, 0x000000e1
B -      1566 - PBL, Start
B -      4542 - bootable_media_detect_entry, Start
B -     43424 - bootable_media_detect_success, Start
B -     43428 - elf_loader_entry, Start
B -     44715 - auth_hash_seg_entry, Start
B -     64974 - auth_hash_seg_exit, Start
B -     79485 - elf_segs_hash_verify_entry, Start
B -    138572 - PBL, End
B -    120597 - SBL1, Start
B -    166347 - boot_flash_init, Start
D -        30 - boot_flash_init, Delta
B -    171562 - boot_config_data_table_init, Start
D -     11803 - boot_config_data_table_init, Delta - (534 Bytes)
B -    186995 - CDT version:3,Platform ID:8,Major ID:1,Minor ID:2,Subtype:8
B -    192241 - pm_device_init, Start
B -    194742 - pm_device_init, TEST - MSM8909 detected
B -    199043 - pm_device_init, INFO - PM8916 is selected
B -    212524 - PM_SET_VAL:Skip
D -     19398 - pm_device_init, Delta
B -    213896 - sbl1_ddr_set_params, Start
...

In the P1, it seems like the SBL cannot find the CDT. I don’t understand why, considering it does find a CDT when booting on a normal board with this exact flash dump.
(Minor ID:0,Subtype:0 needs to be Minor ID:2,Subtype:8. That seems to be the only thing preventing boot.)

I can attach the SBL1 partition and a CDT from a production board, if need be. I flashed the CDT from a production board to sector 0x4400 (sector 34) on the flash, but it didn’t affect anything.

The only difference (which would affect boot) I see between this board and any other Vector prototype board is that this one was completely blank when it got to me. No provisioning was done. All there was to boot to was the PBL.