Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

MZULALI/xj-scanner

Hardware & IoT

Read fault codes and live data from 1991–95 Jeep SBEC engine computers using an Arduino Nano and a laptop.

140
16
Python
GPL-3.0
1 day old

What it does

xj-scanner connects a laptop to the engine computer of a 1991–95 Jeep through a cheap Arduino Nano. Three wires run from the under-hood diagnostic plug to the Nano, which talks to the PC over USB. The Python scanner then reads fault codes and live engine data, logs a drive, and runs the computer's built-in actuator tests. It was built and tested on one vehicle: a 1994 Jeep Cherokee XJ with the 4.0L engine and computer 56030117; other SBEC/OBD1 Chrysler computers of that era should be close but are not guaranteed.

Quick start

For the guided path, clone the repo and open it in Claude Code, Codex or another coding agent, then ask it to help you hook the hardware up. The agent reads AGENTS.md and walks through software setup, breadboard wiring, identifying plug cavities with a meter, and the first reading.

To do it by hand, create a virtual environment and install the PC requirements, then check that the laptop side works against a simulated Jeep:

python3 -m venv .venv && .venv/bin/pip install -r pc/requirements.txt
.venv/bin/python pc/xj_scan.py --cli DEMO

Install the Arduino toolchain, then compile and upload the bridge sketch to the Nano (replace the serial port with your own):

brew install arduino-cli && arduino-cli core install arduino:avr
arduino-cli compile --upload -p /dev/cu.usbserial-XXXX --fqbn arduino:avr:nano:cpu=atmega328old arduino/xj_bridge

With the key on, read fault codes and log live data to pc/logs/:

.venv/bin/python pc/xj_scan.py --cli auto

Wiring, breadboard layout and troubleshooting are in docs/. The connector cavity measurements are documented in docs/connector.md.

Hardware and safety requirements

The required parts cost about $15: a 5 V Arduino Nano clone and cable, a small breadboard, jumpers, three long wires, three 1/4" male spade terminals and a multimeter. Cavity 6 carries 12 V with the key on and must never be connected. On the test car its wire shares the black/white color of the ground wire, so color is not a reliable guide; measure every cavity before connecting anything. The wiring diagram shows D10, D11 and GND going to cavities 4, 3 and 2.

Scope and limitations

The README describes this as a hobby project that talks directly to the engine computer and says to use it at your own risk. Compatibility is only demonstrated on the 1994 Cherokee XJ 4.0L with computer 56030117; the author only claims that other SBEC/OBD1 computers of that family should be close. The upload command uses the atmega328old variant, which matters for Nano clones with older bootloaders. Parameter IDs, scaling formulas, the OBD1 message sequence and fault code text are credited to the GPLv3 ChryslerScanner project, and the fuel-trim scale to disassembly work in jeep_2.5L README credits; this repository is also GPLv3.

HotRepo's take

The repository appeared in HotRepo's new-project Python list on 2026-11-11, gaining 5 stars and 1 fork over roughly 1.5 hours of observation while reaching 105 stars and 12 forks. That is a short window and no all-language daily rank is recorded, so the data supports only a small initial bump, not a trend. What stands out technically is the low-cost, documented approach: a $3 Nano, three wires and a meter, with a simulated Jeep mode that lets you validate the laptop side before touching the car. The hard part is hardware identification, and the README's repeated warning about cavity 6 being 12 V is the kind of specific, vehicle-tested detail that makes the project credible for the single model it targets.

Written by AI from the project's README, updated . The project's own docs are the source of truth.