Skip to main content

ELM327 Emulator for testing software interfacing OBDII via ELM327 adapter

Project description

ELM327-emulator

A Python emulator of the ELM327 OBD-II adapter connected to a vehicle supporting multi-ECU simulation.

ELM327-emulator connects client applications to multiple emulated ECUs via OBD-II interface through different networking systems, including serial communication (where pseudo-terminals are used if supported by the operating systems), or direct interaction with communication devices, or TCP/IP, or Bluetooth. The software simulates an ELM327 adapter connected to a vehicle, includes a command-line interface for extensive monitoring and offers a documented Python development framework to implement ECU emulation objects.

ELM327-emulator is able to support basic ELM327 commands and OBD service requests through stateless request/response method via OBD-II, but can also handle stateful UDS communication with ISO-TP Flow Control and Keyword Protocol 2000, concurrently emulating multiple ECUs. It is designed to be extended via a plugin architecture to allow easy development of specific tasks implementing workflows, including the possibility to simulate anomalies for testing purposes. Many AT commands are supported, as well as some OBDLink AT/ST commands.

ELM327-emulator supports different operating systems including Windows, macOS and UNIX/Linux; it is agnostic of the client application and has been tested with python-OBD as well as with many applications on Windows, Linux and on smartphone devices.

An internal dictionary (named ObdMessage) allows configuring the emulation, which is currently set to reproduce the message flow generated by more ECUs, including the basic communication of a Toyota Auris Hybrid car (through the scenario car option) and can be easily extended to simulate communication produced by other vehicles or ECUs. In case of more complex interactions (e.g., entering privileged diagnostic sessions and performing reset or flash upload operations), the dictionary can instance tasks, which are implemented through plugins, very simple to be developed by users extending the software. Some example of plugins is already included.

ELM327-emulator also offers a feature that compares the emulation with the direct connection of an OBD-II adapter to allow extending the dictionary by reporting unmatched requests. In addition, it provides an auxiliary scanning tool (obd_dictionary) that builds the ObdMessage dictionary of a specific vehicle by automatically querying all standard OBD service requests one by one (as well as querying additional custom PIDs specified by the user via CSV file); the dictionary can then be used to emulate stateless request/responses of a specific car or ECU.

Full information and usage details at the ELM327-emulator GitHub repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ELM327-emulator-3.0.0.tar.gz (102.8 kB view details)

Uploaded Source

Built Distribution

ELM327_emulator-3.0.0-py3-none-any.whl (81.1 kB view details)

Uploaded Python 3

File details

Details for the file ELM327-emulator-3.0.0.tar.gz.

File metadata

  • Download URL: ELM327-emulator-3.0.0.tar.gz
  • Upload date:
  • Size: 102.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for ELM327-emulator-3.0.0.tar.gz
Algorithm Hash digest
SHA256 e659ebe7d2c4d9fbfe3e5d32b42879d60edd91ded17a47d6c8de0e0cad4c9fee
MD5 9a48069ab2e44a17d60ecbefc5eba752
BLAKE2b-256 55d2fd9af7f91dbfd5c6e72c18b6f6aaa1e3ff7405fea0ff99bef7746ae33345

See more details on using hashes here.

File details

Details for the file ELM327_emulator-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: ELM327_emulator-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 81.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for ELM327_emulator-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e8b4a8bacc0e66041686c1f2b34ad801d84f499664c95bfddfbad196607b1f31
MD5 bb7827971e8d75cd843af58d1feb8242
BLAKE2b-256 348418cd06abfdfa79da91948dbedc5f7bcf450f32d1c1050fe39350087c9715

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page