Firmware Engineer
About the role
This role focuses on developing and validating embedded diagnostics software on Linux-based systems for advanced networking and telecom hardware products. You will contribute to new hardware system bring-up, create and maintain diagnostic test suites, and help troubleshoot complex hardware issues. The position offers the opportunity to work on both existing and next-generation products, collaborating closely with ASIC engineers, hardware teams, vendors, and manufacturers while using cutting-edge networking and high-speed interface technologies.
Responsibilities
- Design, develop, and maintain embedded diagnostics software using C and C++ in a Linux environment.
- Implement and enhance diagnostic test suites to validate hardware functionality, performance, and reliability.
- Participate in new hardware system bring-up, including initial power-on, configuration, and validation of boards.
- Develop, integrate, and debug low-level device drivers for embedded peripherals such as I2C, PCIe, SPI, MDIO, and other interfaces.
- Work with board support packages (BSP), including bootloaders and low-level system initialization for new and existing platforms.
- Perform hands-on work in the lab to bring up boards, configure and test Ethernet and networking interfaces, and validate PHY, SSD, and other high-speed components.
- Troubleshoot and resolve hardware and software interaction issues across microcontrollers, networking ASICs, PHYs, and storage devices.
- Collaborate closely with ASIC and hardware engineering teams to define diagnostics requirements and support hardware validation.
- Coordinate with vendors and manufacturers to support hardware testing, diagnostics integration, and issue resolution.
- Apply knowledge of Layer 2 and Layer 3 networking protocols and technologies, including TCP/IP, to design and validate network-related diagnostics.
- Test and validate networking ASICs and PHYs, including functional, performance, and interoperability testing.
- Develop and execute diagnostics for storage and non-volatile memory devices such as SSD, USB, NVRAM, and eMMC.
- Work with high-speed serdes hardware and software to ensure reliable operation, signal integrity, and performance.
- Document designs, test procedures, and troubleshooting steps to support ongoing product development and maintenance.
Requirements
- Minimum of a bachelor’s degree in computer engineering, computer science, electrical engineering, or a closely related field.
- At least 2 years of professional experience in embedded software development using C.
- Extensive experience with C and C++ programming languages for low-level and embedded systems.
- Hands-on experience with microcontrollers and embedded peripherals such as I2C, PCIe, SPI, MDIO, and similar interfaces.
- Strong experience developing and debugging software in a Linux environment.
- Experience working with board support packages (BSP), including board bring-up, low-level device driver development, and bootloaders.
- Practical lab experience with board bring-up, including configuring and validating Ethernet, networking interfaces, PHYs, SSDs, and other high-speed components.
- Understanding of Layer 2 and Layer 3 network protocols and technologies, including TCP/IP.
- Experience testing and validating networking ASICs and PHYs.
- Experience working with storage and non-volatile memory technologies such as SSD, USB, NVRAM, or eMMC.
- Experience with high-speed serdes hardware or software.
Qualifications
- Bachelor of Science in electrical engineering, computer engineering, computer science, or a related discipline.
- Experience with embedded C and embedded software development for diagnostics and device drivers.
- Experience in firmware development, including bootloaders and low-level board initialization.
- Experience with device driver development for Linux-based systems.
- Familiarity with board support packages and hardware abstraction for complex networking platforms.
- Exposure to diagnostics methodologies and tools used in large-scale networking or telecom product environments.
- Ability to work effectively with cross-functional teams, including ASIC, hardware, and manufacturing partners.
- Strong analytical and troubleshooting skills for complex hardware-software interaction issues.
Work Environment
This is an onsite position based in Austin, with work performed on-site five days per week. You will spend significant time in a lab environment working directly with development boards, networking equipment, high-speed interfaces, and diagnostic tools. The role involves close collaboration with engineering teams and access to the latest networking, telecom, and hardware technologies, providing a dynamic, technically challenging environment focused on both existing and new product development.
Pay
The pay range for this position is $50.00 - $52.00/hr. Individual compensation offered for this position within this range will depend on many factors, including qualifications, skills, relevant experience, job knowledge, geographic location, internal equity, and other pertinent job-related factors.
Benefits
Eligibility requirements apply to some benefits and may depend on your job classification and length of employment. Benefits are subject to change and may be subject to specific elections, plan, or program terms. If eligible, the benefits available for this temporary role may include the following:
- Medical, dental & vision
- Critical Illness, Accident, and Hospital insurance
- 401(k) Retirement Plan – Pre-tax and Roth post-tax contributions available
- Life Insurance (Voluntary Life & AD&D for the employee and dependents)
- Short and long-term disability
- Health Spending Account (HSA)
- Transportation benefits
- Employee Assistance Program
- Time Off/Leave (PTO, Vacation or Sick Leave)
Schedule
This is a Contract position based out of Austin, TX, with a fully onsite work schedule.