Skip to main content
ISO 15118 is the international standard for Vehicle-to-Grid (V2G) communication. EVerest provides comprehensive support for ISO 15118-2, ISO 15118-20, and DIN SPEC 70121 through specialized modules that enable advanced features like Plug & Charge, bidirectional charging, and optimized energy management.
ISO 15118 modules are located in modules/EVSE/ and include EvseV2G, EvseSlac, EvseSecurity, and related components.

ISO 15118 Protocol Stack

The complete ISO 15118 implementation requires several cooperating modules:

EvseV2G

ISO 15118-2 and DIN 70121 application layer

EvseSlac

SLAC data link layer (PLC communication)

EvseSecurity

Certificate and key management

EvseManager

Coordination and charging state machine

EvseV2G Module

The EvseV2G module implements the ISO 15118-2 and DIN SPEC 70121 protocols for high-level communication with electric vehicles.

Supported Protocols

  • ISO 15118-2: International standard for AC and DC charging
  • DIN SPEC 70121: German predecessor to ISO 15118-2 (DC charging)
  • Plug & Charge (PnC): Certificate-based authentication
  • TLS Security: Encrypted communication with contract certificates

EvseV2G Configuration

device
string
default:"eth0"
Ethernet device used for HLC. Any interface with IPv6 link-local and MAC address.
This is the network interface for ISO 15118 communication, not the SLAC interface.
supported_DIN70121
boolean
default:"true"
Enable support for DIN SPEC 70121 protocol
supported_ISO15118_2
boolean
default:"true"
Enable support for ISO 15118-2 protocol
tls_security
string
default:"allow"
Controls encrypted communication:
  • prohibit: No TLS, only basic communication
  • allow: TLS optional, fallback to basic
  • force: Require TLS, reject unencrypted sessions
Use force for production Plug & Charge implementations.
verify_contract_cert_chain
boolean
default:"false"
Enable local verification of contract certificate chain
When enabled, the EVSE verifies the EV’s contract certificate against the V2G root certificates.
auth_timeout_pnc
integer
default:"55"
Timeout in seconds for PnC authorization. Set to 0 to wait indefinitely.
auth_timeout_eim
integer
default:"300"
Timeout in seconds for EIM authorization. Set to 0 to wait indefinitely.
terminate_connection_on_failed_response
boolean
default:"false"
  • true: Terminate V2G connection immediately on failed response
  • false: Let EV close session with SessionStop
enable_sdp_server
boolean
default:"true"
Enable the built-in SECC Discovery Protocol (SDP) server
Required for EVs to discover the charging station over IPv6.

TLS and Certificate Configuration

tls_key_logging
boolean
default:"false"
Enable export of TLS session keys for debugging
For testing and simulation ONLY. Never enable in production.
tls_key_logging_path
string
default:"/tmp"
Output directory for TLS key log files (for Wireshark decryption)
tls_timeout
integer
default:"15000"
TLS handshake timeout in milliseconds

EvseV2G Interfaces

charger (ISO15118_charger)

Main interface implementing ISO 15118-2 for AC or DC chargerProvides:
  • Session management
  • Charging parameter negotiation
  • Certificate handling
  • Payment options (EIM/PnC)
Data sharing between ISO 15118 and OCPP modules for protocol interoperability
Required: Certificate and key management
  • V2G root certificates
  • Leaf certificates for SECC
  • Contract certificate validation

EvseSlac Module

The EvseSlac module implements the SLAC (Signal Level Attenuation Characterization) protocol for establishing HomePlug Green PHY communication over the charging cable.

SLAC Protocol Overview

SLAC is defined in ISO 15118-3 and enables:
  • PLC (Power Line Communication) link establishment
  • Unique logical network per charging session
  • Prevention of cross-talk between vehicles
  • Network Membership Key (NMK) exchange

EvseSlac Configuration

device
string
default:"eth1"
Ethernet device used for PLC communication
This must be the interface connected to your PLC modem (e.g., QCA7000, QCA7005, CG5317).
number_of_sounds
integer
default:"10"
Number of sounding signals for attenuation measurement
ac_mode_five_percent
boolean
default:"true"
Use AC 5% mode per ISO 15118-3 with retry on failure
Set to true even for DC charging. Many EVs fail SLAC without this option.
set_key_timeout_ms
integer
default:"1000"
Timeout for CM_SET_KEY.REQ message. Default works for QCA7000/QCA7005/CG5317.
publish_mac_on_match_cnf
boolean
default:"true"
Publish EV MAC address when matching is confirmed
Can be used for AC Autocharge as alternative to EVCCID from HLC.

Advanced SLAC Configuration

do_chip_reset
boolean
default:"false"
Perform chip reset after setting NMK using RS_DEV.REQ vendor MME
Only works on Qualcomm chips. May improve stability.
Wait for link to come up before signaling d_link_ready
Works on Qualcomm and Lumissil chips. Ensures PLC link is stable before proceeding.
Timeout for link to establish after matching
slac_init_timeout_ms
integer
default:"40000"
Timeout for CM_SLAC_PARM.REQ. Range: 10000-50000ms
Values below 20000ms violate ISO 15118-3 but may work in practice.
reset_instead_of_fail
boolean
default:"true"
Go to reset state instead of failed state on SLAC abort
Violates ISO 15118-3 but allows recovery when EVs send CM_SLAC_PARAM.req after abort.

