Embedded Software Engineer

UlyssesSan Francisco, CA

About The Position

Ulysses is seeking an Embedded Systems Engineer to take ownership of the firmware, electronics integration, and low-level hardware for their autonomous underwater robotic systems. This role involves writing embedded code for sensor drivers, real-time control loops, communication stacks, and power management. It also includes hands-on work with electronics, such as debugging and reworking PCBs, assembling embedded systems, and contributing to PCB design. The engineer will collaborate with electrical, mechanical, and acoustics engineers to bring up new boards, diagnose hardware faults, and build the embedded platforms essential for autonomy and navigation software. The position offers the opportunity to see work progress from bare PCBs to ocean deployment and be involved in debugging at every stage.

Requirements

  • 2+ years of professional embedded software development in C and/or C++ on bare-metal or RTOS-based systems
  • Strong understanding of microcontroller architectures: peripherals, memory maps, clocks, DMA, interrupt controllers
  • Understanding of microcontroller software architecture and comfort reviewing/correcting AI-generated software
  • Experience writing production-quality device drivers for common interfaces: UART, CAN, Ethernet, ADC/DAC
  • Hands-on experience with hardware bring-up: reading schematics, using oscilloscopes, logic analyzers, and debuggers to diagnose issues at the board level
  • Familiarity with real-time operating systems (FreeRTOS, Zephyr, NuttX, or similar) and real-time design patterns
  • Familiarity with embedded software standards (MISRA C, BARR-C etc.)
  • Practical experience with communication protocol stacks such as CAN, Ethernet/UDP, or similar
  • Comfortable with version control (Git), CI/CD for embedded targets, and automated test frameworks
  • Ability to work across the hardware/software boundary and communicate effectively with electrical and mechanical engineers

Nice To Haves

  • Experience with PCB design (schematic capture and layout) for simple to moderately complex boards
  • Familiarity with robotic or autonomous system architectures, sensor fusion pipelines, or navigation system interfaces
  • Experience with underwater or marine systems, and harsh-environment deployments
  • Background in signal processing or DSP on embedded platforms (filtering, FFT, fusion)
  • Experience with Python for test automation, scripting, and data analysis alongside embedded C/C++ work
  • Exposure to FPGA or HDL design for high-speed data acquisition or signal processing
  • Experience building firmware update (OTA/bootloader) and fleet management infrastructure
  • Experience with discrete control systems, stability analysis, PID controller, state-space control etc.

Responsibilities

  • Assemble embedded systems prototypes from off-the-shelf modules, breakout boards, and custom PCBs, selecting components, wiring prototypes, and getting new subsystems running on the bench.
  • Diagnose board-level issues using oscilloscopes, logic analyzers, multimeters, and soldering tools, addressing signal integrity problems, power rail faults, incorrect component values, and layout mistakes.
  • Collaborate with electrical engineers on schematic capture, component selection, pin mapping, and layout review, providing firmware-informed input on design-for-test, connector placement, and debug access.
  • Design, implement, and maintain embedded firmware for robotic subsystems, including sensor interfaces, actuator control, power management, and inter-processor communication.
  • Write and debug board support packages, peripheral drivers, and bootloaders for custom electronics.
  • Build and own communication stacks for serial protocols, Ethernet, CAN bus, and acoustic modem interfaces.
  • Implement real-time control and data acquisition using timing-critical loops, interrupt-driven architectures, DMA pipelines, RTOS, and deterministic scheduling.
  • Develop robust logging, diagnostics, and fault-handling mechanisms for underwater systems.
  • Prepare embedded systems for ocean testing, support real-time monitoring during missions, and lead post-mission hardware and software triage.
  • Develop firmware update mechanisms, manufacturing test fixtures, calibration routines, and configuration management for fleet deployment.
  • Review and update/correct embedded software initially written by AI, ensuring robustness, memory safety, and production readiness.
  • Design portable, modular code for internal software libraries that can be easily ported to new projects and microcontrollers.
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service