Wiznet makers

josephsr

Published July 02, 2026 ©

143 UCC

13 WCC

13 VAR

0 Contests

0 Followers

0 Following

Original Link

Rust-Based NGFW for the Sinara Booster RF Power Amplifier

Booster NGFW is a Rust firmware rewrite that adds MQTT telemetry, channel protection, USB configuration, and safer control for an 8-channel Sinara RF amplifier.

COMPONENTS
PROJECT DESCRIPTION

Project Overview

Booster NGFW is not a general RF amplifier design repository. It is the firmware layer for operating the Sinara Booster safely and remotely. The firmware supervises RF modules, handles interlock and fault conditions, publishes telemetry over MQTT, accepts runtime settings, and exposes local service/configuration through USB serial. The official documentation identifies three application interfaces: front-panel buttons, USB port, and Ethernet via MQTT.

The underlying Booster hardware provides several watts of RF output across eight channels between 40 MHz and 500 MHz in a compact 2U 19-inch chassis. It includes Ethernet-based remote monitoring/configuration, per-channel monitoring, interlocks, and modular field-replaceable RF channels.

System Architecture

 
[Front Panel Buttons]
  ├─ Standby
  └─ Interlock Reset
        │
        ▼
[STM32F4 Firmware: Rust + RTIC]
  ├─ Channel monitor
  ├─ Telemetry task
  ├─ Button polling
  ├─ USB processing
  ├─ Settings update
  ├─ Watchdog check-in
  └─ RF channel state machine
        │
        ├──────────────► [Ethernet]
        │                  ├─ W5500 MACRAW
        │                  └─ ENC424J600
        │                         │
        │                         ▼
        │                    [smoltcp]
        │                         │
        │                         ├─ MQTT Telemetry
        │                         ├─ Miniconf Settings
        │                         └─ MQTT Control / Python CLI
        │
        ▼
[8 RF Amplifier Channels]
  ├─ Bias DAC
  ├─ Input power ADC
  ├─ Output / reflected power sensing
  ├─ Temperature monitor
  ├─ Interlock threshold DAC
  ├─ RF switch control
  └─ Fan control
 

The firmware uses no_std, no_main, RTIC v2, stm32f4xx-hal, smoltcp, smoltcp-nal, minimq, minireq, miniconf, miniconf_mqtt, w5500, and enc424j600. These dependencies define a bare-metal Rust firmware rather than a Linux application or high-level gateway program.

Operation Flow

 
Boot
  ↓
STM32F4 hardware initialization
  ↓
GPIO / I2C / SPI / ADC / USB / watchdog / flash setup
  ↓
RF channel enumeration through I2C mux
  ↓
Detected channel modules are attached to RF channel state machines
  ↓
Runtime settings are loaded from EEPROM / flash
  ↓
Network controller is detected
  ├─ W5500 → MACRAW initialization
  └─ ENC424J600 → MAC initialization
  ↓
smoltcp network stack is started
  ↓
Periodic operation
  ├─ Channel monitoring
  ├─ LED status update
  ├─ Fan control
  ├─ MQTT telemetry publication
  ├─ MQTT / Miniconf settings processing
  ├─ USB serial service processing
  └─ Watchdog check-in
 

The initialization code configures clocks, watchdog, I2C buses, RF channel pins, ADC, EEPROM/flash settings, Ethernet controller detection, USB CDC serial, and fan control. It detects W5500 by reading the W5500 version register and otherwise initializes ENC424J600.

RF Channel Control Flow

Each RF channel is detected and instantiated only when its expected I2C devices respond. The channel discovery loop selects each mux bus, creates an RfChannel, wraps it in an RfChannelMachine, and stores only successfully enumerated channels.

The channel model includes bias DAC, input power ADC, temperature monitor, power monitor, interlock threshold DAC, EEPROM, control pins, output power sensing, and reflected power sensing. The code defines fault conditions for over-temperature, under-temperature, and supply alert, and defines power interlocks for input, output, and reflected power.

The RF state machine includes states such as Off, Powerup, Powered, Enabled, Tripped, Powerdown, and Blocked. Interlock trips can disable the RF switch, while fault states can move the channel into a blocked state.

Network Flow

 
RF channel measurements
  ↓
STM32F4 firmware
  ↓
smoltcp network stack
  ↓
MQTT topics
  ↓
