Contract Software Engineer (3-Month Term) - Raspberry Pi & Linux Development
We are seeking a highly skilled contract software engineer for a 3-month engagement, with a possible extension, to work on embedded systems development for a Raspberry Pi platform running Linux. This position will involve writing and optimizing code for both hardware and software interactions, ensuring efficient performance in a constrained environment.
Key Responsibilities:
- Develop, test, and maintain software applications for Linux-based systems running on Raspberry Pi.
- Interface with hardware components and sensors, ensuring compatibility with the Raspberry Pi platform.
- Interface with cellular modem radio, WiFi, Bluetooth, and other radio modules compatible with the Raspberry Pi platform.
- Interface with (PoE) IP cameras to record and manage incoming video streams as well as external storage.
- Troubleshoot and optimize code for performance, memory usage, and responsiveness.
- Collaborate with hardware engineers to integrate software with embedded systems.
- Write clear and well-documented code, including unit tests and debugging.
- Ensure software is stable, secure, and adheres to best development practices.
- Develop a plan for implementing Over-The-Air updates of the application and OS (when necessary)
Required Skills and Experience:
- Strong experience in C/C++ and Python programming on Linux.
- Proficiency with Raspberry Pi hardware (PI5 and CM4), including GPIO and other I/O interfaces.
- Proficiency with headless interfacing to Linux systems.
- Familiarity with embedded Linux operating systems.
- Experience with embedded systems, particularly in a resource-constrained environment.
- Familiarity with LAMP stack.
- Strong problem-solving skills and ability to debug complex issues.
- Ability to work independently or with a small team and deliver results on time.
- Close familiarity with software engineering tools, software development methodology and release processes
Preferred Qualifications:
- Experience with real-time operating systems (RTOS) or multi-threaded programming.
- Knowledge of common embedded system protocols (I2C, SPI, UART, etc.).
- Familiarity with version control systems (SVN, Git).
Duration: 3 months
Location: Remote or on-site (based on preference and location after gaining project familiarity)
Start Date: ASAP
This is an exciting opportunity for a contract engineer to contribute to an innovative project. If you have a passion for embedded systems and Linux development, we'd love to hear from you!