Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

BCM5719 firmware reimplementation

License

NotificationsYou must be signed in to change notification settings

meklort/bcm5719-fw

Repository files navigation

This project contains a clean-room reimplementation of the BCM5719 firmware based on theOrtega specification.

The firmware has been tested on theTalos II andBlackbird made byRaptor Computer Systems.

Note: This firmware is currently in development. Flashing the firmware to a network card can result in a bricked device when either an external programmer is required, or the external flash must be temporarily disabled during boot-up.

CodeFactorCodacy Badge

Status

The current version of the code is functional and is able to handle network traffic over NC-SI.

  • Libraries:
    • MII Library: Done
    • NVRAM Library: Done
  • Stage1/Stage2
    • Implementation: Functional
    • Testing: Minimal, WIP
    • VPD: Functional
    • WOL: Not started
  • APE
    • NC-SI Handler: Functional
      • Get Version ID: Not Implemented
      • OEM Command: Not Implemented
    • BMC <-> Network Communication: Working
  • Utilities
    • Firmware tool: Functional
    • Register tool: Functional
  • Tests: To be written

Usage

Blackbird and Talos II users may install this firmware usingfwupd, either via the Linux Vendor Firmware Service, or manually usingfwupdtool and arelease archive. Other BCM5719 devices may not be thoroughly tested, or tested at all; should you wish to proceed, it is encouraged to download orbuild the firmware and refer to instructions inDevelopment, especially the section ontesting APE firmware.

Installing using LVFS

This project provides firmware releases on LVFS that can be installed using fwupd 1.5.2 or later.The firmware can be selected for install by following the prompts using theswitch-branch command infwupdmgr:

sudo fwupdmgr switch-branch

This will flash the latest firmware from LVFS onto the network card and will save a backup of the previous firmware in/var/lib/fwupd/backup/.

Once switched, future releases will be installed using the standard update mechanism in fwupd.

Installing using fwupdtool

Alternatively to using LVFS, the fwupd cab files in the release package can be manually flashed withfwupdtool 1.5.2 or later.

ForTalos II:

sudo fwupdtool install ./fwupd/talos2-bcm5719-<version>.cab --allow-branch-switch

ForBlackbird:

sudo fwupdtool install ./fwupd/blackbird-bcm5719-<version>.cab --allow-branch-switch

Restoring From Backup

Past firmware images can be restored from backup using the bcmflash tool.

  • If fwupd was used to flash firmware, past backups can be located at/var/lib/fwupd/backup/.
  • Ifbcmflash was used tocreate a backup the previously savedfirmware.fw should be used.

To restore a backup, the following command can be run:

sudo ./bin/bcmflash -t eth -i enP4p1s0f0 -r firmware.fw

Building

Requirements

This repository depends on a number of external tools

  • Customized LLVM/Clang compiler for MIPS firmware
  • CMake 3.5.1+
  • Linux (utilities)
  • IPXact generator (optional)
  • python3-pefile, python3-cbor, python3-lxml (for uswid)

Required Compiler

Due to limitations in the MIPS CPU, this firmware requires a custom compiler to function properly.The custom compiler can be built using the following steps:

git clone https://github.com/meklort/llvm-project.git -b meklort-14.0.6cd llvm-projectmkdir buildcd buildcmake ../llvm -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/llvm-bcm5719 -DLLVM_ENABLE_PROJECTS="lld;clang"ninjaninja install

Compiling

To compile the firmware, the following command sequence can be used:

git submodule initgit submodule updatemkdir buildcd buildcmake .. -G Ninjacmake --build.

Development

To access the APE console, test APE firmware in RAM, etc.,the Linuxtg3 driver must be unbound from at least one PCIe function of the NIC.Each function corresponds to a single Ethernet port:

  • Port 0:0004:01:00.0 (Talos II / Blackbird)
  • Port 1:0004:01:00.1 (Talos II / Blackbird)
  • Port 2:0004:01:00.2 (Blackbird)

Unbinding will disable the correspondingenP4p1s0f# network adapter.

A function can be unbound via sysfs as follows:

echo 0004:01:00.0> /sys/bus/pci/drivers/tg3/unbind

Alternatively, the bcmregtool can be used to unbind the driver:

cd buildsudo ./utils/bcmregtool/bcmregtool --unbind

Rebinding is similar, except that the address is written tobind instead ofunbind.

Unbinding a function allowsbcmflash to access the device via-t raw, which is used with the-i option to select the function number to use.

Binding a function allowsbcmflash to access the device via-t eth, with is used with the-i option to select the ethernet interface to use.

Testing APE firmware

After unbinding the driver per the above, the APE firmware can be tested by loading it into RAM using the following sequence (note that this may fail if stage1 has not been loaded):

ForTalos II (BMC traffic on port 0):

cd buildsudo ./utils/bcmregtool/bcmregtool --apeboot=ape/ape-port0.bin

ForBlackbird (BMC traffic on port 2):

cd buildsudo ./utils/bcmregtool/bcmregtool --apeboot=ape/ape-port2.bin

Firmware Log

The APE and Stage1 firmware are able to print status messages to a log. This can be accessed in one of two ways:

  • The./utils/apeconsole/apeconsole utility can be used if no driver is loaded by the host.
  • The EM100Pro console can be used if wired to the SPI bus on the BCM5719. This allows for printouts even when the host is off.

Backup Firmware

Before altering the BCM5719 flash, the original firmware should be backed up usingbcmflash and the appropriate-t and-i options as described inDevelopment

cd buildsudo ./bin/bcmflash -t eth -i enP4p1s0f0 -b binary

This will result in a firmware image,firmware.fw, being stored in the current directory.

Flashing Firmware with bcmflash

The flash can be updated with development firmware usingbcmflash and the appropriate-t and-i options as described inDevelopment

Updating the MIPS Firmware

cd buildsudo ./bin/bcmflash -t eth -i enP4p1s0f0 -1 stage1/stage1-port0.bin

Updating the APE Firmware

cd buildsudo ./bin/bcmflash -t eth -i enP4p1s0f0 -a ape/ape-port0.bin

[8]ページ先頭

©2009-2025 Movatter.jp