Releases: turing-machines/BMC-Firmware
V2.1.0
v2.1 upgrades the kernel to 6.8.12 mainline, adds basic support for ethernet switching, and introduces a new UI build from scratch next to a big list of improvements.
Migration Warning
This upgrade contains a breaking change of network configuration. if you made any changes to /etc/network/interfaces
please take care when upgrading. read more here.
Special thanks
- Special thanks to @CFSworks for his effort and help with upgrading the kernel to 6.8.12 linux and the DSA networking implementation.
- Special thanks to @barrenechea for his effort to write the BMC-UI.
Installing
note: This upgrade contains a breaking change of network configuration. if you made any changes to /etc/network/interfaces
please take care when upgrading. read more here.
The firmware can be installed using the attached upgrade package. follow the instructions provided here to install via the UI.
What's Changed
- README.md: Remove v2 release disclaimer by @svenrademakers in #148
- rockusb: modify READ_CAPACITY handling; use scsi_eh_prep_cmnd by @CFSworks in #156
- package/bmcd: bump to latest & enable rockusb driver by @ruslashev in #159
- Enabled CDC-ACM on BMC_USB_OTG port by @svenrademakers in #161
- configs: add support for f2fs by @ruslashev in #163
- Feature/stage buildroot by @svenrademakers in #167
- spinand: add support for MX35LFxGE4AD by @svenrademakers in #175
- Add the rpiboot utility for direct flashing from the BMC by @clouetb in #166
- Update sshd_config by @Binarytales in #182
- Feature/rust 1 75 by @svenrademakers in #189
- Upgrade to Linux 6.6.18 by @CFSworks in #190
- upgrade uboot to v2024.01 by @svenrademakers in #192
- update bmcd & tpi packages to latest by @svenrademakers in #194
- Download bmc-ui from GitHub releases by @barrenechea in #198
- uboot SPL updates by @svenrademakers in #197
- BMC-installer: enable FIT image booting by @svenrademakers in #202
- factory sdcard image by @svenrademakers in #203
- Feature/buildroot 2024.05 by @svenrademakers in #205
- v2.5 preserve boot state feature by @svenrademakers in #207
- busybox: update login utils capabilities by @nemith in #208
- Feature/realtek dsa by @svenrademakers in #209
- bumps: buildroot to 2024.05.1, build base image to Ubuntu 24.04, gh actions by @barrenechea in #213
- enable OUI assigned mac addresses by @svenrademakers in #215
New Contributors
- @clouetb made their first contribution in #166
- @Binarytales made their first contribution in #182
- @barrenechea made their first contribution in #198
- @nemith made their first contribution in #208
Full Changelog: v2.0.5...v2.1.0
v2.0.5
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.
V1.1.0
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'
- flash operation:
- 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
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
-
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