{"_id":"@emdzej/j2534-driver","_rev":"3-ec0c1e22a95cc546eda11cfe9deea561","name":"@emdzej/j2534-driver","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@emdzej/j2534-driver","version":"0.1.0","keywords":["j2534","passthru","obd","obd-ii","tactrix","openport","diagnostics","kwp2000","can","iso15765","iso9141","iso14230","uds","iso-tp","k-line","typescript"],"author":{"name":"Michał Jaskólski"},"license":"MIT","_id":"@emdzej/j2534-driver@0.1.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/j2534#readme","bugs":{"url":"https://github.com/emdzej/j2534/issues"},"dist":{"shasum":"39431a4661052afeda6a28dab92c0408e151a4f2","tarball":"https://registry.npmjs.org/@emdzej/j2534-driver/-/j2534-driver-0.1.0.tgz","fileCount":7,"integrity":"sha512-eTqWywG1zwsYWx/OfDAIjwkmf7AdZx6ldsCKuAn+lGHgO6M8m1a6Hb6L57X5f72qjhROX2y9cM54DBRQPdN9Mg==","signatures":[{"sig":"MEUCIQD15PGn5Pd+wrJ9aUMw/Qc8md+bjNVgUwTMkxrJX2MwAAIgWZ9PK2hmRsxRwwIooOR9HjaEBfOHX5DmQMoyXs3EpKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63672},"main":"./dist/index.js","type":"module","_from":"file:emdzej-j2534-driver-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/2873725b65682cf7204a96f370b9821c/emdzej-j2534-driver-0.1.0.tgz","_integrity":"sha512-eTqWywG1zwsYWx/OfDAIjwkmf7AdZx6ldsCKuAn+lGHgO6M8m1a6Hb6L57X5f72qjhROX2y9cM54DBRQPdN9Mg==","repository":{"url":"git+https://github.com/emdzej/j2534.git","type":"git","directory":"packages/driver"},"_npmVersion":"11.14.1","description":"J2534Device — full SAE J2534 PassThru API implementation for Tactrix OpenPort 2.0. Supports CAN (11/29-bit), ISO 15765 (ISO-TP / UDS), ISO 9141 (K-line slow init) and ISO 14230 (KWP2000 fast init). Transport-agnostic — pair with @emdzej/j2534-serial, @emd","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"@emdzej/j2534-core":"0.1.0","@emdzej/j2534-types":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/j2534-driver_0.1.0_1779951993005_0.7014385307563986","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@emdzej/j2534-driver","version":"0.2.0","keywords":["j2534","passthru","obd","obd-ii","tactrix","openport","diagnostics","kwp2000","can","iso15765","iso9141","iso14230","uds","iso-tp","k-line","typescript"],"author":{"name":"Michał Jaskólski"},"license":"MIT","_id":"@emdzej/j2534-driver@0.2.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/j2534#readme","bugs":{"url":"https://github.com/emdzej/j2534/issues"},"dist":{"shasum":"9af6934a9adc18a7d11699eda9b3ca5779851165","tarball":"https://registry.npmjs.org/@emdzej/j2534-driver/-/j2534-driver-0.2.0.tgz","fileCount":7,"integrity":"sha512-N1kSPiaSgbI7AHOAjv0jXMWogyt+9tzXjGQUBE7B+Zi8Rw4RNe3/erMSA4PxcogKp4hKGRvQWcBGGUNFePP0XA==","signatures":[{"sig":"MEQCIHcxH6U/2BXGz60rDSGb0mugM3XrZcC4thttVi27ckRgAiAHqW8iBaRcJBjMDZ91kIwK0Q4pr+Y+PMYONL4xe1fsaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67810},"main":"./dist/index.js","type":"module","_from":"file:emdzej-j2534-driver-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/225ffbf5ca63f459147397b496874640/emdzej-j2534-driver-0.2.0.tgz","_integrity":"sha512-N1kSPiaSgbI7AHOAjv0jXMWogyt+9tzXjGQUBE7B+Zi8Rw4RNe3/erMSA4PxcogKp4hKGRvQWcBGGUNFePP0XA==","repository":{"url":"git+https://github.com/emdzej/j2534.git","type":"git","directory":"packages/driver"},"_npmVersion":"11.14.1","description":"J2534Device — full SAE J2534 PassThru API implementation for Tactrix OpenPort 2.0. Supports CAN (11/29-bit), ISO 15765 (ISO-TP / UDS), ISO 9141 (K-line slow init) and ISO 14230 (KWP2000 fast init). Transport-agnostic — pair with @emdzej/j2534-serial, @emd","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"@emdzej/j2534-core":"0.2.0","@emdzej/j2534-types":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/j2534-driver_0.2.0_1779976573651_0.3042256119395397","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@emdzej/j2534-driver","version":"0.3.0","description":"J2534Device — full SAE J2534 PassThru API implementation for Tactrix OpenPort 2.0. Supports CAN (11/29-bit), ISO 15765 (ISO-TP / UDS), ISO 9141 (K-line slow init) and ISO 14230 (KWP2000 fast init). Transport-agnostic — pair with @emdzej/j2534-serial, @emd","keywords":["j2534","passthru","obd","obd-ii","tactrix","openport","diagnostics","kwp2000","can","iso15765","iso9141","iso14230","uds","iso-tp","k-line","typescript"],"homepage":"https://github.com/emdzej/j2534#readme","repository":{"type":"git","url":"git+https://github.com/emdzej/j2534.git","directory":"packages/driver"},"bugs":{"url":"https://github.com/emdzej/j2534/issues"},"license":"MIT","author":{"name":"Michał Jaskólski"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"sideEffects":false,"publishConfig":{"access":"public"},"dependencies":{"@emdzej/j2534-core":"0.3.0","@emdzej/j2534-types":"0.3.0"},"devDependencies":{"@types/node":"^25.6.0","typescript":"^5.7.0"},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist"},"_id":"@emdzej/j2534-driver@0.3.0","_integrity":"sha512-RMkyxxbKSLBzoVFVGxlUCIUeZGeJT41KO1TnMq4mvA9zJFc58L8Hu7MlmwdKjS7kfsvP3hCAa4tc69ZJhNK/lg==","_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/3dbfde441c02230d662af76c48286426/emdzej-j2534-driver-0.3.0.tgz","_from":"file:emdzej-j2534-driver-0.3.0.tgz","_nodeVersion":"22.22.1","_npmVersion":"11.14.1","dist":{"integrity":"sha512-RMkyxxbKSLBzoVFVGxlUCIUeZGeJT41KO1TnMq4mvA9zJFc58L8Hu7MlmwdKjS7kfsvP3hCAa4tc69ZJhNK/lg==","shasum":"94ca1e368560b01a449b83cab4485bcb3ac763d6","tarball":"https://registry.npmjs.org/@emdzej/j2534-driver/-/j2534-driver-0.3.0.tgz","fileCount":7,"unpackedSize":71957,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDOHj3qS0hNEwx+CgVM7fbgvdAhrllvl7Awlh2Hw+GngwIgExfA/J0h1j73JvCY9CYIj3X76ZAr8gaXP2/84yVlGi4="}]},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"directories":{},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/j2534-driver_0.3.0_1780042109207_0.4669437485380099"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T07:06:32.767Z","modified":"2026-05-29T08:08:29.448Z","0.1.0":"2026-05-28T07:06:33.136Z","0.2.0":"2026-05-28T13:56:13.801Z","0.3.0":"2026-05-29T08:08:29.332Z"},"bugs":{"url":"https://github.com/emdzej/j2534/issues"},"author":{"name":"Michał Jaskólski"},"license":"MIT","homepage":"https://github.com/emdzej/j2534#readme","keywords":["j2534","passthru","obd","obd-ii","tactrix","openport","diagnostics","kwp2000","can","iso15765","iso9141","iso14230","uds","iso-tp","k-line","typescript"],"repository":{"type":"git","url":"git+https://github.com/emdzej/j2534.git","directory":"packages/driver"},"description":"J2534Device — full SAE J2534 PassThru API implementation for Tactrix OpenPort 2.0. Supports CAN (11/29-bit), ISO 15765 (ISO-TP / UDS), ISO 9141 (K-line slow init) and ISO 14230 (KWP2000 fast init). Transport-agnostic — pair with @emdzej/j2534-serial, @emd","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"readme":"# @emdzej/j2534-driver\n\nThe `J2534Device` class — full SAE J2534 PassThru API implementation\nfor the Tactrix OpenPort 2.0. Supports CAN (11/29-bit), ISO 15765\n(ISO-TP / UDS), ISO 9141 (K-line slow init), and ISO 14230 (KWP2000\nfast init).\n\nTransport-agnostic: pair with one of the `@emdzej/j2534-*-transport`\npackages depending on runtime (Node serial / Node USB / Web Serial /\nWebUSB).\n\n## Install\n\n```bash\nnpm install @emdzej/j2534-driver @emdzej/j2534-serial\n```\n\n## Use (Node.js, serial transport)\n\n```ts\nimport { J2534Device } from '@emdzej/j2534-driver';\nimport { createSerialTransport } from '@emdzej/j2534-serial';\nimport { Protocol, ConnectFlag } from '@emdzej/j2534-types';\n\nconst transport = await createSerialTransport(); // auto-detect OpenPort\nconst dev = new J2534Device(transport);\nawait dev.open();\n\nconst channel = await dev.connect(Protocol.ISO15765, 0, 500_000);\nawait dev.writeMsgs(channel, [{ data: Uint8Array.of(0x22, 0xf1, 0x90) }]);\nconst responses = await dev.readMsgs(channel, 1, 1000);\nconsole.log(responses);\n\nawait dev.disconnect(channel);\nawait dev.close();\n```\n\n## Slow-ECU support\n\nOlder K-line ECUs (BMW instrument cluster, IKE, body modules) read\nfrom EEPROM, which can take 50–200 ms before they start\nresponding. The OpenPort 2.0 firmware silently drops responses\nthat arrive after an internal short timeout unless the `att`\ntransmit command carries an explicit `timeoutMicros` field — which\nthe Tactrix reference DLL always emits. As of `0.2.0`,\n`passThruWriteMsgs` propagates the J2534 `Timeout` argument into\nthe firmware command (ms → µs, default 1 s for K-line). If your\nfirst exchange works but the second times out empty, this is the\nfix.\n\nFor DS2-style sessions, also enforce the SGBD's `ParRegenTime`\nhost-side — wait `regenTimeMs - elapsed` ms before issuing the\nnext TX. The firmware's J2534 `P3_MIN` handling appears\ninsufficient for slow ECUs; host-side gating mirrors the\n`Ds2Session` pattern in `@emdzej/ediabasx-interface-serial`.\n\n## Debugging\n\n`J2534_RAW_TRACE=1` dumps every raw-byte chunk received from the\ndevice transport to `stderr` — useful for telling \"device sent\nnothing\" apart from \"device sent a frame our K-line assembler\ndropped\".\n\n## See also\n\n- [Root README](https://github.com/emdzej/j2534#readme) — full\n  project overview, supported hardware (Tactrix OpenPort 2.0 VID\n  `0x0403` / PID `0xCC4D`), and end-to-end examples\n- [`@emdzej/j2534-types`](https://www.npmjs.com/package/@emdzej/j2534-types) —\n  the enum/interface declarations\n- Transports:\n  [`j2534-serial`](https://www.npmjs.com/package/@emdzej/j2534-serial),\n  [`j2534-usb`](https://www.npmjs.com/package/@emdzej/j2534-usb),\n  [`j2534-webserial`](https://www.npmjs.com/package/@emdzej/j2534-webserial),\n  [`j2534-webusb`](https://www.npmjs.com/package/@emdzej/j2534-webusb)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}