About this role
- Location: Bellevue, Washington, hybrid, 3 days per week on-site.
- Duration: 6-month W-2 contract with possibility of conversion to full time.
About the role:
- This is an embedded firmware role, not application software. Bare-PCB bring-up to production firmware on 32-bit ARM Cortex-M microcontrollers, in embedded C .
- The product is built around USB-C Power Delivery controllers . Candidates must understand USB-C / USB-PD: source, sink and dual-role, power contract negotiation, fault handling.
- Hands-on bench work is mandatory: oscilloscope, logic or protocol analyzer, SWD/JTAG debugger, UART logging, working from datasheets, register tables and schematics.
- Companion-IC communication over I2C, SPI, UART .
- Strong plus: Infineon EZ-PD / PMG1 or Cypress CCGx PD controllers, ModusToolbox or STM32Cube, bootloader / DFU work, power-path or regulator firmware (VBUS, OVP/UVP/OCP), USB hubs, DisplayPort Alt Mode, redrivers.
Role Description
We're bringing up new hardware built around USB-C Power Delivery controllers and are looking for an embedded firmware engineer to help take these boards from bare PCB to working, production-quality firmware. You'll write and debug firmware on 32-bit ARM microcontrollers, configure companion ICs over I2C/SPI/UART, and work hands-on at the bench in collaboration with our hardware team.
Job Responsibilities
- Bring up new PCBs: validate power/clocks, connect a debugger, enable peripherals, and get firmware running on new hardware
- Develop and debug embedded C firmware on ARM Cortex-M-class MCUs
- Configure and drive companion ICs over I2C or other peripheral buses
- Implement and debug USB-C / USB-PD behavior (power negotiation, source/sink roles, fault handling, etc.)
- Debug at the bench with oscilloscope, protocol/logic analyzer, multimeter, and SWD/JTAG
- Work from datasheets, register tables, and schematics
- Document configurations and design decisions
- Collaborate with hardware engineers to isolate hardware vs. firmware issues
Required Skills
- Strong embedded C on 32-bit MCUs (ARM Cortex-M or similar): interrupts, register-level peripheral work, development under flash/RAM constraints
- Working understanding of USB-C/USB-PD (source/sink/DRP roles, power contract negotiation)
- I2C/SPI/UART peripheral/companion-IC communication, configuration, and debug
- Hands-on hardware bring-up experience: taking a board from power-on to running firmware, or debugging firmware against real hardware
- Datasheet and schematic literacy: able to configure a part from its register tables and confirm pin/power connections
- Comfortable with standard bench debug tools: oscilloscope, logic/protocol analyzer, SWD/JTAG debugger, UART logging
- Git proficiency
Preferred Skills
- Experience with a Cypress/Infineon MCU SDK/IDE and its middleware (e.g. ModusToolbox, STM32Cube, or similar), including creating/customizing a board support package
- Firmware update/bootloader work (DFU or equivalent): building and flashing update images
- Power-path or regulator firmware: VBUS control, fault detection/recovery (OVP/UVP/OCP), enable/soft-start sequencing
- USB subsystem experience: hubs, DisplayPort Alt Mode, redrivers/retimers, or billboard devices
Nice to have
- Prior work with Infineon EZ-PD / PMG1 (or Cypress CCGx) PD controllers and ModusToolbox
- CI for embedded builds
- USB-IF PD compliance/USB-C requirements familiarity