Software Engineer, Facebook Connectivity
Facebook - full time
Menlo Park, California, USA
08 Apr 2019
At Facebook Connectivity, we believe that connecting the world is one of the greatest challenges of our generation, and that everyone deserves access to the knowledge, tools and opportunities that come from being connected. This is why we are developing new platforms and solutions for connectivity.
The Wireless Platforms and Protocols team is responsible for the operating system, embedded services and firmware for existing and upcoming connectivity boards (Terragraph, Wi-Fi, Cellular). The development includes kernel, drivers, management of peripheral devices, tools to optimize workflows and debugging, and packet switching data plane. The majority of development is in C, but C++ and Python are necessary for survival, as is an interest for tinkering and good understanding of the underlying hardware.
The team is also responsible for designing and developing of algorithms to support key wireless protocols as defined in 802.11 amendments (ad, ay, s, ax) and other related standards. The software developed by this team runs on application-specific embedded CPUs, system-on-chips, DSPs, baseband processors and other wireless-specific hardware.
- Drafting software that runs on embedded boards used for communications. This could span from bootloader, firmware running on specialized cores, Linux kernel development and user space applications.
- Develop firmware for networking protocols including provisioning and controlling wireless (PHY) hardware.
- Development, debugging, and maintenance of the firmware, in conjunction with the low level hardware.
- Architecture and design of firmware and platform software, including work with partner teams to ensure consistent design across components.
- Developing unit and system level tests, instrumenting test automation for collecting data and characterizing the performance.
- Utilize Facebook tools and software development processes to guide the development lifecycle.
- Knowledge of C, C++, and Nix systems.
- B.S. or M.S. in Computer Science, Electrical Engineering or a related discipline.
- Experience with software design, implementation, and deployment of embedded systems.
- Knowledge of real-time operating systems (RTOS), interfaces for data acquisition and control, and device drivers.
- Experience with hardware-in-the-loop testing and validation including the use of network test equipment and lab test equipment such as spectrum analyzers, oscilloscopes, and frequency synthesizers.
- Knowledge or experience in the following: ARM architecture, small to medium scale software development, test suite development, distributed code repositories, and embedded Linux.
- Bachelors or Masters Degree in CS or EE plus at least 5 years of communication software/systems experience.
- 5+ years experience in embedded C and build systems.
- 2+ years experience in Python and C++.
- Working knowledge of 802.11 standard, communication theory and digital signal processing.
- Experience with debugging of integrated HW & SW in lab and field.
- Experience with high volume production of communication products.