Embedded Software Engineer
About the Role
X Shore is rebuilding operations and product development under new ownership. We are now looking for an Embedded Software Engineer to build and maintain the software that runs on board our electric boats — the control units, the onboard gateway, and the CAN networks that decide how a boat starts, drives, charges, and reports back from the water.
This is a hands-on engineering role with real ownership. You will write the code, put it on the target, and prove that it works — on a bench you built, on a test rig, and on a boat. We care about what runs on the hardware, not what compiles on a laptop. The role is hybrid, with regular days on-site in Nyköping where the boats, the benches, and the production line are.
Role Purpose
Develop, test, and maintain the embedded software in X Shore boats — from firmware on onboard control units to services on the connected gateway — ensuring that what we ship is verified on target hardware and documented well enough to be serviced in the field.
Core Mission
Make onboard software something the rest of the company can rely on. Deliver software that behaves predictably on the water, fails in ways we can diagnose, and comes with the interface documentation and diagnostics that let production and service do their job without calling development.
Key Responsibilities
Develop and maintain embedded software in C for onboard control units, and in Python for tooling, diagnostics, and test automation
Design, implement, and debug CAN-based communication between onboard systems, including NMEA 2000 traffic
Test your own code on target hardware — on the bench, on test rigs, and on boats
Build the test setups, harnesses, and simple rigs needed to verify the code when no test environment exists
Take part in bring-up of new hardware together with electrical engineering
Debug field issues together with service: read logs and CAN traces, reproduce the fault, and deliver a fix
Maintain build, flashing, and provisioning tooling so releases are reproducible and traceable
Own the interface documentation for the systems you work on — message definitions, signals, parameters, and service procedures
Take part in code reviews and technical discussions across the software team
Support production with end-of-line test and software procedures on the line
Contribute to release decisions by stating clearly what has been verified, on which hardware, and what has not
Feed lessons from delivered boats back into the software — better diagnostics, better logging, fewer repeat visits
Technical Depth — What We Need
X Shore boats run distributed embedded systems: bare-metal control units in C communicating over CAN, and a Linux-based onboard gateway handling logging and connectivity to shore. On top of that sits a delivered fleet across the Eelex 8000 and X Shore 1 platforms that has to keep working in the field. We are open on years of experience — we hire on demonstrated skill, and we expect you to go deep on the systems you own.
Write, debug, and maintain bare-metal C on onboard control units
Work on the Linux side as well as the firmware side — services and tooling on the gateway, cross-compilation, and getting data off the boat
Use Python effectively for test automation, diagnostics, log analysis, and internal tooling
Use AI tools as a normal part of development — writing, reviewing, and analysing code, logs, and traces — while staying accountable for everything that ends up on the target
Work confidently with CAN: interpret traces, work with signal and message definitions, and separate a software fault from an electrical one
Use a debugger, a CAN interface, and basic lab instruments as ordinary parts of the working day
Work confidently in Git day to day, including branching and releases that can be traced back to source
Put together a bench setup when the one you need does not exist — power, CAN, harnesses, and enough load or simulation to exercise the code before it reaches a boat
Containerize builds and test environments with Docker so cross-compilation and verification are repeatable — strongly preferred
Judge when a problem belongs in software and when it belongs in hardware, and say so with evidence
Qualifications
Required
Solid programming skills in C, applied to embedded targets
Working knowledge of Python
Comfortable working with AI tools in daily development, and able to review and verify what they produce
Confident with Git in a team setting
Practical experience with CAN bus — development, integration, or diagnostics
Hands-on with hardware: flashing, probing, measuring, and building simple test setups without waiting for someone else to do it
Able to read a schematic well enough to work with electrical engineers on bring-up and fault-finding
Fluent in English; Swedish is an advantage
Able to be on-site in Nyköping on a regular basis
Nice to Have
Docker and containerized build or test environments
Experience from boats, marine electronics, or NMEA 2000 — good to have, not a requirement
Embedded Linux: cross-compilation, system services, and Debian- or Yocto-based platforms
MQTT, connected devices, or fleet-scale software updates
Cyber security for embedded and connected products — secure boot, signed firmware updates, key and certificate handling; an area we will be building up over the coming year
Battery systems, electric drivetrains, or high-voltage environments
Automotive, off-highway, industrial vehicle, or other safety-relevant embedded background
CI/CD for embedded — automated build, flashing, and hardware-in-the-loop test
Experience from a company in growth, transformation, or restart phase
Non-Negotiables
Tests on real hardware before calling something done
Builds a test setup when one is needed rather than waiting for one to appear
Writes code that someone else can read, review, and service
Says early when something is unverified or unfinished, regardless of schedule pressure
Takes ownership of a problem through to resolution — including the part that turns out not to be software
Documents interfaces and diagnostics as part of the work, not afterwards
Comfortable working in an environment where processes are still being built
Personal Qualities
To succeed in this role we believe you:
Are curious about how the whole boat works, not only your own module
Prefer measuring to guessing, and trust a trace over an assumption
Are pragmatic — you look for the simplest solution that holds up on open water
Communicate clearly with people who are not software engineers
Are comfortable in ambiguity and can create structure where little exists
Have strong drive and see problems through to resolution
Thrive in a small, fast-moving team where every person’s contribution is visible
Key Interfaces
Head of Software — direct reporting line; priorities, technical direction, and release decisions
Electrical engineering — hardware bring-up, schematics, CAN topology, and fault isolation
Production — end-of-line test, software provisioning, and support on the line
Service and aftermarket — field faults, diagnostics, and software updates on delivered boats
Component suppliers — interface specifications, firmware versions, and integration issues
What We Offer
At X Shore you get the chance to be part of an exciting journey with significant responsibility and real impact. Your code goes into boats that people take out on open water, and you will see the result of your work at the quay rather than in a backlog.
This is not a maintenance role. It is a building role — the software structure, test practices, and diagnostics you put in place now will shape how every X Shore boat behaves for years to come.