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.
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 controlThe 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-inThe 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 clientsBooster 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
| Item | Assessment |
|---|---|
| WIZnet Product Role | W5500 Ethernet Controller |
| System Role | SPI-connected Ethernet MAC path for Booster network communication |
| Confirmed Code Path | W5500 version register detection followed by initialize_macraw() |
| Network Stack | smoltcp on STM32F4 firmware |
| MQTT Role | Telemetry, settings, and control transport over Ethernet |
| Alternative Ethernet Controller | ENC424J600 |
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 Item | Assessment |
|---|---|
| TOE Usage | Not used |
| Basis | W5500 is initialized in MACRAW mode |
| WIZnet Socket Register API | 코드상 확인되지 않음 |
| Arduino Ethernet Library | 해당 없음 |
ESP-IDF esp_eth / esp_netif / lwIP Socket Layer | 해당 없음 |
| Other Framework / Driver Path | Rust w5500 crate + smoltcp / smoltcp-nal |
| TCP/IP Processing Location | STM32F4 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
| Item | Assessment |
|---|---|
| Hybrid Network | No |
| Wired Network | Ethernet confirmed |
| Wireless Network | 저장소 내 명시 없음 |
| Basis | Official 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
| Strength | Technical Meaning |
|---|---|
| Rust embedded implementation | Uses a modern no_std Rust firmware structure for STM32F4 |
| Explicit RF channel state machine | Separates power-up, enabled, tripped, power-down, and blocked states |
| Safety-oriented channel control | Interlocks and fault states protect the amplifier and connected RF loads |
| MQTT telemetry | Enables remote monitoring of channel status and measurements |
| Miniconf settings | Provides structured runtime configuration over the network |
| USB service path | Provides local logging, network/MQTT configuration, reboot, DFU entry, and service information |
| Ethernet controller flexibility | Supports both W5500 and ENC424J600 through runtime detection |
| Maintainability | Rewritten 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
| Limitation | Description |
|---|---|
| Hardware specificity | The firmware is tied to Sinara Booster hardware and its RF channel architecture |
| Not a generic RF amplifier firmware | Direct reuse on unrelated RF amplifier boards would require hardware adaptation |
| Measurement precision boundary | Booster power measurements are useful diagnostics but are not equivalent to a test-grade network analyzer |
| Legacy setting compatibility constraints | Saved settings may overwrite older EEPROM-based channel configuration and calibrations |
| TOE not used | W5500 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 Case | Value |
|---|---|
| Quantum control infrastructure | Remote RF amplifier supervision in Sinara / ARTIQ-oriented environments |
| Laboratory automation | MQTT-based integration with monitoring and control systems |
| Embedded Rust firmware | Practical example of RTIC, no_std, smoltcp, USB CDC, flash settings, and hardware drivers |
| W5500 MACRAW networking | Example of using W5500 as a raw Ethernet MAC with a host-side TCP/IP stack |
| RF equipment safety control | Channel-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
| Item | Information |
|---|---|
| Repository | quartiq/booster |
| Organization | QUARTIQ |
| Authors Listed in Cargo.toml | Ryan Summers, Robert Jördens |
| Copyright | Copyright (C) 2020–2022 QUARTIQ GmbH |
| License | MIT OR Apache-2.0 |
| Latest Release Shown on GitHub | v0.6.0, Aug 29, 2024 |
| Related Hardware Ecosystem | Sinara 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 clientsBooster는 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 Role | W5500 Ethernet Controller |
| 시스템 내 역할 | SPI 기반 Ethernet MAC 경로 |
| 코드상 근거 | W5500 version register 감지 후 initialize_macraw() 호출 |
| Network Stack | STM32F4 펌웨어 내 smoltcp |
| MQTT 역할 | Ethernet 기반 telemetry, settings, control transport |
| 대체 Ethernet Controller | ENC424J600 |
펌웨어는 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 firmware | STM32F4 대상 no_std 구조를 사용 |
| 명시적 RF channel state machine | power-up, enabled, tripped, power-down, blocked 상태를 분리 |
| 안전 중심 channel control | amplifier와 연결 부하를 보호하기 위한 interlock/fault 처리 |
| MQTT telemetry | 원격 상태 감시 및 logging 가능 |
| Miniconf settings | 구조화된 runtime configuration 제공 |
| USB service interface | logging, network/MQTT 설정, reboot, DFU 진입, service 정보 제공 |
| Ethernet controller flexibility | W5500과 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 infrastructure | Sinara / ARTIQ 환경에서 RF amplifier 원격 감시 및 제어 |
| Laboratory automation | MQTT 기반 monitoring/control system 통합 |
| Embedded Rust firmware | RTIC, no_std, smoltcp, USB CDC, flash settings, hardware driver 예시 |
| W5500 MACRAW networking | W5500을 raw Ethernet MAC으로 사용하고 host-side TCP/IP stack과 결합한 사례 |
| RF equipment safety control | Channel-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 기반 실험장비 제어 펌웨어 사례로 분류된다.
저자 정보
| 항목 | 내용 |
|---|---|
| Repository | quartiq/booster |
| Organization | QUARTIQ |
| Cargo.toml Authors | Ryan Summers, Robert Jördens |
| Copyright | Copyright (C) 2020–2022 QUARTIQ GmbH |
| License | MIT 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가 작성자로 표기되어 있다.
