Files

14 KiB

Multi-PROG Manual-Derived Reference

This page contains only facts and names found in the supplied Multi-PROG User Manual and Multi-PROG Script Manual (EN). It is not a claim that a function is available in another software release. If the supplied script manual does not state a parameter type or return value, the field is recorded as NOT DOCUMENTED IN PROVIDED MANUALS.

User-manual hardware and workflows

Hardware

The user manual describes Multi-PROG as a programmer consisting of a main unit and PC software. The main unit connects to PC software through RJ45 or USB. It describes programming, reading, writing, and cloning of common automotive MCUs, memory chips, electronic modules, and ECU computer boards. The user manual also names USB A, USB B, RJ45, a power socket, PE grounding, a touch screen, status indicator, main-unit switch, magnetic shield, and an IC locking holder.

Parameter Manual value
Operating system Linux
Processor ZYNQ7020 Dual Core Cortex A9 + FPGA
Memory 256M*2 DDR + 64M NOR FLASH
Display 3.5 inch, 320*480
Input voltage 15V/4A
Working current 300mA (14V)
Working temperature -20 to 55 C
Storage temperature -30 to 65 C
External interface USB/RJ45
Dimensions L233W150H54mm

Accessories

The product list names the USB WiFi Network Card, 220V power cord, 15V/4A power adapter, VH13, VH20, VH23, MCU adapter Multi-PROG solder cable, MCU DB15 adapter cable, ECU adapter Multi-PROG solder cable, ECU DB15 adapter cable, ECU cable plug, Multi-PROG OBD cable, USB cable, and product documentation/certificates. The manual explicitly describes VH13 as a chip-holder adapter board for IC holders and DIP-sealed memory chips, VH20 as a self-test board used with the interface self-test flow, the power adapter as the device power source, the USB cable as the PC connection, and the USB WiFi card as device networking/data sharing. Individual pinouts and complete functions of every cable are NOT DOCUMENTED IN PROVIDED MANUALS.

EEPROM

The manual describes EEPROM as storing vehicle electronic information data and says the software can select by manufacturer/model or search by model or silk-screen mask. Its example says entering the 8-pin mask 5BBD displays the 95320 option. It states support for serial and parallel EEPROM interfaces, with some parallel memories requiring special adapters. The documented actions are read, erase, write, and check. Erasing loses all chip data; the manual says original data is erased automatically when Write is selected.

MCU

The named manufacturers are Atmel, Motorola, Freescale, Infineon, Renesas, and STMicroelectronics. The manual divides MCU storage into program, data, and configuration areas. It uses FLASH, CFLASH, CODE, and ROM for program-area names; DFLASH, EEPROM, DATA, and INF for data-area names; and Config for configuration-area names. It says configuration may be unreadable for encrypted chips.

The wiring notes state that a pin marked optional/must be low must be low before reading; if it is not low, a 1K pull-down resistor to GND can be connected. A pull-up resistor is connected to VCC where the diagram requires it. If the crystal is not 4 MHz, the manual says to connect chip pin 1 to the programmer CLK output and check whether an external clock is needed. The manual requires following the software wiring diagram and says a multimeter may be needed to find the board connection diagram for the specific board.

Automotive modules

The manual names immobilizer, dashboard, airbag, and other body electronic modules. It says the software provides a corresponding module circuit connection diagram. Its Porsche example concerns encrypted reading/writing of front-end modules and lists backup read, write, unlock, and lock operations. Its Volkswagen Phideon tire-pressure-module example says to select the option, solder the MCU cable according to the diagram, connect the device, and read/write.

ECU and TCU scope

The user manual states the following examples and operations:

Family/example Operations stated by the manual
BMW MSV90, MSV80 and other series Read, write, clone
BMW B48, B58 ISN read
Mercedes-Benz SIM271 Read, write, clone
Volkswagen Bosch MED17 Read, write, clone
Volkswagen/Audi/Skoda DQ200, DQ250, Audi VL381 TCU read/write; VL381 example also describes clone wording
Porsche DL501, Ford/Dodge and other MPS6 series TCU read/write
BMW DKG, Mercedes-Benz VGS TCU read/write

For the BMW MSV90 and Mercedes SIM271 examples, the manual says to follow the software wiring diagram; for cloning it says to read/save EEPROM and FLASH and write the saved data to the replacement ECU. For MSV90, it says an ISN is displayed after EEPROM reading when required. For the Audi VL381 example it gives the same read/save EEPROM and FLASH, then write to the replacement computer wording. No deeper vehicle-specific algorithm or pinout is documented here.

