Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Learn more
OpenBMC is an open software framework to build a complete Linux image for a Board Management Controller (BMC).
C Python Shell C++ BitBake Makefile Other
Branch: helium
Clone or download
joancaneus and facebook-github-bot wedge400-c: Add set_vdd.sh to set vddcore voltage (#179)
Summary:
As title
Pull Request resolved: facebookexternal/openbmc.celestica#179

Test Plan:
root@bmc-oob:~# set_vdd.sh
usage :
   /usr/local/bin/set_vdd.sh <voltage in mv>
   eg. /usr/local/bin/set_vdd.sh 850
 limit : max 930 mV
root@bmc-oob:~# sensors *-i2c-1-40
xdpe132g5c-i2c-1-40
Adapter: 1e78a080.i2c-bus
vin:         +12.06 V  (min =  +8.00 V, crit max = +14.00 V)
vout1:        +0.90 V  (crit min =  +0.00 V, min =  +0.50 V)
                       (max =  +1.20 V, crit max =  +0.09 V)
temp1:        +52.0 C  (high = +100.0 C, crit = +125.0 C)
pin:         175.00 W  (max = 800.00 W)
pout1:       152.50 W  (max = 800.00 W)
iin:         +14.50 A  (max = +80.00 A)
iout1:       +169.25 A  (max = +460.00 A, crit max = +500.00 A)

root@bmc-oob:~# set_vdd.sh 870
870
root@bmc-oob:~# sensors *-i2c-1-40
xdpe132g5c-i2c-1-40
Adapter: 1e78a080.i2c-bus
vin:         +12.06 V  (min =  +8.00 V, crit max = +14.00 V)
vout1:        +0.87 V  (crit min =  +0.00 V, min =  +0.50 V)
                       (max =  +1.20 V, crit max =  +0.09 V)
temp1:        +51.0 C  (high = +100.0 C, crit = +125.0 C)
pin:         158.00 W  (max = 800.00 W)
pout1:       140.50 W  (max = 800.00 W)
iin:         +13.12 A  (max = +80.00 A)
iout1:       +160.75 A  (max = +460.00 A, crit max = +500.00 A)

Pass

Reviewed By: joancaneus

fbshipit-source-id: 806189a6ae
Latest commit 3cd4e49 Oct 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
classes Make bbclass Dec 14, 2018
common common: fscd: evaluate fscd driver Oct 17, 2019
conf meta-openbmc: Provide layer compatibility (#105) Sep 19, 2019
experimental/buck-example Example usage of buck test Aug 2, 2019
meta-aspeed github: linux-aspeed-5.3: packaging modules.builtin.modinfo Oct 11, 2019
meta-bf/meta-mavericks Common: ipmid: Able to access different FRU via FRU ID (#846) Jun 5, 2019
meta-facebook wedge400-c: Add set_vdd.sh to set vddcore voltage (#179) Oct 17, 2019
meta-portwell neptune: Use pal_sensors.h instead of obmc-sensors.h Oct 7, 2019
tests vboot: Move signing tools from tests directory Mar 8, 2019
tests2 Add CIT test support to validate ordered json Oct 10, 2019
tools Bootstrap fw upgrade with unittests Oct 9, 2019
yocto Ignore changes to yocto directory contents Mar 6, 2018
.buckconfig Example usage of buck test Aug 2, 2019
.buckversion Example usage of buck test Aug 2, 2019
.clang-format Bootstrap .clang-format from fbsource May 17, 2019
.flake8 Add python format linter from WhatsApp May 16, 2019
.gitignore Bootstrap fw upgrade with unittests Oct 9, 2019
.jfconfig Enable cit testing when common py3 changes Sep 23, 2019
.travis.yml Add linting to newly added shell and python scripts Sep 16, 2019
CODE_OF_CONDUCT.md Add FB code of conduct Mar 20, 2018
CONTRIBUTING.md Add FB code of conduct Mar 20, 2018
README.md Add TravisCI configuration and update build badges Apr 24, 2019
openbmc-init-build-env Ease building machines Sep 11, 2019
sync_yocto.sh Remove support for krogoth Oct 10, 2019

README.md

OpenBMC

OpenBMC is an open software framework to build a complete Linux image for a Board Management Controller (BMC).

OpenBMC uses the Yocto Project as the underlying building and distro generation framework.

Board Status Description
Wedge Build Status A 40G OS-agnostic TOR switch
Yosemite Build Status An open source modular chassis for high-powered microservers
Lightning Build Status A flexible NVMe JBOF
Wedge100 Build Status A 32x100G TOR switch
Backpack LC/FC Build Status Linecard and fabric card in a 128x100G modular open switch
Backpack CMM Build Status Chassis management module in a 128x100G modular open switch
Tioga Pass Build Status A dual-socket compute platform
YosemiteV2 Build Status A refresh of Yosemite
Bryce Canyon Build Status Disk Storage platform

Contents

This repository includes 3 set of layers:

  • OpenBMC Common Layer - Common packages and recipes can be used in different types of BMC.
  • BMC System-on-Chip (SoC) Layer - SoC specific drivers and tools. This layer includes the bootloader (u-boot) and the Linux kernel. Both the bootloader and Linux kernel shall include the hardware drivers specific for the SoC.
  • Board Specific Layer - Board specific drivers, configurations, and tools. This layer defines how to configure the image. It also defines what packages to be installed for an OpenBMC image for this board. Any board specific initialization and tools are also included in this layer.

File structure

The Yocto naming pattern is used in this repository. A "meta-layer" is used to name a layer or a category of layers. And recipe-abc is used to name a recipe. The project will exist as a meta layer itself! Within the Yocto Project's distribution call this project meta-openbmc.

The recipes for OpenBMC common layer are found in common.

The BMC SoC layer and board specific layer are grouped together based on the vendor/manufacturer name. For example, all Facebook boards specific code should be in meta-facebook. Likewise, meta-aspeed includes source code for Aspeed SoCs.

How to build

Note: In the instruction set below, references to for some of the steps is an example only and need to be replaced with the respective platform when setting up for a different platform.

  1. Set up the build environment based on the Yocto Project's Quick Start Guide.

  2. Clone the OpenBMC repository and other open source repositories:

$ git clone -b helium https://github.com/facebook/openbmc.git
$ cd openbmc
$ ./sync_yocto.sh
  1. Initialize a build directory for the platform to build. In the openbmc directory:
$ source openbmc-init-build-env meta-facebook/meta-wedge

Choose between meta-wedge, meta-wedge100, meta-yosemite, or any of the other platforms listed in the meta-facebook directory. After this step, you will be dropped into a build directory, openbmc/build.

  1. Start the build within the build directory: In general to build for the platform:
$ bitbake <platform>-image

The build process automatically fetches all necessary packages and builds the complete image. The final build results are in openbmc/build/tmp/deploy/images/<platform>. The root password will be 0penBmc, you may change this in the local configuration.

Build Artifacts

  • u-boot.bin - This is the u-boot image for the board.
  • uImage - This the Linux kernel for the board.
  • -image-.cpio.lzma.u-boot - This is the rootfs for the board
  • flash- - This is the complete flash image including u-boot, kernel, and the rootfs.

Kernel & U-Boot Development

By default, OpenBMC build process fetches and build Linux kernel and U-boot directly from GitHub repository.

  • To make local kernel changes and build with the modified kernel:

In the build directory, run

$ devtool modify linux-aspeed

or

$ devtool modify u-boot

This will create local Linux package under /workspace/sources/linux-aspeed for development

  • To go back to default recipes, run
$ devtool reset linux-aspeed

How can I contribute

If you have an application that can be used by different BMCs, you can contribute your application to the OpenBMC common layer.

If you are a BMC SoC vendor, you can contribute your SoC specific drivers to the BMC SoC layer.

If you are a board vendor, you can contribute your board specific configurations and tools to the Board specific layer. If the board uses a new BMC SoC that is not part of the BMC SoC layer, the SoC specific driver contribution to the BMC SoC layer is also required.

You can’t perform that action at this time.