Skip to content

Switchtec-user v4.5 Release

Latest

Choose a tag to compare

@BenReed161 BenReed161 released this 26 Jun 16:12
ae3259e

About this Release

Release date: 2026-06-26
Commits: 40 | Files changed: 19 | +1,929 / -610 lines


This release supports the following Switchtec devices and releases:

Generation Variant Release
Gen6 PSX Compliance RC2 (F/W version: 0a.05.0.017)
Gen5 PFX MR3 (F/W version: 06.09.0.056)
Gen5 PSX MR3 (F/W version: 07.09.0.056)
Gen4 PFX/PSX MR5 Patch3 (F/W version: 03.90.0.06C)

Tested on switchtec kernel main with Ubuntu 24.04.5 LTS with kernel 6.8.0-79-generic.

What is New Since v4.4 Release?

Security & Device Configuration (Gen6)

New Commands

  • Add static-token-disable command — irreversibly disables static debug tokens (Gen6)
  • Add debug-token-erase command — erases both debug token partition copies via new FWDNLD sub-command (Gen6)
  • Add debug token partition option to fw-toggle command (Gen6 only; RIOT core toggle remains Gen5 only) — reverted and re-added with fix
  • Add firmware and config toggle fix — resolves issue when both firmware and config are toggled together

Token & Secure State Enhancements

  • Add support for GEN6_VER_UPDATE and GEN6_DISABLE_STATIC token types
  • Add CERT and DBG partition types
  • Separate state-set into device-lock (phase 1) and state-set (phase 2 only)
  • Add --check-type integrity/signature option to DOK commands
  • Fix DOK auth flag ordering to match firmware
  • Add Gen6 secure version update via token
  • Consolidate I3C PID and CSECCF CLI options

Device Configuration

  • Add customer fields and ECC fields for device-config-set

BL1 Phase Support

  • Refactor get_configs_gen6 to use MRPC 0x126 diagnostics plus 0x127 device/security config instead of raw OTP reads
  • Add BL1-phase fallbacks: derive secure state from OTP, read JTAG status from secure-status register
  • Add switchtec_sn_ver_get_with_phase for explicit phase control of sn_ver sub-command
  • Add sn_ver_get phase check for Gen6
  • Update CLI info display with bitmap-based security version format for BL1 phase
  • Add all missing OTP DWORD defines (indices 11-13, 21-23, 25) and complete mask/LSB defines for I3C fields, algorithm disables, boot/failover disables, token disables, hash table disables, key hash statuses (BIAK0S-BIAK11S), and PUFAC

Build

  • Add HAVE_LIBCRYPTO guard for dok_key_revoke
  • Include dok_key_revoke in libcrypto configure check
  • Add missing cfg filenames for dok add/revoke

Diagnostics

Eye Capture

  • Add error and timeout polling for eye command — prevents hard-to-decode error messages on failure
  • Add polling with configurable timeout for I2C eye captures (which were taking longer than expected)
  • Add error reporting for in-progress eye captures
  • Add Gen6 y-range check and increase timeout
  • Add EIO check in eye_status function
  • Update Gen6 refclk input default from 0 to 100000 (sufficient sampling time per voltage/phase step)
  • Add validation check for Gen6 refclk value

OSA

  • Refactor OSA command arguments — replace convert_hex_str with default int arguments, removing unnecessary allocation/free cycles
  • Fix osa-dump-config bugs

Event Counter

  • Display ingress/egress direction in event counter output
  • Fix egress bit encoding and decoding in event counter setup

LTSSM

  • Remove incorrect byte passed as ltssm_majorltssm_minor

Bug Fixes

  • RTC: Fix 64-bit value truncation in RTC counter
  • MFG info: Fix OTP offsets for BL1 mfg info
  • MFG info: Fix compatibility issue in mfg info display
  • fw-toggle: Fix toggle in BL2 stage
  • Token mask: Fix -t option accepting 5/9 bit mask (update mask from 4 to 5)
  • Device config: Add header validation for device config binary files
  • Reset: Add exit condition for the reset command
  • SMS: Add formatting for SMS printf, minor version check
  • Gen6 execute: Revert removal of mfg exec support — Gen6 still supports exec command; remove -m option only
  • Octal parsing: Fix endptr handling that rejected 08/09 as invalid octal literals
  • MRPC error range: Add check to distinguish MRPC error codes from lock state errors
  • Index off-by-one: Fix index to start from 0
  • Read response: Add retry from device FD in read_resp()
  • fw-exec help: Add Gen6 not supported message in fw-exec help output

Code Quality

  • Refactor Gen6 security config and sn_ver_get for BL1 phase support (major restructuring of lib/mfg.c)
  • Refactor OSA command arguments — reduce 231 lines of hex string handling to 93 lines of direct int arguments

Pull Requests Included

PR Title
#376 Fix pass
#377 Secure changes 2
#378 OSA enhancements
#379 Info compat fix
#380 RTC 64-bit fix
#381 Revert commit 4803b6f
#382 BL2 fw-toggle fix
#383 Remove -m option Gen6
#384 BL1 OTP hash
#385 Eye changes
#386 Secure changes 3
#387 Libcrypto check
#388 Fix requests
#389 Revert commit 4a3bcac
#390 Inband eye fix
#391 Add missing secure change
#371 Event counter (arjunyg)
#392 Increase eye timeout
#393 Add help message
#394 Add dev cfg set params
#395 08/09 not valid octal
#396 Fix error message lock state
#397 Toggle cfg and fw