ASPEED AST2050

From 15h.org
Revision as of 06:22, 9 December 2025 by Mrothfuss (talk | contribs) (OpenBMC)
Jump to navigation Jump to search

The AST2050 chipset is an Integrated Remote Management Processor introduced by ASPEED Technology Inc. It is a high performance and highly integrated SOC device designed to support various management functions required for server platforms which require baseboard management, virtual storage functions, and/or KVM-over-IP functions.

Open source support for the AST2050's VGA output (text-mode only) was implemented in coreboot by Raptor Engineering[1]. Full VGA output support requires ASPEED's closed source VGABIOS to be included in the coreboot rom. A rudimentary port of OpenBMC was also developed by Raptor Engineering[2].

Official Documentation

OpenBMC

Compiling from source

Compilation has been tested on Debian 9.

Debian 9 Dependencies

apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib autotools-dev build-essential chrpath socat libsdl1.2-dev xterm

Create the missing /etc/perl/find.pl file[3]

warn "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";

# This library is deprecated and unmaintained. It is included for
# compatibility with Perl 4 scripts which may use it, but it will be
# removed in a future version of Perl. Please use the File::Find module
# instead.

# Usage:
#	require "find.pl";
#
#	&find('/foo','/bar');
#
#	sub wanted { ... }
#		where wanted does whatever you want.  $dir contains the
#		current directory name, and $_ the current filename within
#		that directory.  $name contains "$dir/$_".  You are cd'ed
#		to $dir when the function is called.  The function may
#		set $prune to prune the tree.
#
# For example,
#
#   find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune
#
# corresponds to this
#
#	sub wanted {
#	    /^\.nfs.*$/ &&
#	    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
#	    int(-M _) > 7 &&
#	    unlink($_)
#	    ||
#	    ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
#	    $dev < 0 &&
#	    ($prune = 1);
#	}
#
# Set the variable $dont_use_nlink if you're using AFS, since AFS cheats.

use File::Find ();

*name		= *File::Find::name;
*prune		= *File::Find::prune;
*dir		= *File::Find::dir;
*topdir		= *File::Find::topdir;
*topdev		= *File::Find::topdev;
*topino		= *File::Find::topino;
*topmode	= *File::Find::topmode;
*topnlink	= *File::Find::topnlink;

sub find {
    &File::Find::find(\&wanted, @_);
}

1;

/etc/perl/find.pl md5sum: 129bb8ba7bd008f350f1863a49034b7e

Configuring and Compiling

This version of OpenBMC for the AST2050 has had several components removed for improved security. Broken links to fetch dependencies have also been fixed (as of 20251208). Review the associated git commits for details.

### Fetch Sources
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-poky.git ast2050-yocto-poky

cd ast2050-yocto-poky
git clone -b fido https://git.15h.org/mrothfuss/ast2050-yocto-openembedded.git meta-openembedded
git clone https://git.15h.org/mrothfuss/ast2050-yocto-openbmc.git meta-openbmc

### Setup Build
export TEMPLATECONF=meta-openbmc/meta-raptor/meta-asus/conf
source oe-init-build-env
cp -Rp ../local-aspeed.conf conf/local.conf
touch conf/sanity.conf

### Set root password
# The default root password for SSH is 0penBmc.
# Generate a new encrypted password string:
printf "%q\n" $(openssl passwd -1)
# Edit the config file (EXTRA_USERS_PARAMS), replace the password hash with the one you generated.
vim conf/local.conf

### Build. Your ROM will be at tmp/deploy/images/asus/flash-asus-DATETIME
bitbake asus-image

Using the BMC

Scan your network for a new device listening on port 22, then login with ssh

nmap -p 22 10.0.0.1/24
ssh root@IPADDR

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.

fw_setenv ethaddr 01:23:45:67:89:ab
reboot

You can access COM2 with screen:

screen /dev/ttyS0 115200

You can use the asus_power.sh command to view/change power states.

asus_power.sh status
asus_power.sh on
asus_power.sh reset
asus_power.sh off