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 addsmkfs.{msdos,vfat}
,mkdosfs
,mkfs.ext{2,3,4}
andfsck.{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
)
- Reset individual nodes (
- 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.