Batch writing

The user manual documents batch writing for common memory and microcontroller series, including batch write, offline write, and file offline write. It says detailed usage is in the factory usage-mode documentation and provides no further procedure. That procedure is NOT DOCUMENTED IN PROVIDED MANUALS.

Script system architecture

The script manual states that scripts are written in JavaScript. The system has two menu surfaces: Local Scripts and Released Features. Local Scripts supports create, open, modify, save, debug/test, and publish. Released Features manages released .mjs files and supports import, export, run, delete, and viewing attributes such as name, type, manufacturer, description, remaining uses, and deadline. The script manual describes the lifecycle as create/edit/test/release/manage; it does not define a separate source-control or deployment protocol.

The manual says the Local Script editor can add function buttons to the main interface toolbar, with the button action configured by script. It describes .mjs as the generated published-script file. Release requires network and device connection, performs syntax and online verification, and generates the .mjs file at the selected path.

JavaScript basics

The manual introduces value types (string, number, Boolean, null, undefined, and symbol) and reference types (object, array, and function). It includes variables, statements/comments, functions, strings, arrays, and common JavaScript syntax/examples. General JavaScript details beyond the examples in the supplied script manual are NOT DOCUMENTED IN PROVIDED MANUALS.

Uint8Array

The manual has a dedicated Uint8Array section covering creation, common properties/methods, and the difference between slice() and subarray(). It shows Uint8Array.of(...) examples. The manual's demonstrated memory behavior is that subarray() shares the original array's memory, while slice() creates an independent copied region. Additional constructor edge cases and typed-array compatibility are NOT DOCUMENTED IN PROVIDED MANUALS.

Built-in function reference

The following prototypes are transcribed from the script manual. The manual often leaves parameter descriptions and return fields blank; those fields are intentionally not filled with assumptions.

File functions

Function Purpose Syntax Parameters Return value Manual example
ReadFile Read a file ReadFile(path) path: documented by syntax; type not stated NOT DOCUMENTED IN PROVIDED MANUALS var data = ReadFile("C:/temp.bin")
WriteFile Write data to a specified file WriteFile(path, data) path, data; types not stated NOT DOCUMENTED IN PROVIDED MANUALS Manual shows a WriteFile call
ReadAndEmbedFile Read and embed a file ReadAndEmbedFile(path) path; type not stated NOT DOCUMENTED IN PROVIDED MANUALS var data = ReadAndEmbedFile("C:/temp.bin")
GetOpenFileName Get a user-selected file name GetOpenFileName() None NOT DOCUMENTED IN PROVIDED MANUALS Function is listed with no fuller example
GetSaveFileName Get a file name saved by the user GetSaveFileName() None NOT DOCUMENTED IN PROVIDED MANUALS Function is listed with no fuller example
ReadFromSelectedFile Read the user's selected file ReadFromSelectedFile() None NOT DOCUMENTED IN PROVIDED MANUALS var data = ReadFromSelectedFile()
WriteToSelectedFile Write to the user's selected file WriteToSelectedFile(data) data; type not stated NOT DOCUMENTED IN PROVIDED MANUALS var length = WriteToSelectedFile(data)

Device functions

Function Syntax Manual-stated purpose
SelectBuffer SelectBuffer(name) Select named data in a buffer
BlankCheck BlankCheck() Perform blank detection on the current buffer
WriteData WriteData(data) Write data to the current buffer
ReadData ReadData() Read data from the current buffer
EraseData EraseData() Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS
IDCheck IDCheck() Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS
PinCheck PinCheck() Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS
OpenPowerSetting OpenPowerSetting() Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS

Interface functions

The manual lists Print, ClearLogs, Message, Question, GetInput, RequestInput, ShowDataInBufferArea, GetBufferData, GetBufferName, ShowPicture, and AddFunctionButton. It demonstrates Print(input), Message("Message pop-up text information"), Question(...), ShowDataInBufferArea(data), GetBufferData(), GetBufferName(), ShowPicture("C:/wiring_diagram.jpg", "Please refer to the picture for wiring."), and AddFunctionButton(text, functionName, languageId). For functions whose complete prototype/return description is not visible in the manual text, the missing details are NOT DOCUMENTED IN PROVIDED MANUALS.

Shared memory

