0

I am building a Windows 10 IoT Core image for a Raspberry Pi 3B and it needs to contain a custom config.txt file at the root of the EFIESP partition.

I have edited the MyApp.FilesAndRegKeys.wm.xml file to include the edited config.txt file like so:

<onecorePackageInfo
    targetPartition="EFIESP"
    releaseType="Production"
    ownerType="OEM" />
<files>
    <file
        destinationDir="$(runtime.bootDrive)"
        source="config.txt"
        name="config.txt" />
</files>

But the buildimage MyApp test command gives a file collision error:

ERROR: [00:00:01] onecore\base\cbs\mobile\iuvalidator\packagevalidationrules.cpp, PackageValidationRules::Rule_DetectFileCollisions, line 716, Error , Error - File collision detected, file '\config.txt' found in packages 'MyOEMName.MyApp.FilesAndRegKeys' and 'RASPBERRYPI.RPi2.BootFirmware'.

If I change name="config.txt" to name="config2.txt" then there is no error and the file is created successfully. But I want it to replace the existing file, not create a new one. I don't see the original config.txt file anywhere in C:\IoT-ADK-AddonKit or C:\BSP so I'm not sure how to edit this existing package or force the replacement to occur.

Coder6841
  • 1,171
  • 2
  • 13
  • 24

1 Answers1

1

If you want to edit the config.txt file, you can edit it after the image build. Insert the SD card that has the image flashed. You will find the config.txt file in EFIESP drive like this:

enter image description here

enter image description here

Reference: "R-Pi configuration file" and "CONFIG.TXT"

Update: Building IoT Core image with the modified config.txt file.

The config.txt is provided in a package (RASPBERRYPI.RPi2.BootFirmware.cab). So we need to regenerate the RASPBERRYPI.RPi2.BootFirmware.cab with the modified config.txt file. You can follow these steps:

  1. Get all files needed to build the RASPBERRYPI.RPi2.BootFirmware.cab and copy them to a folder, for example, D:\NewCab. You can find them in EFIESP drive(You can find EFIESP drive in the flashed SD card):

enter image description here

  1. Edit the config.txt.
  2. Generate the new CAB file using this RPi_UEFI.pkg.xml file:

<?xml version="1.0" encoding="utf-8"?>

<!--
Copyright (c) Microsoft Corporation.  All rights reserved.
-->
<Package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  Owner="RASPBERRYPI"
  Component="RPi2"
  SubComponent="BootFirmware"
  OwnerType="OEM"
  ReleaseType="Production"
  Platform="RPi2"
  Partition="EFIESP"
  BinaryPartition="false"
  xmlns="urn:Microsoft.WindowsPhone/PackageSchema.v8.00">
  <Components>
    <OSComponent>
      <Files>

        <File
          Source="bootcode.bin"
          Name="bootcode.bin"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="config.txt"
          Name="config.txt"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup.dat"
          Name="fixup.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup_cd.dat"
          Name="fixup_cd.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup_x.dat"
          Name="fixup_x.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="kernel.img"
          Name="kernel.img"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="LICENCE.broadcom"
          Name="LICENCE.broadcom"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start.elf"
          Name="start.elf"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start_cd.elf"
          Name="start_cd.elf"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start_x.elf"
          Name="start_x.elf"
          DestinationDir="$(runtime.root)"/>

      </Files>
    </OSComponent>
  </Components>
</Package>
  1. Start IoTCoreShell-arm.cmd in the iot-adk-addonkit and navigate to the path D:\NewCab and run the following command:

    pkggen RPi_UEFI.pkg.xml

    You will get a RASPBERRYPI.RPi2.BootFirmware.cab in the working folder.

  2. Use the new generate RASPBERRYPI.RPi2.BootFirmware.cab replace the default one in this path C:\Program Files (x86)\Windows Kits\10\MSPackages\retail\arm\fre

After that when you build image the edited config.txt will be added in.

Rita Han
  • 9,574
  • 1
  • 11
  • 24
  • Manually editing the file like this would work but I would like to have this occur as part of an automated process so I don't need to perform a manual step every time I finish flashing an image. – Coder6841 Jul 31 '18 at 03:12
  • 1
    @Coder6841 Ok. I got it. I'll contact with related engineer internal and update to you ASAP. – Rita Han Jul 31 '18 at 03:14
  • 1
    @Coder6841 I find the solution to your issue. Please check my updated answer. – Rita Han Aug 03 '18 at 06:52