ISO 15118 Configuration Example

active_modules:
  # ISO 15118-2 Application Layer
  iso15118_charger:
    module: EvseV2G
    config:
      device: eth0
      supported_DIN70121: true
      supported_ISO15118_2: true
      tls_security: allow
      verify_contract_cert_chain: false
      auth_timeout_pnc: 55
      auth_timeout_eim: 300
      enable_sdp_server: true
    connections:
      security: evse_security
      
  # SLAC Data Link Layer  
  slac:
    module: EvseSlac
    config:
      device: eth1
      number_of_sounds: 10
      ac_mode_five_percent: true
      publish_mac_on_match_cnf: true
      link_status_detection: false
      slac_init_timeout_ms: 40000
      
  # Security and Certificates
  evse_security:
    module: EvseSecurity
    config:
      csms_leaf_cert_directory: /certs/client/csms
      csms_leaf_key_directory: /certs/client/csms  
      secc_leaf_cert_directory: /certs/client/secc
      secc_leaf_key_directory: /certs/client/secc
      v2g_root_cert_directory: /certs/ca/v2g
      
  # EVSE Manager Integration
  evse_manager:
    module: EvseManager
    config:
      ac_hlc_enabled: true
      ac_hlc_use_5percent: true
      payment_enable_contract: true
    connections:
      hlc: iso15118_charger
      slac: slac

Plug & Charge Flow

The complete Plug & Charge sequence:
1

Vehicle Plug-in

EV is connected to charging station
2

SLAC Matching

EvseSlac establishes PLC communication and exchanges NMK
3

SDP Discovery

EV discovers SECC via SDP server (IPv6 multicast)
4

TCP/TLS Connection

ISO 15118 session established with optional TLS
5

Authorization

EV presents contract certificate, EVSE validates
6

Charging Parameters

Negotiate voltage, current, energy, schedules
7

Energy Transfer

Charging begins based on negotiated parameters
8

Session End

SessionStop request and graceful disconnect

Certificate Management

Plug & Charge requires proper certificate hierarchy:
V2G Root CA
├── CPO Sub-CA 1
│   └── SECC Leaf Certificate (charging station)
└── CPO Sub-CA 2
    └── Contract Certificate Root
        └── OEM Sub-CA
            └── Contract Certificate (in vehicle)

Certificate Directories

EvseSecurity module manages certificates:
  • V2G Root Certificates: Trusted roots for contract validation
  • SECC Leaf Certificates: Charging station identity
  • CSMS Leaf Certificates: Backend communication (OCPP)
  • Contract Certificates: Vehicle authorization
Refer to the EvseSecurity module documentation for certificate installation and management.

ISO 15118-20 Support

EVerest has ISO 15118-20 support in development for:
  • Wireless Power Transfer (WPT)
  • Bidirectional Power Transfer (BPT)
  • Automatic Connection Device (ACD)
  • Enhanced scheduling
ISO 15118-20 modules are under active development. Check the EVerest repository for latest status.

Debugging ISO 15118

Enable Session Logging

evse_manager:
  config:
    session_logging: true
    session_logging_path: /var/log/everest/sessions
    session_logging_xml: true
This logs complete XML message exchanges for debugging.

TLS Decryption

For development debugging:
iso15118_charger:
  config:
    tls_key_logging: true
    tls_key_logging_path: /tmp/tls_keys
Use the key log file with Wireshark to decrypt TLS traffic.

SLAC Debugging

slac:
  config:
    debug_simulate_failed_matching: false  # Set to true to test failure handling

Common Issues

  • Verify correct PLC interface in device config
  • Check PLC modem is properly connected to CP/PP lines
  • Ensure ac_mode_five_percent: true for retry support
  • Increase slac_init_timeout_ms for slow EVs
  • Verify no electrical cross-talk between charging points
  • Verify SECC leaf certificate is installed
  • Check certificate validity period
  • Ensure V2G root certificates include EV’s contract issuer
  • Review TLS timeout settings
  • Enable TLS key logging to inspect handshake
  • Verify contract certificate validation is working
  • Check auth_timeout_pnc is sufficient
  • Ensure OCPP/Auth module receives authorization request
  • Review certificate chain completeness
  • Verify enable_sdp_server: true
  • Check IPv6 link-local address on HLC interface
  • Ensure SDP multicast routing is working
  • Verify firewall allows UDP port 15118

Hardware Requirements

PLC Modem

Supported chipsets:
  • Qualcomm QCA7000 - HomePlug Green PHY
  • Qualcomm QCA7005 - Integrated solution
  • Lumissil CG5317 - Alternative PLC modem

Network Interface

Requires:
  • SPI or UART connection to PLC modem
  • Linux network interface (eth0, eth1, etc.)
  • IPv6 support for ISO 15118 communication

EvseManager

Charging coordination and HLC integration

OCPP

Backend integration for PnC

Authentication

Authorization handling

Hardware Drivers

PLC modem drivers

Additional Resources

Source Code Reference

  • modules/EVSE/EvseV2G/manifest.yaml - ISO 15118-2 configuration
  • modules/EVSE/EvseSlac/manifest.yaml - SLAC configuration
  • modules/EVSE/EvseSecurity/ - Certificate management
  • modules/EVSE/Iso15118InternetVas/ - VAS (Value Added Services)

Build docs developers (and LLMs) love