Overview
Role Overview
We are seeking an experienced Linux Software Engineer to contribute to the development of software for a passport scanning device. The role will involve C++ and Python programming, working closely with cameras, smart cards, and human interface devices. You'll play a key part in designing and implementing functionality for scanning, image capture, user interfaces, and peripheral communications.
Responsibilities
- Develop and maintain Linux-based software for passport scanning devices
- Implement image acquisition and processing functionality using Video4Linux (V4L2)
- Integrate with human interface devices such as buttons, LEDs, and sensors
- Manage smart card interactions with PCSC for e-passport data reading
- Design and implement GUI components using GTK
- Optimise performance for real-time image capture and processing
- Troubleshoot hardware and software integration issues in a Linux environment
- Document technical designs, APIs, and user guides
- Work collaboratively with hardware, QA, and support teams
Required Skills & Experience
- Strong C++ and Python development skills in Linux environments
- Hands-on experience with Video4Linux (V4L2) for camera and image capture
- Knowledge of HID integration for input and output hardware
- Experience using PCSC for smart card communication, ideally with e-passports
- Practical experience with OpenCV for image processing and computer vision
- GUI development experience with GTK
- Strong debugging and profiling skills in Linux
- Familiarity with device drivers, USB interfaces, and low-level hardware interactions
- Comfortable using Git and build systems such as Make or CMake
Desirable Skills & Experience
- Previous experience developing software for passport readers, ID scanners, or similar embedded devices
- Knowledge of ICAO standards and e-passport technologies such as MRZ and RFID chip access