
Build a CAN BUS Test Harness



A MiniDapp (Minima Decentralised Application) is a lightweight web application that runs locally on your own Minima node. Unlike conventional web applications, a MiniDapp does not rely on a central server. Instead, it communicates directly with your own node through Minima’s JavaScript API and JSON/RPC interface.
Think of a MiniDapp as the equivalent of an app on your smartphone—but instead of running on Apple or Google infrastructure, it runs on your own blockchain node.
For The Satomotive Network, MiniDapps provide the user interface to vehicle data, wallets, messaging, tokenisation and future mobility services.
MiniDapps have several important advantages.
For Satomotive this means that anyone with basic web development skills can build sophisticated connected vehicle applications.
Its interface is built using familiar web technologies:
Unlike an ordinary website, a MiniDapp can communicate with the local Minima node, execute blockchain commands, use its own SQL database, store files and respond to network events.
For Satomotive, MiniDapps provide the application layer for:
.mds.zip file.mds.zip extension.The ZIP must contain the MiniDapp files at its top level rather than placing them inside an unnecessary additional parent folder.
A traditional MiniDapp is packaged as an .mds.zip archive with a structure similar to:
my-minidapp/
├── dapp.conf
├── favicon.ico
├── index.html
├── mds.js
├── service.js
├── css/
│ └── style.css
├── js/
│ └── app.js
└── assets/
└── images/
The core files are:
dapp.confThe MiniDapp configuration file. It defines information used by the MiniDapp System, including the application’s name, description, version and permissions.
favicon.icoThe application icon displayed in MiniHub.
index.htmlThe main user-interface entry point. It loads the application layout, styles, JavaScript and the mds.js connector.
mds.jsThe Minima MiniDapp System JavaScript library.
This is the critical connector between the browser-based user interface and the local Minima node. Before a MiniDapp can call the Minima API, it must initialise MDS:
MDS.init(function (event) {
MDS.log("MiniDapp initialised");
});
The library exposes functions for:
service.jsFor example:
MDS.cmd("balance", function (response) {
console.log(response);
});
Each MiniDapp also receives its own SQL database, accessed through MDS.sql(). The database uses the H2 engine and supports normal table creation, insertion, querying, updating and deletion. (docs.minima.global)
service.jsAn optional background service.
The visible interface in index.html runs only while the user has the MiniDapp open. By contrast, service.js can continue processing Minima events in the background.
It is therefore important for applications that must:
For Satomotive, service.js is particularly important. A vehicle MiniDapp may need to process a diagnostic alert, incoming token, fleet instruction or V2X message even when its dashboard is not open.
The user interface and background service can communicate using:
MDS.comms.solo(message);
This allows the front end to send a private message to its own service.js. Broadcast communications can also be sent to other installed MiniDapps through the MDS communications API. (docs.minima.global)
The remaining folders contain ordinary web assets:
All files are packaged together and renamed with the .mds.zip extension before installation. (docs.minima.global)
A useful Satomotive application would normally separate its responsibilities as follows:
index.html
Displays vehicle status and user controls.
js/app.js
Handles interface events, rendering and MDS API calls.
mds.js
Connects the application to the Minima node.
service.js
Processes background Minima, Maxima and transaction events.
MDS SQL
Stores journeys, signals, messages, settings and application state.
External vehicle service
Acquires CAN, OBD-II, UDS, GNSS and IMU data.
MDS.net or RPC
Connects the MiniDapp to the external vehicle service where permitted.
The MiniDapp itself should not be assumed to have direct low-level access to a CAN interface. A practical Satomotive architecture normally uses a local Node.js, Python or C/C++ process to acquire vehicle data and exposes a controlled HTTP, WebSocket or other local interface to the MiniDapp.
dapp.conf, index.html, favicon.png and application assets.mds.js.MDS.init() before using the Minima API.MDS.cmd() for blockchain commands.MDS.sql() for persistent structured data.service.js where background event handling is required..mds.zip.Minima also offers a newer React development route using its project creation tools and a typed MDS package, but plain HTML, CSS and JavaScript remain highly suitable for Satomotive prototypes and engineering utilities. (docs.minima.global)

