<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://15h.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sbrudenell</id>
	<title>15h.org - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://15h.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sbrudenell"/>
	<link rel="alternate" type="text/html" href="https://15h.org/index.php/Special:Contributions/Sbrudenell"/>
	<updated>2026-07-27T23:33:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2941</id>
		<title>ASUS KCMA-D8</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2941"/>
		<updated>2026-07-08T22:09:18Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Kill-a-Watt Power Draw */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox motherboard&lt;br /&gt;
  |image = Asus-kcma-d8-top-64c7d3a66747d247126312.jpg&lt;br /&gt;
  |image_size = 300&lt;br /&gt;
&lt;br /&gt;
  |introduced = 2010&lt;br /&gt;
  |manufacturer = ASUS&lt;br /&gt;
&lt;br /&gt;
  |socket = 2x [[C32]]&lt;br /&gt;
  |northbridge = 1x [[AMD SR5670]]&lt;br /&gt;
  |southbridge = [[AMD SP5100]]&lt;br /&gt;
  |superio = Winbond W83667HG-A&lt;br /&gt;
  |bmc = ASPEED AST2050 (OpenBMC-compatible)&lt;br /&gt;
  |bmcflash = Removable Module&lt;br /&gt;
  |ram = 8 slots (4 channels) DDR3-1600 ECC UDIMM/RDIMM/LRDIMM&lt;br /&gt;
  |bios = 2 MiB socketed DIP-8 (W25Q16V)&lt;br /&gt;
  |formfactor = &lt;br /&gt;
SSI CEB, might fit in an ATX case that has 1 cm extra&lt;br /&gt;
  |power = 1x 8-pin EPS&lt;br /&gt;
  &lt;br /&gt;
  |slot1 = PCIe Gen2 x16&lt;br /&gt;
  |slot2 = PCIe Gen2 x16 (electrically x8)&lt;br /&gt;
  |slot3 = PCIe Gen2 x8 (electrically x4)&lt;br /&gt;
  |slot4 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot5 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot6 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot7 = ASUS [[PIKE2008]] Interface&lt;br /&gt;
&lt;br /&gt;
  |gpu = AST2050 Integrated VGA&lt;br /&gt;
  |nic = 2x Intel 82574L Gigabit&lt;br /&gt;
  |storagecontroller = SP5100&#039;s SATA2 (3.0 Gbps), no SAS unless [[PIKE2008]] installed&lt;br /&gt;
  |usbcontroller = SP5100&#039;s onboard USB 2.0&lt;br /&gt;
  |serial = One SIO-provided RS232, one virtual BMC console port&lt;br /&gt;
  |audio = None (ASUS recommended a PCI sound card)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Support for the KCMA-D8 motherboard by [[coreboot-15h]], 15h.org&#039;s downstream coreboot variant for fam15h systems, was recently completed.&lt;br /&gt;