Telemetry / settings / control clients
 

Booster uses MQTT for telemetry reporting, runtime settings, and channel control. MQTT topics are prefixed with dt/sinara/booster/<ID>, where the default ID is the device MAC address unless configured through USB. Channel telemetry is published under <prefix>/telemetry/ch<N> for connected channels, with N ranging from 0 to 7.

Runtime settings are managed through Miniconf. The documentation also describes a Python package under the repository’s py folder for channel bias tuning and saving active channel settings to EEPROM.

WIZnet Product Usage

ItemAssessment
WIZnet Product RoleW5500 Ethernet Controller
System RoleSPI-connected Ethernet MAC path for Booster network communication
Confirmed Code PathW5500 version register detection followed by initialize_macraw()
Network Stacksmoltcp on STM32F4 firmware
MQTT RoleTelemetry, settings, and control transport over Ethernet
Alternative Ethernet ControllerENC424J600

The firmware explicitly detects W5500 by checking for version value 0x04, resets the W5500, and initializes it with initialize_macraw(). If W5500 is not detected, it initializes ENC424J600 instead.

TOE Usage

TOE ItemAssessment
TOE UsageNot used
BasisW5500 is initialized in MACRAW mode
WIZnet Socket Register API코드상 확인되지 않음
Arduino Ethernet Library해당 없음
ESP-IDF esp_eth / esp_netif / lwIP Socket Layer해당 없음
Other Framework / Driver PathRust w5500 crate + smoltcp / smoltcp-nal
TCP/IP Processing LocationSTM32F4 firmware-side software network stack

The code uses initialize_macraw() for W5500 and then creates a smoltcp_nal::NetworkStack, indicating that W5500 is used as a MAC-level Ethernet interface rather than as a TCP/IP socket offload device.

Hybrid Network Assessment

ItemAssessment
Hybrid NetworkNo
Wired NetworkEthernet confirmed
Wireless Network저장소 내 명시 없음
BasisOfficial interfaces are front-panel buttons, USB serial, and Ethernet/MQTT

The documentation lists front-panel buttons, USB, and Ethernet via MQTT as the supported application interfaces. No Wi-Fi, BLE, LoRa, cellular, or other wireless network path is described in the reviewed project materials.

Strengths

StrengthTechnical Meaning
Rust embedded implementationUses a modern no_std Rust firmware structure for STM32F4
Explicit RF channel state machineSeparates power-up, enabled, tripped, power-down, and blocked states
Safety-oriented channel controlInterlocks and fault states protect the amplifier and connected RF loads
MQTT telemetryEnables remote monitoring of channel status and measurements
Miniconf settingsProvides structured runtime configuration over the network
USB service pathProvides local logging, network/MQTT configuration, reboot, DFU entry, and service information
Ethernet controller flexibilitySupports both W5500 and ENC424J600 through runtime detection
MaintainabilityRewritten to align with related QUARTIQ/Sinara projects and support continued updates

The firmware’s RTIC tasks include channel monitoring, telemetry reporting, button handling, USB processing, settings update, network processing, and watchdog check-ins.

Limitations

LimitationDescription
Hardware specificityThe firmware is tied to Sinara Booster hardware and its RF channel architecture
Not a generic RF amplifier firmwareDirect reuse on unrelated RF amplifier boards would require hardware adaptation
Measurement precision boundaryBooster power measurements are useful diagnostics but are not equivalent to a test-grade network analyzer
Legacy setting compatibility constraintsSaved settings may overwrite older EEPROM-based channel configuration and calibrations
TOE not usedW5500 is not used for socket-level TCP/IP offload
Wireless networking저장소 내 명시 없음

The Sinara Booster wiki states that power measurement is useful but should not be treated as test-and-measurement-grade network analysis, and high VSWR can cause dB-level forward-power measurement errors.

Application Value

Booster NGFW is valuable as a reference for network-enabled laboratory equipment firmware. It combines embedded Rust, multi-channel hardware supervision, RF protection logic, MQTT telemetry, persistent settings, USB service operation, and Ethernet controller abstraction in a single instrument-control system.

The project is especially relevant to:

