Upgrading to 2026.10¶
This page lists the steps needed to upgrade a deployment from 2026.02.x to 2026.10.0. The release notes on the GitHub releases page summarize the same changes together with new features and fixes.
Work through the sections that apply to your deployment. Then validate the
configuration with manager --check --config <yaml> before the first start.
Manager settings and the configuration database¶
Schema migration 4 of the configuration database drops the SETTING table.
The database holds module configurations only; manager settings (installation
paths, MQTT broker and prefixes, telemetry, schema validation and exception
forwarding) come from a settings file or the deprecated settings: block of
the configuration file.
manager --db <file>without--settingsor--configruns with the built-in defaults for every setting. A database created by 2026.02.x with a non-default broker or prefix loses those values on the automatic migration.Keep non-default settings in a settings file and pass it with
--settings <file>. The option works with or without--configand--db. The file is validated againstschemas/settings.yamland rejects unknown and deprecated keys: dropwww_dir,controller_port,controller_rpc_timeout_ms,prefixandconfig_file, and see Linux capabilities forrun_as_user. The installed examplesetc/everest/settings-mqtt-tcp.yaml,settings-mqtt-uds.yamlandsettings-all-options.yamlare a starting point. See Manager Settings.The
settings:block of the configuration file is deprecated. It still applies with--configas long as--settingsis not given; with--settingsit is ignored with a warning.Tools that read the database directly must follow the new schema: a
CONFIGtable, composite primary keys, and renumberedMUTABILITYandDATATYPEids. Configurations marked invalid (CONFIG_META.VALID = 0) are deleted during the migration.
File-based SQLite databases, including the configuration, OCPP and device model
databases, use WAL journal mode. Back up the -wal and -shm files
together with the .db file, or checkpoint the database first.
See Manager Command Line Options and EVerest Configuration Service.
Manager command line¶
Options must be spelled in full. Abbreviated spellings no longer parse.
--confis a deprecated alias of--configand cannot be combined with it. Replace it in start scripts and service units.manager --checkrequires--config. Change health checks and CI jobs tomanager --check --config <yaml>. The check needs no MQTT broker and does not touch the configuration database.--db-inithas no effect and is deprecated. Seeding the database from the YAML configuration is the default when the database holds no valid configuration.
Linux capabilities¶
The manager no longer grants Linux capabilities to modules. The
capabilities key of a module entry in the configuration file is ignored
and logs a warning. This change did not go through a deprecation period and is
an exception to the deprecation policy. Modules declare the capabilities they need in their
manifest.yaml, and the deployment grants them as file capabilities.
On Yocto, use the
everest_file_capabilitiesclass of meta-everest.Elsewhere, run
applications/utils/scripts/set_module_capabilities.pyafter installing.
This affects deployments that run the manager as an unprivileged user and use
EvseSlac, PacketSniffer, Setup or Huawei_V100R023C10.
settings.run_as_user is deprecated as well: start the manager as the
unprivileged user from the service manager, for example with User=everest
in the systemd unit. See Security Best Practices.
EvseSecurity writes private keys with mode 0600 and restricts the key directories to 0700. Run modules that read key files, such as the OCPP and ISO 15118 modules, as the same user as EvseSecurity.
Module configuration¶
The following configuration values fail validation or change meaning:
Module and key |
Change and action |
|---|---|
|
Limited to 1000–4000 ms, default 2000 ms. Lower larger values. |
|
Defaults to |
|
Defaults to |
|
Deprecated. Use |
|
Deprecated. Connect to |
|
Deprecated and without effect, since the session logger was removed. Delete it. |
EvseManager also treats errors from the SLAC and ISO 15118 modules as faults:
anything other than generic/VendorWarning makes the EVSE Inoperative.
Replacing deprecated modules¶
Two module families are deprecated in 2026.10.0 and may be removed in 2027.04.0:
OCPPandOCPP201, superseded by OCPPmulti, see Migrate to the Combined OCPP Module and OCPP 2.x component configuration.EvseV2GandIsoMux, superseded by Evse15118D20, see Migrate from EvseV2G and IsoMux to Evse15118D20.
Replacing a module changes the module set of the configuration. Parameters changed at runtime are persisted outside the configuration file, in the user-config or the configuration database, and EVerest does not carry them over to the successor module. Persisted Configuration Changes describes what to do for each storage mode.
OCPP 2.x component configuration¶
InternalCtrlr.ChargePointIdandInternalCtrlr.NumberOfConnectorsare removed from the component configuration, and existing device-model databases drop them on the next start. Neither was used for the connection; the station identity comes fromSecurityCtrlr.Identityas before. In OCPP 1.6 modeNumberOfConnectorsis provided byOCPP16LegacyCtrlr. A CSMS or tool that reads either variable through GetVariables or GetBaseReport gets UnknownVariable.Network connection profiles live in per-slot
NetworkConfiguration_<N>components. An existingInternalCtrlr.NetworkConnectionProfilesvalue is migrated once at startup, see Migration from legacy NetworkConnectionProfiles. Provision new deployments throughNetworkConfiguration_<N>.json.minLimitandmaxLimitstored in an existing device-model database are kept, so changed limits in the shipped component configuration apply only to new databases.SecurityCtrlr.SecurityProfileaccepts0regardless of a stored minimum.InternalCtrlr.EnableTLSKeylogis ReadOnly. Set it in the component configuration instead of through SetVariables.The device model holds its values in memory and writes changes through to the database. Edit the device-model database only while EVerest is stopped; changes made while it runs are not seen until the next start. An attribute marked
"persistent": falsein a custom component configuration is no longer stored.
Building and packaging¶
EVerest builds from the repository root only. It installs the CMake packages
everest-base,everest-iso15118,everest-ocppandeverest-core, selected withEVEREST_PACKAGES, and all targets are namedeverest::<name>. RemoveEVEREST_LIBS_ONLY,EVEREST_INCLUDE_LIBS,EVEREST_EXCLUDE_LIBS,EVEREST_IO_WITH_MQTTand the per-library*_INSTALLand*_BUILD_TESTINGoptions; configure fails with them. Builds with EDM install no CMake packages, so consumers that usefind_package()install from a-DDISABLE_EDM=ONbuild.everest-cmake 0.9 or newer is required. The
install_everest_testingtarget is removed.Rust modules need Rust 1.86 or newer.
The CMake options
EVEREST_ENABLE_ADMIN_PANEL_BACKENDandEVEREST_INSTALL_ADMIN_PANELare removed.
Yocto¶
Recipes shared between Yocto releases live in the
meta-everest-commonlayer, which meta-everest adds automatically. They use${UNPACKDIR}. Update bbappends that refer to${WORKDIR}paths ofeverest-core,ev-cliorpython3-iso15118.The compatibility recipes
everest-framework,everest-sqlite,libcbv2g,libevse-security,libfsm,libiso15118,liblog,libocpp,libslacandlibtimer, theasyncapibackport recipe and the admin-panel packages are removed. Drop them fromIMAGE_INSTALL,DEPENDSandRDEPENDS.everest.serviceruns the manager with the configuration database/var/lib/everest/everest.dband the settings filesettings-mqtt-uds.yaml, and withsystemdmeta-everest configures Mosquitto for a Unix domain socket. Edits ofconfig.yamltake effect only until the database is initialized, and/var/lib/everesthas to persist across root file system updates.
See Building Yocto for your custom hardware, including its systemd service section for the service and the Mosquitto setup.
EVerest APIs¶
The deprecated topics keep working until 2027.04.0 at the earliest. See Active Deprecation Index for the full list, including:
ocpp_consumer_API: replaceis_connectedwithconnection_status, and use component/variable addressing instead of OCPP 1.6 key-only addressing, see Migration from OCPP 1.6 key addressing.evse_manager_consumer_API: replace theevse_idtopics withget_evse.error_history_consumer_API: stop relying onseverityandseverity_filter.APImodule: move to the EVerest API modules.
API modules publish compact JSON. Only clients that compare raw payload strings are affected.