Provisioning via USB
This page describes how to use a USB memory stick for provisioning, service operations, configuration export, configuration import, and firmware updates on the Charge Controller.
The USB memory stick method is suitable for:
- Importing settings
- Exporting logs and configuration data
- Performing firmware updates
- Field service and spare parts management
- Small batch production
- Preparing product variants from reusable configuration files
1. How it works
The USB memory stick is connected to the Charge Controller via the USB host interface (USB type A port). The Charge Controller checks the root directory of the USB memory stick for specific files and folders. These files and folders act as triggers for different USB functions.
Access to USB functions is controlled by the manufacturer and operator roles, including the associated passwords. Most USB operations require a USB_PASSWORD file in the root directory of the USB memory stick.
The status LED on the Charge Controller indicates when the operation is complete and when the USB memory stick can be removed.
It is recommended to limit the USB memory stick functions on delivered Charging Stations to the necessary extent or, if the interface cannot be physically protected against unauthorized access, to deactivate it completely.
Use one USB function at a time. Do not combine multiple trigger files for different operations on the same USB memory stick during one run. Multiple simultaneous USB actions can cause unexpected behavior.
2. USB memory stick requirements
Use a USB memory stick with the following properties:
- FAT32 formatted
- Empty before preparation
- Files placed in the correct root-level structure
- Required trigger files created without file extensions
- Required password file placed in the root directory
On Windows, make sure files such as USB_PASSWORD, FIELD_ENGINEER, and FW_UPDATE_LOCAL are not saved as .txt files. When using Notepad, save the file name in quotation marks, for example "USB_PASSWORD".
3. USB memory stick structure
The Charge Controller checks the root directory of the USB memory stick for specific files and folders. These files and folders act as triggers for different USB functions.
Use one USB function at a time. Do not combine multiple trigger files for different operations during one run.
3.1. General structure
USB root
├─ USB_PASSWORD
├─ FIELD_ENGINEER
├─ FW_UPDATE_LOCAL
├─ sw_update.deb
├─ sw_config/
│ ├─ ChargePointID_ocpp
│ ├─ ChargePointID_ocpp_default
│ ├─ UTCTimeToReboot_custom
│ ├─ ManufacturerPwd_custom
│ ├─ OperatorPwd_custom
│ └─ ...
└─ ebee_data/
└─ script.sh
3.2. Structure by USB function
- Export logs and configuration
- Import configuration
- Firmware update
- Local firmware update
- Script execution
USB root
├─ USB_PASSWORD
└─ FIELD_ENGINEER
Use this structure to export logs, status information, and configuration data from the Charge Controller.
FIELD_ENGINEER is an empty trigger file without file extension.
USB root
├─ USB_PASSWORD
└─ sw_config/
├─ FreeCharging_vehicleif
└─ ...
Use this structure to import configuration files into the Charge Controller.
Place only the configuration files that should be imported inside sw_config/.
USB root
├─ USB_PASSWORD
└─ sw_update.deb
Use this structure to update the firmware from a USB memory stick.
The firmware package must be named exactly sw_update.deb.
USB root
├─ USB_PASSWORD
├─ FW_UPDATE_LOCAL
└─ sw_update.deb
Use this structure to update only the local controller.
FW_UPDATE_LOCAL is an empty trigger file without file extension.
USB root
├─ USB_PASSWORD
└─ ebee_data/
└─ script.sh
Use this structure to execute a prepared shell script.
The script must be named script.sh and start with:
#!/bin/sh
4. USB files and folders
File or folder | Required location | Purpose |
|---|---|---|
#USB_PASSWORD | USB root | Contains the operator or manufacturer password in plaintext. Required for authorized USB operations. |
#FIELD_ENGINEER | USB root | Empty trigger file. Exports logs, status information, and configuration data from the Charge Controller. |
#FW_UPDATE_LOCAL | USB root | Empty trigger file. Limits a USB firmware update to the local controller. |
#sw_update.deb | USB root | Firmware update package. |
#sw_config/ | USB root folder | Contains configuration files to import into the Charge Controller. |
#ebee_data/script.sh | USB root folder and script file | Contains a shell script for USB script execution. |
5. USB password file
Most USB operations require a USB_PASSWORD file in the root directory of the USB memory stick.
The file must contain the operator or manufacturer password in plaintext.
Example:
yellow_zone
The file name must be exactly:
USB_PASSWORD
The file must not have a file extension.
USB_PASSWORD contains the password in plaintext. Handle prepared USB memory sticks accordingly.
6. USB function overview
Function | Required USB content | Required setting |
|---|---|---|
| # Export logs and configuration | USB_PASSWORD + FIELD_ENGINEER | USB access with valid password |
| # Import configuration | USB_PASSWORD + sw_config/ | USB Config update enabled |
| # Firmware update | USB_PASSWORD + sw_update.deb | USB Firmware update enabled |
| # Local-only firmware update | USB_PASSWORD + sw_update.deb + FW_UPDATE_LOCAL | USB Firmware update enabled |
| # Script execution | USB_PASSWORD + ebee_data/script.sh | USB script execution enabled |
7. Status LED behavior
The Charge Controller signals USB operation states using the status LEDs.
LED behavior | Meaning |
|---|---|
| # All LEDs light up at the same time | USB memory stick was detected and the controller is searching for the update file. |
| # LEDs blink one after another | Installation process is running. |
| # Green READY LED blinks quickly | Operation is complete and the USB memory stick can be removed. |
| # Green READY LED blinks in a 1 second interval | Export or configuration operation is complete and the USB memory stick can be removed. |
8. Export logs and configuration data
Use the FIELD_ENGINEER trigger file to export logs, status information, and configuration data from the Charge Controller to the USB memory stick.
8.1. Prepare the USB memory stick
Create the following files in the USB root directory:
USB root
├─ USB_PASSWORD
└─ FIELD_ENGINEER
FIELD_ENGINEER must be an empty file without file extension.
8.2. Export procedure
- Prepare the USB memory stick.
- Insert the USB memory stick into the Charge Controller.
- Wait until the Charge Controller finishes writing data to the USB memory stick.
- Remove the USB memory stick when the green
READYLED blinks quickly or in a 1 second interval. - Connect the USB memory stick to a computer.
- Open the generated folder whose name starts with
cp-.
The export can take up to approximately 2 minutes.
8.3. Exported folder structure
The Charge Controller creates a folder whose name starts with cp-.
Inside this folder, the persistency/ folder contains configuration parameters as individual files.
Example:
USB root
└─ cp-...
└─ persistency/
├─ ChargePointModel_ocpp
├─ ChargePointUUID_ocpp
├─ FreeCharging_vehicleif
├─ HardwareCurrentLimit_vehicleif
└─ ...
8.4. Configuration file format
Each exported configuration file contains:
- Line 1: the parameter value
- Line 2: the versioning code
Example:
Off
6722 94c83d8a2
To change a configuration file for USB import, edit only the first line.
Do not edit the second line. The second line contains the versioning code and must remain unchanged.
Use Notepad++ or another editor that handles Unix line endings correctly. The standard Windows editor may display line breaks incorrectly.
9. Import configuration
Use the sw_config/ folder to import configuration files into the Charge Controller.
The USB Config update setting must be enabled before this function can be used.
9.1. Recommended workflow
- Export the current configuration using
FIELD_ENGINEER. - Open the generated
cp-.../persistency/folder. - Copy only the configuration files that should be changed.
- Edit only the first line of each copied file.
- Keep the second line unchanged.
- Create a
sw_config/folder in the USB root directory. - Place the changed configuration files inside
sw_config/. - Keep
USB_PASSWORDin the USB root directory. - Remove
FIELD_ENGINEERand the generatedcp-...folder from the USB memory stick. - Insert the USB memory stick into the target Charge Controller.
- Wait until the import is complete.
- Remove the USB memory stick after the status LED indicates completion.
9.2. Required import structure
USB root
├─ USB_PASSWORD
└─ sw_config/
├─ FreeCharging_vehicleif
└─ ...
When the USB memory stick is inserted, the Charge Controller imports the configuration files from sw_config/, overwrites the corresponding existing settings, and restarts afterwards.
10. Example: Enable free charging via USB
This example enables free charging by modifying the FreeCharging_vehicleif configuration file.
10.1. Procedure
-
Prepare a FAT32-formatted USB memory stick with the following files in the root directory:
USB root
├─ USB_PASSWORD
└─ FIELD_ENGINEER -
Insert the USB memory stick into the Charge Controller
-
Wait until the green
READYLED blinks in a 1 second interval -
Remove the USB memory stick
-
Connect the USB memory stick to a computer
-
Open the exported configuration file:
cp-.../persistency/FreeCharging_vehicleif -
Change the first line from
OfftoOnand save the file
(keep the second line unchanged) -
Create the following import structure in the USB root directory:
USB root
├─ USB_PASSWORD
└─ sw_config/
└─ FreeCharging_vehicleif -
Remove the
FIELD_ENGINEERfile and the exportedcp-...folder from the USB memory stick -
Insert the USB memory stick into the Charge Controller again
-
Wait until the green
READYLED indicates completion -
Remove the USB memory stick
Free charging is now enabled.
11. Files not to copy for configuration import
Some exported configuration files are specific to an individual Charge Controller or installation. Do not copy these files to another Charge Controller without a clear reason.
ActuatorType_vehicleif
ChargePointUUID_ocpp
CurrentMonth_dl
DataConsumptionLastMonth_dl
DataConsumption_dl
HeartBeatInterval_ocpp
MeterSerial_meter
SIMCardPinNumber_modem
SchukoNumberContactorCycles_vehicleif
SysTime_mon
Type2NumberContactorCycles_vehicleif
AdcCpCalibrationCfg_vehicleif
ebee.sql
*.csv
These files often contain controller-specific, installation-specific, meter-specific, usage-specific, or calibration-specific data.
12. Mapping configuration files to parameters
See the OCPP parameter reference here.
Although the reference is primarily for OCPP, it also includes non-OCPP parameters that are relevant for USB configuration import, such as FreeCharging_vehicleif. The reference can be used to map configuration file names to Config UI labels.
Use this table to map:
- Config UI parameters
- Configuration file names
- OCPP configuration keys
The Configuration File Name column lists the file names that appear in the persistency/ folder after a FIELD_ENGINEER export.
13. Password changes via USB configuration import
Passwords can also be changed through USB configuration import.
For example, to change the operator password, edit the OperatorPwd_custom configuration file and import it through the sw_config/ folder.
When changing the password via USB configuration import, enter the new password in plaintext. The Charge Controller encodes the password automatically after importing the file.
When editing password files directly over SSH or by directly modifying persistent files, the password value must be entered in base64-encoded form. For USB configuration import, the documented workflow uses plaintext for OperatorPwd_custom.
14. Firmware update via USB memory stick
A firmware update can be performed by placing the firmware package in the root directory of the USB memory stick.
The USB Firmware update setting must be enabled before this function can be used.
14.1. Requirements
The USB memory stick must contain:
USB root
├─ USB_PASSWORD
└─ sw_update.deb
The firmware package must:
- Be a Debian package
- Use the
.debfile extension - Be named exactly
sw_update.deb - Be placed in the USB root directory
14.2. Local-only firmware update
If multiple charge points or controllers are connected and the firmware update should only be applied to the local controller, add an empty FW_UPDATE_LOCAL file to the USB root directory.
USB root
├─ USB_PASSWORD
├─ FW_UPDATE_LOCAL
└─ sw_update.deb
Without FW_UPDATE_LOCAL, inserting the USB memory stick into a gateway controller can update connected charge points as well.
14.3. Firmware update procedure
- Prepare the USB memory stick with
USB_PASSWORDandsw_update.deb. - Add
FW_UPDATE_LOCALif only the local controller should be updated. - Insert the USB memory stick into the Charge Controller.
- Wait until the update process completes.
- Do not interrupt the update process.
- Remove the USB memory stick only after the Charge Controller indicates completion.
The update process can take up to approximately 15 minutes.
Do not interrupt the update process. An incomplete firmware update can make the controller unusable and require service handling.
15. Script execution via USB memory stick
The Charge Controller can execute a shell script from the USB memory stick.
The USB script execution setting must be enabled before this function can be used.
Unlike USB Config update and USB Firmware update, script execution is disabled by default.
15.1. Required structure
USB root
├─ USB_PASSWORD
└─ ebee_data/
└─ script.sh
The script must be named:
script.sh
The script must start with:
#!/bin/sh
15.2. Script execution procedure
- Enable
USB script execution. - Prepare the USB memory stick with
USB_PASSWORDandebee_data/script.sh. - Insert the USB memory stick into the Charge Controller.
- Wait until the operation completes.
- Remove the USB memory stick after the status LED indicates completion.
Use USB script execution only for prepared service scripts. The script runs automatically after the USB memory stick is inserted.
Got it. Use this version without periods on list items.
16. Troubleshooting
Check the basic USB requirements first:
- The USB memory stick is FAT32 formatted
USB_PASSWORDexists in the USB root directory- The password inside
USB_PASSWORDis correct - The required USB feature is enabled
- The trigger file or folder is placed in the USB root directory
- The trigger file has no file extension
- Only one USB function is prepared on the stick
Use one USB function at a time.
Multiple trigger files for different operations can cause unexpected behavior.
cautionPrepare a separate USB stick, or clean the existing stick, before switching to another USB function.
The file may have been saved with an extension.
For example, Windows may save it as:
USB_PASSWORD.txtThe file name must be exactly:
USB_PASSWORDThe file must not have a file extension.
Check the import structure and file contents:
- USB Config update is enabled
sw_config/exists in the USB root directory- The changed configuration files are inside
sw_config/ - File names match the expected configuration file names
- The first line contains the intended value
- The second line/versioning code was not changed
FIELD_ENGINEERand exportedcp-...folders were removed before import
Edit only the first line.
The second line contains the versioning code and must remain unchanged.
Only copy configuration files that are not controller-specific or installation-specific.
Do not copy files blindly, especially files such as:
ChargePointUUID_ocppMeterSerial_meterSysTime_monebee.sql*.csv
Check the firmware update requirements:
- USB Firmware update is enabled
- The firmware package is named exactly
sw_update.deb - The firmware package is placed in the USB root directory
USB_PASSWORDis present and correct- The firmware file is a valid
.debpackage
Add an empty
FW_UPDATE_LOCALfile to the USB root directory.The USB stick should contain:
USB root
├─ USB_PASSWORD
├─ FW_UPDATE_LOCAL
└─ sw_update.debRemove the USB memory stick only after the Charge Controller indicates completion through the status LED.
For example, remove it when the green
READYLED blinks quickly or in a 1 second interval.Use Notepad++ or another editor that handles Unix line endings correctly.
The standard Windows editor may display line breaks incorrectly.
Edit the relevant password configuration file and place it inside
sw_config/.For example:
USB root
├─ USB_PASSWORD
└─ sw_config/
└─ OperatorPwd_customFor USB configuration import, store the password in plaintext.
Password handling depends on the method:
- USB configuration import: store the password in plaintext
- Direct file editing over SSH: store the password value in base64-encoded form
Check the script execution requirements:
USB script executionis enabledUSB_PASSWORDis present- The script is located at
ebee_data/script.sh - The script starts with
#!/bin/sh
The USB stick should contain:
USB root
├─ USB_PASSWORD
└─ ebee_data/
└─ script.shNo.
USB script executionis disabled by default.