Use CaseValue
Quantum control infrastructureRemote RF amplifier supervision in Sinara / ARTIQ-oriented environments
Laboratory automationMQTT-based integration with monitoring and control systems
Embedded Rust firmwarePractical example of RTIC, no_std, smoltcp, USB CDC, flash settings, and hardware drivers
W5500 MACRAW networkingExample of using W5500 as a raw Ethernet MAC with a host-side TCP/IP stack
RF equipment safety controlChannel-level interlock, trip, fault, and RF disable workflow

Final Summary

Booster NGFW is a Rust-based firmware rewrite for the Sinara Booster 8-channel RF power amplifier. Its main technical value lies in safe RF channel management, structured telemetry, remote configuration, and maintainable embedded firmware design. W5500 is used as an Ethernet controller, but the implementation uses MACRAW mode with smoltcp; therefore, it is not a W5500 TCP/IP Offload Engine example. The project is best classified as laboratory equipment control firmware with strong relevance to RF amplifier supervision and networked experimental systems.

Author Information

ItemInformation
Repositoryquartiq/booster
OrganizationQUARTIQ
Authors Listed in Cargo.tomlRyan Summers, Robert Jördens
CopyrightCopyright (C) 2020–2022 QUARTIQ GmbH
LicenseMIT OR Apache-2.0
Latest Release Shown on GitHubv0.6.0, Aug 29, 2024
Related Hardware EcosystemSinara open hardware ecosystem

The repository page identifies the project as firmware for the Sinara Booster RF amplifier, lists Rust and Python as the main languages, and shows MIT/Apache-2.0 licensing. Cargo metadata lists Ryan Summers and Robert Jördens as authors.


Sinara Booster RF 증폭기를 위한 Rust 기반 제어 펌웨어

프로젝트 개요

Booster NGFW는 RF 증폭기 회로 자체를 새로 설계하는 저장소가 아니라, Sinara Booster 장비를 안전하게 운용하기 위한 펌웨어 저장소이다. 펌웨어는 RF 모듈 감지, 채널 상태 제어, interlock 및 fault 처리, MQTT telemetry 전송, runtime setting 처리, USB serial 기반 설정 및 service interface를 담당한다. 공식 문서는 Booster 애플리케이션과 상호작용하는 경로를 front-panel button, USB port, Ethernet via MQTT의 세 가지로 정리한다.

Sinara Booster 하드웨어는 2U 19인치 chassis에 들어가는 8채널 RF power amplifier이며, 40 MHz에서 500 MHz 범위에서 수 W급 RF 출력을 제공한다. Ethernet 기반 원격 monitoring/configuration, per-channel monitoring, interlock, modular channel 구조를 갖는다.

시스템 구조

 
[Front Panel Buttons]
  ├─ Standby
  └─ Interlock Reset
        │
        ▼
[STM32F4 Firmware: Rust + RTIC]
  ├─ Channel monitor
  ├─ Telemetry task
  ├─ Button polling
  ├─ USB processing
  ├─ Settings update
  ├─ Watchdog check-in
  └─ RF channel state machine
        │
        ├──────────────► [Ethernet]
        │                  ├─ W5500 MACRAW
        │                  └─ ENC424J600
        │                         │
        │                         ▼
        │                    [smoltcp]
        │                         │
        │                         ├─ MQTT Telemetry
        │                         ├─ Miniconf Settings
        │                         └─ MQTT Control / Python CLI
        │
        ▼
[8 RF Amplifier Channels]
  ├─ Bias DAC
  ├─ Input power ADC
  ├─ Output / reflected power sensing
  ├─ Temperature monitor
  ├─ Interlock threshold DAC
  ├─ RF switch control
  └─ Fan control
 

소프트웨어 구성은 no_std, no_main 기반 Rust firmware이며, RTIC v2, stm32f4xx-hal, smoltcp, smoltcp-nal, minimq, minireq, miniconf, miniconf_mqtt, w5500, enc424j600 등을 사용한다. 이는 Linux 기반 애플리케이션이나 단순 gateway 프로그램이 아니라, STM32F4에서 동작하는 bare-metal 장비 제어 펌웨어에 해당한다.

동작 흐름

 
Boot
  ↓
STM32F4 hardware initialization
  ↓
GPIO / I2C / SPI / ADC / USB / watchdog / flash 초기화
  ↓
I2C mux를 통한 RF channel enumeration
  ↓
감지된 RF channel을 state machine에 연결
  ↓
EEPROM / flash 기반 runtime settings 로드
  ↓
