Embedded Linux and SoC Software Engineer
C/C++ · Embedded Linux · RTOS · SoC · System Design
Espoo, Finland · Finnish permanent resident · Open to embedded and systems software roles in Europe
Embedded Linux and Software Portfolio
5+ years in embedded software | 11 commits in mainline Linux
Nokia and Etteplan experience | Merged Zephyr, U-Boot and DPDK contributions
- Embedded platforms: I work from board bring-up and kernel/RTOS integration to C/C++ components and application services.
- Production engineering: At Nokia, I worked on 5G RF/L1 and SoC platform software, including channel estimation, hardware integration, target debugging and Python validation tools. At Etteplan, I developed Python and Robot Framework test automation for embedded systems.
- Public engineering work: I contribute to Linux, Zephyr RTOS, U-Boot and DPDK, and build projects in C++ concurrency, ROS 2, Python services and AI-assisted incident investigation.
- Core: C, C++, Python and Bash; Embedded Linux, RTOS and real-time software.
- Platforms and drivers: Yocto/OpenEmbedded, U-Boot, Device Tree, Linux IIO, Zephyr RTOS and ARM64 SoCs.
- Integration and debugging: Hardware/software interfaces, GDB, JTAG, logs, traces, perf and ftrace.
- Networking and applications: DPDK, NXP DPAA2, SONiC tooling, ROS 2, FastAPI and Docker.
- Build and validation: Git, CMake, BitBake, Jenkins, GitHub Actions, Robot Framework and automated regression testing.
- Additional work: RISC-V coursework and quantum-software contributions through Qiskit and D-Wave Ocean.
My work covers the full path from board bring-up to application software. At the platform layer, I work with U-Boot, Device Tree, Yocto/OpenEmbedded, Linux kernel drivers and Zephyr RTOS sensor interfaces. Above that, I develop C/C++ libraries, real-time software, system services and the interfaces between components.
System design connects these layers: how data moves, where timing matters, how failures are handled and how the result is tested. My Nokia work provides the production foundation; my open-source and personal projects extend it into sensor drivers, ROS 2 integration, Python/FastAPI services and engineering tools.
View the full path from chip IP to board bring-up
My path started with RF middleware and moved down the stack to low-level SoC software, register-level configuration and SoC subsystem debugging, with exposure to silicon and board-level bring-up. Download the diagram.
- Linux Medical BSP: Embedded Linux portfolio connecting BSP, driver, sensor-integration and lifecycle-documentation work.
- ROS 2 IIO Medical: C++ ROS 2 nodes for Linux IIO polling and triggered-buffer acquisition, with a synthetic sensor simulator and parser tests.
- Evidence-First Incident Agent: Python/FastAPI incident investigation over synthetic telemetry, with evidence-linked reports and a CI-backed automated test suite.
- High-Performance Event Engine: C++ concurrency and performance project with a bounded atomic queue and throughput/latency reporting.
- Sensor and ADC work: Three merged TI ADS1298 fixes; MAX86150 ECG/PPG driver (v11) — dt-bindings patch Reviewed-by Rob Herring (Arm, devicetree maintainer), driver patch under review; ADS1299 biopotential ADC driver under review.
- Platform and data-path fixes: Merged resource cleanup for TI Keystone SoC and a permissions fix for Hyper-V storage.
- Additional mainline work: ASoC, SCSI, XFS, SCTP, MFD and power-supply maintenance fixes.
Mainline commits · Patch archive · Mailing-list history
- MAX30102 support: Added MAX30102 support to the existing MAX30101-family optical sensor driver. Merged.
- INA237 sampling fix: Made triggered-mode
sample_fetchwait for conversion readiness before returning data. Merged.
board/ge/common/vpd_reader.c: Corrected theerrlocallocation inverify_bch()to useecc_bitsrather than the much largerdata_length. Merged.
- Qiskit PR #16590: Proposed a memory-safety fix for writes to uninitialized buffers in the transpile-layout C API. Open.
- D-Wave Ocean SDK PR #453: Added Advantage2 to the SDK overview documentation. Merged.
My DPDK work covers NXP DPAA2 bus and DMA code, including device-removal and error-handling fixes. This is part of my open-source work on the platform software behind high-performance networking.
- DPAA2 DMA removal: Propagates device-removal failures so callers can handle them.
- FSLMC bus unplug: Clears driver references only after successful removal.
- DPDK 26.07 contributor listing: Listed among the release's new contributors.
- SONiC PFC Watchdog: Handled incomplete
PFC_WDdatabase entries and fixed the related regression assertion.
View how DPDK supports data-center packet processing
Technical background: DPDK poll-mode drivers and data center use cases. Download the diagram.
- Introduction to RISC-V (LFD110): The Linux Foundation
- Linux for Engineers: The Linux Foundation
- Generative AI and LLMs: Coursera
I keep my public projects under shofiqtest and kernel-medical. Every project remains listed here without making the main profile harder to scan.
View all projects and repositories
| Project | Focus | What is in the repository |
|---|---|---|
| Evidence-First Incident Agent | Python, FastAPI, AI/AIOps | Incident investigation over synthetic telemetry, optional LLM integration, evidence-cited reports, automated evaluation and Docker CI. |
| High-Performance Event Engine | C++, concurrency, performance | Sensor-event simulation and benchmark with multiple producers and consumers, a bounded atomic queue, and throughput/latency reporting. |
| Patient Monitoring Prototype | Python, FastAPI, containers | Patient-record APIs, PostgreSQL/Redis integration, and Docker, Kubernetes, Helm and Terraform configurations. |
| Linux Kernel Patch Archive | C, Linux kernel | Patch files covering driver cleanup, resource handling and a proposed MAX86150 IIO biosensor driver; upstream contribution evidence is linked in the contribution sections. |
| Route Simulator Concept | Geographical simulation concept | README outlining constant-speed movement along a repeating route defined by geographical points. |
| Project | Focus | What is in the repository |
|---|---|---|
| kernel-soup-gen | Python, source analysis | Generates Markdown SOUP record drafts from Linux driver metadata, Kconfig dependencies, maintainer information and Git history. |
| ros2_iio_medical | C++, ROS 2, Linux IIO | ROS 2 nodes for sysfs polling and triggered-buffer acquisition, with configurable topics, a synthetic sensor simulator and channel-parser tests. |
| iec62304-embedded-drivers | Software lifecycle documentation | Reference requirements, design, SOUP, FMEA and lifecycle documents for embedded biosensor drivers and ROS 2 integration. |
| linux-medical-bsp | Embedded Linux portfolio | Landing page describing medical Linux BSP services, related projects and driver case studies. View the portfolio. |
| kernel-medical.github.io | Interactive engineering portfolio | Project and contribution links, with synthetic biosignal visualizations and system architecture. Visit the site. |
| Repository | Purpose |
|---|---|
| GitHub Profile | This profile README and project directory. |
| Earlier Linux Medical BSP Page | Earlier static landing page for the Linux medical software initiative; current projects are maintained under kernel-medical. |
Upstream forks and learning repositories
These are my forks of upstream projects. Links to my patches and reviews are in the contribution sections above.
| Fork | Upstream project | Area |
|---|---|---|
| linux | Linux | Kernel source and driver development. |
| zephyr | Zephyr RTOS | Embedded RTOS and sensor drivers. |
| u-boot | U-Boot | Bootloader and platform software. |
| qiskit | Qiskit | Quantum computing SDK. |
| sonic-utilities | SONiC Utilities | Network operating-system command-line tools. |
| SlicerIGT | SlicerIGT | Image-guided intervention modules for 3D Slicer. |
| Medical-Shop-Management | Medical-Shop-Management | C++ medical-shop management example. |
shofiqtest@gmail.com