A MiniDapp (Minima Decentralised Application) is a lightweight web application that runs locally on your own Minima node. Unlike conventional web applications, a MiniDapp does not rely on a central server. Instead, it communicates directly with your own node through Minima’s JavaScript API and JSON/RPC interface.
Think of a MiniDapp as the equivalent of an app on your smartphone—but instead of running on Apple or Google infrastructure, it runs on your own blockchain node.
MiniHub is the application launcher and management interface for installed MiniDapps.
For Satomotive users it becomes the starting point for vehicle dashboards, wallet tools, messaging applications and engineering utilities.
Security provides node back-up, restoration and protection functions.
A Satomotive node may contain wallet keys, tokens, vehicle identities and service permissions. Back-up and recovery are therefore fundamental, particularly for permanently installed vehicle or fleet nodes.
Wallet provides balances, transaction history and the transfer of Minima and custom tokens.
It supports future Satomotive functions such as:
Health reports the Minima version, block status and overall node condition. This is particularly valuable for Raspberry Pi, vehicle and unattended fleet installations. (docs.minima.global)
A Satomotive-specific dashboard should eventually surface these health indicators alongside CAN, GNSS and communications status.
The Dapp Store provides straightforward application discovery and installation.
For Satomotive, it offers a future distribution route for driver, vehicle, fleet and developer MiniDapps without requiring a conventional mobile application store.
MaxContacts manages the addressing required for Maxima-based communication.
Satomotive contacts might represent:
MaxSolo demonstrates secure one-to-one messaging over Maxima.
Its main value to Satomotive is not ordinary chat, but the underlying model for:
Maxima uses relay hosts selected from previously connected nodes, but message content remains encrypted for its intended recipient. (docs.minima.global)
Token Studio demonstrates accessible creation of fungible and non-fungible tokens.
Relevant Satomotive uses include:
It is useful both as an end-user application and as a demonstration of token operations that future Satomotive MiniDapps can automate.
Terminal exposes the Minima command set directly.
It is indispensable for:
It should remain hidden from ordinary driver workflows but readily available through a developer mode.
Block provides a visual blockchain explorer for inspecting blocks and transactions.
It is valuable for validating:


Recommended :

Correct Board Jumper Connections

Connection Cable (ODBD2 connector to 9pin D type [CiA std.] connector.

[ Cable wiring according to CiA (CAN in Automation) standard. ]

Board Details
The SK Pang PiCAN3 CAN-Bus Board for Pi 4 interface provides a simple and reliable way of connecting a Raspberry Pi to a vehicle’s Controller Area Network (CAN) bus. Once installed, the hardware is recognised by Linux as a standard SocketCAN network interface, typically named can0. Rather than using proprietary drivers or APIs, applications communicate with the CAN bus using the same Berkeley socket programming model employed for conventional networking, making development straightforward and highly portable.
For development and diagnostics, the Linux can-utils package provides an invaluable set of command-line tools. Utilities such as candump capture and display live CAN traffic, cansniffer highlights changing signals in real time, cansend transmits individual CAN frames for testing, while canplayer can replay previously recorded CAN logs to reproduce vehicle behaviour without requiring access to the original vehicle. Additional tools allow engineers to measure bus utilisation, configure CAN gateways and work with higher-level protocols including ISO-TP.
For vehicle diagnostics, SocketCAN also supports ISO-TP transport, enabling applications to communicate with Electronic Control Units using standard OBD-II services. This allows software running on the Raspberry Pi to request Mode 01 live engine data, retrieve Diagnostic Trouble Codes (DTCs), and read vehicle identification information such as the VIN. Combined with Node.js, Python or C/C++ applications, PiCAN, SocketCAN and can-utils provide a powerful, low-cost platform for vehicle monitoring, diagnostics and the development of innovative connected vehicle applications.
Mozilla’s 2023 study concludes that modern cars are the worst consumer product category for privacy. After reviewing 25 major brands, every manufacturer received Mozilla’s “Privacy Not Included” warning. The report found that vehicles routinely collect excessive personal data—including location, driving behaviour, biometric, health and even sensitive personal information—far beyond what is needed to operate the vehicle. Many manufacturers share or sell this data to third parties, while offering drivers little transparency or meaningful control. Mozilla also found weak evidence of robust security practices. The report calls for stronger privacy regulation, greater transparency, data minimisation, and improved consumer rights over vehicle-generated data. (mozillafoundation.org)