Building an Open Vehicle Control System using Elixir and Nerves with Marc, Thibault, and Loïc
For the Season 13 finale, Elixir Wizards Dan and Charles are joined by Spin42 Engineers Marc Lainez, Thibault Poncelet, and Loïc Vigneron to discuss their work retrofitting a 2007 VW Polo and creating an Open Vehicle Control System (OVCS). Using Elixir, Nerves, and Raspberry Pis, the team is reimagining vehicle technology to extend the lifespan of older cars and reduce waste—all while making the process approachable and open source.
The Spin42 team shares the technical details behind OVCS and how they use Elixir and Nerves to interact with the CAN bus and build a Vehicle Management System (VMS) to coordinate various vehicle components. They dive into the challenges of reverse engineering CAN messages, designing a distributed architecture with Elixir processes, and ensuring safety with fail-safe modes and emergency shutoffs.
Beyond the technical, the team discusses their motivation for the project—upgrading older vehicles with modern features to keep them on the road, building an open-source platform to share their findings with others, and above all-- to just have fun. They explore potential applications for OVCS in boats, construction equipment, and other vehicles, while reflecting on the hurdles of certifying the system for road use.
If you’ve ever wondered how Elixir and Nerves can drive innovation beyond software, this episode is packed with insights into automotive computing, hardware development, and the collaborative potential of open-source projects.
Topics Discussed in this Episode:
Retrofitting a 2007 VW Polo with electric engines and modern tech
Building an open-source Vehicle Control System (OVCS) using Elixir and Nerves
Leveraging Elixir to interact with the CAN bus and parse proprietary messages
Designing a Vehicle Management System (VMS) to coordinate vehicle components
Developing custom hardware for CAN communication
Creating a YAML-based DSL for CAN message and frame descriptions
Building a distributed architecture using Elixir processes
Ensuring safety with fail-safe modes and emergency shutoffs
Using Flutter and Nerves to build a custom infotainment system
Exploring autonomous driving features with a ROS2 bridge
Developing remote control functionality with a Mavlink transmitter
Testing OVCS features at scale with a Traxxas RC car (OVCS Mini)
Challenges of certifying OVCS for road use and meeting regulatory requirements
Encouraging community contributions to expand OVCS functionality
Balancing open-source projects with contract work to sustain development
The fun and fulfillment of experimenting with Elixir beyond traditional applications
Links mentioned:
https://www.spin42.com/
https://nerves-project.org/
Quadcopter https://github.com/Spin42/elicopter
https://github.com/linux-can/can-utils
https://docs.kernel.org/networking/can.html
https://github.com/open-vehicle-control-system/cantastic
https://github.com/commaai/opendbc
https://en.wikipedia.org/wiki/CANbus#CANFD
https://comma.ai/
https://en.wikipedia.org/wiki/CANFD
https://webkit.org/wpe/
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/WindowingSystems/WestonWayland.html
https://buildroot.org/
https://vuejs.org/
https://flutter.dev/
https://github.com/smartrent/elixirflutterembedder
https://www.raspberrypi.com/products/raspberry-pi-5/
The Rabbit Pickup https://www.hemmings.com/stories/value-guide-1980-83-volkswagen-pickup
https://www.expresslrs.org/software/mavlink
https://industrial-training-master.readthedocs.io/en/melodic/source/session7/ROS1-ROS2-bridge.html
https://github.com/ros2/rcl
https://github.com/open-vehicle-control-system/traxxas
Contact Marc, Thibault, and Loïc:
[email protected]
Special Guests: Loïc Vigneron, Marc Lainez, and Thibault Poncelet.