Ethernet controller 감지
  ├─ W5500 → MACRAW 초기화
  └─ ENC424J600 → MAC 초기화
  ↓
smoltcp network stack 시작
  ↓
주기적 운용
  ├─ Channel monitoring
  ├─ LED status update
  ├─ Fan control
  ├─ MQTT telemetry publication
  ├─ MQTT / Miniconf settings processing
  ├─ USB serial service processing
  └─ Watchdog check-in
 

초기화 코드는 clock, watchdog, I2C bus, RF channel pin, ADC, EEPROM/flash settings, Ethernet controller detection, USB CDC serial, fan control을 설정한다. Ethernet controller는 W5500 version register를 읽어 W5500 여부를 판단하고, 그렇지 않은 경우 ENC424J600을 초기화한다.

RF 채널 제어 흐름

각 RF 채널은 I2C mux를 통해 순차적으로 선택되며, 필요한 I2C device가 응답하는 경우에만 RfChannel로 생성된다. 이후 RfChannelMachine으로 감싸져 channel array에 등록된다.

채널 구성은 bias DAC, input power ADC, temperature monitor, power monitor, interlock threshold DAC, EEPROM, control pin, output power sensing, reflected power sensing을 포함한다. 코드상 fault 조건은 over-temperature, under-temperature, supply alert로 정의되고, power interlock은 input, output, reflected 항목으로 정의된다.

RF channel state machine은 Off, Powerup, Powered, Enabled, Tripped, Powerdown, Blocked 상태를 포함한다. Interlock trip은 RF switch disable로 이어질 수 있고, fault 조건은 channel을 blocked 상태로 전환할 수 있다.

네트워크 흐름

 
RF channel measurements
  ↓
STM32F4 firmware
  ↓
smoltcp network stack
  ↓
MQTT topics
  ↓
Telemetry / settings / control clients
 

Booster는 MQTT를 사용해 telemetry reporting, runtime settings, channel control을 수행한다. MQTT topic prefix는 dt/sinara/booster/<ID>이며, 기본 ID는 장치 MAC address이고 USB를 통해 변경할 수 있다. Channel telemetry는 <prefix>/telemetry/ch<N> topic으로 발행되며, N은 0부터 7까지의 채널 번호이다.

Runtime settings는 Miniconf를 통해 관리된다. 저장소의 py 폴더에는 channel bias tuning과 active channel settings 저장을 위한 Python package가 제공된다.

WIZnet 제품 사용 여부와 시스템 내 역할

항목판단
WIZnet Product RoleW5500 Ethernet Controller
시스템 내 역할SPI 기반 Ethernet MAC 경로
코드상 근거W5500 version register 감지 후 initialize_macraw() 호출
Network StackSTM32F4 펌웨어 내 smoltcp
MQTT 역할Ethernet 기반 telemetry, settings, control transport
대체 Ethernet ControllerENC424J600

펌웨어는 W5500의 version 값 0x04를 확인해 W5500을 감지하고, W5500 reset 이후 initialize_macraw()로 초기화한다. W5500이 감지되지 않으면 ENC424J600을 초기화한다.

TOE 사용 여부

TOE 항목판단
TOE 사용 여부사용하지 않음
판단 근거W5500을 MACRAW mode로 초기화
WIZnet socket register 직접 제어코드상 확인되지 않음
Arduino Ethernet library 경유해당 없음
ESP-IDF esp_eth / esp_netif / lwIP socket 계층 경유해당 없음
기타 framework 또는 driver 경유Rust w5500 crate + smoltcp / smoltcp-nal
TCP/IP 처리 위치STM32F4 firmware-side software network stack

코드상 W5500은 initialize_macraw()로 초기화되고, 이후 smoltcp_nal::NetworkStack이 생성된다. 따라서 이 구현은 W5500의 socket 기반 TCP/IP offload를 사용하는 구조가 아니라, W5500을 MAC-level Ethernet interface로 사용하고 TCP/IP 처리는 MCU 측 software stack에서 수행하는 구조이다.

Hybrid Network 여부

항목판단
Hybrid Network아님
유선 네트워크Ethernet 확인
무선 네트워크저장소 내 명시 없음
판단 근거공식 interface는 front-panel button, USB serial, Ethernet/MQTT로 정리됨

