ChargeLink Native
Developed byDEVlink

Environment and Bench Preflight

Preflight is the boundary between "the application is installed" and "this workstation is safe and correctly prepared to operate the selected protocol." Run it whenever the PC, network adapter, certificate set, CAN adapter, VeriStand version, bench wiring, or ChargeLink release changes.

Why preflight matters

Most first-day failures are environmental rather than protocol defects: the wrong NIC is selected, IPv6 is disabled, UDP 15118 is blocked, another service owns the port, a certificate is expired, the CAN channel name changed, or a VeriStand project no longer deploys. Preflight isolates those conditions before a live session creates misleading protocol symptoms.

1. Record the exact software identity


$CL = 'C:\Program Files\ChargeLink Native\bin\chargelink.exe'
$License = 'C:\ChargeLinkData\licenses\customer.cllic'

& $CL --version
& $CL --json license status
& $CL --json license entitlements
& $CL --json doctor --strict

Save these outputs with the run if the result matters for regression, acceptance, or customer support.

2. Confirm Windows networking

List adapters and addresses:


Get-NetAdapter | Sort-Object ifIndex | Format-Table ifIndex,Name,Status,LinkSpeed,MacAddress -AutoSize
Get-NetIPConfiguration | Format-List InterfaceAlias,InterfaceIndex,IPv4Address,IPv6Address,IPv6DefaultGateway
Get-NetIPAddress -AddressFamily IPv6 | Sort-Object InterfaceIndex | Format-Table InterfaceIndex,InterfaceAlias,IPAddress,PrefixLength,AddressState -AutoSize

For ISO 15118/DIN Ethernet operation, identify the physical adapter connected to the DUT/PLC path and record its interface index. Do not select Wi-Fi, VPN, Hyper-V, Docker, or an unrelated USB NIC because it happens to have a lower index.

Confirm IPv6 is bound to that adapter:


Get-NetAdapterBinding -Name '<ADAPTER_NAME>' -ComponentID ms_tcpip6

Expected: Enabled = True.

3. Check the ISO 15118/DIN ports

The common SDP UDP port is 15118. The TCP port used by a run can be configured.


Get-NetUDPEndpoint -LocalPort 15118 -ErrorAction SilentlyContinue
Get-NetTCPConnection -LocalPort 50118 -ErrorAction SilentlyContinue
Test-NetConnection ::1 -Port 50118

An existing listener is not automatically wrong; it can be a ChargeLink process you intentionally started. Confirm process ownership:


netstat -ano | findstr :15118
netstat -ano | findstr :50118

Then map the PID:


Get-Process -Id <PID>

4. Run the ChargeLink live preflight for ISO 15118 or DIN 70121

Replace the interface values with the actual bench NIC:


$IfIndex = <INTERFACE_INDEX>
$Advertise = '<LINK_LOCAL_IPV6_WITH_ZONE>'

& $CL --json evse live-preflight `
  --source external `
  --protocol iso15118-20 `
  --profile-id iso15118_20_dc `
  --host '::' `
  --tcp-port 50118 `
  --udp-port 15118 `
  --advertise-ipv6 $Advertise `
  --interface-index $IfIndex

Run the same preflight with --protocol iso15118-2 or --protocol din70121 and the profile selected from chargelink profile list when those are the intended stacks.

What a good result means

A successful preflight means ChargeLink accepted the selected configuration and did not detect a known local blocker. It is not proof that the remote EV/EVSE will negotiate successfully.

5. TLS / Plug & Charge preflight

Before a TLS run, validate the material supplied for the customer environment. Never place private-key passwords directly in reusable command files.

If your release uses PEM certificate/key/CA material:


& $CL --json evse tls-pki-doctor `
  --tls-cert 'C:\ChargeLinkData\pki\secc-cert.pem' `
  --tls-key 'C:\ChargeLinkData\pki\secc-key.pem' `
  --tls-cafile 'C:\ChargeLinkData\pki\trust-anchor.pem' `
  --require-ca

For an external EVCC on Windows where the selected profile uses the SChannel/PFX path, follow the TLS options shown by the installed chargelink evse start --help and chargelink evse live-preflight --help. Keep the PFX password in a protected environment variable when the installed release supports that mode.

Also verify time synchronization:


w32tm /query /status
Get-Date

Certificate validation can fail when the workstation clock is wrong even if the files are otherwise valid.

6. CHAdeMO / ChaoJi / GB/T CAN preflight

First prove the software model without hardware:


& $CL --json dc-can catalog
& $CL --json dc-can virtual-run --protocol chademo --profile dc_can_virtual_evse --frame-count 4

For a physical CHAdeMO adapter, confirm the driver and channel exist before setting --require-hardware:


Get-PnpDevice -PresentOnly | Where-Object { $_.FriendlyName -match 'PCAN|CAN|Kvaser|Vector' }

Then use the adapter/channel values installed on that bench. Example for a PEAK channel:


& $CL --json dc-can chademo-can-adapter-loop `
  --adapter-kind peak-pcan `
  --adapter-mode loopback `
  --channel PCAN_USBBUS1 `
  --bitrate-kbps 500 `
  --require-hardware `
  --evcc-profile chademo_dc_evcc_reference `
  --evse-profile chademo_dc_evse_reference `
  --requested-voltage-v 400 `
  --requested-current-a 125 `
  --initial-soc-pct 35 `
  --target-soc-pct 80

The adapter example is not a wiring instruction. Follow the bench electrical design, termination rules, isolation requirements, and hardware vendor instructions.

7. NI VeriStand preflight

Before starting the ChargeLink Native Gateway:

  1. Open the intended VeriStand project.
  2. Deploy the System Definition without ChargeLink.
  3. Verify the required user/alias channels exist.
  4. Verify at least one safe writable channel can be changed and read back.
  5. Undeploy cleanly.
  6. Verify the ChargeLink gRPC agent separately.

Useful checks:


Test-Path 'C:\Program Files\ChargeLink Native\bin\ChargeLink.Veristand.NativeClientBroker.exe'
Test-Path 'C:\Program Files\ChargeLink Native\bin\ChargeLink.Veristand.OperatorLauncher.exe'
& $CL --json integration health --endpoint http://127.0.0.1:50051
& $CL --json signals list --endpoint http://127.0.0.1:50051

Do not install ASAM XIL to make the current VeriStand gateway work. The current customer workflow uses the native VeriStand ClientAPI/Gateway integration.

8. Firewall and endpoint security

Document every allow rule rather than disabling the firewall or endpoint protection globally.

Inspect existing rules:


Get-NetFirewallRule -Enabled True | Where-Object DisplayName -Match 'ChargeLink|VeriStand' | Format-Table DisplayName,Direction,Action,Profile -AutoSize

For an externally reachable gRPC endpoint, REST/OPC UA adapter, or remote agent, use the security configuration supplied for the purchased edition. Do not expose a localhost example directly to a shared network.

9. Bench release checklist

AreaRequired evidenceResult
ChargeLink identityVersion, license and doctor output
DUT NICAdapter name, ifIndex, IPv6 address/zone
PortsNo unexplained process conflict
ISO/DIN preflightSelected protocol/profile passes
TLSCertificate material and clock validated when required
CANAdapter/driver/channel proven when required
VeriStandProject deploys independently when required
SafetySite interlocks/E-stop/limits verified
EvidenceArtifact and support roots writable

Only after this checklist is complete should the operator move to the selected protocol runbook.