Releases: tenstorrent/tt-system-firmware
v19.6.0
We are pleased to announce the release of TT Zephyr Platforms firmware version 19.6.0 🥳🎉.
Major enhancements with this release include:
Wormhole Changes
New Features
- Added support for Samsung GDDR6 memory
- Wiped Tensix L1, ERISC L1, and GDDR memory during init for security
Blackhole Changes
Stability Improvements
- On p300 boards, fixed issue where one ASIC would drop after numerous consecutive reboots.
New Boards
- Add support for Galaxy revC board
Power Management
- Update limits for p300c boards:
- Board power limit to
550 W - TDP limit to
125 W - GDDR temperature limit to
88 C
- Board power limit to
Telemetry
- New
TAG_AICLK_PPM_INFOtelemetry entry captures which arbiter is limiting AICLK and why - Enhanced
TAG_AICLK_ARB_MINandTAG_AICLK_ARB_MAXto include arbiter IDs - Added
targ_freq_updatetrace event for debugging AICLK decisions
Migration guide
An overview of required and recommended changes to make when migrating from the previous v19.5.0 release can be found in 19.6 Migration Guide.
Full ChangeLog
The full ChangeLog from the previous v19.5.0 release can be found at the link below.
v19.6.0-rc1
tt-zephyr-platforms 19.6.0-rc1
v19.5.1
v19.5.1
Wormhole Changes
New and Experimental Features
- Added support for Samsung GDDR6 memory
Full ChangeLog
The full ChangeLog from the previous v19.5.0 release can be found at the link below.
v19.5.0
v19.5.0
We are pleased to announce the release of TT Zephyr Platforms firmware version 19.5.0 🥳🎉.
Important
Please use tt-flash >= 3.6.0 to upgrade.
There is a known issue with tt-flash < 3.6.0 that causes the board ID to be lost on Blackhole.
Major enhancements with this release include:
Wormhole Changes
Stability Improvements
- Update Wormhole ERISC FW to 7.5.0, change list from 7.2.0:
- 7.5.0
- Adjust the resend chip info packet time to resolve the link training failures with ANLT ports
- Minimize static training retries to compensate for longer delays in the training sequence
- Adjust DFE settings for weak lanes only to improve the link stability
- 7.4.0
- Code clean-up and documentation
- Use register defines and convert arrays into data structures
- 7.3.0
- Fix retrain hangs with Active Cables
- Adjust DFE value to improve BER on WH UBB QSFP ports
- Link quality improvements to non-retimer long trace on WH UBB
- Updated retraining logic to set train_status to LINK_TRAIN_TRAINING when entering into retraining
- Remove link_training_fw_phony debug feature from eth_init to free up more space
- 7.5.0
Blackhole Changes
p150 Tensix Core Count
Beginning January 2026, all Blackhole p150 accelerator cards (p150a, p150b) will ship with 120 Tensix cores instead of 140. To present a unified interface to metal and other system software, firmware v19.5.0 and later will change the core count on all existing cards to 120. Typical workloads show a non-material (~1–2%) performance difference.
You may observe a change in grid size in metal, which may require updates to applications that depend on grid layout.
Stability Improvements
- Fixed boardcfg loading error handling in recovery image
- Updated Blackhole ERISC FW to v1.8.1, change list from v1.7.1:
- v1.8.1 (2025-01-23)
- Change P150 products to use Manual EQ training mode
- Updated MACPCS init sequence to wait longer before SerDes reinit
- Added wait for LCPLL lock check in SerDes init before training start
- Fixed bug where calling eth_mac_pcs_reinit with option = 1 would immediately return without running the function
- Increased AN timeout and disabled SerDes lt_timeout_enable to allow for better control of the ANLT sequence via FW
- v1.8.0 (2026-01-20)
- Updated TX/RX remapping for P300 and P150
- Updated settings to improve PRBS test mode
- Keep TX BIST enabled even on Serdes training fail
- Disable FW features at beginning of initialization for PRBS tests
- Restore some of the timeout changes to pre v1.7.1 settings as new timeouts proved to be problematic on galaxy systems
- Cleaned up RX retraining sequence for Manual EQ
- Added tx_barrier to sync TX/RX across multiple eth controllers on init
- Added eth_link_recovery to eth_api_table to allow access to runtime FW
- Added disable_l1_cache function to disable data cache completely, function called in main() of base FW and all test FWs
- Ensure eth_api_table is not wiped between inits
- Changed some ETH messages:
- ETH msg PORT_REINIT -> PORT_REINIT_MACPCS: Initiates fill initialization sequence based on selected option
- ETH msg PORT_RETRAIN -> PORT_REINIT_SERDES: Only initiates serdes initalization sequence based on selected option
- v1.8.1 (2025-01-23)
Power Management
- Galaxy TDP limit reduced from 170 W to 130 W to stay within system power limits
- Disabled PHY powerdown for MRISC on Galaxy systems to address DRAM funtest regression
Telemetry & Monitoring
- Added telemetry entries for enabled AICLK min/max arbiters (
TAG_ENABLED_MIN_ARBandTAG_ENABLED_MAX_ARB) - Added telemetry for effective AICLK min/max arbiter values (
TAG_AICLK_ARB_MINandTAG_AICLK_ARB_MAX) - Added Doxygen documentation for
aiclk_arb_maxandaiclk_arb_minenumerations - PVT sensor message fixes
- Revert backward-incompatible message interface changes to
READ_{TS,PD,VM}introduced in v19.1.0 - Fixed conversion truncation issue in voltage monitoring messages
- Improved error checking in PVT functions
- Revert backward-incompatible message interface changes to
- Added tracing for AICLK updates (disabled by default)
Drivers
- Added interrupt support to ARC DMA driver and enabled it by default
- Added "is alive" check to PVT sensor drivers
Tooling
- Add support for newer P300 boards to blackhole recovery script
- Properly support flash read across multiple blocks with pyocd
- tt-tracing improvements
- Added
-bcommand-line argument to select BAR (bar0 or bar4) - Improved tracing performance when running in parallel with
tt-burnin - Fixed to send enable tracing command only once (not on every loop iteration)
- Updated documentation with coding examples for custom tracing events
- Fixed babeltrace2 version to 2.0.4 for compatibility
- Added
Build System & Dependencies
- Migrated from patch-based workflow to Zephyr fork
- Removed all usages of
west patchtreewide - Fixed git describe to use correct module directory (enables correct version tags for applications built in different repositories)
Grendel Changes
- Initial support added for the Grendel SMC platform
- 4-core Berkeley Rocketcore with peripheral complement for external device interfacing
- Initial devicetree definition
- Virtual console driver for simulation debugging via printf
- Basic build workflow for CI validation
Migration guide
An overview of required and recommended changes to make when migrating from the previous v19.4.0 release can be found in 19.5 Migration Guide.
Full ChangeLog
The full ChangeLog from the previous v19.4.0 release can be found at the link below.
v19.5.0-rc2
tt-zephyr-platforms 19.5.0-rc2
v18.12.2
v18.12.2
We are pleased to announce the release of TT Zephyr Platforms firmware version 18.12.2 🥳🎉.
This is a point release to enable recovery firmware (which is based on 18.12) to
operate on newer P300 cards
Major Highlights
- Patch to STM32 SPI flash loader algorithms to support latest P300 board revision
- Multiple CI improvements to enable executing CI on new runner configurations
v18.12.1
We are pleased to announce the release of TT Zephyr Platforms firmware version 18.12.1 🥳🎉.
This is a point release to ensure that users are able to test with the latest ERISC firmware while
v19.0 is going through additional testing.
Major Highlights
- Update Blackhole ERISC FW to v1.7.0
- ETH msg PORT_RETRAIN: force a link to retrain
- ETH msg PORT_REINIT: asks a failed port to redo initialization
- ETH msg PORT_LOOPBACK: allows putting the port in internal or external loopback
- ETH msg INTERRUPT: enables or disables interrupts to the ERISC
- ETH msg PORT_ACTION: force the link to be up or down via the MAC
- ETH msg CABLE_CHECK: checks whether a cables exists or not
- ETH msg TELEMETRY_EVENT: handles specific telemetry exchange events over the link
- ETH msg REMOTE_ALIVE: send packet to check if remote side is alive
- ETH msg PORT_SPEED: re-initializes the port to a different speed
Stability Improvements
- ERISC FW v1.7.0
- Fix snapshot reading bug in eth_runtime where the upper 32 bits of a preceding metric read is picked up by the following metric read
- Remove interrupt enablement as current implementation can cause infinte loops
- Changed logical_eth_id calculation using new enabled_eth param to address SYS-2064
- Added ASIC ID in chip_info and param table to address SYS-2065
- Changed manual EQ TX-FIRs for ASIC 8 Retimer ports to address SYS-2096
- Only trigger retraining if check_link_up polls link down for 5ms
- Removed BIST check in training sequence, improves stability a bit
- Send chip_info packet on retrain completion, which along with BIST disabled allows for a single chip with an active link to be reset and allow the link come back up
- Set manual TX FIR parameters for warp cable connections on P300 to 1/3/4/45/2 for PCB-1997
- increase stack size to 2048 for SYS-2266
- inline icache flush function for SYS-2267
- Fix for reset skew where one tt-smi reset should make other side up
- Added interrupt enablement again, controlled via INTERRUPT_CHECK feature enable flag
- Moved auto retraining outside of link_status_check into its own link check state mechine, controlled via DYNAMIC_LINK_STATE_CHECK feature enable flag
- Added link flap check based on resend and un-cor words
- Added eth_reinit state machine to handle fail case when port is up
- PVT Sensor
- correct PVT RTIO buffer size and frame count for decode
v18.12.0
We are pleased to announce the release of TT Zephyr Platforms firmware version 18.12.0 🥳🎉.
This release brings significant enhancements to power management, SMBus communication robustness, and developer tooling, along with improved stability across the platform.
Major Highlights
- Enhanced Power Management: New MRISC PHY powerdown/wakeup support and power command capabilities
- Improved SMBus Reliability: Enhanced error detection, logging, and robustness for CM2DM operations
- Advanced Developer Tooling: New stack dump utilities and improved console tooling
- Zephyr v4.3.0 Alignment: Updated to latest Zephyr pre-release for better upstream compatibility
- Streamlined Board Support: Focused support on production devices
New Features
Power Management
- lib: bh_arc: Added support for MRISC PHY powerdown/wakeup operations
- lib: bh_arc: Implemented new Power command functionality
- boards: tt_blackhole: Enabled AICLK PPM in firmware table for Galaxy boards
- boards: tenstorrent: Applied more conservative TDP limits for P300 boards
Communication & Protocols
- app: dmc: Added support for SMBus block process call (pcall) operations
- drivers: smbus: stm32: Enhanced with block read capabilities
- app: smc: Added overlay configuration to build DMFW with I2C shell enabled
Developer & Debug Tools
- scripts: New
dump_smc_stack.pyutility for on-demand SMC state analysis - scripts: tooling: Enhanced
tt-consolewith PCIe rescan skip option for smooth TT-KMD transitions (2.3.0 to 2.4.1) - scripts: Updated
blackhole_recoverywith improved status messaging and increased delays
Stability & Robustness Improvements
Communication Reliability
- CM2DM Protocol: Enhanced robustness with detection of duplicate SMBus messages and improved error handling
- lib: tenstorrent: bh_arc: Improved error logging in SPI EEPROM operations
System Reliability
- app: dmc: Implemented fine-grained DMC events, replacing the previous single "wakeup" flag approach
- regulators: Fixed Galaxy SerDes programming regression
- boards: tenstorrent: Reduced P300 I2C clock speeds to minimize packet errors
- lib: bh_chip: Optimized I2C gate handling during BH ARC reset operations
Infrastructure
- CI/CD: Migrated to centralized Docker containers hosted at
ghcr.io/tenstorrent - scripts: tooling: Reworked logging macros with new rate-limited variants
Wormhole Updates
- blobs: Updated Wormhole firmware blob
- CMFW 2.36.0.0
- Attempt to enter A3 state on both chips of n300 before triggering
reset - Fix VR addresses for Nebula CB P0V8_GDDR_VDD and P1V35_MVDDQ
- Update Nebula CB SPI parameters
- Disable DRAM training at boot
- Voltage margin = 0
- P0V8_GDDR_VDD override to 850 mV
- P1V35_MVDDQ override to 1.35 V
- Enable additional DRAM training parameters
- Attempt to enter A3 state on both chips of n300 before triggering
- ERISC 6.7.1.0
- Enable partial response phase detector mode to compensate jitter lanes
- Initial support for per asic resetting in WH Galaxy
- CMFW 2.36.0.0
API Changes
Breaking Changes
- lib: bh_arc: Renamed
msg_typetott_smc_msg- Header file changed from
tenstorrent/msg_type.htotenstorrent/smc_msg.h - Migration Required: Update include statements in existing code
- Header file changed from
Platform Updates
- zephyr: patches: Added patch for SPI-NOR erase-block-size property support
Zephyr Integration
Version Update
- manifest: Updated to Zephyr v4.3.0-pre
- Snapshot from Zephyr mainline prior to v4.3.0 feature freeze (October 24th)
- Minimized in-tree patches through active upstream contribution
Upstream Contributions
- Enhanced PWM API test suite with cleaner platform-specific conditionals
- Fixed I2C DesignWare target implementation
- Improved SMBus STM32 driver with proper block write byte count handling
- Added IRQ lock protection for CTF tracing timestamp generation
- Extended interrupt controller support for multiple DesignWare instances
- Implemented "safe" API variants for
k_event_wait()in kernel events
Documentation Improvements
Enhanced Documentation
- lib: bh_arc: Comprehensive Doxygen documentation for host-to-SMC message types
- doxygen: Added supported boards reference links
- doc: New contribution and coding guidelines
- docs: Added CI job status visualization on project landing page
Developer Guidance
- doc: Added code update workflow snippet:
west patch clean; west update; west patch apply - lib: bh_arc: Documented unused commands for better API clarity
- doc: Improved version handling using project settings from
conf.py
Board Support Changes
Removed Support
- Removed P100 (Scrappy) Support:
- P100 was an internal engineering unit used during initial bringup and testing
- Support removed to focus resources on consumer-facing devices
- Migration Impact: P100 users must transition to supported production boards
Migration Guide
For detailed migration instructions from v18.11.0, including required code changes and recommended updates, please refer to the v18.12 Migration Guide.
Full Changelog
Complete changelog from v18.11.0 is available at:
v18.11.0...v18.12.0
v19.5.0-rc1
tt-zephyr-platforms 19.5.0-rc1
v19.4.2
v19.4.2
This is a patch release on top of v19.4.0, and includes all changes from v19.4.1.
What's Changed since v19.4.1
Bug Fixes (Blackhole)
- Revert backward-incompatible message interface changes to
READ_{TS,PD,VM}introduced in v19.1.0 - Do not apply MRISC PHY powerdown to BH Galaxy due to data errors with the feature enabled
Full ChangeLog
The full ChangeLog from the v19.4.0 release can be found at the link below.
v19.4.1
v19.4.1
What's Changed
Bug Fixes
- Update Wormhole FW blob to revert ERISC FW to 6.7.2.0
- Due to ETH training instability on WH Galaxy with ERISC FW 6.7.3.0
Full ChangeLog
The full ChangeLog from the previous v19.4.0 release can be found at the link below.
v19.4.0
v19.4.0
We are pleased to announce the release of TT Zephyr Platforms firmware version 19.4.0 🥳🎉.
Major enhancements with this release include:
What's Changed
Stability Improvements
- Update Wormhole FW blob
- ERISC FW 6.7.3.0
- Fix retrain hangs with Active Cables
- Adjust DFE value to improve BER on WH UBB QSFP ports
- Link quality improvements to non-retimer long trace on WH UBB
- Updated retraining logic to set train_status to LINK_TRAIN_TRAINING when entering into retraining
- Remove link_training_fw_phony debug feature from eth_init to free up more space
- Switch WH FW over to Zephyr ARC toolchain 0.17.4
- Fix BSS to be 0-initialized
- Causes telemetry
TAG_TIMER_HEARTBEATto start at 0 upon reset
- Causes telemetry
- GDDR improvement for WH Galaxy
- Increase read latency from 23 to 25 for 14G
- Explicitly disable EDC tracking
- Add vendor-specific GDDR settings and report GDDR vendor
- ERISC FW 6.7.3.0
- Re-release MRISC FW 2.11
- Reduce Galaxy datarate to 14G to address regression in FW bundle v19.3.0
- Reapply memory bandwidth utilization improvements to all board types
Drivers
- Fix SMBus cancel/uncancel interface
- Driver-specific implementations are now properly called
- Cancel state is now properly taken into account when starting a transaction, which fixes some PCIe enumeration issues
Libraries
- BH ARC library improvements
- AICLK power management enhancements
- Apply AICLK busy state from GO_BUSY and POWER messages for legacy application compatibility
- Track last BUSY/IDLE message received and apply AICLK state based on both that and power settings
- Extended native simulation support for aiclk_ppm initialization
- Message queue improvements
- Add doxygen documentation and structured access for ASIC state messages (TT_SMC_MSG_ASIC_STATE0 and TT_SMC_MSG_ASIC_STATE3)
- Add doxygen documentation and structured access for TT_SMC_MSG_TEST
- Code formatting improvements (clang-format)
- Power management logging improvements
- Condense noisy prints in bh_power into a single print statement
- AICLK power management enhancements
Debug / Developer Features
- Scripts and tooling improvements
tt_bootstrap: Add support for erasing flash withwest flash -r tt_bootstrap --erasevuart: Open file descriptor with O_APPEND flag to prevent power-on when opening console- Add
update_versions.shscript to upgrade versions of SMC, DMC, and FW during the release process
Other Notable Changes
- Documentation
- Update release process documentation to use version update script
- Add firmware signing key conflicts guide explaining how to move from a production-signed firmware to a development-signed firmware (v19.0.0+)
Migration guide
An overview of required and recommended changes to make when migrating from the previous v19.3.0 release can be found in v19.4 Migration Guide.
Full ChangeLog
The full ChangeLog from the previous v19.3.0 release can be found at the link below.