문서상 Booster 애플리케이션의 통신 경로는 front-panel button, USB port, Ethernet via MQTT이다. Wi-Fi, BLE, LoRa, cellular 등 무선 네트워크 경로는 검토한 자료에서 확인되지 않는다.

장점

장점기술적 의미
Rust 기반 embedded firmwareSTM32F4 대상 no_std 구조를 사용
명시적 RF channel state machinepower-up, enabled, tripped, power-down, blocked 상태를 분리
안전 중심 channel controlamplifier와 연결 부하를 보호하기 위한 interlock/fault 처리
MQTT telemetry원격 상태 감시 및 logging 가능
Miniconf settings구조화된 runtime configuration 제공
USB service interfacelogging, network/MQTT 설정, reboot, DFU 진입, service 정보 제공
Ethernet controller flexibilityW5500과 ENC424J600을 runtime detection으로 지원
유지보수성기존 firmware 재작성 및 관련 프로젝트와의 구조 정렬

RTIC task 구성은 channel monitoring, telemetry reporting, button handling, USB processing, settings update, network processing, watchdog check-in으로 나뉜다.

한계

한계내용
하드웨어 종속성Sinara Booster 하드웨어와 RF channel 구조에 강하게 결합됨
범용 RF 증폭기 펌웨어 아님다른 RF amplifier board에 직접 적용하려면 hardware adaptation 필요
측정 정밀도 한계Booster power measurement는 운영 진단용이며 test-grade network analyzer 수준이 아님
Legacy setting 호환성 제약새 settings 저장 방식이 기존 EEPROM 기반 설정과 calibration을 덮어쓸 수 있음
TOE 미사용W5500 socket 기반 TCP/IP offload 예제로 분류되지 않음
무선 네트워크저장소 내 명시 없음

Sinara Booster wiki는 power measurement가 유용한 기능이지만 test-and-measurement-grade network analyzer가 아니며, high VSWR 조건에서 forward power measurement에 dB 단위 오차가 발생할 수 있다고 설명한다.

적용 가치

Booster NGFW는 network-enabled laboratory equipment firmware의 참고 사례로 가치가 있다. Embedded Rust, multi-channel hardware supervision, RF protection logic, MQTT telemetry, persistent settings, USB service operation, Ethernet controller abstraction이 하나의 장비 제어 시스템 안에 결합되어 있다.

적용 영역가치
Quantum control infrastructureSinara / ARTIQ 환경에서 RF amplifier 원격 감시 및 제어
Laboratory automationMQTT 기반 monitoring/control system 통합
Embedded Rust firmwareRTIC, no_std, smoltcp, USB CDC, flash settings, hardware driver 예시
W5500 MACRAW networkingW5500을 raw Ethernet MAC으로 사용하고 host-side TCP/IP stack과 결합한 사례
RF equipment safety controlChannel-level interlock, trip, fault, RF disable workflow 참고

최종 요약

Booster NGFW는 Sinara Booster 8채널 RF power amplifier를 위한 Rust 기반 펌웨어 재작성 프로젝트이다. 핵심 가치는 RF 출력 자체가 아니라, 각 채널을 안전하게 감시하고 제어하는 firmware architecture, MQTT telemetry, runtime settings, USB service interface, Ethernet 기반 원격 운용에 있다. W5500은 Ethernet controller로 사용되지만, TOE 방식이 아니라 MACRAW mode와 smoltcp 조합으로 사용된다. 따라서 이 프로젝트는 W5500 TCP/IP Offload Engine 사례가 아니라, W5500을 MACRAW Ethernet interface로 사용한 Rust 기반 실험장비 제어 펌웨어 사례로 분류된다.

저자 정보

항목내용
Repositoryquartiq/booster
OrganizationQUARTIQ
Cargo.toml AuthorsRyan Summers, Robert Jördens
CopyrightCopyright (C) 2020–2022 QUARTIQ GmbH
LicenseMIT OR Apache-2.0
GitHub 표시 최신 릴리스v0.6.0, 2024-08-29
관련 하드웨어 생태계Sinara open hardware ecosystem

저장소 페이지는 이 프로젝트를 Sinara Booster RF amplifier용 firmware로 설명하며, 주요 언어는 Rust와 Python으로 표시된다. Cargo metadata에는 Ryan Summers와 Robert Jördens가 작성자로 표기되어 있다.

Documents
  • booster

Comments Write