Function Syntax Manual-stated purpose
SharedMemSetData SharedMemSetData(data) Write data to the public buffer
SharedMemGetData SharedMemGetData() Get data in the public buffer
SharedMemGetSize SharedMemGetSize() Get the size of data in the public buffer
SharedMemClear SharedMemClear() Clear the public buffer

Verification functions

Function Syntax Manual-stated purpose
MD5 MD5(data) Calculate MD5 of data
CRC16 CRC16(data, init) Calculate CRC16 of data
CRC32 CRC32(data, init) Calculate CRC32 of data
SHA1 SHA1(data) Calculate SHA1 of data
SHA256 SHA256(data) Calculate SHA256 of data

The manual's examples create data with Uint8Array.of(0x12, 0x13, 0x14, 0x15) and pass it to these functions. It does not document algorithm parameters beyond the visible init syntax for CRC16/CRC32.

Encryption functions

The manual lists AES and DES functions for ECB and CBC modes with ZERO, PKCS7, and ISO padding. The documented prototypes are:

AES_ECB_ZERO_Encrypt(data, key)       DES_ECB_ZERO_Encrypt(data, key)
AES_ECB_ZERO_Decrypt(data, key)       DES_ECB_ZERO_Decrypt(data, key)
AES_ECB_PKCS7_Encrypt(data, key)      DES_ECB_PKCS7_Encrypt(data, key)
AES_ECB_PKCS7_Decrypt(data, key)      DES_ECB_PKCS7_Decrypt(data, key)
AES_ECB_ISO_Encrypt(data, key)        DES_ECB_ISO_Encrypt(data, key)
AES_ECB_ISO_Decrypt(data, key)        DES_ECB_ISO_Decrypt(data, key)
AES_CBC_ZERO_Encrypt(data, key, iv)   DES_CBC_ZERO_Encrypt(data, key, iv)
AES_CBC_ZERO_Decrypt(data, key, iv)   DES_CBC_ZERO_Decrypt(data, key, iv)
AES_CBC_PKCS7_Encrypt(data, key, iv)  DES_CBC_PKCS7_Encrypt(data, key, iv)
AES_CBC_PKCS7_Decrypt(data, key, iv)  DES_CBC_PKCS7_Decrypt(data, key, iv)
AES_CBC_ISO_Encrypt(data, key, iv)    DES_CBC_ISO_Encrypt(data, key, iv)
AES_CBC_ISO_Decrypt(data, key, iv)    DES_CBC_ISO_Decrypt(data, key, iv)
AES_Encrypt(level, mode, data, key, iv, padding)
DES_Encrypt(mode, data, key, iv, padding)
AES_Decrypt(level, mode, data, key, iv, padding)
DES_Decrypt(mode, data, key, iv, padding)

The generic AES example uses AES_Encrypt(AES_128, CBC, data, key, iv, ZERO) and the generic decrypt example uses the corresponding AES_Decrypt call. The manual names AES levels AES_128, AES_192, and AES_256. Key sizes, IV requirements beyond the prototype, block rules, and cryptographic return types are NOT DOCUMENTED IN PROVIDED MANUALS.

Utility functions

Function Syntax Manual-stated purpose
ByteArrayToHexString ByteArrayToHexString(data) Convert an array to a hexadecimal string
HexStringToByteArray HexStringToByteArray(str) Convert a hexadecimal string to an array
GetLanguageId GetLanguageId() Obtain the language used by the script at runtime
CurrentDateTime CurrentDateTime(format) Get the current date and time

The manual example formats the current time as yyyy-MM-dd hh:mm:ss:zzz. Parameter types and return types not shown by the prototype are NOT DOCUMENTED IN PROVIDED MANUALS.

Manual examples index

Examples visible in the script manual include Uint8Array.of(...), string/array operations, file reads/writes, buffer selection/read/write, UI messages and buttons, shared-memory access, MD5/CRC/SHA calls, AES/DES mode/padding calls, byte-array/hex conversion, language lookup, and date formatting. They are retained above as short API examples where extraction was unambiguous. Screenshot-only wiring and UI examples are not recreated as code because their source text is NOT DOCUMENTED IN PROVIDED MANUALS.

Traceability and limitations

Source locations are the section/page headings in the supplied PDFs: user-manual chapters 3-11 and script-manual sections 1-8, especially script-manual pages 1-2, 16-21, 22-40, and 42-45. PDF text extraction has encoding artifacts in a few punctuation characters; function names and prototypes were preserved only where legible. No repository behavior has been changed based on a guess.