&lt;br /&gt;
== Open Source Firmware ==&lt;br /&gt;
Open source firmware for the KCMA-D8 is provided by [[coreboot-15h]] utilizing AMD&#039;s open source AGESA and CIMx releases for platform initialization. The git repository for the firmware can be reviewed [https://git.15h.org/mrothfuss/coreboot-15h here].&lt;br /&gt;
&lt;br /&gt;
=== coreboot-15h ===&lt;br /&gt;
{{Excerpt|Coreboot-15h|[[ASUS KCMA-D8]]|hat=no}}&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* SeaBIOS does not respond to keyboards behind a USB hub.&lt;br /&gt;
* Hibernation and Suspend/Resume are unsupported.&lt;br /&gt;
* Opteron 4100 series CPUs are unsupported.&lt;br /&gt;
* ASUS MIO audio cards are untested.&lt;br /&gt;
&lt;br /&gt;
=== Flashing ===&lt;br /&gt;
To switch from the stock firmware to coreboot, [[External Flashing | external flashing]] is required. The DIP-8 flash chip is located at the bottom right corner of the board (labeled BIOS in the motherboard diagram). A 3.3V CH341a programmer can be used to flash coreboot onto the KCMA-D8. When switching to coreboot-15h from the OEM BIOS or coreboot, clearing the CMOS is required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clearing the CMOS&#039;&#039;&#039;&lt;br /&gt;
# Turn off the computer and disconnect the power cord&lt;br /&gt;
# Move the CLRTC1 jumper (located under PCI Slot 4) to positions 2-3&lt;br /&gt;
# Wait 20 seconds&lt;br /&gt;
# Restore the CLRTC1 jumper to positions 1-2&lt;br /&gt;
# Connect the power cord and turn on the computer&lt;br /&gt;
&lt;br /&gt;
== Deployed Systems ==&lt;br /&gt;
* [[Ponos]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Diagrams ==&lt;br /&gt;
[[File:KCMA-D8 Motherboard Diagram.png|frameless|400x400px]]&lt;br /&gt;
[[File:KCMA-D8 Motherboard BlockDiagram.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Components ==&lt;br /&gt;
=== Socket C32 ===&lt;br /&gt;
{{Excerpt|Socket C32|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4100 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4100 Series|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4200 and 4300 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4200 and 4300 Series|inline=yes|bold=yes}}&lt;br /&gt;
=== DDR3 Memory ===&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Slots.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
{{Excerpt|AGESA 15h|DDR3 Support|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Voltage.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
The KCMA-D8 provides an external method to override the BIOS DDR3 voltage. BIOS control is configured to select a voltage that maximizes performance for all DIMM modules attached to a socket. Forcing a different voltage may cause stability problems. Use the default jumper setting (1.5V / BIOS control) when using coreboot-15h.&lt;br /&gt;
&lt;br /&gt;
=== PCIe 2.0 Slots ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Slot&lt;br /&gt;
!Width&lt;br /&gt;
!Wired Lanes&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|PCIe1&lt;br /&gt;
|x16&lt;br /&gt;
|x16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe3&lt;br /&gt;
|x16&lt;br /&gt;
|x8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe5&lt;br /&gt;
|x8&lt;br /&gt;
|x4&lt;br /&gt;
|Disabled if PIKE is occupied.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PIKE Slots ===&lt;br /&gt;
The two PIKE slots, PIKE1 and PIKE2, are used together to attach an ASUS PIKE card to the KCMA-D8. This is required to utilize the 8 onboard SAS ports.&lt;br /&gt;
&lt;br /&gt;
The [[PIKE2008]] card is recommended for most cases. This card offers 6Gbps SAS2/SATA3 support, which is faster than the 3Gbps SATA2 provided by the SP5100. The card can be flashed to [[IT Mode]], which allows the host operating system to access the drives individually. Other PIKE cards provide 3Gbps SAS1/SATA2 support.&lt;br /&gt;
&lt;br /&gt;
The family of ASUS PIKE cards are just PCIe SAS host bus adapters with a proprietary PIKE connector. PIKE cards have no onboard SAS/SATA connectors. The motherboard&#039;s SAS ports are wired to the PIKE slots, and function as a proprietary wiring harness for the PIKE card. PIKE cards use common HBA chips (LSI or Marvell) supported in the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
PIKE cards are low-profile, and fit in a 1U chassis. The PIKE connector has a latch which anchors the card to the motherboard, so the card does not need to be fixed to the chassis. The PIKE slot is placed at the bottom of the motherboard, leaving space for e.g. an additional full-height card in a 90-degree riser.&lt;br /&gt;
&lt;br /&gt;
SeaBIOS has limited support for SAS adapters including the [[PIKE2008]]. It cannot boot from them, unless the card&#039;s option ROM is executed. Option ROMs are disabled in the pre-built releases of coreboot-15h. LinuxBoot or other payloads may be able to boot from these cards.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: On the KCMA-D8, The PIKE slot is shared with PCIe5 (only one may be used). So a standard HBA may be used in PCIe5 instead of a PIKE card, which may be better depending on your use case.&lt;br /&gt;
* Use another PCIe HBA if you want a mini-SAS connector&lt;br /&gt;
* Use an AHCI PCIe HBA if you want to boot from SATA3 drives (with SeaBIOS, without oproms) -- this is untested but should work&lt;br /&gt;
* Use a PIKE card if you are constrained on chassis space (if you need both an HBA and another full-height card in a 90-degree riser)&lt;br /&gt;
&lt;br /&gt;
=== DIP-8 Socket ===&lt;br /&gt;
The DIP-8 Socket houses the mainboard&#039;s BIOS ROM. The following DIP-8 chips are known to work with coreboot on the KCMA-D8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Model&lt;br /&gt;
!Size (MB)&lt;br /&gt;
!Size (Mb)&lt;br /&gt;
|-&lt;br /&gt;
|W25Q16BVAIG&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|W25Q64BVAIG&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|W25Q128FVIQ&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ASPEED AST2050 ===&lt;br /&gt;
{{Excerpt|ASPEED AST2050|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
Remote administration features on the AST2050 are only activated when a firmware module (ASMB4 or ASMB5) is attached to the KGPE-D16 mainboard (BMC_FW1 slot).&lt;br /&gt;
&lt;br /&gt;
=== AMD SR5670 ===&lt;br /&gt;
{{Excerpt|AMD SR5670|inline=yes|bold=yes}}&lt;br /&gt;
=== AMD SP5100 ===&lt;br /&gt;
{{Excerpt|AMD SP5100|inline=yes|bold=yes}}&lt;br /&gt;
=== Winbond W83667HG-A ===&lt;br /&gt;
{{Excerpt|Winbond W83667HG-A|hat=no}}&lt;br /&gt;
=== Nuvoton W83795G ===&lt;br /&gt;
{{Excerpt|Nuvoton W83795G/ADG|hat=no}}&lt;br /&gt;
&lt;br /&gt;
== Kill-a-Watt Power Draw ==&lt;br /&gt;
&lt;br /&gt;
[[User:Sbrudenell]] performed some power draw tests of the KCMA-D8 in various configurations. The following setup was used:&lt;br /&gt;
&lt;br /&gt;
* Firmware: [[coreboot-15h]] 2026.05.04-v4.11-5d336ff7176&lt;br /&gt;
* Power was measured using a kill-a-watt in &amp;quot;watts&amp;quot; mode&lt;br /&gt;
* PSU: Supermicro PWS-351-1H (350W 1U 80 Plus Gold)&lt;br /&gt;
* DIMMs: M386B4G70DM0-YK04 (32GB 1600MHz ECC LRDIMM)&lt;br /&gt;
* CPU: 4365 EE&lt;br /&gt;
* No case/CPU fans (an external box fan was used for cooling)&lt;br /&gt;
* No PCIe or USB peripherals, except PIKE2008 as noted&lt;br /&gt;
* An ASMB4 module using OEM firmware was used&lt;br /&gt;
* DIMMs distributed evenly across memory channels&lt;br /&gt;
* Host booted to alpine linux liveusb (kernel 6.18.35)&lt;br /&gt;
* Default cpufreq driver and governor &amp;lt;nowiki&amp;gt;acpi-cpufreq&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;schedutil&amp;lt;/nowiki&amp;gt; were used&lt;br /&gt;
* k10temp measured CPU temperature(s) at 25-30C at idle. After 10 minutes stress, they measured 40-45C&lt;br /&gt;
* CPU was stressed using `stress-ng --matrix 0`, and measured at different amounts of time since being idle&lt;br /&gt;
* The fam15_power reading in all cases was 15.47W per CPU at idle, and ~40.09W per CPU under stress&lt;br /&gt;
* With host power off (but ASMB4 online), the kill-a-watt read 4W in all cases&lt;br /&gt;
* The PIKE2008 module was used, but no drives or backplanes were connected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Kill-a-Watt Power Draw&lt;br /&gt;
|-&lt;br /&gt;
! CPUs !! DIMMs !! PIKE2008 !! Idle (W) !! CPU Stress 10s (W) !! CPU Stress 10m (W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 2 || N || 39 || 71 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 2 || N || 61 || 125 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 4 || N || 66 || 130 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 8 || N || 72 || 138 || 142&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 8 || Y || 79 || 145 || 148&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board View ==&lt;br /&gt;
Board views are available for the KCMA-D8. These files can be opened with [[OpenBoardView]].&lt;br /&gt;
&lt;br /&gt;
[[File:Asus KCMA-D8 1.02 Schematics.zip]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2940</id>
		<title>ASUS KCMA-D8</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2940"/>
		<updated>2026-07-08T22:06:45Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox motherboard&lt;br /&gt;
  |image = Asus-kcma-d8-top-64c7d3a66747d247126312.jpg&lt;br /&gt;
  |image_size = 300&lt;br /&gt;
&lt;br /&gt;
  |introduced = 2010&lt;br /&gt;
  |manufacturer = ASUS&lt;br /&gt;
&lt;br /&gt;
  |socket = 2x [[C32]]&lt;br /&gt;
  |northbridge = 1x [[AMD SR5670]]&lt;br /&gt;
  |southbridge = [[AMD SP5100]]&lt;br /&gt;
  |superio = Winbond W83667HG-A&lt;br /&gt;
  |bmc = ASPEED AST2050 (OpenBMC-compatible)&lt;br /&gt;
  |bmcflash = Removable Module&lt;br /&gt;
  |ram = 8 slots (4 channels) DDR3-1600 ECC UDIMM/RDIMM/LRDIMM&lt;br /&gt;
  |bios = 2 MiB socketed DIP-8 (W25Q16V)&lt;br /&gt;
  |formfactor = &lt;br /&gt;
SSI CEB, might fit in an ATX case that has 1 cm extra&lt;br /&gt;
  |power = 1x 8-pin EPS&lt;br /&gt;
  &lt;br /&gt;
  |slot1 = PCIe Gen2 x16&lt;br /&gt;
  |slot2 = PCIe Gen2 x16 (electrically x8)&lt;br /&gt;
  |slot3 = PCIe Gen2 x8 (electrically x4)&lt;br /&gt;
  |slot4 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot5 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot6 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot7 = ASUS [[PIKE2008]] Interface&lt;br /&gt;
&lt;br /&gt;
  |gpu = AST2050 Integrated VGA&lt;br /&gt;
  |nic = 2x Intel 82574L Gigabit&lt;br /&gt;
  |storagecontroller = SP5100&#039;s SATA2 (3.0 Gbps), no SAS unless [[PIKE2008]] installed&lt;br /&gt;
  |usbcontroller = SP5100&#039;s onboard USB 2.0&lt;br /&gt;
  |serial = One SIO-provided RS232, one virtual BMC console port&lt;br /&gt;
  |audio = None (ASUS recommended a PCI sound card)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Support for the KCMA-D8 motherboard by [[coreboot-15h]], 15h.org&#039;s downstream coreboot variant for fam15h systems, was recently completed.&lt;br /&gt;
&lt;br /&gt;
== Open Source Firmware ==&lt;br /&gt;
Open source firmware for the KCMA-D8 is provided by [[coreboot-15h]] utilizing AMD&#039;s open source AGESA and CIMx releases for platform initialization. The git repository for the firmware can be reviewed [https://git.15h.org/mrothfuss/coreboot-15h here].&lt;br /&gt;
&lt;br /&gt;
=== coreboot-15h ===&lt;br /&gt;
{{Excerpt|Coreboot-15h|[[ASUS KCMA-D8]]|hat=no}}&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* SeaBIOS does not respond to keyboards behind a USB hub.&lt;br /&gt;
* Hibernation and Suspend/Resume are unsupported.&lt;br /&gt;
* Opteron 4100 series CPUs are unsupported.&lt;br /&gt;
* ASUS MIO audio cards are untested.&lt;br /&gt;
&lt;br /&gt;
=== Flashing ===&lt;br /&gt;
To switch from the stock firmware to coreboot, [[External Flashing | external flashing]] is required. The DIP-8 flash chip is located at the bottom right corner of the board (labeled BIOS in the motherboard diagram). A 3.3V CH341a programmer can be used to flash coreboot onto the KCMA-D8. When switching to coreboot-15h from the OEM BIOS or coreboot, clearing the CMOS is required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clearing the CMOS&#039;&#039;&#039;&lt;br /&gt;
# Turn off the computer and disconnect the power cord&lt;br /&gt;
# Move the CLRTC1 jumper (located under PCI Slot 4) to positions 2-3&lt;br /&gt;
# Wait 20 seconds&lt;br /&gt;
# Restore the CLRTC1 jumper to positions 1-2&lt;br /&gt;
# Connect the power cord and turn on the computer&lt;br /&gt;
&lt;br /&gt;
== Deployed Systems ==&lt;br /&gt;
* [[Ponos]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Diagrams ==&lt;br /&gt;
[[File:KCMA-D8 Motherboard Diagram.png|frameless|400x400px]]&lt;br /&gt;
[[File:KCMA-D8 Motherboard BlockDiagram.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Components ==&lt;br /&gt;
=== Socket C32 ===&lt;br /&gt;
{{Excerpt|Socket C32|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4100 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4100 Series|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4200 and 4300 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4200 and 4300 Series|inline=yes|bold=yes}}&lt;br /&gt;
=== DDR3 Memory ===&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Slots.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
{{Excerpt|AGESA 15h|DDR3 Support|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Voltage.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
The KCMA-D8 provides an external method to override the BIOS DDR3 voltage. BIOS control is configured to select a voltage that maximizes performance for all DIMM modules attached to a socket. Forcing a different voltage may cause stability problems. Use the default jumper setting (1.5V / BIOS control) when using coreboot-15h.&lt;br /&gt;
&lt;br /&gt;
=== PCIe 2.0 Slots ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Slot&lt;br /&gt;
!Width&lt;br /&gt;
!Wired Lanes&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|PCIe1&lt;br /&gt;
|x16&lt;br /&gt;
|x16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe3&lt;br /&gt;
|x16&lt;br /&gt;
|x8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe5&lt;br /&gt;
|x8&lt;br /&gt;
|x4&lt;br /&gt;
|Disabled if PIKE is occupied.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PIKE Slots ===&lt;br /&gt;
The two PIKE slots, PIKE1 and PIKE2, are used together to attach an ASUS PIKE card to the KCMA-D8. This is required to utilize the 8 onboard SAS ports.&lt;br /&gt;
&lt;br /&gt;
The [[PIKE2008]] card is recommended for most cases. This card offers 6Gbps SAS2/SATA3 support, which is faster than the 3Gbps SATA2 provided by the SP5100. The card can be flashed to [[IT Mode]], which allows the host operating system to access the drives individually. Other PIKE cards provide 3Gbps SAS1/SATA2 support.&lt;br /&gt;
&lt;br /&gt;
The family of ASUS PIKE cards are just PCIe SAS host bus adapters with a proprietary PIKE connector. PIKE cards have no onboard SAS/SATA connectors. The motherboard&#039;s SAS ports are wired to the PIKE slots, and function as a proprietary wiring harness for the PIKE card. PIKE cards use common HBA chips (LSI or Marvell) supported in the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
PIKE cards are low-profile, and fit in a 1U chassis. The PIKE connector has a latch which anchors the card to the motherboard, so the card does not need to be fixed to the chassis. The PIKE slot is placed at the bottom of the motherboard, leaving space for e.g. an additional full-height card in a 90-degree riser.&lt;br /&gt;
&lt;br /&gt;
SeaBIOS has limited support for SAS adapters including the [[PIKE2008]]. It cannot boot from them, unless the card&#039;s option ROM is executed. Option ROMs are disabled in the pre-built releases of coreboot-15h. LinuxBoot or other payloads may be able to boot from these cards.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: On the KCMA-D8, The PIKE slot is shared with PCIe5 (only one may be used). So a standard HBA may be used in PCIe5 instead of a PIKE card, which may be better depending on your use case.&lt;br /&gt;
* Use another PCIe HBA if you want a mini-SAS connector&lt;br /&gt;
* Use an AHCI PCIe HBA if you want to boot from SATA3 drives (with SeaBIOS, without oproms) -- this is untested but should work&lt;br /&gt;
* Use a PIKE card if you are constrained on chassis space (if you need both an HBA and another full-height card in a 90-degree riser)&lt;br /&gt;
&lt;br /&gt;
=== DIP-8 Socket ===&lt;br /&gt;
The DIP-8 Socket houses the mainboard&#039;s BIOS ROM. The following DIP-8 chips are known to work with coreboot on the KCMA-D8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Model&lt;br /&gt;
!Size (MB)&lt;br /&gt;
!Size (Mb)&lt;br /&gt;
|-&lt;br /&gt;
|W25Q16BVAIG&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|W25Q64BVAIG&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|W25Q128FVIQ&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ASPEED AST2050 ===&lt;br /&gt;
{{Excerpt|ASPEED AST2050|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
Remote administration features on the AST2050 are only activated when a firmware module (ASMB4 or ASMB5) is attached to the KGPE-D16 mainboard (BMC_FW1 slot).&lt;br /&gt;
&lt;br /&gt;
=== AMD SR5670 ===&lt;br /&gt;
{{Excerpt|AMD SR5670|inline=yes|bold=yes}}&lt;br /&gt;
=== AMD SP5100 ===&lt;br /&gt;
{{Excerpt|AMD SP5100|inline=yes|bold=yes}}&lt;br /&gt;
=== Winbond W83667HG-A ===&lt;br /&gt;
{{Excerpt|Winbond W83667HG-A|hat=no}}&lt;br /&gt;
=== Nuvoton W83795G ===&lt;br /&gt;
{{Excerpt|Nuvoton W83795G/ADG|hat=no}}&lt;br /&gt;
&lt;br /&gt;
== Kill-a-Watt Power Draw ==&lt;br /&gt;
&lt;br /&gt;
[[User:Sbrudenell]] performed some power draw tests of the KCMA-D8 in various configurations. The following setup was used:&lt;br /&gt;
&lt;br /&gt;
* Power was measured using a kill-a-watt in &amp;quot;watts&amp;quot; mode&lt;br /&gt;
* PSU: Supermicro PWS-351-1H (350W 1U 80 Plus Gold)&lt;br /&gt;
* DIMMs: M386B4G70DM0-YK04 (32GB 1600MHz ECC LRDIMM)&lt;br /&gt;
* CPU: 4365 EE&lt;br /&gt;
* No case/CPU fans (an external box fan was used for cooling)&lt;br /&gt;
* No PCIe or USB peripherals, except PIKE2008 as noted&lt;br /&gt;
* An ASMB4 module using OEM firmware was used&lt;br /&gt;
* DIMMs distributed evenly across memory channels&lt;br /&gt;
* Host booted to alpine linux liveusb (kernel 6.18.35)&lt;br /&gt;
* Default cpufreq driver and governor &amp;lt;nowiki&amp;gt;acpi-cpufreq&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;schedutil&amp;lt;/nowiki&amp;gt; were used&lt;br /&gt;
* k10temp measured CPU temperature(s) at 25-30C at idle. After 10 minutes stress, they measured 40-45C&lt;br /&gt;
* CPU was stressed using `stress-ng --matrix 0`, and measured at different amounts of time since being idle&lt;br /&gt;
* The fam15_power reading in all cases was 15.47W per CPU at idle, and ~40.09W per CPU under stress&lt;br /&gt;
* With host power off (but ASMB4 online), the kill-a-watt read 4W in all cases&lt;br /&gt;
* The PIKE2008 module was used, but no drives or backplanes were connected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Kill-a-Watt Power Draw&lt;br /&gt;
|-&lt;br /&gt;
! CPUs !! DIMMs !! PIKE2008 !! Idle (W) !! CPU Stress 10s (W) !! CPU Stress 10m (W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 2 || N || 39 || 71 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 2 || N || 61 || 125 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 4 || N || 66 || 130 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 8 || N || 72 || 138 || 142&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 8 || Y || 79 || 145 || 148&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Board View ==&lt;br /&gt;
Board views are available for the KCMA-D8. These files can be opened with [[OpenBoardView]].&lt;br /&gt;
&lt;br /&gt;
[[File:Asus KCMA-D8 1.02 Schematics.zip]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=AGESA_15h&amp;diff=2935</id>
		<title>AGESA 15h</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=AGESA_15h&amp;diff=2935"/>
		<updated>2026-07-08T20:51:46Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* DDR3 Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== DDR3 Support ==&lt;br /&gt;
The vast majority of UDIMM, RDIMM, and LRDIMM DDR3 modules are expected to work without issue. So far only [[AGESA_15h#Incompatible_DDR3_Modules|one]] module has been found to be incompatible with the AGESA. The maximum RAM supported is 256 GB per CPU socket. RDIMM modules are recommended for motherboards that support them. The following is an incomplete list of tested modules. Review the deployed systems list for well tested hardware configurations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keep this table sorted by&lt;br /&gt;
1, Brand (A to Z)&lt;br /&gt;
2, ECC (No, Yes)&lt;br /&gt;
3, Type (DIMM, UDIMM, RDIMM, LRDIMM)&lt;br /&gt;
4, Capacity (Low to High)&lt;br /&gt;
5, Speed (Low to High) --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!ECC&lt;br /&gt;
!Type&lt;br /&gt;
!Capacity&lt;br /&gt;
!Speed&lt;br /&gt;
!Tester&lt;br /&gt;
|-&lt;br /&gt;
|Actica ACT4GHU72D8H1333S&lt;br /&gt;
|Yes&lt;br /&gt;
|UDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Actica ACT8GHR72Q4H1600S&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|ASint SLA302G08-GGNHC&lt;br /&gt;
|No&lt;br /&gt;
|UDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|ELPIDA EBJ81RF4BDWD-DJ-F&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Corsair TR3X6G1333C9&lt;br /&gt;
|No&lt;br /&gt;
|UDIMM&lt;br /&gt;
|2 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Crucial CT16G3ERSLD4160B&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Crucial CT32G3ELSDQ4186D&lt;br /&gt;
|Yes&lt;br /&gt;
|LRDIMM&lt;br /&gt;
|32 GB&lt;br /&gt;
|1866 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Hynix HMT42GR7AFR4A-PB&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|pkubaj&lt;br /&gt;
|-&lt;br /&gt;
|Hynix HMT84GL7MMR4A-H9&lt;br /&gt;
|Yes&lt;br /&gt;
|LRDIMM&lt;br /&gt;
|32 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Kingston KVR13N9S8/4&lt;br /&gt;
|No&lt;br /&gt;
|UDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Kingston KVR16E11/8I&lt;br /&gt;
|Yes&lt;br /&gt;
|UDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Kingston KVR1333D3D4R9S/4G&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Kingston KVR16R11D4K4/32I&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Micron MT36KSF2G72PZ-1G4E1&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Micron MT36KSF2G72PZ-1G6E1FE&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Micron MT36KSF2G72PZ-1G6N1KF&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Nanya NT4GC64B8HG0NF-DI&lt;br /&gt;
|No&lt;br /&gt;
|UDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M393B1K70DH0-YH9&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M393B1G70QH0-YK0&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M393B2K70DM0-YF8&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1066 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M393B2G70BH0-CK0&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M393B4G70BM0-YH9&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|32 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M393B4G70DM0-YH9&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|32 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M386B4G70DM0-CMA&lt;br /&gt;
|Yes&lt;br /&gt;
|LRDIMM&lt;br /&gt;
|32 GB&lt;br /&gt;
|1866 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M386B4G70DM0-YK04&lt;br /&gt;
|Yes&lt;br /&gt;
|LRDIMM&lt;br /&gt;
|32 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Sbrudenell|sbrudenell]]&lt;br /&gt;
|-&lt;br /&gt;
|Samsung M386B8G70DE0-YH93&lt;br /&gt;
|Yes&lt;br /&gt;
|LRDIMM&lt;br /&gt;
|64 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Super Talent W1333UB4GS&lt;br /&gt;
|No&lt;br /&gt;
|UDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Frantic|frantic]]&lt;br /&gt;
|-&lt;br /&gt;
|Super Talent W1333EB4GS&lt;br /&gt;
|Yes&lt;br /&gt;
|UDIMM&lt;br /&gt;
|4 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Super Talent W16RB8G4S&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|8 GB&lt;br /&gt;
|1600 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|-&lt;br /&gt;
|Super Talent W13RC16G4H&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Incompatible DDR3 Modules ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keep this table sorted by&lt;br /&gt;
1, Brand (A to Z)&lt;br /&gt;
2, ECC (No, Yes)&lt;br /&gt;
3, Type (DIMM, UDIMM, RDIMM, LRDIMM)&lt;br /&gt;
4, Capacity (Low to High)&lt;br /&gt;
5, Speed (Low to High) --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Product&lt;br /&gt;
!ECC&lt;br /&gt;
!Type&lt;br /&gt;
!Capacity&lt;br /&gt;
!Speed&lt;br /&gt;
!Tester&lt;br /&gt;
!Remarks&lt;br /&gt;
|-&lt;br /&gt;
|OWC OWC1333D3MPE16G&lt;br /&gt;
|Yes&lt;br /&gt;
|RDIMM&lt;br /&gt;
|16 GB&lt;br /&gt;
|1333 MHz&lt;br /&gt;
|[[User:Mrothfuss|mrothfuss]]&lt;br /&gt;
|Designed for Apple Machines. SPD Data was incomplete.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2934</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2934"/>
		<updated>2026-07-04T23:01:09Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DIY Modules ==&lt;br /&gt;
&lt;br /&gt;
The ASUS ASMB4 and ASMB5 modules are simply breakout boards for SPI flash. You can make these yourself.&lt;br /&gt;
&lt;br /&gt;
Some PCB schematics are available [https://github.com/DanielG/asmb4 here].&lt;br /&gt;
&lt;br /&gt;
PCBs are available for purchase [https://oshpark.com/shared_projects/jZLoDQ3Y here].&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access. The rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port. &amp;quot;Text mode&amp;quot; payloads like iPXE can thus be via serial-over-LAN, with no extra configuration in the payload.&lt;br /&gt;
&lt;br /&gt;
You may need to change the BMC&#039;s baud rate. Under OEM BMC firmware, the best way is ipmitool:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set non-volatile-bit-rate 115.2&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set volatile-bit-rate 115.2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for serial-over-LAN access:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, the BMC&#039;s network connectivity is momentarily disrupted. In particular when coreboot/SeaBIOS initialize devices, a serial-over-LAN session may get disrupted, and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them, making it impossible to boot from remote media. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot for this case.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2933</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2933"/>
		<updated>2026-07-04T22:58:23Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Quirks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access. The rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port. &amp;quot;Text mode&amp;quot; payloads like iPXE can thus be via serial-over-LAN, with no extra configuration in the payload.&lt;br /&gt;
&lt;br /&gt;
You may need to change the BMC&#039;s baud rate. Under OEM BMC firmware, the best way is ipmitool:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set non-volatile-bit-rate 115.2&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set volatile-bit-rate 115.2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for serial-over-LAN access:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, the BMC&#039;s network connectivity is momentarily disrupted. In particular when coreboot/SeaBIOS initialize devices, a serial-over-LAN session may get disrupted, and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them, making it impossible to boot from remote media. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot for this case.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2932</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2932"/>
		<updated>2026-07-04T22:55:43Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* SSH Access */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access. The rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port. &amp;quot;Text mode&amp;quot; payloads like iPXE can thus be via serial-over-LAN, with no extra configuration in the payload.&lt;br /&gt;
&lt;br /&gt;
You may need to change the BMC&#039;s baud rate. Under OEM BMC firmware, the best way is ipmitool:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set non-volatile-bit-rate 115.2&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set volatile-bit-rate 115.2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for serial-over-LAN access:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, it seems to momentarily take the BMC offline. In particular when coreboot/SeaBIOS initialize devices, the serial-over-LAN session may get disrupted and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may also be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2931</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2931"/>
		<updated>2026-07-04T22:55:26Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Serial-over-LAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access. The rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port. &amp;quot;Text mode&amp;quot; payloads like iPXE can thus be via serial-over-LAN, with no extra configuration in the payload.&lt;br /&gt;
&lt;br /&gt;
You may need to change the BMC&#039;s baud rate. Under OEM BMC firmware, the best way is ipmitool:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set non-volatile-bit-rate 115.2&lt;br /&gt;
ipmitool -H bmcip -I lanplus sol set volatile-bit-rate 115.2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for serial-over-LAN access:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, it seems to momentarily take the BMC offline. In particular when coreboot/SeaBIOS initialize devices, the serial-over-LAN session may get disrupted and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may also be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2930</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2930"/>
		<updated>2026-07-04T22:50:38Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Serial-over-LAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access. The rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port. &amp;quot;Text mode&amp;quot; payloads like iPXE can thus be via serial-over-LAN, with no extra configuration in the payload.&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for serial-over-LAN access:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, it seems to momentarily take the BMC offline. In particular when coreboot/SeaBIOS initialize devices, the serial-over-LAN session may get disrupted and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may also be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2929</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2929"/>
		<updated>2026-07-04T22:50:07Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Serial-over-LAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access. The rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port. &amp;quot;Text mode&amp;quot; payloads like iPXE can thus be via serial-over-LAN, with no extra configuration in the payload.&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, it seems to momentarily take the BMC offline. In particular when coreboot/SeaBIOS initialize devices, the serial-over-LAN session may get disrupted and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may also be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2928</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2928"/>
		<updated>2026-07-03T08:32:02Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OEM Firmware ==&lt;br /&gt;
&lt;br /&gt;
The ASMB4 and ASMB5 BMC firmware modules come with some OEM firmware.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
Partial source code for the OEM firmware is available as of writing from ASUS. It includes the source for some IPMI command handlers, so you can construct some raw OEM commands for ipmitool.&lt;br /&gt;
&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb4-ikvm/helpdesk_download/ ASMB4 source code]&lt;br /&gt;
* [https://www.asus.com/supportonly/asmb5-ikvm/helpdesk_download/ ASMB5 source code]&lt;br /&gt;
&lt;br /&gt;
=== SSH Access ===&lt;br /&gt;
&lt;br /&gt;
The OEM firmware includes SSH access, which is apparently undocumented.&lt;br /&gt;
&lt;br /&gt;
The firmware&#039;s OpenSSH version is ancient. Modern SSH clients need to enable some deprecated options to connect.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ssh -o KexAlgorithms=+diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa admin@bmc&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my firmware, the shell is busybox instead of smash. Some OEM binaries are around:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ ls /usr/local/bin/&lt;br /&gt;
IPMB              LAN               Timer             cdserver          discovery         gpiotool          peciapp           smash             webgo&lt;br /&gt;
IPMIMain          MsgHndlr          adviserd          cpConf            fdserver          mkMiniMe          pwmtachtool       snmpd&lt;br /&gt;
KCS               SOL               adviserd_capture  defaulthost       flasher           ncsiapp           rtcapp            ssmtp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There also appears to be a backdoor root password, distinct from the default &amp;quot;admin&amp;quot; account:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat /etc/shadow &lt;br /&gt;
root:$1$A17c6z5w$5OsdHjBn1pjvN6xXKDckq0:2:0:99999:7:0:99999:0&lt;br /&gt;
anonymous:$1$A17c6z5w$Ec7by585G3BAPJHK5dFCq.:2:0:99999:7:0:99999:2147482704&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-over-LAN ===&lt;br /&gt;
&lt;br /&gt;
On the [[KCMA-D8]] and [[KGPE-D16]], the SuperIO&#039;s second serial port is normally routed to the rectangular connector on the board. When any BMC firmware module is connected, this serial port is instead routed to the AST2050 for BMC access, and the rectangular connector is disabled.&lt;br /&gt;
&lt;br /&gt;
[[Coreboot-15h]] can be configured to use this second serial port. This allows serial-over-lan access to coreboot output and the SeaBIOS boot menu. SeaBIOS in turn sets up a VGA BIOS which redirects input and output to the serial port, so payloads like iPXE may also be used this way with no extra configuration.&lt;br /&gt;
&lt;br /&gt;
The following coreboot build config can be used for this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--- configs/config.asus_kcma-d8_seabios_ucode_no-oproms_2mb     2026-06-17 19:41:00.108813619 +0000&lt;br /&gt;
+++ .config     2026-07-03 07:50:20.433551464 +0000&lt;br /&gt;
@@ -89,7 +89,7 @@&lt;br /&gt;
 CONFIG_MAINBOARD_PART_NUMBER=&amp;quot;KCMA-D8&amp;quot;&lt;br /&gt;
 CONFIG_MAX_CPUS=16&lt;br /&gt;
 CONFIG_CBFS_SIZE=0x200000&lt;br /&gt;
-CONFIG_UART_FOR_CONSOLE=0&lt;br /&gt;
+CONFIG_UART_FOR_CONSOLE=1&lt;br /&gt;
 CONFIG_PAYLOAD_CONFIGFILE=&amp;quot;&amp;quot;&lt;br /&gt;
 CONFIG_MAINBOARD_VENDOR=&amp;quot;ASUS&amp;quot;&lt;br /&gt;
 CONFIG_HW_MEM_HOLE_SIZEK=0x200000&lt;br /&gt;
@@ -212,7 +212,7 @@&lt;br /&gt;
 # CONFIG_PCIEXP_ASPM is not set&lt;br /&gt;
 # CONFIG_PCIEXP_COMMON_CLOCK is not set&lt;br /&gt;
 # CONFIG_PCIEXP_CLK_PM is not set&lt;br /&gt;
-CONFIG_TTYS0_BASE=0x3f8&lt;br /&gt;
+CONFIG_TTYS0_BASE=0x2f8&lt;br /&gt;
 CONFIG_HPET_MIN_TICKS=0x37EE&lt;br /&gt;
 CONFIG_UART_PCI_ADDR=0x0&lt;br /&gt;
 # CONFIG_SOC_MEDIATEK_MT8173 is not set&lt;br /&gt;
@@ -548,7 +548,7 @@&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
-# Serial port base address = 0x3f8&lt;br /&gt;
+# Serial port base address = 0x2f8&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_921600 is not set&lt;br /&gt;
 # CONFIG_CONSOLE_SERIAL_460800 is not set&lt;br /&gt;
@@ -629,7 +629,8 @@&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_VGAONLY is not set&lt;br /&gt;
 # CONFIG_SEABIOS_OPROM_ALL is not set&lt;br /&gt;
 CONFIG_SEABIOS_BOOTORDER_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
-# CONFIG_SEABIOS_ADD_SERCON_PORT_FILE is not set&lt;br /&gt;
+CONFIG_SEABIOS_ADD_SERCON_PORT_FILE=y&lt;br /&gt;
+CONFIG_SEABIOS_SERCON_PORT_ADDR=0x2f8&lt;br /&gt;
 CONFIG_PAYLOAD_VGABIOS_FILE=&amp;quot;payloads/external/SeaBIOS/seabios/out/vgabios.bin&amp;quot;&lt;br /&gt;
 CONFIG_SEABIOS_DEBUG_LEVEL=-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shared-LAN interferes with remote functions&#039;&#039;&#039;: If the OEM BMC firmware is in &amp;quot;shared LAN&amp;quot; mode (the host and BMC share the LAN port), then any time the host (re-)initializes the ethernet controller, it seems to momentarily take the BMC offline. In particular when coreboot/SeaBIOS initialize devices, the serial-over-LAN session may get disrupted and not come back. Remote media functions are similarly disrupted long enough that SeaBIOS will not see them. Using the separate &amp;quot;management LAN&amp;quot; interface fixes these problems. It may also be that the OEM BMC firmware interacts better with OEM BIOS than it does with coreboot.&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2916</id>
		<title>ASUS KCMA-D8</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2916"/>
		<updated>2026-06-21T22:02:34Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* PIKE Slots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox motherboard&lt;br /&gt;
  |image = Asus-kcma-d8-top-64c7d3a66747d247126312.jpg&lt;br /&gt;
  |image_size = 300&lt;br /&gt;
&lt;br /&gt;
  |introduced = 2010&lt;br /&gt;
  |manufacturer = ASUS&lt;br /&gt;
&lt;br /&gt;
  |socket = 2x [[C32]]&lt;br /&gt;
  |northbridge = 1x [[AMD SR5670]]&lt;br /&gt;
  |southbridge = [[AMD SP5100]]&lt;br /&gt;
  |superio = Winbond W83667HG-A&lt;br /&gt;
  |bmc = ASPEED AST2050 (OpenBMC-compatible)&lt;br /&gt;
  |bmcflash = Removable Module&lt;br /&gt;
  |ram = 8 slots (4 channels) DDR3-1600 ECC UDIMM/RDIMM/LRDIMM&lt;br /&gt;
  |bios = 2 MiB socketed DIP-8 (W25Q16V)&lt;br /&gt;
  |formfactor = &lt;br /&gt;
SSI CEB, might fit in an ATX case that has 1 cm extra&lt;br /&gt;
  |power = 1x 8-pin EPS&lt;br /&gt;
  &lt;br /&gt;
  |slot1 = PCIe Gen2 x16&lt;br /&gt;
  |slot2 = PCIe Gen2 x16 (electrically x8)&lt;br /&gt;
  |slot3 = PCIe Gen2 x8 (electrically x4)&lt;br /&gt;
  |slot4 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot5 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot6 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot7 = ASUS [[PIKE2008]] Interface&lt;br /&gt;
&lt;br /&gt;
  |gpu = AST2050 Integrated VGA&lt;br /&gt;
  |nic = 2x Intel 82574L Gigabit&lt;br /&gt;
  |storagecontroller = SP5100&#039;s SATA2 (3.0 Gbps), no SAS unless [[PIKE2008]] installed&lt;br /&gt;
  |usbcontroller = SP5100&#039;s onboard USB 2.0&lt;br /&gt;
  |serial = One SIO-provided RS232, one virtual BMC console port&lt;br /&gt;
  |audio = None (ASUS recommended a PCI sound card)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Support for the KCMA-D8 motherboard by [[coreboot-15h]], 15h.org&#039;s downstream coreboot variant for fam15h systems, was recently completed.&lt;br /&gt;
&lt;br /&gt;
== Open Source Firmware ==&lt;br /&gt;
Open source firmware for the KCMA-D8 is provided by [[coreboot-15h]] utilizing AMD&#039;s open source AGESA and CIMx releases for platform initialization. The git repository for the firmware can be reviewed [https://git.15h.org/mrothfuss/coreboot-15h here].&lt;br /&gt;
&lt;br /&gt;
=== coreboot-15h ===&lt;br /&gt;
{{Excerpt|Coreboot-15h|[[ASUS KCMA-D8]]|hat=no}}&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* SeaBIOS does not respond to keyboards behind a USB hub.&lt;br /&gt;
* Hibernation and Suspend/Resume are unsupported.&lt;br /&gt;
* Opteron 4100 series CPUs are unsupported.&lt;br /&gt;
* ASUS MIO audio cards are untested.&lt;br /&gt;
&lt;br /&gt;
=== Flashing ===&lt;br /&gt;
To switch from the stock firmware to coreboot, [[External Flashing | external flashing]] is required. The DIP-8 flash chip is located at the bottom right corner of the board (labeled BIOS in the motherboard diagram). A 3.3V CH341a programmer can be used to flash coreboot onto the KCMA-D8. When switching to coreboot-15h from the OEM BIOS or coreboot, clearing the CMOS is required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clearing the CMOS&#039;&#039;&#039;&lt;br /&gt;
# Turn off the computer and disconnect the power cord&lt;br /&gt;
# Move the CLRTC1 jumper (located under PCI Slot 4) to positions 2-3&lt;br /&gt;
# Wait 20 seconds&lt;br /&gt;
# Restore the CLRTC1 jumper to positions 1-2&lt;br /&gt;
# Connect the power cord and turn on the computer&lt;br /&gt;
&lt;br /&gt;
== Deployed Systems ==&lt;br /&gt;
* [[Ponos]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Diagrams ==&lt;br /&gt;
[[File:KCMA-D8 Motherboard Diagram.png|frameless|400x400px]]&lt;br /&gt;
[[File:KCMA-D8 Motherboard BlockDiagram.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Components ==&lt;br /&gt;
=== Socket C32 ===&lt;br /&gt;
{{Excerpt|Socket C32|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4100 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4100 Series|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4200 and 4300 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4200 and 4300 Series|inline=yes|bold=yes}}&lt;br /&gt;
=== DDR3 Memory ===&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Slots.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
{{Excerpt|AGESA 15h|DDR3 Support|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Voltage.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
The KCMA-D8 provides an external method to override the BIOS DDR3 voltage. BIOS control is configured to select a voltage that maximizes performance for all DIMM modules attached to a socket. Forcing a different voltage may cause stability problems. Use the default jumper setting (1.5V / BIOS control) when using coreboot-15h.&lt;br /&gt;
&lt;br /&gt;
=== PCIe 2.0 Slots ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Slot&lt;br /&gt;
!Width&lt;br /&gt;
!Wired Lanes&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|PCIe1&lt;br /&gt;
|x16&lt;br /&gt;
|x16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe3&lt;br /&gt;
|x16&lt;br /&gt;
|x8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe5&lt;br /&gt;
|x8&lt;br /&gt;
|x4&lt;br /&gt;
|Disabled if PIKE is occupied.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PIKE Slots ===&lt;br /&gt;
The two PIKE slots, PIKE1 and PIKE2, are used together to attach an ASUS PIKE card to the KCMA-D8. This is required to utilize the 8 onboard SAS ports.&lt;br /&gt;
&lt;br /&gt;
The [[PIKE2008]] card is recommended for most cases. This card offers 6Gbps SAS2/SATA3 support, which is faster than the 3Gbps SATA2 provided by the SP5100. The card can be flashed to [[IT Mode]], which allows the host operating system to access the drives individually. Other PIKE cards provide 3Gbps SAS1/SATA2 support.&lt;br /&gt;
&lt;br /&gt;
The family of ASUS PIKE cards are just PCIe SAS host bus adapters with a proprietary PIKE connector. PIKE cards have no onboard SAS/SATA connectors. The motherboard&#039;s SAS ports are wired to the PIKE slots, and function as a proprietary wiring harness for the PIKE card. PIKE cards use common HBA chips (LSI or Marvell) supported in the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
PIKE cards are low-profile, and fit in a 1U chassis. The PIKE connector has a latch which anchors the card to the motherboard, so the card does not need to be fixed to the chassis. The PIKE slot is placed at the bottom of the motherboard, leaving space for e.g. an additional full-height card in a 90-degree riser.&lt;br /&gt;
&lt;br /&gt;
SeaBIOS has limited support for SAS adapters including the [[PIKE2008]]. It cannot boot from them, unless the card&#039;s option ROM is executed. Option ROMs are disabled in the pre-built releases of coreboot-15h. LinuxBoot or other payloads may be able to boot from these cards.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: On the KCMA-D8, The PIKE slot is shared with PCIe5 (only one may be used). So a standard HBA may be used in PCIe5 instead of a PIKE card, which may be better depending on your use case.&lt;br /&gt;
* Use another PCIe HBA if you want a mini-SAS connector&lt;br /&gt;
* Use an AHCI PCIe HBA if you want to boot from SATA3 drives (with SeaBIOS, without oproms) -- this is untested but should work&lt;br /&gt;
* Use a PIKE card if you are constrained on chassis space (if you need both an HBA and another full-height card in a 90-degree riser)&lt;br /&gt;
&lt;br /&gt;
=== DIP-8 Socket ===&lt;br /&gt;
The DIP-8 Socket houses the mainboard&#039;s BIOS ROM. The following DIP-8 chips are known to work with coreboot on the KCMA-D8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Model&lt;br /&gt;
!Size (MB)&lt;br /&gt;
!Size (Mb)&lt;br /&gt;
|-&lt;br /&gt;
|W25Q16BVAIG&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|W25Q64BVAIG&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|W25Q128FVIQ&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ASPEED AST2050 ===&lt;br /&gt;
{{Excerpt|ASPEED AST2050|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
Remote administration features on the AST2050 are only activated when a firmware module (ASMB4 or ASMB5) is attached to the KGPE-D16 mainboard (BMC_FW1 slot).&lt;br /&gt;
&lt;br /&gt;
=== AMD SR5670 ===&lt;br /&gt;
{{Excerpt|AMD SR5670|inline=yes|bold=yes}}&lt;br /&gt;
=== AMD SP5100 ===&lt;br /&gt;
{{Excerpt|AMD SP5100|inline=yes|bold=yes}}&lt;br /&gt;
=== Winbond W83667HG-A ===&lt;br /&gt;
{{Excerpt|Winbond W83667HG-A|hat=no}}&lt;br /&gt;
=== Nuvoton W83795G ===&lt;br /&gt;
{{Excerpt|Nuvoton W83795G/ADG|hat=no}}&lt;br /&gt;
&lt;br /&gt;
== Board View ==&lt;br /&gt;
Board views are available for the KCMA-D8. These files can be opened with [[OpenBoardView]].&lt;br /&gt;
&lt;br /&gt;
[[File:Asus KCMA-D8 1.02 Schematics.zip]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2915</id>
		<title>ASUS KCMA-D8</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASUS_KCMA-D8&amp;diff=2915"/>
		<updated>2026-06-21T07:02:09Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* PIKE Slots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox motherboard&lt;br /&gt;
  |image = Asus-kcma-d8-top-64c7d3a66747d247126312.jpg&lt;br /&gt;
  |image_size = 300&lt;br /&gt;
&lt;br /&gt;
  |introduced = 2010&lt;br /&gt;
  |manufacturer = ASUS&lt;br /&gt;
&lt;br /&gt;
  |socket = 2x [[C32]]&lt;br /&gt;
  |northbridge = 1x [[AMD SR5670]]&lt;br /&gt;
  |southbridge = [[AMD SP5100]]&lt;br /&gt;
  |superio = Winbond W83667HG-A&lt;br /&gt;
  |bmc = ASPEED AST2050 (OpenBMC-compatible)&lt;br /&gt;
  |bmcflash = Removable Module&lt;br /&gt;
  |ram = 8 slots (4 channels) DDR3-1600 ECC UDIMM/RDIMM/LRDIMM&lt;br /&gt;
  |bios = 2 MiB socketed DIP-8 (W25Q16V)&lt;br /&gt;
  |formfactor = &lt;br /&gt;
SSI CEB, might fit in an ATX case that has 1 cm extra&lt;br /&gt;
  |power = 1x 8-pin EPS&lt;br /&gt;
  &lt;br /&gt;
  |slot1 = PCIe Gen2 x16&lt;br /&gt;
  |slot2 = PCIe Gen2 x16 (electrically x8)&lt;br /&gt;
  |slot3 = PCIe Gen2 x8 (electrically x4)&lt;br /&gt;
  |slot4 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot5 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot6 = 32-bit Legacy PCI (5V)&lt;br /&gt;
  |slot7 = ASUS [[PIKE2008]] Interface&lt;br /&gt;
&lt;br /&gt;
  |gpu = AST2050 Integrated VGA&lt;br /&gt;
  |nic = 2x Intel 82574L Gigabit&lt;br /&gt;
  |storagecontroller = SP5100&#039;s SATA2 (3.0 Gbps), no SAS unless [[PIKE2008]] installed&lt;br /&gt;
  |usbcontroller = SP5100&#039;s onboard USB 2.0&lt;br /&gt;
  |serial = One SIO-provided RS232, one virtual BMC console port&lt;br /&gt;
  |audio = None (ASUS recommended a PCI sound card)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Support for the KCMA-D8 motherboard by [[coreboot-15h]], 15h.org&#039;s downstream coreboot variant for fam15h systems, was recently completed.&lt;br /&gt;
&lt;br /&gt;
== Open Source Firmware ==&lt;br /&gt;
Open source firmware for the KCMA-D8 is provided by [[coreboot-15h]] utilizing AMD&#039;s open source AGESA and CIMx releases for platform initialization. The git repository for the firmware can be reviewed [https://git.15h.org/mrothfuss/coreboot-15h here].&lt;br /&gt;
&lt;br /&gt;
=== coreboot-15h ===&lt;br /&gt;
{{Excerpt|Coreboot-15h|[[ASUS KCMA-D8]]|hat=no}}&lt;br /&gt;
&lt;br /&gt;
=== Missing Features ===&lt;br /&gt;
* SeaBIOS does not respond to keyboards behind a USB hub.&lt;br /&gt;
* Hibernation and Suspend/Resume are unsupported.&lt;br /&gt;
* Opteron 4100 series CPUs are unsupported.&lt;br /&gt;
* ASUS MIO audio cards are untested.&lt;br /&gt;
&lt;br /&gt;
=== Flashing ===&lt;br /&gt;
To switch from the stock firmware to coreboot, [[External Flashing | external flashing]] is required. The DIP-8 flash chip is located at the bottom right corner of the board (labeled BIOS in the motherboard diagram). A 3.3V CH341a programmer can be used to flash coreboot onto the KCMA-D8. When switching to coreboot-15h from the OEM BIOS or coreboot, clearing the CMOS is required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clearing the CMOS&#039;&#039;&#039;&lt;br /&gt;
# Turn off the computer and disconnect the power cord&lt;br /&gt;
# Move the CLRTC1 jumper (located under PCI Slot 4) to positions 2-3&lt;br /&gt;
# Wait 20 seconds&lt;br /&gt;
# Restore the CLRTC1 jumper to positions 1-2&lt;br /&gt;
# Connect the power cord and turn on the computer&lt;br /&gt;
&lt;br /&gt;
== Deployed Systems ==&lt;br /&gt;
* [[Ponos]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Diagrams ==&lt;br /&gt;
[[File:KCMA-D8 Motherboard Diagram.png|frameless|400x400px]]&lt;br /&gt;
[[File:KCMA-D8 Motherboard BlockDiagram.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
== Motherboard Components ==&lt;br /&gt;
=== Socket C32 ===&lt;br /&gt;
{{Excerpt|Socket C32|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4100 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4100 Series|inline=yes|bold=yes}}&lt;br /&gt;
==== AMD Opteron 4200 and 4300 Series ====&lt;br /&gt;
{{Excerpt|AMD Opteron 4200 and 4300 Series|inline=yes|bold=yes}}&lt;br /&gt;
=== DDR3 Memory ===&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Slots.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
{{Excerpt|AGESA 15h|DDR3 Support|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
[[File:KCMA-D8 Motherboard DDR3 Voltage.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
The KCMA-D8 provides an external method to override the BIOS DDR3 voltage. BIOS control is configured to select a voltage that maximizes performance for all DIMM modules attached to a socket. Forcing a different voltage may cause stability problems. Use the default jumper setting (1.5V / BIOS control) when using coreboot-15h.&lt;br /&gt;
&lt;br /&gt;
=== PCIe 2.0 Slots ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Slot&lt;br /&gt;
!Width&lt;br /&gt;
!Wired Lanes&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|PCIe1&lt;br /&gt;
|x16&lt;br /&gt;
|x16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe3&lt;br /&gt;
|x16&lt;br /&gt;
|x8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PCIe5&lt;br /&gt;
|x8&lt;br /&gt;
|x4&lt;br /&gt;
|Disabled if PIKE is occupied.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PIKE Slots ===&lt;br /&gt;
The two PIKE slots, PIKE1 and PIKE2, are used together to attach an ASUS PIKE module to the KCMA-D8. This is required to utilize the 8 onboard SAS ports.&lt;br /&gt;
&lt;br /&gt;
The family of ASUS PIKE modules are just PCIe SAS host bus adapters, using the proprietary PIKE connector. The PIKE modules have no onboard SAS connectors. The motherboard&#039;s SAS ports are wired to the PIKE slots, and function as a proprietary wiring harness for the PIKE module. PIKE modules use common HBA chips (LSI or Marvell) supported in the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
The [[PIKE2008]] card is recommended if you just want to be able to use the SAS ports. This card offers 6Gbps SAS2/SATA3 support, which is faster than the 3Gbps SATA2 provided by the SP5100. The card can be flashed to [[IT Mode]], which allows the host operating system to access the drives individually. Other PIKE cards provide 3Gbps SAS1/SATA2 support.&lt;br /&gt;
&lt;br /&gt;
SeaBIOS has limited support for the [[PIKE2008]] and all SAS adapters. It cannot boot from them, unless the card&#039;s option ROM is executed. Option ROMs are disabled in the pre-built releases of coreboot-15h.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: On the KCMA-D8, The PIKE slot is shared with a x8 PCIe slot (only one may be used). The PIKE cards are thus not necessary to maximize the capabilities of the system, and may be better or worse depending on your use case:&lt;br /&gt;
* Use a PCIe HBA if you want a mini-SAS connector&lt;br /&gt;
* Use a non-SAS SATA3 PCIe HBA if you want to boot from SATA3 drives (untested but should work)&lt;br /&gt;
&lt;br /&gt;
=== DIP-8 Socket ===&lt;br /&gt;
The DIP-8 Socket houses the mainboard&#039;s BIOS ROM. The following DIP-8 chips are known to work with coreboot on the KCMA-D8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Model&lt;br /&gt;
!Size (MB)&lt;br /&gt;
!Size (Mb)&lt;br /&gt;
|-&lt;br /&gt;
|W25Q16BVAIG&lt;br /&gt;
|2&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|W25Q64BVAIG&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|W25Q128FVIQ&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ASPEED AST2050 ===&lt;br /&gt;
{{Excerpt|ASPEED AST2050|inline=yes|bold=yes}}&lt;br /&gt;
&lt;br /&gt;
Remote administration features on the AST2050 are only activated when a firmware module (ASMB4 or ASMB5) is attached to the KGPE-D16 mainboard (BMC_FW1 slot).&lt;br /&gt;
&lt;br /&gt;
=== AMD SR5670 ===&lt;br /&gt;
{{Excerpt|AMD SR5670|inline=yes|bold=yes}}&lt;br /&gt;
=== AMD SP5100 ===&lt;br /&gt;
{{Excerpt|AMD SP5100|inline=yes|bold=yes}}&lt;br /&gt;
=== Winbond W83667HG-A ===&lt;br /&gt;
{{Excerpt|Winbond W83667HG-A|hat=no}}&lt;br /&gt;
=== Nuvoton W83795G ===&lt;br /&gt;
{{Excerpt|Nuvoton W83795G/ADG|hat=no}}&lt;br /&gt;
&lt;br /&gt;
== Board View ==&lt;br /&gt;
Board views are available for the KCMA-D8. These files can be opened with [[OpenBoardView]].&lt;br /&gt;
&lt;br /&gt;
[[File:Asus KCMA-D8 1.02 Schematics.zip]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2914</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2914"/>
		<updated>2026-06-17T19:09:01Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Compiling from source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python cpio&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
	<entry>
		<id>https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2913</id>
		<title>ASPEED AST2050</title>
		<link rel="alternate" type="text/html" href="https://15h.org/index.php?title=ASPEED_AST2050&amp;diff=2913"/>
		<updated>2026-06-17T19:07:59Z</updated>

		<summary type="html">&lt;p&gt;Sbrudenell: /* Compiling from source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASPEED AST2050|AST2050]] chipset is an Integrated Remote Management Processor introduced by ASPEED&lt;br /&gt;
Technology Inc. It is a high performance and highly integrated SOC device designed to support various&lt;br /&gt;
management functions required for server platforms which require baseboard management, virtual&lt;br /&gt;
storage functions, and/or KVM-over-IP functions.&lt;br /&gt;
&lt;br /&gt;
Open source support for the [[ASPEED AST2050|AST2050]]&#039;s VGA output (text-mode only) was implemented in coreboot by Raptor Engineering&amp;lt;ref&amp;gt;https://review.coreboot.org/c/coreboot/+/11937&amp;lt;/ref&amp;gt;. Full VGA output support requires ASPEED&#039;s closed source VGABIOS to be included in the coreboot rom. A rudimentary port of [[OpenBMC]] was also developed by Raptor Engineering&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Documentation&#039;&#039;&#039;&lt;br /&gt;
* [https://15h.org/images/1/18/AST2050_Data_Sheet.pdf AST2050 Datasheet]&lt;br /&gt;
* [https://15h.org/images/6/64/Infineon-s25fl128p-128-mbit-3.0-v-flash-memory-datasheet-en.pdf S25FL128P Datasheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenBMC ==&lt;br /&gt;
OpenBMC was developed by [[Raptor Engineering]] for the [[KGPE-D16]] and [[KCMA-D8]] motherboards&amp;lt;ref&amp;gt;https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php&amp;lt;/ref&amp;gt; as an open source replacement to the closed source BMC firmware.&lt;br /&gt;
&lt;br /&gt;
This version of OpenBMC for the AST2050 has had various components updated, removed, or reconfigured. Broken links to fetch dependencies have been fixed (as of 20251208). Review the git commits for more details.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updated Components&#039;&#039;&#039;&lt;br /&gt;
* OpenSSH (from 6.7p1 to 8.7p1)&lt;br /&gt;
* OpenSSL (from 1.0.2d to 1.0.2r)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Removed Components&#039;&#039;&#039;&lt;br /&gt;
* fan-ctrl (inferior to native fan control)&lt;br /&gt;
* rest-api (insecure HTTP access to the BMC)&lt;br /&gt;
* ipmid (unsupported)&lt;br /&gt;
* sms-kcsd (unsupported)&lt;br /&gt;
* lmsensors (unsupported)&lt;br /&gt;
* flashrom (unsupported)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration Changes&#039;&#039;&#039;&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-connectivity/openssh/openssh/sshd_config&lt;br /&gt;
** Password Authentication Disabled&lt;br /&gt;
* ast2050-yocto-poky/meta/recipes-core/base-files/base-files_3.0.14.bb&lt;br /&gt;
** Configured to install ast2050-yocto-poky/build/downloads/root_authorized_keys to /home/root/.ssh/authorized_keys&lt;br /&gt;
* ast2050-yocto-openbmc/meta-raptor/meta-asus/recipes-utils/openbmc-utils/openbmc-utils_%.bbappend&lt;br /&gt;
** Disabled autostarting the mainboard&lt;br /&gt;
* ast2050-yocto-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
** Set the networking hostname to &#039;openbmc&#039;&lt;br /&gt;
&lt;br /&gt;
=== Compiling from source ===&lt;br /&gt;
Compilation has been tested on Debian 9.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Debian 9 Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm python&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Create the missing /etc/perl/find.pl file&#039;&#039;&#039;&amp;lt;ref&amp;gt;https://blog.kempj.co.uk/2015/09/missing-find-pl-compiling-oe/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
warn &amp;quot;Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# This library is deprecated and unmaintained. It is included for&lt;br /&gt;
# compatibility with Perl 4 scripts which may use it, but it will be&lt;br /&gt;
# removed in a future version of Perl. Please use the File::Find module&lt;br /&gt;
# instead.&lt;br /&gt;
&lt;br /&gt;
# Usage:&lt;br /&gt;
#	require &amp;quot;find.pl&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
#	&amp;amp;find(&#039;/foo&#039;,&#039;/bar&#039;);&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted { ... }&lt;br /&gt;
#		where wanted does whatever you want.  $dir contains the&lt;br /&gt;
#		current directory name, and $_ the current filename within&lt;br /&gt;
#		that directory.  $name contains &amp;quot;$dir/$_&amp;quot;.  You are cd&#039;ed&lt;br /&gt;
#		to $dir when the function is called.  The function may&lt;br /&gt;
#		set $prune to prune the tree.&lt;br /&gt;
#&lt;br /&gt;
# For example,&lt;br /&gt;
#&lt;br /&gt;
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune&lt;br /&gt;
#&lt;br /&gt;
# corresponds to this&lt;br /&gt;
#&lt;br /&gt;
#	sub wanted {&lt;br /&gt;
#	    /^\.nfs.*$/ &amp;amp;&amp;amp;&lt;br /&gt;
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &amp;amp;&amp;amp;&lt;br /&gt;
#	    int(-M _) &amp;gt; 7 &amp;amp;&amp;amp;&lt;br /&gt;
#	    unlink($_)&lt;br /&gt;
#	    ||&lt;br /&gt;
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &amp;amp;&amp;amp;&lt;br /&gt;
#	    $dev &amp;lt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
#	    ($prune = 1);&lt;br /&gt;
#	}&lt;br /&gt;
#&lt;br /&gt;
# Set the variable $dont_use_nlink if you&#039;re using AFS, since AFS cheats.&lt;br /&gt;
&lt;br /&gt;
use File::Find ();&lt;br /&gt;
&lt;br /&gt;
*name		= *File::Find::name;&lt;br /&gt;
*prune		= *File::Find::prune;&lt;br /&gt;
*dir		= *File::Find::dir;&lt;br /&gt;
*topdir		= *File::Find::topdir;&lt;br /&gt;
*topdev		= *File::Find::topdev;&lt;br /&gt;
*topino		= *File::Find::topino;&lt;br /&gt;
*topmode	= *File::Find::topmode;&lt;br /&gt;
*topnlink	= *File::Find::topnlink;&lt;br /&gt;
&lt;br /&gt;
sub find {&lt;br /&gt;
    &amp;amp;File::Find::find(\&amp;amp;wanted, @_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuring and Compiling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
### Fetch Sources&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky&lt;br /&gt;
&lt;br /&gt;
cd ast2050-yocto-poky&lt;br /&gt;
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded&lt;br /&gt;
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc&lt;br /&gt;
&lt;br /&gt;
### Setup Build&lt;br /&gt;
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf&lt;br /&gt;
source oe-init-build-env&lt;br /&gt;
cp -Rp ../local-aspeed.conf conf/local.conf&lt;br /&gt;
touch conf/sanity.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set root password&lt;br /&gt;
# The default root password is 0penBmc.&lt;br /&gt;
# Generate a new encrypted password string:&lt;br /&gt;
printf &amp;quot;%q\n&amp;quot; $(openssl passwd -1)&lt;br /&gt;
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.&lt;br /&gt;
vim conf/local.conf&lt;br /&gt;
&lt;br /&gt;
### Optional: Set the networking hostname&lt;br /&gt;
# The default is openbmc&lt;br /&gt;
vim ../meta-openbmc/common/recipes-connectivity/dhcp/files/dhclient.conf&lt;br /&gt;
&lt;br /&gt;
### Required: Add your SSH key(s)&lt;br /&gt;
vim ./downloads/root_authorized_keys&lt;br /&gt;
&lt;br /&gt;
### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME&lt;br /&gt;
bitbake asus-image&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flashing the BMC ===&lt;br /&gt;
The BMC module can be flashed either internally or externally. Users report mixed results when flashing internally using [[Raptor Engineering]]&#039;s method.&lt;br /&gt;
&lt;br /&gt;
==== External Flashing ====&lt;br /&gt;
[[File:AST2050 BMC Flash.png|frameless|400x400px]]&lt;br /&gt;
&lt;br /&gt;
Connect the BMC module&#039;s S25FL128P chip to an [[External Flashing|external flasher]] using the 8 pins that are shared between the SOIC16 and other SOIC8 chips (CS, DO, WP, GND, VCC, HOLD, CLK, and DI). Make sure your flasher is set to output 3.3V when flashing the BMC module.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=ch341a_spi -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Flashing ====&lt;br /&gt;
[[Raptor Engineering]] released a custom version of [https://git.raptorengineering.com/git/ast2050-flashrom flashrom] that can flash the BMC module from an operating system running on the [[KGPE-D16]] or [[KCMA-D8]] motherboard.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
flashrom --programmer=&amp;quot;ast1100:spibus=2&amp;quot; -c &amp;quot;S25FL128P......0&amp;quot; --verbose -w flash-asus-DATETIME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the BMC ===&lt;br /&gt;
Scan your network for a new device listening on port 22, then login with ssh. It can take up to 7 minutes for sshd to start on the first boot.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
nmap -p 22 10.0.0.1/24&lt;br /&gt;
ssh root@IPADDR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set the ethernet MAC address to match the one printed on the BMC module. The BMC IP will likely change after setting the MAC address and rebooting.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
fw_setenv ethaddr 01:23:45:67:89:ab&lt;br /&gt;
reboot&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access COM2 with screen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
screen -h 0 /dev/ttyS0 115200&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the asus_power.sh command to view/change power states.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
asus_power.sh status&lt;br /&gt;
asus_power.sh on&lt;br /&gt;
asus_power.sh reset&lt;br /&gt;
asus_power.sh off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Tips ===&lt;br /&gt;
Delete a previously built recipe&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
bitbake -c cleansstate &amp;lt;recipe&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Delete all previously built components&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
rm -rf sstate-cache/ tmp/&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sbrudenell</name></author>
	</entry>
</feed>