Skip to content

Releases: turing-machines/BMC-Firmware

v2.0.5

28 Nov 14:40
60ebb91
Compare
Choose a tag to compare

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.

V1.1.0

28 Jul 19:22
57409d5
Compare
Choose a tag to compare

This release marks the start of the transition from the "legacy firmware" towards a more safe, stable, and extendable firmware. More concretely, this is the last release where we updated the current tpi tool and BMC API server as we aim to replace these userspace applications. (Note that we will keep supporting the current BMC API for now).

no .swu package available

This release also contains kernel updates, which the .swu update mechanism does not support. We know of this inconvenience and aim to gradually deploy a new firmware update mechanism throughout the upcoming releases.

What's Changed

  • The BMC can flash raspberry pi cm4 modules via images stored locally on the SD card. ( we will further improve this experience in upcoming releases)
  • USB configuration and Power settings are persisted. After a reboot, the previous state will be restored.
  • Calling tpi -p on -n 1 actually only turn on node 1
  • mDNS is enabled. The TP board can be found via <hostname>.local. By default, this is: turingpi.local
  • Key_1 now has two modes: a long and short press. Toggle-ing the button powers off or on the active (set by the user) nodes. Long press resets this configuration. If all nodes were on, all nodes will turn off long pressing the KEY_1 button. With three or fewer nodes on, all nodes will be turned on.
  • the BMC API is extended with the following options:
    • flash operation: http://%s/api/bmc?opt=set&type=flash&file=%s&node=%d
    • node_to_msd: http://%s/api/bmc?opt=set&type=node_to_msd&node=%d'
    • clear_usb_boot: http://%s/api/bmc?opt=set&type=clear_usb_boot&node=%d'
    • reset node: http://%s/api/bmc?opt=set&type=reset&node=%d'
    • USB opt is extended with a boot pin option: http://%s/api/bmc?opt=set&type=usb&mode=0&node=%d&boot_pin=1'
  • tpi tool has been updated to reflect these changes
  • startup and memory improvements
  • bug fixes

Please give us some time to update the documentation accordingly:)

New Contributors

Full Changelog: v1.0.2...1.1.0

v1.0.2

03 Jun 14:22
f024649
Compare
Choose a tag to compare
v1.0.2 Pre-release
Pre-release

We're proud to announce our first release since forking from the wenyi0421/turing-pi repository. This release delivers significant updates:

  • Package and Toolchain Updates: We've modernized our toolchain and updated packages.
  • Improved Stability: We've addressed several bugs and improved the overall stability of our firmware.

Please note that the .swu package provided does not contain the kernel itself. To upgrade to 1.0.2 its recommended to flash the .img file using the phoenix suit.

What's Changed

  • Fixed thermal driver #6

  • Fixed USB host driver from being started #9

  • Updated toolchain to GCC 11.3, GLIBC 2.38 #66

  • Added extra packages to the default configuration which have a low memory footprint: htop, picocom, tree, nano #70

  • Udated to buildroot v2023 #64

  • buildroot/bmc: fix cjson dependency requiring make cjson-rebuild by @ruslashev in #4

  • configs: change hostname from "turing pi" to "turingpi" by @ruslashev in #39

  • Remove the helloworld package. by @svenrademakers in #21

  • Rewrite the devicetree by @CFSworks in #18

  • init: mount correct microSD partition, and only if present by @ruslashev in #38

  • GH-33 updated the buildroot directory to version 2023.02.1 by @svenrademakers in #43

  • init: fix starting bmc daemon on shutdown by @ruslashev in #48

Full Changelog: v1.0.1...v1.0.2