github turing-machines/BMC-Firmware v2.0.5

latest releases: v2.1.0-RC2, v2.1.0-RC1, v2.1.0-unstable...
11 months ago

Firmware version 2.0.5 is a major release that brought many new features and improvements since version 1.1.0. Instructions on how to upgrade can be found on our v2 readme pages Below is a thorough list of these changes.

Note: Upgrading from v1.x.x to v2.x.x requires a one-time only upgrade using a micro SD card!

Firmware

  • Replaced NTPSec with chrony
    This frees ~50% of space of the rootfs partition, as chrony does not depend on python3. (#121)
  • Split S99hello.sh init daemon script into priorities 93 and 99 and start BMC daemon at priority 94.
    This allows creating 4 user-defined scripts at priorities 95-98. (5fd7d4)
  • Updated buildroot to 2023.08 (d566b7)
  • Device tree:
    • Added definition and driver for optional EMC2301 fan controller (#125)
    • Added definitions for power regulators
    • Added definitions for aggregated node-management GPIOs
  • Added a new update mechanism which replaces SWUpdate and does not require a Windows PC/VM (see link )
  • Linux device management is now done by a more lightweight mdev instead of eudev (#124)
  • Cleaned up unused files from the image related to unsupported BMC functionality (Bluetooth, sound, touchscreen, wireless)
  • Added tools for ext2-4 and FAT filesystems
    This adds mkfs.{msdos,vfat}, mkdosfs, mkfs.ext{2,3,4} and fsck.{msdos,vfat}, dosfsck, fsck.ext{2,3,4}. (#129)
  • Use mainline U-Boot instead of a vendor fork
  • Root filesystem now uses a read-only EROFS instead of UBIFS.

BMC Daemon

  • Now fully written in Rust
  • Replaced old GoAhead embedded web server with Actix
  • Added TLS support
  • HTTP -> HTTPS redirect
  • Implemented multipart file streaming
    • firmware upgrade backend
    • install OS on node backend
      This feature allows flashing image files directly into a node/BMC from your PC, removing requirement to copy them to a microSD card first
  • Support for RK1 flashing
  • Support IPv6
  • Change application configuration backend from SQLite to a custom binary format
  • Added authentication:
    • Previously, anyone with access to port 80 of the board could execute any API command. Now, access control is implemented via HTTP authentication with credentials of Linux users of the BMC.
    • List of users is automatically updated when a user is added or removed.
    • Repeated failed authentication requests are rate-limited with exponential backoff.
  • Added API endpoints:
    • Reset individual nodes (/api/bmc?opt=set&type=reset&node=1)
    • reboot board (/api/bmc?opt=set&type=reboot)
    • reload daemon (/api/bmc?/opt=set&type=reload)
    • backup user layer (/api/bmc/backup)
    • info (/api/bmc?opt=get&type=info)
    • about (/api/bmc?opt=get&type=about)
  • Added a configuration file, allowing changing startup options with regards to port, TLS, web server directory, HTTP redirection, runtime configuration database, and authentication.
  • KEY_1 functionality changes:
    • pressing will turn all nodes on if 3 nodes or fewer are powered on
    • pressing when all nodes are off will turn all nodes on
    • pressing when all nodes are on will turn all nodes off
    • long pressing will force every node to be powered on
  • Moved the default web UI server directory from /mnt/var/www to /srv/bmcd/www

TPI tool

  • Now written in Rust
  • Added a user-friendlier and more consistent command-line interface
  • Added option to generate shell auto-completion files
  • Support authentication by supplying credentials interactively or via command line
  • Publish package in the AUR
  • Added an option to boot a node as a USB mass-storage device to access its filesystem's content
  • Added functionality to flash a node either via streaming the contents of an image file, or by reading it from a locally-accessible filesystem (i.e., microSD card)
  • Added progress bars and estimated time calculation for file transfers
  • Added a command to reboot the BMC
  • available on crates.io

Web UI

  • Styled with turing pi brand design
  • UI made responsive
  • Fixed progress bars and spelling in labels and added popups
  • Included about tab containing all version strings of the firmware
  • The user overlay data can be downloaded as a compressed tar.
  • Added functionality to upgrade BMC's firmware and flash nodes
  • added buttons to reboot the board and reload the daemon

Known Issues

  • MSD mode, tpi advanced msd is not implemented yet for RK1 related issue

Contributions

We’d like to thank all contributors for their ideas and improvements, especially @CFSworks for incredible work mainlining BMC support and providing help with the bootloader, OS, and new flashing system.

Don't miss a new BMC-Firmware release

NewReleases is sending notifications on new releases.